ช้า SSD + dm-crypt พร้อมการเข้ารหัส Luks ใน Ubuntu 12.10


10

ฉันมี 128 GB SSD ติดตั้งอยู่ในแล็ปท็อปของฉัน (Samsung 840 Pro) บนอินเตอร์เฟส Sata 3 แล็ปท็อปนี้ยังมีโปรเซสเซอร์ i5 3210m Ivy Bridge Intel และ RAM 8 GB

ฉันติดตั้ง Ubuntu 12.10 โดยใช้โปรแกรมติดตั้งแบบกราฟิกเพื่อรับการเข้ารหัสดิสก์เต็มรูปแบบ ฉันผิดหวังเพราะฉันคาดหวังว่ารายละเอียดที่ฉันต้องให้ผลลัพธ์ที่ดีกว่าสิ่งที่ฉันได้รับ

ขณะที่ดูหน้าการเปรียบเทียบ SSDนี้อ้างว่าโปรเซสเซอร์ของฉันสามารถทำสิ่งต่อไปนี้ได้:

  • ~ 500 MB / s: ด้วย AES-NI
  • ~ 200 MB / s: ไม่มี AES-NI

ดูตัวเลขที่ฉันได้รับฉันคิดว่าฉันอาจไม่ได้เปิดใช้งาน AES-NI แต่แรก ...

การอ่านข้อมูลที่ไม่ได้เข้ารหัสนั้นรวดเร็ว:

# hdparm -Tt /dev/sda1

/dev/sda1:
 Timing cached reads:   14814 MB in  2.00 seconds = 7411.70 MB/sec
 Timing buffered disk reads: 242 MB in  0.48 seconds = 502.75 MB/sec

ที่จริงแล้วใกล้เคียงกับข้อมูลจำเพาะ SSD ของฉัน "สูงถึง 530 MB / s" และทำการddทดสอบให้ผลลัพธ์ที่คล้ายกันกับข้างต้น

การเขียนข้อมูลที่เข้ารหัสนั้นก็รวดเร็วเช่นกันด้วย dm-crypt (ไม่เช่นนั้น eCryptfs ประสิทธิภาพในการเขียนต่ำกว่า 100 MB / s) ตัวเลขที่อยู่ใกล้เคียงกับข้อมูลจำเพาะของ SSD (ฉันเดาว่าการเขียนจะถูกบัฟเฟอร์หรือบางอย่าง):

# dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.93896 s, 365 MB/s

การอ่านข้อมูลที่เข้ารหัสเป็นเรื่องอื่น:

# echo 3 > /proc/sys/vm/drop_caches
# dd if=tempfile of=/dev/null bs=1M count=1024

1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 5.85956 s, 183 MB/s

ในขณะที่เขียนข้อความนี้ฉันโชคดีที่ได้รับ 183 MB / s เพราะจำนวนนี้แตกต่างกันไป โดยปกติแล้วจะอยู่ที่ประมาณ 150 MB / s แต่ฉันยังได้ใกล้ 300 MB / s ในการเริ่มระบบใหม่ แต่ประสิทธิภาพจะลดลงเหลือ 200 MB / s โดยไม่ต้องเริ่มต้นแอปใด ๆ โปรดทราบว่าในขณะที่ทำการทดสอบนี้ฉันไม่มีกระบวนการอื่นที่กำลังทำ I / O (ตามที่เห็นiotop)

และนี่คือการทดสอบhdparmที่ให้ผลลัพธ์ที่แย่กว่า:

 # hdparm -Tt /dev/mapper/sda2_crypt 

 /dev/mapper/sda2_crypt:
  Timing cached reads:   14816 MB in  2.00 seconds = 7412.86 MB/sec
  Timing buffered disk reads: 422 MB in  3.01 seconds = 140.11 MB/sec

ฉันลองทดสอบโดยดูที่htop... ไม่แน่ใจว่าจะตีความสิ่งที่ฉันเห็นอย่างไรเนื่องจากโปรเซสเซอร์ i5 ทำ Hyper-Threading แต่มี 2 เธรดจาก 4 ที่ใช้งานประมาณ 73% ของการทดสอบในขณะที่อื่น ๆ 2 เธรดที่ไม่ได้ใช้เหลือ อันที่จริงถ้าฉันเริ่มต้น 2 กระบวนการที่อ่านด้วยddจาก 2 ไฟล์ที่แตกต่างกัน (เพื่อป้องกันการบัฟเฟอร์) จากนั้นiotopรายงานทั้งหมดประมาณ 400 MB / s ดังนั้นนี่จึงให้ความรู้สึกเหมือนเป็น CPU-bound

ความผิดหวังของฉันมาจากความจริงที่ว่า i5 ประมวลผลของฉันคือความสามารถในการAES-NI ข้อมูลที่ไม่ได้เข้ารหัสกำลังอ่านมากกว่า 500 MB / s โดยใช้การทดสอบเดียวกันกับที่ฉันทำข้างต้น ดังนั้นเรากำลังพูดถึงพาร์ติชันที่เข้ารหัสซึ่งช้ากว่าอย่างน้อย 3 เท่า

ฉันไม่รู้จริงๆว่าการติดตั้ง dm-crypt กำลังใช้ AES-NI หรือไม่ นี่คือผลลัพธ์ของlsmod:

 # lsmod | grep aes
 aesni_intel            51038  35 
 cryptd                 20404  10 ghash_clmulni_intel,aesni_intel
 aes_x86_64             17256  1 aesni_intel

นี่คือผลลัพธ์ของcryptsetup:

 # cryptsetup status sda2_crypt
 /dev/mapper/sda2_crypt is active and is in use.
   type:    LUKS1
   cipher:  aes-xts-plain64
   keysize: 512 bits
   device:  /dev/sda2
   offset:  4096 sectors
   size:    249565184 sectors
   mode:    read/write
   flags:   discards

คาดว่าจะเป็นเช่นนี้? AES-NI ไม่ควรปรับปรุงมากกว่านี้ใช่ไหม

นอกจากนี้วิธีปิดใช้งาน AES-NI เพื่อดูว่ามีความแตกต่างหรือไม่? และบางทีฉันควรเปิดใช้งานอย่างใด แต่ไม่พบเคล็ดลับในการค้นหาของฉัน

ขอบคุณ

คำตอบ:


6

Samsung 840 Pro ของคุณรองรับการเข้ารหัส AES ของฮาร์ดแวร์ หาก BIOS แล็ปท็อปของคุณรองรับชุดคุณลักษณะความปลอดภัย ATA ตั้งรหัสผ่านหลักและรหัสผ่านผู้ใช้คุณจะโชคดี

โดยการตั้งรหัสผ่านหลัก ATA ใน BIOS จากนั้นทำการลบไดรฟ์อย่างปลอดภัยเฟิร์มแวร์ของไดรฟ์ควรสร้างคีย์ AES แบบสุ่มใหม่ หลังจากลบอย่างปลอดภัยแล้วให้แน่ใจว่าคุณได้ตั้งค่า ATA หลักและรหัสผ่านผู้ใช้ที่ดี เท่าที่ผมได้รับสามารถที่จะสร้าง (ดูโพสต์ของฉันที่นี่http://vxlabs.com/2012/12/22/ssds-with-usable-built-in-hardware-based-full-disk-encryption/ ) Samsung ยังเข้ารหัสคีย์ AES ด้วยรหัสผ่าน ATA ของคุณ

สิ่งนี้จะให้การเข้ารหัส AES แบบความเร็วสูงโดยไม่ต้องใช้ซอฟต์แวร์


5

มีการกำหนดค่าผิดพลาดในอูบุนตูซึ่งส่งผลให้โมดูล aesni_intel ไม่ได้รับการโหลดเร็วพอที่จะรองรับ crypto สำหรับอุปกรณ์ที่ปลดล็อคการบูต ฉันสามารถแก้ไขสิ่งนี้บนเครื่องของฉันโดยทำ:

sudo vim /etc/initramfs-tools/modules

ด้านล่างบรรทัดสุดท้ายเพิ่ม

# enable h/w accelerated encryption
cryptd
aes_x86_64
aesni_intel

จากนั้นเรียกใช้

sudo update-initramfs -u -k all

รีบูตและเพลิดเพลิน หลังจากนี้บน SSD ที่คล้ายกันฉันเห็น 500MB / s อ่านและเขียนด้วยการใช้งาน CPU เล็กน้อย

รายละเอียดทั้งหมดเกี่ยวกับข้อผิดพลาดนี้อยู่ที่https://bugs.launchpad.net/ubuntu/+source/cryptsetup/+bug/908387/comments/7

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.