Langsame SSD + dm-Krypta mit Luks-Verschlüsselung in Ubuntu 12.10

9

Ich habe eine 128-GB-SSD in meinem Laptop (Samsung 840 Pro) auf einer Sata 3-Schnittstelle installiert. Dieser Laptop verfügt außerdem über einen i5 3210m Ivy Bridge Intel-Prozessor und 8 GB RAM.

Ich habe Ubuntu 12.10 mithilfe des grafischen Installationsprogramms installiert, um eine vollständige Festplattenverschlüsselung zu erhalten. Ich bin etwas enttäuscht, weil ich erwartet hatte, dass die Spezifikationen, die ich haben muss, bessere Ergebnisse liefern als das, was ich bekomme.

Beim Betrachten dieser SSD-Benchmarking- Seite wird behauptet, dass mein Prozessor in der Lage ist:

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

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

Das Lesen unverschlüsselter Daten ist 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 in etwa den Spezifikationen meiner SSD von "bis zu 530 MB / s". Wenn Sie einen ddTest durchführen, erhalten Sie ähnliche Ergebnisse 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), wobei die Zahlen nahe an der SSD-Spezifikation liegen (ich denke, das Schreiben ist gepuffert oder so):

# 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 erhalten, da diese Anzahl variiert. Normalerweise sind es ungefähr 150 MB / s, aber ich habe bei einem 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 ich während der Durchführung dieses Tests keine anderen Prozesse habe, die E / A ausführen (wie bei zu sehen iotop).

Hier ist auch der Test, mit hdparmdem schlechtere Ergebnisse erzielt werden:

 # 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 ausprobiert, indem htopich mir angesehen habe ... nicht sicher, wie ich das, was ich gesehen habe, interpretieren soll, da der i5-Prozessor Hyper-Threading ausführt, aber 2 von 4 Threads gingen während des Tests zu etwa 73% der Nutzung über, während der andere 2 Fäden wurden nicht verwendet. Wenn ich zwei Prozesse starte, die ddaus zwei verschiedenen Dateien lesen (um das Puffern zu verhindern), werden iotopinsgesamt ca. 400 MB / s gemeldet. Das fühlt sich definitiv so an, als wäre es CPU-gebunden.

Meine Enttäuschung kommt von der Tatsache, dass mein i5-Prozessor AES-NI- fähig ist . Unverschlüsselte Daten werden mit denselben Tests wie oben mit über 500 MB / s gelesen. Es handelt sich also um eine mindestens dreimal langsamere verschlüsselte Partition.

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 die Dinge nicht noch weiter verbessern?

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

Vielen Dank,

Alexandru Nedelcu
quelle

Antworten:

5

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

Durch Festlegen des ATA-Hauptkennworts im BIOS und anschließendes sicheres Löschen des Laufwerks sollte die Laufwerksfirmware 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-encryption/ ) Samsung verschlüsselt auch seine AES-Schlüssel mit Ihrem ATA-Passwort.

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

Charl Botha
quelle
4

In Ubuntu gibt es eine Fehlkonfiguration, die dazu führt, dass das Modul aesni_intel nicht früh genug geladen wird, um Krypto für vom Boot entsperrte Geräte zu verarbeiten. Ich konnte dies auf meinen Maschinen beheben, indem ich Folgendes tat:

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

neu starten und genießen. Danach sah ich auf einer ähnlichen SSD 500 MB / s Lesen und Schreiben mit vernachlässigbarer CPU-Auslastung.

Ausführliche Informationen zu diesem Fehler finden Sie unter https://bugs.launchpad.net/ubuntu/+source/cryptsetup/+bug/908387/comments/7

Devin Lane
quelle