纠删码为何可以代替RAID成为存储冗余的新宠儿,来看看对比

核心比喻:秘密配方与万能配方

RAID 5:像一个“三选二” 的秘密配方。

  • 你有两种原始食材(数据块 A, B),厨师(RAID控制器)会按照一个固定公式做出第三道菜(校验块 P)。

  • 规则是:三份菜中,任何一份丢了,你都可以用另外两份把它还原出来。

  • 容忍 1 块丢失

RAID 6:像一个“四选二” 的秘密配方。

  • 你有两种原始食材(数据块 A, B),厨师会按更复杂的公式做出第三和第四道菜(校验块 P, Q)。

  • 规则是:四份菜中,任何两份丢了,你都可以用剩下的两份把它还原出来。

  • 容忍 2 块丢失

纠删码 (EC):像一个“万能配方生成器”。

  • 你告诉它:“我有 k 份原始食材,我希望总共做出 n 份菜(包含原始菜和新增的校验菜),并且要求这 n 份菜中,任意丢 m 份,我都能还原出所有原始食材。”

  • 这个“万能配方生成器”就会根据你的要求 (k, n, m),自动计算出一个数学公式来生成校验菜。

  • RAID 5 和 RAID 6 只是这个万能生成器某两个特定的、固定的配方

RAID 5 就是 (k=2, n=3, m=1)(k=4, n=5, m=1) 等。

RAID 6 就是 (k=4, n=6, m=2)(k=8, n=10, m=2) 等。

所以,纠删码是“配方生成器”,而RAID 5/6是这个生成器生成的两个“特定配方”。 也就是“超集”的含义。

技术对比:为什么EC更灵活、更强大?

让我们从几个维度看RAID 5/6和通用EC的区别:

特性 RAID 5 / RAID 6 通用纠删码 (EC) 说明
配置灵活性 固定:RAID5只能容忍1块失败,RAID6只能容忍2块失败。 高度灵活:可以配置为容忍 任意数量 的失败。例如 (k=10, n=16, m=6) 意味着用6份校验数据,可以容忍最多6块(数据或校验)同时丢失。 EC打破了RAID的固定模式,可以根据数据重要性、存储开销、可靠性要求进行量身定制。
存储开销 固定:RAID5开销 ~20-33%,RAID6开销 ~33-50%。 可调节:存储开销 = (n - k) / k。你可以用 (k=10, n=11) 实现仅10%的开换来容忍1块失败,这比RAID5的25%开销更经济。也可以用 (k=6, n=10) 约66%的高开销,换来容忍4块失败的极高可靠性。 EC允许在可靠性和存储效率之间进行精细的权衡。
扩展性 :通常局限于单个服务器内的几十块磁盘。 ** 极好**:天生为分布式系统设计。数据块和校验块可以分散 across 不同机架、甚至不同数据中心的成千上万台服务器上,防止机架级故障。 这是EC在现代云存储(如Ceph, Hadoop HDFS-3.0+, Azure, AWS S3)中取代RAID的最关键原因。RAID无法解决整个机架断电或网络切换的问题。
恢复成本 :恢复一块故障盘需要读取所有其他盘的数据,给整个阵列带来巨大压力,在此期间另一块盘故障风险极高(“RAID5写漏洞”)。 相对较低:恢复一个丢失块,只需要从存活的 k 个块中下载数据即可(k 可能远小于 n),不需要读取所有存活块。这减少了网络和IO压力。 EC的恢复过程更高效,尤其是在分布式环境中。

举例说明:EC的强大配置

假设你有一个分布式存储集群,有100个节点。

  • RAID 6 思路:你只能把数据做成每组8+2(即8个数据块+2个校验块),分散在10个节点上。只能容忍最多2个节点宕机。

  • EC 思路:你可以采用 (k=20, n=30, m=10) 的策略。

    • 把数据切分成20个分片,然后计算出10个校验分片。

    • 将这30个分片分散到30个不同的物理节点上(甚至不同机架)。

    • 结果是:最多可以容忍10个节点同时宕机而数据不丢! 这是RAID6完全无法实现的可靠性级别。

    • 存储开销(30-20)/20 = 50%,和RAID6类似,但换来了5倍的故障容忍能力。

总结

说“纠删码是RAID5和RAID6的超集”是因为:

  1. 数学上:RAID5/6是纠删码在特定参数 (k, n, m) 下的特例。EC使用的数学工具(如 Reed-Solomon 码)比RAID的简单异或(XOR)更通用、更强大。

  2. 功能上:EC提供了无限的配置灵活性,允许在可靠性(可容忍的故障数)、存储效率(空间开销)和性能之间进行精细的、自定义的权衡。

  3. 架构上:EC摆脱了RAID依赖于本地磁盘阵列的束缚,其思想可以完美地应用于跨节点、跨机架、跨数据中心的分布式存储系统,从而提供了远超传统RAID的扩展性和可靠性。

因此,在现代大规模存储系统中,纠删码已经基本上取代了RAID技术,成为实现数据持久性和高可用的核心技术。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐