Erasure Code

Erasure Code纠删码

  • 什么是Erasure Code?

    可以认为是RAID的通式。任何RAID都可以转换为特定的Erasure Code。

    传统的RAID仅支持少量的磁盘分布,当系统中存在多个分发点和多个节点时,RAID将无法满足需求。比如RAID5仅支持一个盘失败,即使是RAID5也仅支持两个盘失效,所以支持多个盘失效的算法也就是earsure code技术。

    简而言之,erasure code是一个能够有效提升存储效率、安全性便捷性的新兴存储技术。

    【学术定义】:将n份原始数据,增加m份数据(用来存储erasure编码),并能通过n+m份中的任意n份数据还原为原始数据。

    定义中包含了encodedecode两个过程:

    • 首先将原始的n份数据变为n+m份(encode);
    • 之后这n+m份数据可存放在不同的device上,如果有任意小于m份的数据失效,仍然能够通过剩下的数据进行还原【也就是说,通常n+m的erasure编码,能够容许m块数据障碍。这时候的存储成本是1+m/n,通常m<n】;
  • Erasure Code的使用场景

    凡是需要通过冗余来进行高可用的场景。

    但是总体而言,主要运用于存储和数字编码领域;

    • 阵列:如果磁盘阵列需要使用高级特性,比如需要能够容错两个磁盘失效(RAID6),那么可以用n+2的模式;如果想容错4个磁盘失效,则可使用n+4的模式。
    • 云存储:erasure code是云存储的核心技术,最初诸如hadoop,GFS,CEPH等都在用n-way replication来处理冗余,但会有极大的成本开销,因此erasure code上台。
    • P2P领域
    • 数字编码

参考