SSD lento + dm-crypt con cifrado Luks en Ubuntu 12.10

9

Tengo un SSD de 128 GB instalado en mi computadora portátil (Samsung 840 Pro) en una interfaz Sata 3. Esta computadora portátil también tiene un procesador Intel Ivy Bridge i5 3210m y 8 GB de RAM.

Instalé Ubuntu 12.10, usando el instalador gráfico para obtener el cifrado de disco completo. Estoy un poco decepcionado, porque esperaba las especificaciones que tengo para obtener mejores resultados de lo que obtengo.

Mientras mira esta página de evaluación comparativa de SSD , afirma que mi procesador puede hacer:

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

En cuanto a los números que obtengo, creo que es posible que no tenga habilitado AES-NI. Pero primero ...

Leer datos sin cifrar es rápido:

# 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

Eso está realmente cerca de las especificaciones de mi SSD de "hasta 530 MB / s" y hacer una ddprueba produce resultados similares a los anteriores.

La escritura de datos cifrados también es rápida con dm-crypt (de lo contrario, con eCryptfs el rendimiento en la escritura es abismal, inferior a 100 MB / s), los números están cerca de la especificación SSD (supongo que la escritura está protegida o algo así):

# 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

Sin embargo, leer datos cifrados es otra 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

Mientras escribía este mensaje, tuve la suerte de obtener 183 MB / s, porque este número varía. Normalmente es de alrededor de 150 MB / s, pero también obtuve cerca de 300 MB / s en un arranque nuevo, pero luego el rendimiento cae gradualmente a menos de 200 MB / s sin que yo inicie ninguna aplicación. Tenga en cuenta que al realizar esta prueba no tengo otros procesos que estén haciendo E / S (como se ve con iotop).

Además, aquí está la prueba con la hdparmque se obtienen peores resultados:

 # 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

También probé el experimento mirando htop... no estoy seguro de cómo interpretar lo que vi, ya que el procesador i5 hace Hyper-Threading, pero 2 de 4 subprocesos utilizaron aproximadamente el 73% durante la prueba, mientras que el otro 2 hilos donde se dejaron sin usar. De hecho, si inicio 2 procesos que leen dddesde 2 archivos distintos (para evitar el almacenamiento en búfer), iotopinforma un total de aproximadamente 400 MB / s. Entonces esto definitivamente se siente como si estuviera vinculado a la CPU.

Mi decepción proviene del hecho de que mi procesador i5 es capaz de AES-NI . Los datos sin cifrar se leen a más de 500 MB / s utilizando las mismas pruebas que hice anteriormente. Estamos hablando de que una partición encriptada es al menos 3 veces más lenta.

Realmente no sé si mi instalación de dm-crypt está usando AES-NI. Aquí está la salida de lsmod:

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

Aquí está la salida de 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

Entonces, ¿se espera esto? ¿No debería AES-NI mejorar las cosas más que esto?

Además, ¿cómo deshabilitar AES-NI para ver si hay alguna diferencia? Y tal vez debería habilitarlo de alguna manera, pero no he encontrado ningún consejo en mis búsquedas.

Gracias,

Alexandru Nedelcu
fuente

Respuestas:

5

Su Samsung 840 Pro es compatible con el cifrado AES de hardware. Si el BIOS de su computadora portátil admite las contraseñas maestras y de usuario del modo de función de seguridad ATA, tiene suerte.

Al configurar la contraseña maestra ATA en el BIOS, y luego hacer un borrado seguro de la unidad, el firmware de la unidad debe generar nuevas claves AES aleatorias. Después del borrado seguro, asegúrese de haber configurado buenas contraseñas de usuario y maestro ATA. Hasta donde he podido establecer (vea mi publicación aquí http://vxlabs.com/2012/12/22/ssds-with-usable-built-in-hardware-based-full-disk-encryption/ ) Samsung también cifra sus claves AES con su contraseña ATA.

Esto le dará encriptación AES a toda velocidad, no requiere software.

Charl Botha
fuente
4

Hay una configuración incorrecta en Ubuntu que hace que el módulo aesni_intel no se cargue lo suficientemente temprano como para manejar criptografía para dispositivos desbloqueados de arranque. Pude arreglar esto en mis máquinas haciendo:

sudo vim /etc/initramfs-tools/modules

Debajo de la última línea, agregue

# enable h/w accelerated encryption
cryptd
aes_x86_64
aesni_intel

Entonces corre

sudo update-initramfs -u -k all

reiniciar y disfrutar. Después de esto, en un SSD similar, estaba viendo 500 MB / s de lectura y escritura con un uso insignificante de la CPU.

Los detalles completos sobre este error se encuentran en https://bugs.launchpad.net/ubuntu/+source/cryptsetup/+bug/908387/comments/7

Devin Lane
fuente