Linux LUKS y elección del sistema de archivos

12

¿Qué sistema de archivos muestra el mejor rendimiento cuando se ejecuta en una partición cifrada LUKS? ¿Tiene sentido usar f2fs cuando la partición LUKS está en un SSD, o la abstracción del mapeador de dispositivos hace que las optimizaciones SSD de f2fs sean inútiles?

Kevin
fuente

Respuestas:

8

Hay muchos consejos, pero muy pocos resultados empíricos para la eficiencia del uso del cifrado.

Encontré uno de esos estudios: SSD Linux benchmarking: comparación de sistemas de archivos y métodos de cifrado . En la tabla a continuación, las medidas son reales / usuario / sys y los mejores resultados son de color verde, mientras que los peores son de color rojo:

Haga clic para una imagen más grandeHaga clic para una imagen más grande

En base a estos resultados, el autor decidió utilizar dm-crypt en modo aes-xts-plain con longitud de keyle de 128 bits y btrfs con alineación ssd y compress=lzo.

Otro artículo útil es The Impact Impact of Linux Disk Encryption on Ubuntu 14.04 LTS . Estudió el uso de la CPU durante la instalación en las tres configuraciones de opciones de instalación de stock (sin cifrado de disco), método de cifrado de disco completo utilizando LUKS en LVM y cifrado de directorio de inicio basado en eCryptfs. Los resultados se resumen en el gráfico a continuación, y la conclusión es que la instalación sin cifrado promedió 26%, mientras que los cifrados LUKS en LVM y eCryptfs promediaron aproximadamente 30 ~ 31%, por lo que ambos tienen un rendimiento casi equivalente.

haga clic para una imagen grandeHaga clic para una imagen más grande

Un artículo que no tiene resultados empíricos, pero muchos buenos consejos son LinuX, SSD y cifrado de disco . Recomiendo leer este artículo, y aquí está el consejo principal dado:

  1. Para la partición SSD, al menos debe agregar las opciones de montaje noatimey nodiratimesuprimir la contabilidad de los tiempos de acceso para archivos y directorios.
  2. Configure ramdisks usando tmpfs para archivos temporales.
  3. Cambie el planificador de disco para usar noop o fecha límite .
  4. Habilitar caché de escritura a nivel de dispositivo
  5. Parametrice el navegador para no usar un caché de disco.
harrymc
fuente
5

Hice algunas pruebas con un sistema de gama baja a media. Resultados a continuación.

mesa

En conclusión, parece que el cifrado no hace que las optimizaciones de un sistema de archivos sean inútiles. Como puede ver en la tabla, para dmcrypt / LUKS (AES256), el F2FSsistema de archivos era más rápido que EXT4en casi todos los escenarios en los que era más rápido de forma predeterminada (sin cifrado, claro). Sorprendentemente, también proporcionó un beneficio notable en los casos en que no sería sin cifrado, es decir, Bonnie++ Sequential Output (Per char)las Flexible I/O Tester Sequential Readpruebas y.

Para este mismo escenario, también fue más lento en dos pruebas (Sequential Write - Bonnie ++ y FIO), pero no mucho más lento de todos modos. Su experiencia puede ser diferente.

No probé EXT4 con AES-128bits debido al tiempo limitado, ya que no sería esencial para esta respuesta.

Nota: Observé desviaciones muy grandes y extrañas en las pruebas con AES-128bits. Hasta un 15% de variaciones en la mayoría de las pruebas, e incluso un 37% (!) En un caso. No estoy seguro de por qué. No utilicé el sistema para nada más durante las pruebas. El sistema (raíz) está encriptado con AES-256, así que puedo pensar en una explicación hipotética que involucra tuberías de CPU / opcache, pero ... Realmente no puedo decirlo todavía. (Esto también sucede cuando se prueba desde un CD en vivo, sin desbloquear nunca la partición AES-256bit, por lo que esa no es la razón).

La desviación se mantuvo por debajo del 3,6% (1,4% típico) en cualquier otro lugar. Estoy adoptando un margen de error del 4%. Por lo tanto, las diferencias menores al 4% deben ignorarse para estos resultados.

Configuración de prueba:

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.

Tabla de resultados en formato ASCII (se omiten las diferencias consideradas "irrelevantes"):

                                                                                                                |+===================================+| 
                                                                                                                ||            % 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
fuente