我在 Ubuntu 10.04.03 下设置了原始软件 RAID 5,3 个设备,64k 块。性能尚可:
# 4GB write
dd if=/dev/zero of=ddfile.big bs=1MB count=4k
4095290816 bytes (4.1 GB) copied, 51.743 s, 79.1 MB/s
# 4GB read
dd if=ddfile.big of=/dev/null
4095290816 bytes (4.1 GB) copied, 62.5932 s, 65.4 MB/s
然后我换了一个软件 RAID 6,有 3 个设备(2 个标记为丢失,需要从中复制数据),128k 块。我还在新阵列上设置了 LVM。性能非常差:
# 4GB write
dd if=/dev/zero of=ddfile.big bs=1MB count=4k
4096000000 bytes (4.1 GB) copied, 106.406 s, 38.5 MB/s
# 4GB read
dd if=ddfile.big of=/dev/null
4096000000 bytes (4.1 GB) copied, 129.317 s, 31.7 MB/s
我想知道是什么导致这些读写速度减慢了一半。可能是 LVM?还是新 RAID 阵列的降级状态?或者是块大小差异(64k vs 128k)?除此之外,我使用 ext4 作为文件系统,没有其他选择。
答案1
这种情况下出现的错误之多令人震惊。
我使用带有 3 个设备的软件 RAID 6
RAID-6 阵列有两个奇偶校验。这意味着对于写入的每个位,(本质上)都会进行两次计算,每个奇偶校验一次。不建议在少于 5 个的阵列上使用 RAID-6(少于 4 个的阵列会适得其反!)。本质上,您做了太多工作却没有任何收获。
2 人被标记为失踪
而这正是它真正开始走下坡路的地方。您正在执行 RAID-6,但缺少两个设备。所以您正在计算奇偶校验并将其放在任何地方?(嘿,有软件 RAID-6 经验的人,这是真的吗?它还能计算吗?如果是,它会被丢弃吗,还是会尝试将奇偶校验写入驱动器?)
而你从多个主轴获得的任何好处都被完全抵消了,因为你没有有正在使用的任何其他主轴。
表现极其糟糕
这一点其实并不令人震惊,但显而易见。你做了很多事,却没有任何好处。
那你该怎么办?
问自己一些问题。为什么需要 RAID-6?是因为它比 RAID-5 更容错吗?如果是这样,您应该了解 RAID-6 可以保护您免受哪些故障模式的影响:
它有两个奇偶校验。每当您遇到驱动器故障,然后更换驱动器,然后在重建期间另一个驱动器发生故障时,这就会发挥作用。当您收到一批坏的驱动器,或者驱动器持续暴露在高温下(可能比您想象的要高)时,通常会发生这种情况。此外,每读取 10^14 位(即略超过 11TB 的数据)就有一次不可恢复的读取错误 (URE) 的可能性。如果它在 RAID 重建期间发生,那么,这可不是什么好事,而 RAID-6 可以保护它。
请告诉我们有关您要构建的阵列的更多信息。您为什么要构建它,需要多大的容量,以及您需要它提供什么样的性能?有了这些信息,我们可以为您提供建议。
答案2
您的问题是缺少磁盘。当其中一个磁盘丢失时,RAID 5 性能会大幅下降。当两个磁盘丢失时,RAID 6 性能会下降。基本上,系统需要为每个块重新生成奇偶校验,因此速度会变慢。
在更换丢失的磁盘并且 RAID 重建完成后,您应该至少获得同样好的性能。