我在Ubuntu 10.04.03下有一个原始的软件RAID 5设置,3个设备,64k块。 performance可以接受:
# 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
然后,我去了一个带有3个设备的软件RAID 6(2个被标记为丢失,需要复制数据),128k块。 我还在新arrays上设置了LVM。 performance令人震惊的差:
# 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吗? 还是新的RAIDarrays的退化状态? 或者可能是块大小差异(64k vs 128k)? 除此之外,我使用ext4的文件系统,没有select。
这种情况错误的数量是这里令人震惊的。
我去了3个设备的软件RAID 6
RAID-6arrays有两个奇偶校验。 这意味着每一个写入的位都有(基本上)两个计算,每个奇偶校验一个。 不build议在less于5的arrays上使用RAID-6(而less于4的则反作用!)。 从根本上说,你做太多的工作,没有任何收益。
2个被标记为失踪
而这正是它开始走下坡路的地方。 你正在做两个设备丢失的RAID-6。 所以你计算平价,把它..没有? (嘿,任何拥有软件RAID-6经验的人都是这样的吗?它是否仍然在计算?如果是这样,它是否会丢失,或者是否尝试写驱动器的奇偶校验?)
而且你从多个锭子得到的任何收益都被完全消除了,因为你没有使用任何其他纺锭。
性能是惊人的差
在这一点上,它并不像真正的那样令人震惊。 你正在做很多东西,绝对没有任何好处。
那你该怎么办?
问自己一些问题。 你为什么要RAID-6? 是因为它比RAID-5更容错吗? 如果是这样,您应该了解RAID-6可以保护哪些故障模式:
它有两个奇偶。 这会在驱动器出现故障时发挥作用,然后更换驱动器,然后在重build过程中再次发生驱动器故障。 这种情况通常发生在一批坏的驱动器上,或者驱动器不断暴露在高温下(可能高于你的想象)。 此外,每读取一次10 ^ 14位(即超过11TB的数据),就有可能发生不可恢复的读错误(URE)。 如果在RAID重build期间发生这种情况,那么这样做不好,RAID-6可以保护它。
告诉我们更多关于你想build立的arrays。 你为什么要build立它,需要什么能力,以及你需要什么样的performance? 有了这些信息,我们可以给你build议。
你的问题是缺less的磁盘。 其中一个磁盘丢失时,RAID 5的性能会降低很多。 当2个磁盘丢失时,RAID 6降级。 基本上系统需要重新生成每个块的奇偶性,因此减速。
在丢失磁盘被replace并且raid重build完成之后,你至less应该得到一样的性能。