Phi*_*ler 6 linux software-raid disk-encryption raid-5 luks
我已经在三个硬盘驱动器上设置了 Linux 软件 RAID5,并想用 cryptsetup/LUKS 对其进行加密。我的测试表明加密会导致我无法解释的大量性能下降。
RAID5 无需加密即可写入 187 MB/s [1]。通过加密,写入速度降至约 40 MB/s。
RAID 具有 512K 的块大小和写意图位图。我用作-c aes-xts-plain -s 512 --align-payload=2048的参数cryptsetup luksFormat,因此有效载荷应对齐到 2048 个 512 字节的块(即 1MB)。cryptsetup luksDump显示负载偏移量为 4096。所以我认为对齐是正确的并且适合 RAID 块大小。
CPU 不是瓶颈,因为它具有对 AES (aesni_intel) 的硬件支持。如果我在另一个同样加密的驱动器(带有 LVM 的 SSD)上写入,我的写入速度为 150 MB/s。top显示CPU使用率确实很低,只有RAID5 xor占用14%。
我还尝试将文件系统 (ext4) 直接放在未加密的 RAID 上,以便查看分层是否有问题。文件系统按预期稍微降低了性能,但到目前为止还没有那么多(写入速度不同,但 > 100 MB/s)。
总结:
磁盘+RAID5:好
磁盘+RAID5+ext4:好
磁盘+RAID5+加密:坏
SSD+加密+LVM+ext4:好
读取性能不受加密影响,无加密时为 207 MB/s,加密时为 205 MB/s(也表明 CPU 能力不是问题)。
如何提高加密RAID的写入性能?
[1] 所有速度测量都是通过多次运行完成的dd if=/dev/zero of=DEV bs=100M count=100(即以 100M 的块写入 10G)。
编辑:如果这有帮助:我在 Linux 2.6.38 上使用 Ubuntu 11.04 64 位。
Edit2:如果我将 4KB、1MB 或 10MB 的块大小传递给dd.
解决方案是stripe_cache_size为 md raids设置功能。
默认设置为 256,但可以增加到 32768。
这是通过将所需大小写入/sys/block/md0/md/stripe_cache_size(如果raid 是md0)来完成的。在 Ask Ubuntu 上有一个永久设置值的解决方案。
我在与问题中完全相同的 RAID 上进行了测试,我得到了以下数字:
size 256: 50 MB/s
size 4096: 123 MB/s
size 8192: 142 MB/s
size 16384: 140 MB/s
size 32768: 142 MB/s
Run Code Online (Sandbox Code Playgroud)
这些测试是在 Ubuntu 12.04 (Linux 3.2) 上通过将 10 GB 写入具有 1 MB 块的文件进行的。
背景:条带缓存存储最近写入的块。如果连续写入数据,则可能会发生在第一次写入期间仅写入一个条带的一部分的情况。这意味着,RAID 代码必须从磁盘读取完整的条带,更新它,然后再次完整地写入。如果对同一条带的另一部分进行第二次写入,则必须再次执行所有这些操作。现在,如果使用缓存并且仍然包含第一次写入写入的数据,则可以省略第二次写入之前所需的读取。
通常写入时大的块大小可以防止出现问题(因为一次写入完整条带,因此根本不需要读取)。但是,似乎加密在写入底层设备时仅使用小块,因此增加缓存具有积极作用。
| 归档时间: |
|
| 查看次数: |
7582 次 |
| 最近记录: |