SSD lento + dm-crypt com criptografia Luks no Ubuntu 12.10

9

Eu tenho um SSD de 128 GB instalado no meu laptop (Samsung 840 Pro) em uma interface Sata 3. Este laptop também possui um processador i5 3210m Ivy Bridge Intel e 8 GB de RAM.

Eu instalei o Ubuntu 12.10, usando o instalador gráfico para obter criptografia de disco completo. Estou meio desapontado, porque esperava que as especificações tivessem resultados melhores do que o que recebi.

Ao olhar para esta página de benchmarking de SSD , ele afirma que meu processador é capaz de:

  • ~ 500 MB / s: com AES-NI
  • ~ 200 MB / s: sem AES-NI

Olhando para os números que recebo, acho que posso não ter o AES-NI ativado. Mas primeiro ...

A leitura de dados não criptografados é rápida:

# 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

Isso é realmente próximo das especificações do meu SSD de "até 530 MB / s" e fazer um ddteste produz resultados semelhantes aos acima.

A gravação de dados criptografados também é rápida com o dm-crypt (caso contrário, com o eCryptfs, o desempenho na gravação é abismal, inferior a 100 MB / s), com os números próximos à especificação do SSD (acho que a gravação está em buffer ou algo assim):

# 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

Ler dados criptografados é outra história:

# 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

Enquanto escrevia esta mensagem, tive a sorte de obter 183 MB / s, porque esse número varia. Normalmente, é algo em torno de 150 MB / s, mas também cheguei perto de 300 MB / s em uma nova inicialização, mas o desempenho cai gradualmente para menos de 200 MB / s sem que eu inicie nenhum aplicativo. Observe que, durante a realização deste teste, não tenho outros processos que executam E / S (como visto em iotop).

Além disso, aqui está o teste com o hdparmqual produz resultados piores:

 # 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

Eu também tentei o experimento examinando htop... não sei como interpretar o que vi, já que o processador i5 faz Hyper-Threading, mas 2 threads em 4 são usados ​​em 73% do uso durante o teste, enquanto o outro 2 threads onde não foram utilizados. De fato, se eu iniciar 2 processos que estão lendo com dd2 arquivos distintos (para impedir o armazenamento em buffer), iotopreporte um total de aproximadamente 400 MB / s. Então isso definitivamente parece vinculado à CPU.

Minha decepção vem do fato de que meu processador i5 é capaz de AES-NI . Dados não criptografados estão sendo lidos a mais de 500 MB / s usando os mesmos testes que fiz acima. Então, estamos falando de uma partição criptografada sendo pelo menos três vezes mais lenta.

Realmente não sei se minha instalação do dm-crypt está usando o AES-NI. Aqui está a saída de lsmod:

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

Aqui está a saída 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

Então, isso é esperado? A AES-NI não deveria melhorar mais do que isso?

Além disso, como desativar o AES-NI para ver se há alguma diferença? E talvez eu deva ativá-lo de alguma forma, mas não encontrei nenhuma dica em minhas pesquisas.

Obrigado,

Alexandru Nedelcu
fonte

Respostas:

5

O seu Samsung 840 Pro suporta criptografia AES de hardware. Se o BIOS do seu laptop suportar o modo de recurso de segurança ATA, definir senhas mestra e de usuário, você estará com sorte.

Ao definir a senha principal do ATA no BIOS e, em seguida, fazer uma exclusão segura da unidade, o firmware da unidade deve gerar novas chaves AES aleatórias. Após a exclusão segura, verifique se você definiu boas senhas de mestre e usuário do ATA. Tanto quanto eu consegui estabelecer (veja minha postagem aqui http://vxlabs.com/2012/12/22/ssds-with-usable-built-in-hardware-based-full-disk-encryption/ ) o A Samsung também criptografa suas chaves AES com sua senha ATA.

Isso fornecerá criptografia AES de velocidade total, sem necessidade de software.

Charl Botha
fonte
4

Há uma configuração incorreta no Ubuntu que resulta no módulo aesni_intel não ser carregado com antecedência suficiente para lidar com criptografia para dispositivos desbloqueados na inicialização. Consegui consertar isso em minhas máquinas fazendo:

sudo vim /etc/initramfs-tools/modules

Abaixo da última linha, adicione

# enable h/w accelerated encryption
cryptd
aes_x86_64
aesni_intel

Então corra

sudo update-initramfs -u -k all

reinicie e aproveite. Depois disso, em um SSD semelhante, eu estava vendo 500 MB / s de leitura e gravação com uso insignificante da CPU.

Detalhes completos sobre este bug estão em https://bugs.launchpad.net/ubuntu/+source/cryptsetup/+bug/908387/comments/7

Devin Lane
fonte