Linux LUKS e escolha do sistema de arquivos

12

Qual sistema de arquivos exibe o melhor desempenho ao executar em uma partição criptografada LUKS? Faz sentido usar o f2fs quando a partição LUKS está em um SSD ou a abstração do mapeador de dispositivo torna inúteis as otimizações de SSD do f2fs?

Kevin
fonte

Respostas:

8

Há muitos conselhos, mas poucos resultados empíricos para a eficiência do uso de criptografia.

Eu encontrei um desses estudos: benchmarking SSD Linux: comparando sistemas de arquivos e métodos de criptografia . Na tabela abaixo, as medidas são reais / usuário / sistema e os melhores resultados são coloridos em verde, enquanto os piores são em vermelho:

clique para ampliar a imagemclique para ampliar a imagem

Com base nesses resultados, o autor decidiu usar o dm-crypt no modo aes-xts-plain com comprimento de chave de 128 bits e btrfs com alinhamento ssd e compress=lzo.

Outro artigo útil é O impacto no desempenho da criptografia de disco do Linux no Ubuntu 14.04 LTS . Ele estudou o uso da CPU durante a instalação nas três configurações das opções de instalação de estoque (sem criptografia de disco), método completo de criptografia de disco usando LUKS no LVM e criptografia de diretório inicial baseada em eCryptfs. Os resultados estão resumidos no gráfico abaixo, e a conclusão é que a instalação sem criptografia teve uma média de 26%, enquanto a criptografia LUKS no LVM e eCryptfs obteve uma média de 30 a 31%, portanto, ambas são quase equivalentes em desempenho.

clique para uma imagem grandeclique para ampliar a imagem

Um artigo que não apresenta resultados empíricos, mas oferece bons conselhos sobre LinuX, SSDs e criptografia de disco . Eu recomendo a leitura deste artigo, e aqui está o principal conselho dado:

  1. Para partição SSD, você deve pelo menos adicionar as opções de montagem noatimee nodiratimesuprimir a contabilidade dos tempos de acesso para arquivos e diretórios.
  2. Configure ramdisks usando tmpfs para arquivos temporários.
  3. Altere o planejador de disco para usar noop ou prazo .
  4. Ativar cache de gravação no nível do dispositivo
  5. Parâmetro no navegador para não usar um cache de disco.
harrymc
fonte
5

Fiz alguns testes com um sistema de ponta baixa a média. Resultados abaixo.

mesa

Em conclusão, parece que a criptografia não inutiliza as otimizações de um sistema de arquivos. Como você pode ver na tabela, para dmcrypt / LUKS (AES256), o F2FSsistema de arquivos era mais rápido do que EXT4em quase todos os cenários em que era mais rápido por padrão (sem criptografia). Surpreendentemente, ele também proporcionou um benefício notável nos casos em que não existe criptografia - ou seja, Bonnie++ Sequential Output (Per char)os Flexible I/O Tester Sequential Readtestes.

Para esse mesmo cenário, também foi mais lento em dois testes (Gravação Sequencial - Bonnie ++ e FIO), mas não muito mais lento. Sua milhagem pode variar.

Não testei EXT4 com AES-128bits por causa do tempo limitado, pois não seria essencial para esta resposta.

Nota: observei desvios muito grandes e estranhos nos testes com AES-128bits. Variações de até 15% na maioria dos testes e até 37% (!) Em um caso. Não sei por que. Eu não usei o sistema para mais nada durante os testes. O sistema (raiz) é criptografado com o AES-256, para que eu possa pensar em uma explicação hipotética envolvendo pipelines da CPU / opcache, mas ... Realmente não posso dizer ainda. (Isso também acontece ao testar a partir de um CD ao vivo, sem nunca desbloquear a partição AES-256 bits, por isso não é esse o motivo).

O desvio foi mantido abaixo de 3,6% (1,4% típico) em qualquer outro lugar. Estou adotando uma margem de erro de 4%. Portanto, diferenças menores que 4% devem ser ignoradas para esses resultados.

Configuração de teste:

SSD: Kingston SV300S37A/120G
Mainboard: ASUS Sabertooth 990FX R2.0
CPU: AMD FX-6350 @ stock
Kernel version: 4.11.3
IO Scheduler: CFQ
All tests were run using an 80GB secondary partition.

Tabela de resultados no formato ASCII (diferenças consideradas "irrelevantes" são omitidas):

                                                                                                                |+===================================+| 
                                                                                                                ||            % Change               ||
                                      |+=====================+=====================+=================+|         ||--------+--------+--------+--------||
                                      ||   (no encryption)   |       AES-256       |    AES-128      ||         ||   F2FS / EXT4   |Crypto / NoCrypto||
|+============+========================+----------+----------+----------+----------+------+----------||=========||--------+--------+--------+--------+|
|| Test suite | Test Method            | EXT4     | F2FS     | EXT4     | F2FS     | EXT4 | F2FS     || Unit    ||nocrypto| aes256 | aes128 | aes256 ||
|+------------+------------------------+----------+----------+----------+----------+------+----------++---------++--------+--------+--------+--------+|
|| Manual     | Read                   | 390.6    | 391.59   | 320      | 325.6    | -    | 345.36   || MiB/s   ||        |        | -11.81 | -16.85 ||
||(cp and dd) | Write (zeros)          | 501.96   | 517.17   | 96.9     | 96.7     |      | 112.16   || MiB/s   ||        |        | -78.31 | -81.30 ||
||            | Write (random data)    | 100.44   | 97.99    | 91.8     | 89.5     |      | 97.64    || MiB/s   ||        |        |        | -08.66 ||
||--------------------------------------------------------------------------------------------------------------||--------|--------|--------|--------||
||            | Seq. Output – Per char | 80.68    | 83.76    | 63.56    | 80.59    | -    | 75.56    || MiB/s   ||        | +26.79 | -09.79 |        ||
||            | Seq. Output – Block    | 498.92   | 492.42   | 104.74   | 101.13   |      | 90.9     || MiB/s   ||        |        | -81.54 | -79.46 ||
|| Bonnie++   | Seq. Output – Rewrite  | 196.4    | 198.99   | 74.69    | 70.8     |      | 70.27    || MiB/s   ||        | -05.21 | -64.69 | -64.42 ||
||            | Seq. Input - Per char  | 86.93    | 86.04    | 84.01    | 81.25    |      | 87.84    || MiB/s   ||        |        |        | -05.57 ||
||            | Seq. Input – Block     | 352.57   | 355.99   | 286.36   | 289.24   |      | 304.5    || MiB/s   ||        |        | -14.46 | -18.75 ||
||            | Random seeks           | 9452.9   | 9102.2   | 8142.3   | 8224.8   |      | 7431.4   || ops/s   ||        |        | -18.36 | -09.64 ||
||--------------------------------------------------------------------------------------------------------------||--------|--------|--------|--------||
|| Fs-mark    | 1000 files, 1 thread   | 193.7    | 236.6    | 93.6     | 103.7    | -    | 73.9     || files/s || +18.13 | +10.79 | -68.77 | -56.17 ||
||            | 5000 files, 4 threads  | 310.1    | 348.8    | 90.9     | 99       |      | 91.6     || files/s || +11.10 | +08.91 | -73.74 | -71.62 ||
||--------------------------------------------------------------------------------------------------------------||--------|--------|--------|--------||
||            | Random read            | 56.77    | 69.86    | 58.79    | 63.51    |      | 61.93    || MiB/s   ||        |        |        |        ||
||            |                        | 14188    | 17461    | 14695    | 15874    |      | 15479    || IOPS    || +23.07 | +08.02 | -11.35 | -09.09 ||
|| Flexible   |                        |          |          |          |          | -    |          ||         ||        |        |        |        ||
|| I/O        | Random write           | 59.91    | 78.99    | 52.2     | 63.75    |      | 67.75    || MiB/s   ||        |        |        |        ||
|| Tester     |                        | 14973    | 19745    | 13046    | 15935    |      | 16934    || IOPS    || +31.87 | +22.14 | -14.24 | -19.30 ||
||            |                        |          |          |          |          |      |          ||         ||        |        |        |        ||
||            | Sequential read        | 284.02   | 247.57   | 95.14    | 95.17    |      | 95.98    || MiB/s   ||        |        |        |        ||
||            |                        | 71001    | 61889    | 23781    | 23788    |      | 23991    || IOPS    || -12.83 |        | -61.24 | -61.56 ||
||            |                        |          |          |          |          |      |          ||         ||        |        |        |        ||
||            | Sequential write       | 94.06    | 100.77   | 100.63   | 96.56    |      | 86.93    || MiB/s   ||        |        |        |        ||
||            |                        | 23512    | 25188    | 25153    | 24137    |      | 21728    || IOPS    || +07.13 | -04.04 | -13.74 | -04.17 ||
|+------------+------------------------+----------+----------+----------+----------+------+----------++---------++--------+--------+--------+--------+|
_
Marc.2377
fonte