数据冗余是保障存储可靠性、数据可用性的最有效手段,传统的冗余机制主要有副本(Replication)和纠删码(Erasure Code,简称 EC)两种方式。
还记得怎么对待毕业论文的吗,电脑里存一份,U 盘里存一份,网盘里再存一份,甚至好几个网盘里都存一份。内心战战兢兢,生怕几个月的努力(并没有。。。)付诸东流。这,就是副本。多副本策略就是将数据存储为多个副本(一般是 3 副本),当某个副本丢失的时候,可以通过其他副本找回来,所以 3 副本的磁盘利用率为 1/3,允许副本损坏数 2/3。
显然,副本模式的磁盘利用率是不高的。为了改善这一点,我们引入了纠删码的机制,可以解决磁盘利用率的问题,其操作大致可分为 3 步:
- 把一个文件均分为 K 个数据块
- 将这 K 个数据块通过一定的方式(比如说线性关系,或者矩阵关系)联系起来生成 M 个校验块
- 当某几个数据块丢失时,利用校验块重新计算出丢失的数据块
这种情况下的磁盘利用率为:K/(K+M),允许副本损坏数:M/(K+M)。其数据恢复的原理主要使用了矩阵的计算,其中关键词:范德蒙德矩阵。具体的恢复原理可参考文末的参考文献。
爱数的 AnyShare Enterprise/Express7 产品同时支持副本模式和 EC 模式,具体表现在:
- 1 节点及 2 节点采用 3 副本模式,3 节点以上可以升级支持 EC 模式。所以,节点比较少的情况下就考虑 3 副本模式即可。
- 扩容升级的场景,对象存储池支持 3 副本和 EC 混合的模式。
- AnyShare 支持 4+2:1,4+2,6+3 等多种 EC 策略,其中 4+2:1 指的是每个数据带包括 4 个数据块和 2 个编码块,允许任意 2 块磁盘故障而不影响数据完整性或任意1个节点故障而不影响数据完整性,该策略最少需要 3 个节点数;而 4+2 指的是每个数据带包括 4 个数据块和 2 个编码块,允许任意 2 块磁盘故障而不影响数据完整性或任意2个节点故障而不影响数据完整性,该策略至少需要 6 个节点数。
- 一般情况下,EC 模式的性能、磁盘利用率、安全性都高于 3 副本模式,但是 4+2:1 的安全性不如 3 副本。
参考文献: