Erasure Code
Erasure Code纠删码
什么是Erasure Code?
可以认为是RAID的通式。任何RAID都可以转换为特定的Erasure Code。
传统的RAID仅支持少量的磁盘分布,当系统中存在多个分发点和多个节点时,RAID将无法满足需求。比如RAID5仅支持一个盘失败,即使是RAID5也仅支持两个盘失效,所以支持多个盘失效的算法也就是earsure code技术。
简而言之,erasure code是一个能够有效提升存储效率、安全性和便捷性的新兴存储技术。
【学术定义】:将n份原始数据,增加m份数据(用来存储erasure编码),并能通过n+m份中的任意n份数据还原为原始数据。
定义中包含了encode和decode两个过程:
- 首先将原始的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领域
- 数字编码