Réponses:
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:
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.
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:
noatime
et nodiratime
supprimer la comptabilité des temps d'accès aux fichiers et répertoires.J'ai fait quelques tests avec un système bas-moyen. Résultats ci-dessous.
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 F2FS
système de fichiers était plus rapide que EXT4
dans 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 Read
tests.
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 ||
|+------------+------------------------+----------+----------+----------+----------+------+----------++---------++--------+--------+--------+--------+|
_