最近获悉facebook 在hadoop 中使用纠删码,节约存储成本。纠删码相比副本具有更高的存储效率(k/n>1/n)。缺点是计算量大,重建复杂。RAID5 、RAID6 就是纠删码的最简单应用。下面使用图解的方式介绍纠删码的基本原理。
分类目录归档:编码
线性多播/线性广播/线性扩散/一般线性网络码
线性多播(Linear Multicast,LM)、线性广播(Linear Broadcast,LB)、线性扩散(Linear Dispersion,LD)、一般线性网络码(Generic Linear Network Code,GLNC)是网络编码理论中基础且容易混淆的概念。
再生码开销的定量计算
上篇论文讨论了再生码的来源:从OMMDS 改进而来,从理论上证明了再生码的可行性与存储开销,维持带宽。下面这篇文章:A practical study of regenerating codes for peer-to-peer backup systems 则详细讨论了再生码的存储开销、恢复带宽开销、计算开销等等。
冗余编码的存储系统中最多允许多少节点失效?
本文讨论分布式存储系统如果采用编码方式保存数据,那么允许最多失效的节点个数与码率之间的关系。这个关系也可以通过图论中“最小分割最大流”定理来求证。
一个原始文件S(假设没有冗余信息)大小自信息量/文件大小为I ,进行冗余编码[n’,k](这里考虑系统码,为和分不到n 个节点区分开,用n’ 代替)的编码率为R = k/n’ ,则编码后文件大小为C:I → C = I/R。将编码后的数据分布在n 个节点上,每个节点的数据记做:X1 ,X2 ,X3 ……Xn ,每个节点数据的大小为C/n = I/R·n 。而每个节点数据/信息又有两部分组成,前一部分是系统码中的原始信息:Xii = I/n,另一部分是系统码中的校验信息:Xih = C/n – I/n ,且Xi = Xii + Xih。如下图所示
当a 个节点发生故障失效时,那么剩下的校验/冗余信息和原始信息应该能够恢复出丢失的原始信息,进而恢复出所有的校验信息。即:
因为H = C – I =I/R – I。得结果:
这也就是说,所有没有损坏节点的个数与所有节点比率(n-a/n)应该大于编码码率R。
再生码 Regenerating Code
再生码(RC Regenerating Code)是07 年Infocomm 会议中Network Coding for Distributed Storage Systems 提到的一种分布式存储编码方式,相比RS 编码具有更小的恢复带宽,参考这里的分布式存储数据恢复问题。这笔记也是为了记录这篇文章。