Kev*_*der 13 linux filesystems luks
在 LUKS 加密分区上运行时,哪个文件系统显示最佳性能?当 LUKS 分区在 SSD 上时使用 f2fs 是否有意义,或者设备映射器抽象是否使 f2fs 的 SSD 优化无用?
有很多建议,但很少有关于使用加密效率的实证结果。
我发现了一项这样的研究: 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 和磁盘加密。我建议阅读这篇文章,这里是给出的主要建议:
noatime并nodiratime禁止记录文件和目录的访问时间。我用中低端系统做了一些测试。结果如下。
总之,加密似乎不会使文件系统的优化变得无用。正如您在表中所看到的,对于 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)
| 归档时间: |
|
| 查看次数: |
5630 次 |
| 最近记录: |