Відповіді:
Є багато порад, але дуже мало емпіричних результатів для ефективності використання шифрування.
Я знайшов одне таке дослідження: порівняльний аналіз SSD Linux: порівняння файлових систем та методів шифрування . У таблиці нижче заходи реальні / користувач / системи, а найкращі результати пофарбовані в зелений колір, а найгірші - в червоний колір:
натисніть для збільшення зображення
На основі цих результатів автор вирішив використовувати dm-crypt в режимі aes-xts-plain із 128-бітовою довжиною клавіші та btrfs з ssd вирівнюванням та
compress=lzo
.
Ще одна корисна стаття - Ефективність впливу шифрування диска Linux на Ubuntu 14.04 LTS . Він вивчав використання процесора під час встановлення трьох конфігурацій опцій встановлення запасів (без шифрування диска), повного методу шифрування диска, використовуючи LUKS на LVM та шифрування домашнього каталогу на основі eCryptfs. Результати підсумовані на графіку нижче, і висновок полягає в тому, що встановлення без шифрування в середньому становило 26%, тоді як LUKS на LVM та eCryptfs шифрування в середньому склало приблизно 30 ~ 31%, тому обидва є майже еквівалентними по продуктивності.
натисніть для збільшення зображення
Стаття, яка не має емпіричних результатів, але багато корисних порад, - це LinuX, SSD та шифрування диска . Я рекомендую прочитати цю статтю, і ось основна порада:
noatime
та nodiratime
придушити облік часу доступу для файлів та каталогів.Я зробив кілька тестувань із системою від низького до середнього рівня. Результати нижче.
На закінчення здається, що шифрування не робить оптимізацію файлової системи марною. Як видно з таблиці, для dmcrypt / LUKS (AES256) F2FS
файлова система була швидшою, ніж EXT4
майже у всіх сценаріях, у яких вона була швидшою за замовчуванням (без шифрування, тобто). Дещо дивно, що це також забезпечило помітну перевагу у випадках, коли не буде без шифрування, а саме - Bonnie++ Sequential Output (Per char)
і Flexible I/O Tester Sequential Read
тестів.
Для цього ж сценарію це було повільніше у двох тестах (Sequences Write - Bonnie ++ та FIO), але не набагато повільніше. Ваш пробіг може відрізнятися.
Я не перевіряв EXT4 з AES-128bit через обмежений час, оскільки це не було б суттєво для цієї відповіді.
Примітка. Я спостерігав дуже великі, дивні відхилення при тестуванні AES-128bit. До 15% варіацій у більшості тестів, і навіть 37% (!) В одному випадку. Не знаю чому. Я не використовував систему ні для чого іншого протягом тривалості тестів. Сама система (root) зашифрована AES-256, тож я можу придумати гіпотетичне пояснення, пов’язане з конвеєрами / оптимізацією процесора, але ... Дійсно, поки що не можу сказати. (Це також відбувається під час тестування з живого компакт-диска, не розблоковуючи при цьому AES-256bit-розділ, тому це не є причиною).
Відхилення зберігалися під 3,6% (1,4% типово) скрізь. Я приймаю 4% похибки. Таким чином, для цих результатів слід ігнорувати відмінності менше 4%.
Налаштування тесту:
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.
Таблиця результатів у форматі ASCII (відмінності, які вважаються "невідповідними" опущені):
|+===================================+|
|| % 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 ||
|+------------+------------------------+----------+----------+----------+----------+------+----------++---------++--------+--------+--------+--------+|
_