码迷,mamicode.com
首页 > 其他好文 > 详细

双重编解码算法对比

时间:2014-08-31 02:52:51      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:raid6   reed-solomon   even-odd   阵列   

概述

双重编解码算法是实现数据保护的关键技术。磁盘阵列中的常用算法是RAID6,其属于Reed-solomon算法范畴。RAID6算法计算复杂度较高,往往需要硬件加速单元的支持。随着闪存技术的发展,新的编解码技术层出不穷,因此有必要了解常用阵列技术的双重编解码算法,通常来讲,常用双重编解码算法主要有如下三种:

 

1,二维(2D)奇偶校验方法

2EVEN-ODD编码校验法

3Reed-Solomon编码校验法

 

下面会对这三种算法的原理进行详细说明,然后对比这三种算法的性能及计算复杂度。

 

二维奇偶校验算法

二维奇偶校验方法将数据磁盘组织成mXn矩阵,然后分别在水平方向和垂直方向都进行奇偶校验编码的方法。若数据盘有mXn个,则用于存放校验信息的磁盘数有m+n。二维奇偶校验采用简单的异或运算,容易实现。二维奇偶校验算法的原理如下图所示:

 

bubuko.com,布布扣

 

采用这种方式的磁盘冗余率为:

(m+n)/(mXn + m + n)

 

空间利用率为:

mXn/(mXn + m + n)

 

可以看出这种算法的计算复杂度非常低,但是,需要的冗余磁盘数量非常多。例如,对于一个123X4)盘的阵列,采用这种算法需要7块冗余盘,对于传统的RAID6算法只需要2块冗余盘。

 

EVEN-ODD编解码算法

这种编码方法采用水平冗余和对角线冗余来设计校验码,具体如下图所示:

 

bubuko.com,布布扣

水平校验

 

bubuko.com,布布扣

对角线校验

 

对于m块数据盘,这种编码方式需要2块冗余盘,编码方式采用普通的XOR计算方法。一块冗余盘为普通的RAID5水平校验算法;另一块冗余盘为对角线编码算法。EMCXtremIO全闪阵列中的XDP采用的就是这种算法(可以参考文章《剖析XtremIOXDP技术》)。

 

在传统的磁盘阵列中,这种算法的应用是有局限的,每次数据的更新将都会转换成“读-修改-写”的复杂、耗时操作,小写性能将会变得十分低下。但是,在全闪存阵列中,情况变得非常不同,数据小写的问题变得不存在,这种算法反而有了用武之地。

 

Reed-Solomon编码算法

Reed-Solomon编码算法就是现在RAID6所采用的算法。其基本原理如下图所示:

 

bubuko.com,布布扣

 

该算法的编码过程说明如下(具体算法可以参考《RAID6算法解析》):

bubuko.com,布布扣       P编码采用异或操作得到,这一步与RAID5相似

bubuko.com,布布扣       Q编码通过加权系数乘加的方法编码得到,可以与P编码构成两个方程,允许两块盘同时失效

bubuko.com,布布扣       采用条带化的数据存储方式

bubuko.com,布布扣       需要两块冗余盘,属于最优编码范畴

 

三种编解码算法性能对比

从理论分析上可以看出这三种编解码算法具有不同的IO性能。其中2D编码最简单,EVEN-ODD次之,RS编码计算最复杂。当系统存在故障盘时,三种算法具有不同的数据恢复计算复杂度。下图分别是一块盘损坏、两块盘损坏时的三种算法计算复杂度。其中,红线是RS算法,绿线是EO算法,白线是2D算法。(需要注意的是:横轴不是时间,而是磁盘数量;纵轴是计算复杂度)

 

bubuko.com,布布扣

单盘损坏时的数据恢复计算复杂度(X轴:磁盘数量,Y轴:复杂度)

 

bubuko.com,布布扣

两块盘损坏时的数据恢复计算复杂度(X轴:磁盘数量,Y轴:复杂度)

从上图可以看出,在这三种双错码编码中,2D译码最简单,EVEN-ODD次之,RS译码计算最复杂。

 

三种编解码算法在磁盘存储阵列中的对比结果如下表所示:

 

bubuko.com,布布扣

 

综上,在磁盘阵列应用领域,我们可以得出如下结论:

  1. 2D编码方法简单,易于实现,但是构造的磁盘阵列性价比低(不属于最优冗余编码)

  2. RS编、译码较EVENT-ODD复杂,一般需要用硬件电路实现,但是RS码小写性能好,因此,适用于硬件/软件优化(指令加速)实现的阵列中。

  3. EVEN-ODD编、译过程较RS码简单,只有异或操作,但是小写性能差,因此,EVEN-ODD适用于实时性较强的连续数据存储

 

随着闪存存储的发展,存储介质的特性发生了本质变化,因此,最佳编解码算法也将发生变化,原来并不适用于磁盘阵列的的EO算法可以在闪存存储中大发光彩。

 

本文出自 “存储之道” 博客,请务必保留此出处http://alanwu.blog.51cto.com/3652632/1546914

双重编解码算法对比

标签:raid6   reed-solomon   even-odd   阵列   

原文地址:http://alanwu.blog.51cto.com/3652632/1546914

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!