SSD + dm-crypt lambat dengan enkripsi Luks di Ubuntu 12.10

10

Saya memiliki 128 GB SSD yang diinstal di laptop saya (Samsung 840 Pro) pada antarmuka Sata 3. Laptop ini juga memiliki prosesor Intel i5 3210m Ivy Bridge dan 8 GB RAM.

Saya menginstal Ubuntu 12.10, menggunakan installer grafis untuk mendapatkan enkripsi disk penuh. Saya agak kecewa, karena saya mengharapkan spesifikasi saya harus menghasilkan hasil yang lebih baik daripada yang saya dapatkan.

Saat melihat halaman Pembandingan SSD ini, ia mengklaim bahwa prosesor saya dapat melakukan:

  • ~ 500 MB / s: Dengan AES-NI
  • ~ 200 MB / s: Tanpa AES-NI

Melihat angka yang saya dapatkan, saya pikir saya mungkin tidak mengaktifkan AES-NI. Tapi pertama-tama ...

Membaca data yang tidak terenkripsi dengan cepat:

# 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

Itu sebenarnya dekat dengan spesifikasi SSD saya "hingga 530 MB / s" dan melakukan ddtes menghasilkan hasil yang mirip dengan di atas.

Menulis data terenkripsi juga cepat dengan dm-crypt (jika tidak dengan eCryptfs, kinerja dalam menulis sangat buruk, lebih rendah dari 100 MB / s), angka-angka yang dekat dengan spesifikasi SSD (saya kira penulisan buffered atau sesuatu):

# 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

Namun membaca data terenkripsi adalah cerita lain:

# 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

Saat menulis pesan ini, saya benar-benar beruntung mendapatkan 183 MB / s, karena jumlah ini bervariasi. Biasanya ada sekitar 150 MB / s, tapi saya juga hampir 300 MB / s pada boot baru, tetapi kemudian kinerja turun secara bertahap menjadi di bawah 200 MB / s tanpa saya memulai aplikasi apa pun. Perhatikan bahwa saat melakukan tes ini saya tidak memiliki proses lain yang melakukan I / O (seperti yang terlihat pada iotop).

Juga, inilah tes hdparmyang menghasilkan hasil yang lebih buruk:

 # 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

Saya juga mencoba percobaan dengan melihat htop... tidak yakin bagaimana menafsirkan apa yang saya lihat, karena prosesor i5 melakukan Hyper-Threading, tetapi 2 utas dari 4 di mana akan sekitar 73% penggunaan selama pengujian, sementara yang lain 2 utas yang dibiarkan tidak digunakan. Memang, jika saya memulai 2 proses yang membaca dengan dddari 2 file yang berbeda (untuk mencegah buffering), maka iotopmelaporkan total sekitar 400 MB / s. Jadi ini pasti terasa seperti terikat CPU.

Kekecewaan saya berasal dari kenyataan bahwa prosesor i5 saya mampu AES-NI . Data yang tidak terenkripsi sedang dibaca di lebih dari 500 MB / s menggunakan tes yang sama yang saya lakukan di atas. Jadi kita berbicara tentang partisi terenkripsi setidaknya 3 kali lebih lambat.

Saya tidak benar-benar tahu apakah instalasi dm-crypt saya menggunakan AES-NI. Inilah output dari lsmod:

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

Inilah output dari 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

Jadi, apakah ini yang diharapkan? Tidakkah seharusnya AES-NI meningkatkan hal lebih dari ini?

Juga, cara menonaktifkan AES-NI untuk melihat apakah ada perbedaan? Dan mungkin saya harus mengaktifkannya entah bagaimana, tetapi belum menemukan tips dalam pencarian saya.

Terima kasih,

Alexandru Nedelcu
sumber

Jawaban:

6

Samsung 840 Pro Anda mendukung enkripsi AES perangkat keras. Jika BIOS laptop Anda mendukung mode fitur keamanan ATA yang mengatur kata sandi master dan pengguna, Anda beruntung.

Dengan mengatur kata sandi master ATA di BIOS, dan kemudian melakukan penghapusan aman pada drive, firmware drive akan menghasilkan kunci AES acak baru. Setelah penghapusan aman, pastikan Anda telah menetapkan master ATA dan kata sandi pengguna yang baik. Sejauh yang saya dapat membangun (lihat posting saya di sini http://vxlabs.com/2012/12/22/ssds-with-usable-built-in-hardware-based-full-disk-encryption/ ) Samsung juga mengenkripsi kunci AES-nya dengan kata sandi ATA Anda.

Ini akan memberi Anda enkripsi AES kecepatan penuh, tidak diperlukan perangkat lunak.

Charl Botha
sumber
5

Ada kesalahan konfigurasi di Ubuntu yang mengakibatkan modul aesni_intel tidak dimuat cukup awal untuk menangani crypto untuk perangkat yang tidak bisa boot. Saya dapat memperbaiki ini di komputer saya dengan melakukan:

sudo vim /etc/initramfs-tools/modules

Di bawah baris terakhir, tambahkan

# enable h/w accelerated encryption
cryptd
aes_x86_64
aesni_intel

Lalu lari

sudo update-initramfs -u -k all

reboot, dan nikmati. Setelah ini, pada SSD yang sama, saya melihat 500MB / s membaca dan menulis dengan penggunaan CPU yang dapat diabaikan.

Detail lengkap tentang bug ini ada di https://bugs.launchpad.net/ubuntu/+source/cryptsetup/+bug/908387/comments/7

Devin Lane
sumber