@
mingl0280 我司以前有很多客户的机子就是 1U4 盘做 RAID 5,5 年下来丢数据只有一家,而且是放任坏盘在阵列里没管,一直用到第二盘挂了才丢的。
@
marktask 6……应用得少?
你这段话里有几个问题。
第一,RAID 6 多一块校验盘,的确多一个计算步骤,但是这个步骤是阵列卡做的,高性能的阵列卡就可以解决这个问题。在一篇 2006 年的 RAID 跑分评测中,LSI 9265-8i 在数据库读写测试中,RAID 5 跑出了 1273 iops,而 RAID 6 跑出了 1051 iops 。可以看到,就算拿 15 年前的阵列卡来跑,也就只有 20%的差距。这 20%的差距最后就弥补在了阵列的高可用性上。
第二,RAID 5 重建需要 24 小时,为什么 RAID 6 需要 36 小时呢。我们知道硬盘的读取速度是固定的,那么不论是 RAID 5 还是 RAID 6,最后读取完整个阵列的时长应该是一样的。那么唯一的区别就是阵列卡的计算速度。如果我们按照上面说的数据,拿一块 15 年前的阵列卡来跑,那么会多用 20%的时间,撑死也就是 29 小时。
第三,重建损坏概率的前提是你还有机会去重建。同样是坏 2 块盘,RAID 6 你还有闲心去算重建要多久,如果是 RAID 5 你可能已经把硬盘放进纸箱里,握着银行卡出去找数据恢复公司了。
第四,也是最重要的一点,RAID 不仅仅保护硬盘损坏,也保护数据错误。RAID 5 是奇偶校验(也就是你说的速度比较快的计算),是无法确定损坏的数据来自哪里的。如果你有 5 块盘,上面有 4 份数据,A B C D,还有 1 份校验 P 。如果 ABCDP 异或校验正确,那就认为数据是正确的。如果校验失败,就说明数据出错了。
那么我们来仔细看看。
如果 A 和 B 的某个字节数据同时翻转了,那么 RAID 5 校验结果是什么呢?没错,RAID 5 会认为数据完全正确。
如果这 5 块盘里只有一块盘数据翻转了,导致校验出错,那么 RAID 5 会怎么办呢?没错,会假定数据翻转的盘一定是 P 而不是 ABCD,并且用新的校验值覆盖 P 里的数据。如果你坏的数据恰好不是 P,那你正确的数据就会被错误的数据永久覆盖了。
而 RAID 6 呢,额外用了里德所罗门校验码,所以不管哪块硬盘数据损坏,都可以正确定位到是谁坏了,然后用剩下的好数据来修复。这里又要说到上面第三点的问题,因为 RAID 6 知道哪块硬盘是好的,所以就算阵列出现更多损坏数据,只要有足够的冗余就可以恢复,而 RAID 5 则是百分百炸数据的,因为 RAID 5 没有足够的冗余了。
所以,如果你有足够的资源去选择做 RAID 5+热备或者 RAID 6,那么 RAID 6 几乎总是更优秀的。
如果你只有 4 盘位,只能塞 4 块盘,那迫不得已做 RAID 5 倒也是可以的。
但是热备是没有什么必要的,与其热备,不如直接成为战斗力。
注:冷备是可以的。冷备是说平时不通电不工作,只在出问题以后才上电。
但是这个话题就更复杂了,而且背后也有很多坑,这里就不多细说了。