Powolny SSD + dm-crypt z szyfrowaniem Luks w Ubuntu 12.10

10

Mam 128 GB SSD zainstalowanego w moim laptopie (Samsung 840 Pro) na interfejsie Sata 3. Ten laptop ma również procesor Intel iy 3210m Ivy Bridge Intel i 8 GB pamięci RAM.

Zainstalowałem Ubuntu 12.10, używając graficznego instalatora, aby uzyskać pełne szyfrowanie dysku. Jestem trochę rozczarowany, ponieważ spodziewałem się, że specyfikacje przyniosą lepsze rezultaty niż to, co otrzymam.

Przeglądając tę stronę Benchmarking SSD , twierdzi, że mój procesor może:

  • ~ 500 MB / s: Z AES-NI
  • ~ 200 MB / s: Bez AES-NI

Patrząc na liczby, które otrzymuję, myślę, że nie mam włączonej funkcji AES-NI. Ale najpierw ...

Czytanie niezaszyfrowanych danych jest szybkie:

# 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

To faktycznie jest bliskie specyfikacji mojego dysku SSD „do 530 MB / s”, a wykonanie ddtestu daje wyniki podobne do powyższych.

Zapisywanie zaszyfrowanych danych jest również szybkie dzięki dm-crypt (w przeciwnym razie w eCryptfs wydajność zapisu jest ogromna, mniejsza niż 100 MB / s), liczby są zbliżone do specyfikacji SSD (myślę, że zapis jest buforowany lub coś w tym rodzaju):

# 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

Odczytywanie zaszyfrowanych danych to jednak inna historia:

# 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

Podczas pisania tej wiadomości miałem szczęście uzyskać 183 MB / s, ponieważ liczba ta jest różna. Zwykle jest to około 150 MB / s, ale dostałem też prawie 300 MB / s przy nowym rozruchu, ale potem wydajność spada stopniowo do poniżej 200 MB / s bez uruchamiania jakichkolwiek aplikacji. Zauważ, że podczas przeprowadzania tego testu nie mam innych procesów wykonujących operacje we / wy (jak widać w przypadku iotop).

Oto test, w hdparmktórym wyniki są gorsze:

 # 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

Próbowałem również eksperymentu, patrząc na htop... nie jestem pewien, jak interpretować to, co widziałem, ponieważ procesor i5 robi Hyper-Threading, ale 2 wątki na 4 osiągają około 73% użycia podczas testu, podczas gdy inne 2 wątki pozostawione nieużywane. Rzeczywiście, jeśli rozpocznę 2 procesy, które odczytują z dd2 różnych plików (aby zapobiec buforowaniu), iotopzgłasza w sumie około 400 MB / s. Zdecydowanie wydaje się, że jest to związane z procesorem.

Moje rozczarowanie wynika z faktu, że mój procesor i5 jest w stanie obsługiwać AES-NI . Nieszyfrowane dane są odczytywane z prędkością ponad 500 MB / s przy użyciu tych samych testów, które przeprowadziłem powyżej. Mówimy więc o zaszyfrowanej partycji, która jest co najmniej 3 razy wolniejsza.

Naprawdę nie wiem, czy moja instalacja dm-crypt korzysta z AES-NI. Oto wynik lsmod:

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

Oto wynik 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

Czy to jest oczekiwane? Czy AES-NI nie powinien poprawiać rzeczy bardziej niż to?

Jak wyłączyć AES-NI, aby zobaczyć, czy jest jakaś różnica? I może powinienem jakoś to włączyć, ale nie znalazłem żadnych wskazówek w moich wyszukiwaniach.

Dzięki,

Alexandru Nedelcu
źródło

Odpowiedzi:

6

Twój Samsung 840 Pro obsługuje sprzętowe szyfrowanie AES. Jeśli BIOS twojego laptopa obsługuje tryb funkcji bezpieczeństwa ATA, ustaw hasło główne i hasło użytkownika, masz szczęście.

Po ustawieniu hasła głównego ATA w systemie BIOS, a następnie bezpiecznym usunięciu dysku, oprogramowanie układowe dysku powinno wygenerować nowe losowe klucze AES. Po bezpiecznym skasowaniu upewnij się, że ustawiłeś dobre hasło administratora i użytkownika ATA. O ile udało mi się ustalić (patrz mój post tutaj http://vxlabs.com/2012/12/22/ssds-with-usable-built-in-hardware-based-full-disk-encryption/ ) Samsung szyfruje również klucze AES za pomocą hasła ATA.

Zapewni to pełne szyfrowanie AES, nie wymaga oprogramowania.

Charl Botha
źródło
5

W Ubuntu występuje błędna konfiguracja, która powoduje, że moduł aesni_intel nie jest ładowany wystarczająco wcześnie, aby obsłużyć krypto dla urządzeń odblokowanych przy rozruchu. Udało mi się to naprawić na moich komputerach, wykonując:

sudo vim /etc/initramfs-tools/modules

Pod ostatnim wierszem dodaj

# enable h/w accelerated encryption
cryptd
aes_x86_64
aesni_intel

Następnie uruchomić

sudo update-initramfs -u -k all

uruchom ponownie i ciesz się. Potem na podobnym dysku SSD widziałem 500 MB / s odczytu i zapisu przy znikomym zużyciu procesora.

Szczegółowe informacje na temat tego błędu znajdują się na stronie https://bugs.launchpad.net/ubuntu/+source/cryptsetup/+bug/908387/comments/7

Devin Lane
źródło