Какая файловая система показывает лучшую производительность при работе на зашифрованном разделе LUKS? Имеет ли смысл использовать f2fs, когда раздел LUKS находится на SSD, или абстракция устройства отображения карт делает оптимизацию SSD f2fs бесполезной?
2 ответа
Есть много советов, но очень мало эмпирических результатов для эффективности использования шифрования.
Я нашел одно такое исследование: тестирование SSD Linux: сравнение файловых систем и методов шифрования. В приведенной ниже таблице меры являются реальными / пользователь / sys, и лучшие результаты окрашены в зеленый цвет, а худшие - в красный:
нажмите для увеличения изображения
На основании этих результатов автор решил использовать 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 и шифрование диска. Я рекомендую прочитать эту статью, и вот главный совет, данный:
- Для раздела SSD вы должны как минимум добавить параметры монтирования
noatime
иnodiratime
чтобы подавить учет времени доступа к файлам и каталогам. - Настройте виртуальные диски, используя tmpfs для временных файлов.
- Измените планировщик диска, чтобы использовать noop или срок.
- Включить кэш записи на уровне устройства
- Параметр браузера, чтобы не использовать дисковый кеш.
Я провел некоторое тестирование с системой от низкого до среднего уровня. Результаты таковы.
В заключение кажется, что шифрование не делает оптимизации файловой системы бесполезными. Как видно из таблицы, для dmcrypt/LUKS (AES256) файловая система F2FS
была быстрее, чем EXT4
почти во всех сценариях, в которых она была быстрее по умолчанию (то есть без шифрования). Несколько удивительно, но это также дало заметное преимущество в тех случаях, когда оно не обходилось без шифрования, а именно, в тестах Bonnie++ Sequential Output (Per char)
и тестах Flexible I/O Tester Sequential Read
.
Для этого же сценария он также был медленнее в двух тестах (Sequential Write - Bonnie++ и FIO), но в любом случае не намного медленнее. Ваш пробег может отличаться.
Я не тестировал EXT4 с AES-128bit из-за ограниченного времени, так как это не было бы важно для этого ответа.
Примечание: я наблюдал очень большие, странные отклонения при тестировании с AES-128bit. До 15% вариаций в большинстве тестов и даже до 37% (!) в одном случае. Не уверен почему. Я не использовал систему ни для чего другого во время испытаний. Система (root) сама зашифрована с помощью AES-256, поэтому я могу придумать гипотетическое объяснение, включающее конвейеры ЦП /opcache, но ... На самом деле пока не могу сказать. (Это также происходит при тестировании с живого CD, без разблокировки 256-битного раздела AES, так что это не причина).
Отклонение оставалось на уровне 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 ||
|+------------+------------------------+----------+----------+----------+----------+------+----------++---------++--------+--------+--------+--------+|
_