图解RS纠删码原理

※基本模型

假如有n个存储设备(这里可以理解为磁盘或节点)D1、D2…..,Dn,其中每个存储设备的容量为k个字节,这n个设备称为数据设备。m个存储设备,C1、C2、…..,Cm,每个设备的容量也为k个字节,这m个设备称为校验设备。其中每个校验设备的数据是通过数据设备的内容计算而来。




※下图给出纠删码在物理逻辑层次应用的一个场景: D 是Data Device ,用于保存数据,C 是校验位,用于重建恢复数据,C 是D 通过纠删码编码得到的,如最常见的纠删码Reed-Solomen 码。


※每个条带上的数据块生成对应条带上的校验块,数据块大小和校验块大小相同,一般把数据块的个数用k 表示,n 表示数据块和校验块总数,这样的编码称为[k,n] 编码,最多可以容n-k 个Data Devices 失效。


※如下图,假设一个条带上的数据块用矩阵D 表示,生成数据块D 的校验矩阵需要矩阵B 的帮助,如下图所示,B 由两部分组成上面是一个k×k 大小的单位矩阵I ,下面是生成校验位的n-k×k 大小的矩阵B*。

3

※这两部分分别与数据矩阵D 相乘生成两部分分别为数据部分D 和校验部分C(如下所示)。


4

※这两部分分别是由 I×D 和 B-×D 所生成的。


5

※如果数据中的数据块或者校验块发生了丢失,需要出原始的数据块。

6

※去掉丢失的数据块校验块对应在矩阵B 的行(row),得到矩阵B’ ,那么满足下面的等式:

7

对B’ 求逆矩阵得到B’-1 ,且我们知道矩阵B’ 和原始数据矩阵D 之积为去掉损坏数据的矩阵Survivours,满足下面的等式。


8

※为了求得原始数据,在上面等式两边左侧乘以B’ 的逆

9

※矩阵B’-1 和B’ 之积为k×k 的单位矩阵

10

※那么等式左侧即为原始数据。这样通过剩余数据矩阵Survivors 乘以对应矩阵B 的系数组成的矩阵的逆,就得到了数据矩阵,最终得到了原始数据。有了原始数据,校验数据也就不难求了。

11


注:上面图解还存在一个问题就是B’ 是否存在逆矩阵:如果rank(B’)<k,那么B’ 就不存在逆矩阵了,所以RS编码容错的数量是校验节点的数量,即有多少个校验节点就可以容几错。

参考:http://www.dullgull.com/2012/07/%E5%9B%BE%E8%A7%A3%E7%BA%A0%E5%88%A0%E7%A0%81%E5%8E%9F%E7%90%86/


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值