it-swarm.com.de

Langsames SSD + dm-crypt mit Luks-Verschlüsselung in Ubuntu 12.10

Ich habe eine 128-GB-SSD in meinem Laptop (Samsung 840 Pro) auf einer Sata 3-Schnittstelle installiert. Dieser Laptop hat auch einen i5 3210m Ivy Bridge Intel-Prozessor und 8 GB RAM.

Ich habe Ubuntu 12.10 mit dem grafischen Installationsprogramm installiert, um die Festplattenverschlüsselung zu erhalten. Ich bin ein bisschen enttäuscht, weil ich erwartet habe, dass die Spezifikationen zu besseren Ergebnissen führen als die, die ich erhalte.

Beim Betrachten dieser SSD-Benchmarking-Seite wird behauptet, dass mein Prozessor Folgendes kann:

  • ~ 500 MB/s: Mit AES-NI
  • ~ 200 MB/s: Ohne AES-NI

Wenn ich mir die Zahlen ansehe, glaube ich, dass AES-NI möglicherweise nicht aktiviert ist. Aber zuerst ...

Das Lesen unverschlüsselter Daten geht schnell:

# 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

Das entspricht ungefähr den SSD-Spezifikationen von "bis zu 530 MB/s", und die Durchführung eines dd -Tests führt zu ähnlichen Ergebnissen wie oben.

Das Schreiben verschlüsselter Daten ist mit dm-crypt ebenfalls schnell (ansonsten ist die Leistung beim Schreiben mit eCryptfs miserabel und liegt unter 100 MB/s).

# 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

Das Lesen verschlüsselter Daten ist jedoch eine andere Geschichte:

# 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

Beim Schreiben dieser Nachricht hatte ich tatsächlich das Glück, 183 MB/s zu erreichen, da diese Anzahl variiert. Normalerweise sind es ungefähr 150 MB/s, aber ich habe beim Neustart auch fast 300 MB/s erreicht, aber dann sinkt die Leistung allmählich auf unter 200 MB/s, ohne dass ich Apps starte. Beachten Sie, dass bei der Durchführung dieses Tests keine anderen Prozesse I/O ausführen (wie bei iotop).

Hier ist auch der Test mit hdparm, der schlechtere Ergebnisse liefert:

 # 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

Ich habe das Experiment auch versucht, indem ich mir htop angesehen habe. Ich bin mir nicht sicher, wie ich das interpretiere, da der i5-Prozessor Hyper-Threading ausführt, aber 2 von 4 Threads machten während des Tests 73% der Nutzung aus Test, während die anderen 2 Threads ungenutzt blieben. Wenn ich 2 Prozesse starte, die mit dd aus 2 verschiedenen Dateien lesen (um Pufferung zu vermeiden), meldet iotop insgesamt ca. 400 MB/s. Das fühlt sich definitiv CPU-gebunden an.

Meine Enttäuschung rührt daher, dass mein i5-Prozessor AES-NI unterstützt. Unverschlüsselte Daten werden mit den gleichen Tests wie oben mit über 500 MB/s gelesen. Es handelt sich also um eine verschlüsselte Partition, die mindestens dreimal langsamer ist.

Ich weiß nicht wirklich, ob meine dm-crypt-Installation AES-NI verwendet. Hier ist die Ausgabe von lsmod:

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

Hier ist die Ausgabe von 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

Wird das also erwartet? Sollte AES-NI nicht noch mehr verbessern?

Wie kann man AES-NI deaktivieren, um festzustellen, ob es einen Unterschied gibt? Und vielleicht sollte ich es irgendwie aktivieren, habe aber bei meinen Suchen keine Tipps gefunden.

Vielen Dank,

9

Ihr Samsung 840 Pro unterstützt die Hardware-AES-Verschlüsselung. Wenn Ihr Laptop-BIOS den ATA-Sicherheitsfunktionsmodus unterstützt, in dem Master- und Benutzerkennwörter festgelegt sind, haben Sie Glück.

Durch Festlegen des ATA-Master-Kennworts im BIOS und anschließendes sicheres Löschen des Laufwerks sollte die Laufwerk-Firmware neue zufällige AES-Schlüssel generieren. Stellen Sie nach dem sicheren Löschen sicher, dass Sie gute ATA-Master- und Benutzerkennwörter festgelegt haben. Soweit ich feststellen konnte (siehe meinen Beitrag hier http://vxlabs.com/2012/12/22/ssds-with-usable-built-in-hardware-based-full-disk-) Verschlüsselung / ) Das Samsung verschlüsselt auch seine AES-Schlüssel mit Ihrem ATA-Passwort.

Dadurch erhalten Sie AES-Verschlüsselung mit voller Geschwindigkeit, ohne dass Software erforderlich ist.

5
Charl Botha

Es gibt eine Fehlkonfiguration in Ubuntu, die dazu führt, dass das aesni_intel-Modul nicht früh genug geladen wird, um Krypto für boot-entsperrte Geräte zu verarbeiten. Ich konnte dies auf meinen Rechnern beheben, indem ich:

Sudo vim /etc/initramfs-tools/modules

Fügen Sie unterhalb der letzten Zeile hinzu

# enable h/w accelerated encryption
cryptd
aes_x86_64
aesni_intel

Dann renne

Sudo update-initramfs -u -k all

neustarten und genießen. Danach sah ich auf einer ähnlichen SSD 500 MB/s lesen und schreiben mit vernachlässigbarer CPU-Auslastung.

Alle Details zu diesem Fehler finden Sie unter https://bugs.launchpad.net/ubuntu/+source/cryptsetup/+bug/908387/comments/7

3
Devin Lane