Linux LUKS et choix du système de fichiers

12

Quel système de fichiers affiche les meilleures performances lors de l'exécution sur une partition chiffrée LUKS? Est-il judicieux d'utiliser f2fs lorsque la partition LUKS est sur un SSD, ou l'abstraction du mappeur de périphérique rend-elle les optimisations SSD de f2fs inutiles?

Kevin
la source

Réponses:

8

Il y a beaucoup de conseils, mais très peu de résultats empiriques pour l'efficacité de l'utilisation du chiffrement.

J'ai trouvé une telle étude: Analyse comparative SSD Linux: Comparaison des systèmes de fichiers et des méthodes de cryptage . Dans le tableau ci-dessous, les mesures sont réelles / utilisateur / sys et les meilleurs résultats sont colorés en vert tandis que les pires sont colorés en rouge:

cliquer pour agrandir l'imagecliquer pour agrandir l'image

Sur la base de ces résultats, l'auteur a décidé d'utiliser dm-crypt en mode aes-xts-plain avec une longueur de clé de 128 bits et btrfs avec un alignement ssd et compress=lzo.

Un autre article utile est L'impact sur les performances du chiffrement de disque Linux sur Ubuntu 14.04 LTS . Il a étudié l'utilisation du processeur lors de l'installation sur les trois configurations d'options d'installation standard (pas de chiffrement de disque), la méthode de chiffrement complet du disque à l'aide de LUKS sur LVM et le chiffrement du répertoire de base basé sur eCryptfs. Les résultats sont résumés dans le graphique ci-dessous, et la conclusion est que l'installation sans chiffrement était en moyenne de 26%, tandis que les chiffrements LUKS sur LVM et eCryptfs étaient en moyenne d'environ 30 à 31%, donc les deux sont presque équivalents en termes de performances.

cliquez pour une grande imagecliquer pour agrandir l'image

Un article qui n'a pas de résultats empiriques mais qui contient de nombreux bons conseils est LinuX, les SSD et le chiffrement de disque . Je recommande de lire cet article, et voici les principaux conseils donnés:

  1. Pour la partition SSD, vous devez au moins ajouter les options de montage noatimeet nodiratimesupprimer la comptabilité des temps d'accès aux fichiers et répertoires.
  2. Configurez des disques virtuels à l'aide de tmpfs pour les fichiers temporaires.
  3. Modifiez le planificateur de disque pour utiliser noop ou date limite .
  4. Activer le cache d'écriture au niveau de l'appareil
  5. Paramétrez le navigateur pour ne pas utiliser de cache disque.
harrymc
la source
5

J'ai fait quelques tests avec un système bas-moyen. Résultats ci-dessous.

table

En conclusion, il semble que le chiffrement ne rend pas inutiles les optimisations d'un système de fichiers. Comme vous pouvez le voir dans le tableau, pour dmcrypt / LUKS (AES256), le F2FSsystème de fichiers était plus rapide que EXT4dans presque tous les scénarios dans lesquels il était plus rapide par défaut (sans cryptage, c'est-à-dire). Quelque peu surprenant, il a également fourni un avantage notable dans les cas où il ne serait pas sans cryptage - à savoir, Bonnie++ Sequential Output (Per char)et les Flexible I/O Tester Sequential Readtests.

Pour ce même scénario, il a également été plus lent dans deux tests (écriture séquentielle - Bonnie ++ et FIO), mais pas beaucoup plus lent de toute façon. Votre kilométrage peut varier.

Je n'ai pas testé EXT4 avec AES-128bits en raison du temps limité car il ne serait pas essentiel pour cette réponse.

Remarque: j'ai observé de très grandes et étranges déviations lors des tests avec AES-128bits. Jusqu'à 15% de variations dans la plupart des tests, et même 37% (!) Dans un cas. Pas certain de pourquoi. Je n'ai pas utilisé le système pour autre chose pendant la durée des tests. Le système (root) est lui-même crypté avec AES-256, donc je peux penser à une explication hypothétique impliquant des pipelines CPU / opcache, mais ... Je ne peux vraiment pas le dire pour l'instant. (Cela se produit également lors des tests à partir d'un CD live, sans jamais déverrouiller la partition AES-256 bits, ce n'est donc pas la raison).

L'écart a été maintenu sous 3,6% (1,4% typique) partout ailleurs. J'adopte une marge d'erreur de 4%. Ainsi, des différences inférieures à 4% doivent être ignorées pour ces résultats.

Configuration de test:

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.

Tableau des résultats au format ASCII (les différences jugées "non pertinentes" sont omises):

                                                                                                                |+===================================+| 
                                                                                                                ||            % 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
la source