SSD lento + dm-crypt con crittografia Luks in Ubuntu 12.10


10

Ho un SSD da 128 GB installato sul mio laptop (Samsung 840 Pro) su un'interfaccia Sata 3. Questo laptop ha anche un processore i5 3210m Ivy Bridge Intel e 8 GB di RAM.

Ho installato Ubuntu 12.10, usando il programma di installazione grafico per ottenere la crittografia dell'intero disco. Sono un po 'deluso, perché mi aspettavo le specifiche che dovevo ottenere risultati migliori di quello che ottengo.

Guardando questa pagina di benchmarking SSD afferma che il mio processore è in grado di fare:

  • ~ 500 MB / s: con AES-NI
  • ~ 200 MB / s: senza AES-NI

Guardando i numeri che ottengo, penso che potrei non avere AES-NI abilitato. Ma prima ...

La lettura di dati non crittografati è veloce:

# 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

Questo è in realtà vicino alle specifiche del mio SSD di "fino a 530 MB / s" e fare un ddtest produce risultati simili a quelli sopra.

La scrittura di dati crittografati è veloce anche con dm-crypt (altrimenti con eCryptfs le prestazioni sulla scrittura sono spaventose, inferiori a 100 MB / s), i numeri sono vicini alle specifiche SSD (suppongo che la scrittura sia bufferizzata o qualcosa del genere):

# 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

La lettura di dati crittografati è tuttavia un'altra storia:

# 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

Durante la scrittura di questo messaggio, ho avuto la fortuna di ottenere 183 MB / s, poiché questo numero varia. Normalmente si trova a circa 150 MB / s, ma mi sono anche avvicinato a 300 MB / s con un nuovo avvio, ma le prestazioni scendono gradualmente a meno di 200 MB / s senza che io avvii alcuna app. Si noti che durante l'esecuzione di questo test non ho altri processi che eseguono I / O (come visto con iotop).

Inoltre, ecco il test con il hdparmquale si ottengono risultati peggiori:

 # 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

Ho anche provato l'esperimento guardando htop... non sono sicuro di come interpretare ciò che ho visto, dal momento che il processore i5 esegue Hyper-Threading, ma 2 thread su 4 dove andavano a circa il 73% di utilizzo durante il test, mentre l'altro 2 thread lasciati inutilizzati. In effetti, se avvio 2 processi che leggono ddda 2 file distinti (per impedire il buffering), quindi iotopriporta un totale di circa 400 MB / s. Quindi questo sembra decisamente legato alla CPU.

La mia delusione deriva dal fatto che il mio processore i5 è in grado di AES-NI . I dati non crittografati vengono letti a oltre 500 MB / s utilizzando gli stessi test che ho fatto sopra. Quindi stiamo parlando di una partizione crittografata che è almeno 3 volte più lenta.

Non so davvero se la mia installazione di dm-crypt sta usando AES-NI. Ecco l'output di lsmod:

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

Ecco l'output di 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

Quindi, è previsto? AES-NI non dovrebbe migliorare le cose più di questo?

Inoltre, come disabilitare AES-NI per vedere se c'è qualche differenza? E forse dovrei abilitarlo in qualche modo, ma non ho trovato alcun suggerimento nelle mie ricerche.

Grazie,

Risposte:


6

Il tuo Samsung 840 Pro supporta la crittografia AES hardware. Se il BIOS del tuo laptop supporta la modalità di protezione ATA imposta le password master e utente, sei fortunato.

Impostando la password principale ATA nel BIOS e quindi eseguendo una cancellazione sicura dell'unità, il firmware dell'unità dovrebbe generare nuove chiavi AES casuali. Dopo la cancellazione sicura, assicurarsi di aver impostato le password utente e master ATA corrette. Per quanto ho potuto stabilire (vedi il mio post qui http://vxlabs.com/2012/12/22/ssds-with-usable-built-in-hardware-based-full-disk-encryption/ ) il Samsung cripta anche le sue chiavi AES con la tua password ATA.

Ciò ti garantirà la crittografia AES a tutta velocità, senza necessità di software.


5

Esiste una configurazione errata in Ubuntu che provoca il caricamento del modulo aesni_intel in tempo utile per gestire la crittografia per i dispositivi sbloccati all'avvio. Sono stato in grado di risolvere questo problema sui miei computer facendo:

sudo vim /etc/initramfs-tools/modules

Sotto l'ultima riga, aggiungi

# enable h/w accelerated encryption
cryptd
aes_x86_64
aesni_intel

Quindi corri

sudo update-initramfs -u -k all

riavvia e divertiti. Dopo questo, su un SSD simile, vedevo 500 MB / s leggere e scrivere con un utilizzo trascurabile della CPU.

I dettagli completi su questo bug sono disponibili su https://bugs.launchpad.net/ubuntu/+source/cryptsetup/+bug/908387/comments/7

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.