为何不采用二维阵列架构的RAID 5来降低数据丢失风险?
用户提问
我没有计算机科学相关背景,若问题存在认知疏漏还请谅解。我近期学习了RAID 5和RAID 6相关知识,好奇为何不将RAID 5部署在2x2二维阵列中以大幅降低数据丢失风险。
设想将硬盘按如下二维阵列排布,每行每列各配备一块专用奇偶校验盘。
初步观察可知该系统的抗故障能力极强,参考下图,红色标记的为故障硬盘。
在该配置下,可通过反复重建所在行或列仅存在1块故障盘的硬盘,恢复所有硬盘的数据。
但该系统存在失效场景:若4块故障硬盘恰好处于某个矩形的四个顶点位置,且数据已条带化分布在整个二维阵列中,那么所有数据都会丢失,这种情况发生的概率极低。在由n^2块硬盘组成的二维阵列中,随机选取的4块硬盘恰好构成矩形顶点的概率约为2 / n^4。
另一种失效场景是2块奇偶校验盘发生故障,同时恰好处于其中一块校验盘所在行、另一块校验盘所在列的硬盘也发生故障,这种情况的发生概率同样极低,约为2 / n^4。请问该架构未被采用的原因是什么?
解答
该二维RAID架构未被广泛采用主要有以下几个核心原因:
- 空间利用率过低
你设想的n行n列数据盘加行、列各1块校验盘的架构,总盘数为(n+1)*(n+1),有效空间利用率仅为n²/(n+1)²。比如n=4时利用率仅64%,n=10时也只有约82%,远低于同容错级别的成熟方案:RAID5利用率为n/(n+1)(10块盘时约91%),可扛1块盘故障;RAID6利用率为n/(n+2)(10块盘时约83%),可扛任意2块盘故障,同等容错能力下你的架构空间成本更高。 - 写入性能开销过大
普通RAID5修改1个数据块仅需要更新对应数据块+1个校验块,共2次写入操作;而该二维架构下修改1个数据块需要同时更新对应行校验、列校验共2个校验块,合计3次写入,随机写入性能下降明显,IO放大效应在高负载业务场景下会导致性能不足。 - 故障重建的实际风险远高于理论值
理论上你提到的故障失效概率极低,但实际硬盘故障并非完全随机分布:同批次硬盘、同机架硬盘很容易因为温度、电源波动、振动等因素出现批量故障,出现矩形四顶点故障、行列校验交叉故障的概率远高于理想随机场景下的2/n⁴。同时该架构重建故障盘时需要读取整行+整列的所有硬盘数据,重建IO压力是普通RAID5的数倍,重建时间更长,重建过程中新增故障的概率也会随之升高。 - 成熟替代方案已经覆盖需求
目前工业界已有大量经过数十年验证的高可靠存储方案:需要扛2块盘故障可以用RAID6,需要更高容错能力可以用RAID60、多副本、EC纠删码(比如常见的8+2、4+2纠删码,容错能力可控,空间利用率和性能都优于该二维架构),完全没有必要引入未经验证、实现逻辑复杂的新架构。 - 实现与运维复杂度太高
常规RAID技术已经得到了所有主流操作系统、存储硬件固件的原生支持,故障排查、运维流程都非常成熟。而该二维RAID的条带布局、校验计算、故障恢复逻辑都需要全新开发,兼容性差,一旦出现数据异常,排查和恢复的难度远高于常规RAID,企业级存储场景几乎不会采用这类未经过大规模落地验证的方案。
内容的提问来源于stack exchange,提问作者Ultra
相关产品推荐
相关产品推荐

