您的位置:首页 > 业界新闻

网易视频云技术分享:Reed Solomon纠删码

2016-06-02 13:17 337 查看
       网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,为客户提供稳定流畅、低时延、高并发的视频直播、录制、存储、转码及点播等音视频的PASS服务。在线教育、远程医疗、娱乐秀场、在线金融等各行业及企业用户只需经过简单的开发即可打造在线音视频平台。现在,网易视频云转载相关文章,与大家分享一下Reed
Solomon纠删码。
       纠删码是存储领域常用的数据冗余技术,相比多副本复制而言,纠删码能够以更小的数据冗余度获得更高数据可靠性。 Reed Solomon Coding是存储领域常用的一种纠删码,它的基本原理如下:给定n个数据块d1,
d2,…, dn,n和一个正整数m, RS根据n个数据块生成m个校验块,
c1, c2,…, cm。对于任意的n和m,从n个原始数据块和m个校验块中任取n块就能解码出原始数据,即RS最多容忍m个数据块或者校验块同时丢失(纠删码只能容忍数据丢失,无法容忍数据篡改,纠删码正是得名与此)。
编码原理

       RS编码以word为编码和解码单位,大的数据块拆分到字长为w的word(字长w取值一般为8或者16位),然后对word进行编解码。所以数据块的编码原理与word编码原理没什么差别,为论述方便,后文中变量Di,
Ci将代表一个word。
首先,把输入数据视为向量D=(D1,D2,…,
Dn),
编码后数据视为向量(D1, D2,…, Dn, C1, C2,.., Cm),RS编码可视为如图1所示矩阵运算。下图最左边是编码矩阵,矩阵上部是单位阵(n行n列),下边是vandermonde矩阵B(m行n列),
vandermode矩阵如图2所示,第i行,第j列的原数值为j^(i-1)。之所以采用vandermonde矩阵的原因是,
RS数据恢复算法要求编码矩阵任意n*n子矩阵可逆。





图1: RS纠删码编码运算
数据恢复原理

RS最多能容忍m个删除错误。数据恢复原理的过程如下:
(1)从编码矩阵中删去丢失数据块和丢失编码块对应行。假设D1、C2丢失,根据图1所示RS编码运算等式,我们得到如下B’以及等式。




图2:vandermode矩阵
(2)由于B‘是可逆的,两边乘上B’逆矩阵。



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




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

      矩阵求逆采用高斯消元法,需要进行实数加减乘除四则运算,无法作用于字长为w的二进制数据。为了解决这个问题,
RS采用伽罗华群GF(2^w)中定义的四则运算法则。 GF(2^w)域有2^w个值,每个值都对应一个低于w次的多项式,这样域上的四则运算就转换为多项式空间的运算[2]。
GF(2^w)域中的加法就是XOR,乘法比较特殊,需要维护两个大小为2^w -1的表格:
log表gflog,反log表gfilog。
乘法公式: a * b = gfilog(gflog(a) + fglog(b)) % (2^w -1)
CRS(Cauchy Reed Solomon)
      RS纠删码的计算代价较高,瓶颈在于乘除法,乘除法操作需要3次查表操作,一次加(减)法操作,一次条件判断,一次取模操作(可优化为一次条件判断和一次减法操作)。
CRS从两个方面优化RS性能

(1) 使用Cauchy编码矩阵, Cauchy编码矩阵的好处是求逆矩阵比较快

(2) 将GF(2^w)中的运算全部转换为XOR,其中的数学原理比较复杂,可参见文献[3]
小结
RS的特点:

(1) 低冗余度,高可靠性。

(2) 数据恢复代价高。丢失数据块或者编码块时, RS需要读取n个数据块和校验块才能恢复数据,数据恢复效率也在一定程度上制约了RS的可靠性。

(3) 数据更新代价高。数据更新相当于重新编码,代价很高,因此常常针对只读数据,或者冷数据。

(4) RS编码依赖于两张2^w-1大小的log表,通常只能采用16位或者8位字长,不能充分利用64位服务器的计算能力,具体实现上可能要做一些优化。

参考文献:

[1]James S. Plank. Erasure Codes For Storage Application.

[2]James S. Plank. A Tutorial on Reed-Solomon Coding for Fault-Tolerance inRAID-like Systems

[3]James S. Plank. Optimizing Cauchy Reed-Solomon Codes for Fault-TolerantStorage Applications
 
更多技术分享,请关注网易视频云官方网站(http://vcloud.163.com/)或者网易视频云官方微信(vcloud163)进行交流与咨询。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息