与 md(raid1) / crypt(luks) / lvm 上的写入性能相比,读取性能非常差

与 md(raid1) / crypt(luks) / lvm 上的写入性能相比,读取性能非常差

我的经历很糟糕性能优于 raid1/crypt/lvm。同时,在相同设置下,写入速度大约快 2 倍以上。在同一台机器上的另一个 raid1 设置上,我获得正常的读取速度(可能是因为我没有使用 cryptsetup)。

操作系统相关磁盘:sda + sdb。我有两个磁盘的 raid1 配置,两个磁盘都已就位。我在 RAID 上使用 LVM。没有加密。两个盘都是 WD Green,5400 rpm。

这次raid1的IO测试结果:

dd if=/dev/zero of=/tmp/output.img3 bs=8k count=256k conv=fsync
 - 2147483648 bytes (2.1 GB) copied, 22.3392 s, 96.1 MB/s

sync
echo 3 > /proc/sys/vm/drop_caches
dd if=/tmp/output.img3 of=/dev/null bs=8k
 - 2147483648 bytes (2.1 GB) copied, 15.9 s, 135 MB/s

这是有问题的设置(在同一台机器上)。目前我只有一个 sdc(WD Green,5400rpm)在软件 raid1 + crypt(luks,serpent-xts-plain)+ lvm 中配置。明天我将附加另一个磁盘 (sdd) 来完成这个两磁盘 raid1 设置。

这次 raid1 上的 IO 测试结果:

dd if=/dev/zero of=output.img3 bs=8k count=256k conv=fsync
2147483648 bytes (2.1 GB) copied, 17.7235 s, 121 MB/s

sync
echo 3 > /proc/sys/vm/drop_caches
dd if=output.img3 of=/dev/null bs=8k
2147483648 bytes (2.1 GB) copied, 36.2454 s, 59.2 MB/s

我们可以看到读取性能非常非常差(59MB/s,而未使用加密时为 135MB/s)。在基准测试期间没有任何东西使用磁盘。我可以确认这一点,因为我检查了 iostat 和 dstat。

硬件详细信息:

  • 磁盘:全部为WD green,5400rpm,64mb缓存。
  • CPU:FX-8350,库存速度
  • 内存:4x4GB,1066Mhz。

该软件的详细信息:

  • 操作系统:Debian Wheezy 7、amd64
  • mdadm:v3.2.5 - 2012 年 5 月 18 日
  • LVM版本:2.02.95(2) (2012-03-06)
  • LVM 库版本:1.02.74 (2012-03-06)
  • LVM驱动程序版本:4.22.0
  • 密码设置:1.4.3

以下是我配置慢速 raid1+crypt+lvm 设置的方法:

分开/dev/sdc

  1. MK标签GPT
  2. 类型:ext4
  3. 开始时间:2048s
  4. 结束:-1

现在是 raid、crypt 和 lvm 配置:

  1. mdadm --create /dev/md1 --level=1 --raid-disks=2 缺少 /dev/sdc
  2. cryptsetup --cipher serpent-xts-plain luksFormat /dev/md1
  3. cryptsetup luksOpen /dev/md1 md1_crypt
  4. vgcreate vg_sql /dev/mapper/md1_crypt
  5. lvcreate -l 100%VG vg_sql -n lv_sql
  6. mkfs.ext4 /dev/mapper/vg_sql-lv-sql
  7. 挂载 /dev/mapper/vg_sql-lv_sql /sql

那么各位,能帮我找出原因并解决它吗?它必须与 cryptsetup 相关,因为在不存在加密的其他设置(sda+sdb)上没有这样的读取速度减慢。但我不知道该怎么办。

谢谢!

答案1

显然,加密会增加相当大的开销,但忽略这一点:

您还使用非 AES 加密,这意味着您无法从处理器获得加速(AES 硬件加速)。您还使用桌面品质的处理器消费者驱动器速度极慢。

这种设置正是您性能如此差的原因。将像样的驱动器与服务器质量的处理器一起放入(这甚至是服务器吗?)并使用 AES 进行 LUKS。

答案2

通常没有正确完成测试。使用 8k 读取操作加载 Linux 软件 RAID 是要求其表现不佳的方法(您确实这样做了)。尝试使用更大的bs.


cryptsetup benchmark我还在下面的评论中添加了 for ppl 的输出

#  Algorithm | Key |  Encryption |  Decryption
     aes-cbc   128b   476.6 MiB/s  1891.3 MiB/s
 serpent-cbc   128b    79.1 MiB/s   222.6 MiB/s
 twofish-cbc   128b   135.0 MiB/s   158.7 MiB/s
     aes-cbc   256b   194.7 MiB/s   892.5 MiB/s
 serpent-cbc   256b    46.2 MiB/s   211.4 MiB/s
 twofish-cbc   256b   144.6 MiB/s    93.3 MiB/s
     aes-xts   256b  1542.0 MiB/s  1727.0 MiB/s
 serpent-xts   256b   114.0 MiB/s   200.2 MiB/s
 twofish-xts   256b   111.4 MiB/s   131.7 MiB/s
     aes-xts   512b   573.6 MiB/s   829.3 MiB/s
 serpent-xts   512b   199.8 MiB/s   191.1 MiB/s
 twofish-xts   512b    81.8 MiB/s   107.3 MiB/s

-- 清楚地看到(并不总是,但经常)解密速度更快。

相关内容