Erasure Code - EC纠删码原理

Erasure Code - EC纠删码原理

一、什么是Erasure Code

Erasure Code(EC),即纠删码,是一种前向错误纠正技术(Forward Error Correction,FEC,说明见后附录),主要应用在网络传输中避免包的丢失, 存储系统利用它来提高 存储 可靠性。相比多副本复制而言, 纠删码能够以更小的数据冗余度获得更高数据可靠性, 但编码方式较复杂,需要大量计算 。纠删码只能容忍数据丢失,无法容忍数据篡改,纠删码正是得名与此。

EC的定义:它可以将n份原始数据,增加m份数据,并能通过n+m份中的任意n份数据,还原为原始数据。即如果有任意小于等于m份的数据失效,仍然能通过剩下的数据还原出来。

目前,纠删码技术在分布式存储 系统中的应用主要有三类,阵列纠删码(Array Code: RAID5、RAID6等)、RS(Reed-Solomon)里德-所罗门类纠删码和LDPC(LowDensity Parity Check Code)低密度奇偶校验纠删码。

RAID是EC的特殊情况。在传统的RAID中,仅支持有限的磁盘失效,RAID5只支持一个盘失效,RAID6支持两个盘失效,而EC支持多个盘失效。

EC主要运用于存储和数字编码领域。例如磁盘阵列存储(RAID 5、RAID 6),云存储(RS)等。

LDPC码也可以提供很好的保障可靠性的冗余机制。与RS编码相比,LDPC编码效率要略低,但编码和解码性能要优于RS码以及其他的纠删码,主要得益于编解码采用的相对较少并且简单的异或操作。LDPC码目前主要用于通信、视频和音频编码等领域。

二、Reed-Solomon Code

RS code的编解码定义如下:

编码:给定n个数据块(Data block)D1、D2……Dn,和一个正整数m,RS根据n个数据块生成m个编码块(Code block),C1、C2……Cm。

解码:对于任意的n和m,从n个原始数据块和m个编码块中任取n块就能解码出原始数据,即RS最多容忍m个数据块或者编码块同时丢失。

RS编解码中涉及到矩阵求逆,采用高斯消元法,需要进行实数加减乘除四则运算,无法作用于字长为w的二进制数据。为了解决这个问题, RS采用伽罗华群GF(2^w)中定义的四则运算法则。
GF(2w)域有2w个值, 每个值都对应一个低于w次的多项式, 这样域上的四则运算就转换为多项式空间的运算。 GF(2^w)域中的加法就是XOR, 乘法通过查表实现,需要维护两个大小为2^w -1的表格: log表gflog,反log表gfilog。
乘法公式: a * b = gfilog(gflog(a) + fglog(b)) % (2^w -1)

1、RS code编码原理

RS编码以word为编码和解码单位,大的数据块拆分到字长为w(取值一般为8或者16位)的word,然后对word进行编解码。 数据块的编码原理与word编码原理相同,后文中一word为例说明,变量Di, Ci将代表一个word。

把输入数据视为向量D=(D1,D2,…, Dn), 编码后数据视为向量(D1, D2,…, Dn, C1, C2,…, Cm),RS编码可视为如下图所示矩阵运算。

img

上图最左边是编码矩阵(或称为生成矩阵、分布矩阵,Distribution Matrix),编码矩阵需要满足任意n*n子矩阵可逆。
为方便数据存储,编码矩阵上部是单位阵(n行n列),下部是m行n列矩阵。下部矩阵可以选择范德蒙德矩阵或柯西矩阵。

矩阵与矩阵相乘

要把矩阵与矩阵相乘,我们要计算行与列的"点积"
在这里插入图片描述

“点积” 是把 对称的元素相乘,然后把结果加起来:

(1, 2, 3) • (7, 9, 11) = 1×7 + 2×9 + 3×11 = 58

把第一个元素相配(1 和 7),然后相乘。第二个元素(2 和 9) 和第三个元素(3 和 11)也一样,然后把结果加起来。
在这里插入图片描述

(1, 2, 3) • (8, 10, 12) = 1×8 + 2×10 + 3×12 = 64

第二行第一列也同样做:

(4, 5, 6) • (7, 9, 11) = 4×7 + 5×9 + 6×11 = 139

第二行第二列

(4, 5, 6) • (8, 10, 12) = 4×8 + 5×10 + 6×12 = 154

得到:

在这里插入图片描述

2、RS code编码数据恢复原理

RS最多能容忍m个数据块被删除。 数据恢复的过程如下:
(1)假设D1、D4、C2丢失,从编码矩阵中删掉丢失的数据块/编码块对应的行。
img

    根据图1所示RS编码运算等式,可以得到如下B' 以及等式。

img

(2)由于B’ 是可逆的,记B’的逆矩阵为 (B’^-1),则B’ * (B’^-1) = I 单位矩阵。两边左乘B’ 逆矩阵。

img

(3)得到如下原始数据D的计算公式

img
即恢复原始数据D:

img

(4)对D重新编码,可得到丢失的编码码

3、RS code编码的限制

1)数据恢复代价高和数据更新代价高,因此常常针对只读数据,或者冷数据。
229074)

(4)对D重新编码,可得到丢失的编码码

3、RS code编码的限制

1)数据恢复代价高和数据更新代价高,因此常常针对只读数据,或者冷数据。
2)RS编码依赖于两张2^w-1大小的log表, 通常只能采用16位或者8位字长,不能充分利用64位服务器的计算能力, 具体实现上可能要做一些优化。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值