Linux LUKS 和文件系统的选择

Kev*_*der 13 linux filesystems luks

在 LUKS 加密分区上运行时,哪个文件系统显示最佳性能?当 LUKS 分区在 SSD 上时使用 f2fs 是否有意义,或者设备映射器抽象是否使 f2fs 的 SSD 优化无用?

har*_*ymc 8

有很多建议,但很少有关于使用加密效率的实证结果。

我发现了一项这样的研究: SSD Linux 基准测试:比较文件系统和加密方法。在下表中,度量是真实/用户/系统,最佳结果为绿色,而最差结果为红色:

单击以获取更大的图像单击以获取更大的图像

基于这些结果,作者决定在 aes-xts-plain 模式下使用 dm-crypt,密钥长度为 128 位,btrfs 使用 ssd 对齐和 compress=lzo.

另一篇有用的文章是 Linux 磁盘加密对 Ubuntu 14.04 LTS 的性能影响。它研究了在三种配置下的安装过程中的 CPU 使用率:库存安装选项(无磁盘加密)、在 LVM 上使用 LUKS 的全磁盘加密方法和基于 eCryptfs 的主目录加密。结果总结在下图中,结论是未加密的安装平均为 26%,而 LVM 和 eCryptfs 加密上的 LUKS 平均约为 30~31%,因此两者在性能上几乎相当。

点击查看大图单击以获取更大的图像

一篇没有实证结果但有很多好的建议的文章是 LinuX、SSDs 和磁盘加密。我建议阅读这篇文章,这里是给出的主要建议:

  1. 对于 SSD 分区,您至少应该添加挂载选项noatimenodiratime禁止记录文件和目录的访问时间。
  2. 使用 tmpfs 为临时文件设置 ramdisk。
  3. 将磁盘调度程序更改为使用noopdeadline
  4. 启用设备级写缓存
  5. 为浏览器设置参数以便不使用磁盘缓存。


Mar*_*377 5

我用中低端系统做了一些测试。结果如下。

桌子

总之,加密似乎不会使文件系统的优化变得无用。正如您在表中所看到的,对于 dmcrypt/LUKS (AES256),F2FS文件系统比EXT4几乎所有默认情况下都更快(即没有加密)的方案更快。出人意料的是,它也提供了在案件明显的好处在那里woulnd't不加密-即Bonnie++ Sequential Output (Per char)Flexible I/O Tester Sequential Read测试。

对于相同的场景,它在两个测试(顺序写入 - Bonnie++ 和 FIO)中也变慢了,但无论如何慢不了多少。你的旅费可能会改变。

由于时间有限,我没有使用 AES-128 位测试 EXT4,因为它对于此答案不是必需的。

注意:我在使用 AES-128 位进行测试时观察到非常大的、奇怪的偏差。在大多数测试中高达 15% 的变化,在一种情况下甚至高达 37% (!)。不知道为什么。在测试期间,我没有将该系统用于其他任何用途。系统(根)本身是用 AES-256 加密的,所以我可以想到一个涉及 CPU 管道/opcache 的假设解释,但是......现在还不能确定。(从 Live CD 进行测试时也会发生这种情况,而无需解锁 AES-256 位分区,所以这不是原因)。

其他所有地方的偏差都保持在 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.
Run Code Online (Sandbox Code Playgroud)

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 ||
|+------------+------------------------+----------+----------+----------+----------+------+----------++---------++--------+--------+--------+--------+|
_
Run Code Online (Sandbox Code Playgroud)