修复多节点失效的MDS阵列码编码以及解码方法与流程

文档序号:11479312阅读:308来源:国知局
修复多节点失效的MDS阵列码编码以及解码方法与流程

技术领域
】本发明涉及数据处理领域,尤其涉及一种修复多节点失效的mds阵列码编码以及解码方法。
背景技术
:随着计算机网络应用的迅速发展,网络信息数据量变得越来越大,海量信息存储变得尤为重要,持续增长的数据存储压力推动着整个存储市场的快速发展。分布式存储以其高性价比、低初期投资、按需付费等优越的特点日益成为当今大数据存储的主流技术。当前,分布式存储系统的存储节点失效已经成为一种常态。当系统所部署的存储节点变得不可靠时,必须引入冗余来提高节点失效时的可靠性。引入冗余最简单的方法就是对原始数据直接备份,直接备份虽然简单但是其存储效率和系统可靠性不高,而通过编码引入冗余的方法可以提高其存储效率,增强系统的可靠性。因此分布式存储的高概率可用性、可靠性以及安全性等均是分布式存储系统的关键技术问题。在目前的存储系统中,编码方法一般采用mds码,mds码可以达到存储空间效率的最优化,一个(n,k)mds码需要将一个原始数据文件分成k个大小相等的数据块,通过线性编码生成n个互不相关的编码块,并由n个节点存储n个编码块。若n个编码块中包含原始的k个数据块,其它n-k个编码块称为冗余块,包含k个数据块的mds码称为系统mds码。mds码满足mds属性:即从n个编码块中取任意k个即可解码出原始的k个数据块。这种编码技术在提供有效的网络存储编码中占有重要的地位,特别适合应用于存储大的文件以及档案数据备份。在分布式存储系统中,把数据按某种方式编码,并把编码结果存储在n个存储节点中,这一过程称为编码过程。数据接收者只需连接并下载n个存储节点中的任意k个存储节点的数据即可恢复出原始数据,这一过程称为数据重建过程或解码过程。不同的mds码有不同的编码、解码计算复杂度。复杂度越高,计算量越大,计算时所消耗的时间就越长。设计出一种好的mds码,能够降低计算量,缩短工作时间,减少资源的消耗,节省系统运行时需要的成本,使得运算和存储更加灵活。mds阵列码是mds码的一种,其特征是编解码过程中仅仅用到简单的二进制异或操作,因此可以很容易且高效的在系统中实现。本发明即是一种能容纳任意n-k个编码块的丢失,编码、解码计算复杂度低的二进制系统mds阵列码。evenodd码,引自论文[m.blaum,j.brady,j.bruck,andj.menon,“evenodd:anefficientschemefortoleratingdoublediskfailuresinraidarchitectures,”ieeetransactionsoncomputers,vol.44,no.2,pp.192–202,1995]。evenodd码是能容纳2个编码块丢失的mds阵列码。在evenodd码中,其要求数据块个数必须为质数,冗余块个数为2。evenodd码的编码过程只需要简单的二进制异或运算,并且两个检验块的每个冗余比特均是通过斜率为0和1的直线经过的信息比特异或结果。但是,evenodd码存在着不可拓展性的缺陷:evenodd码只有两个检验块,因此最多只能恢复两个存储节点失效的情况,不易于拓展。文献[m.blaum,j.bruck,anda.vardy.mdsarraycodeswithindependentparitysymbols.inieeetransactionsoninformationtheory,vol.42,no.2,pp.529-542,1996]给出了evenodd码的扩展,但是满足mds属性的条件非常苛刻,且满足mds属性的冗余块个数(n-k)最大为8。crs码,全称是cauchyreed-solomon码,引自论文[plank,j.s.,xu,l.optimizingcauchyreed-solomoncodesforfault-tolerantnetworkstorageapplications.inieeeinternationalsymposiumonnetworkcomputingandapplications,pp.173–180,2006]。它是基于有限域和cauchy矩阵构造的mds系统阵列码,可以容纳任意的n-k个编码块的丢失。在编码、解码过程中,它把一个有限域乘法运算转换为多个二进制异或运算。但是,crs码依然存在着编码、解码计算复杂度高的缺点:crs码在编解码过程中,把有限域乘法运算转换为多个二进制异或运算,因为二进制异或运算的个数就反应了其编解码计算复杂度,然而其对应的二进制异或运算的个数在编解码过程中是不可控的、很高的。对于一般的参数k和n,如何设计其编解码计算方法,降低二进制异或个数,即编解码计算复杂度,是crs码急需解决的一大缺陷。技术实现要素:为了解决现有技术中的问题,本发明提供了一种修复多节点失效的mds阵列码编码以及解码方法,解决现有技术中编解码计算复杂度高的问题。本发明是通过以下技术方案实现的:设计、制造了一种修复多节点失效的mds阵列码编码,其组成部分为c(k,r,p)码,通过构建一个(p-1)×(k+r)的矩阵来存储原始信息数据块和冗余块,其中p为质数,且p大于k和r,k和r小于为小于p大于0的任意整数;k列称为信息列,其对应为k个数据块;r列为冗余列,其对应为r个冗余块,c(k,r,p)码中的加法和减法运算均为异或运算。作为本发明的进一步改进:c(k,r,p)码的构造过程为:给定k(p-1)个信息比特,计算并添加k个校验比特,得到k个数据多项式,通过计算出编码多项式,存储多项式的次数为从0到p-2的多项式的系数。作为本发明的进一步改进:存储在第j信息列的p-1个信息比特和其校验比特表示的第一数据多项式为sj(x)=s0,j+s1,jx+…+sp-2,jxp-2+sp-1,jxp-1,其中,si,j表示阵列码c(k,r,p)的第j信息列的第i个比特;第三编码多项式为作为本发明的进一步改进:c(k,r,p)码中的除法按以下方式进行:为每个数据多项式计算一个除法运算,然后把相应的数据多项式除法运算的结果相加。作为本发明的进一步改进:c(k,r,p)码为二进制柯西阵列码,其生成矩阵为g=[ic],其中矩阵i表示k×k的单位阵,矩阵c为的k×r柯西矩阵,本发明同时提供了一种修复多节点失效的mds阵列码编码的解码方法,包括如下步骤:当阵列码c(k,r,p)中有ρ≤r个列丢失时,设γ个信息列a1,a2,...,aγ和δ个冗余列b1,b2,...,bδ丢失,其中1≤a1<a2<...<aγ≤k,1≤b1<b2<...<bγ≤r,k≥γ≥0,r≥δ≥0且γ+δ=ρ≤r,把存活的没有丢失的信息列表示为m={1,2,...,k}\{a1,a2,...,aγ},把没有丢失的冗余列表示为p={1,2,...,r}\{b1,b2,...,bδ},首先下载存活的没有丢失的k-γ个信息列i1,i2,...,ik-γ∈m,和γ个冗余列l1,l2,...,lγ∈p,恢复出丢失的γ个信息列,然后把丢失冗余列的编码向量与k个数据多项式相乘计算出丢失的冗余多项式。作为本发明的进一步改进:为信息列iτ添加一个校验比特并形成数据多项式其中τ=1,2,...,k-γ;为冗余列lh添加比特零并形成编码多项式其中,h=1,2,...,γ;分别为γ个编码多项式减去k-γ个数据多项式所得到的多项式为,通过求解线性方程组解出丢失的γ个数据多项式,其中线性方程组为;然后获得γ个丢失的信息列。作为本发明的进一步改进:丢失的δ个冗余列通过相应的编码向量与k个信息多项式相乘得到。本发明的有益效果是:能修复任意n-k个节点失效且编解码计算复杂度较低的新cauchy阵列码,提高了系统的容错性。通过二进制异或运算实现了新cauchy阵列码的编解码,与crs码相比,编解码过程的计算复杂度更低。【附图说明】图1为本发明阵列码c(p-4,4,p)、循环柯西码和crs码在r=4时的单位编码计算复杂度示意图;图2为本发明阵列码c(p-4,4,p)和、rabin-like码、循环柯西码和crs码在r=4时的单位解码计算复杂度示意图;图3为本发明阵列码c(p-5,5,p)、循环柯西码和crs码在r=5时的单位解码计算复杂度示意图。【具体实施方式】下面结合附图说明及具体实施方式对本发明进一步说明。缩略语和关键术语定义mdsmaximumdistanceseparable最大距离可分离rdprow-diagonalparity行对角线校验一种修复多节点失效的mds阵列码编码,其组成部分为c(k,r,p)码,通过构建一个(p-1)×(k+r)的矩阵来存储原始信息数据块和冗余块,其中p为质数,且p大于k和r,k和r小于为小于p大于0的任意整数;k列称为信息列,其对应为k个数据块;r列为冗余列,其对应为r个冗余块,c(k,r,p)码中的加法和减法运算均为异或运算。c(k,r,p)码的构造过程为:给定k(p-1)个信息比特,计算并添加k个校验比特,得到k个数据多项式,通过计算出编码多项式,存储多项式的次数为从0到p-2的多项式的系数。存储在第j信息列的p-1个信息比特和其校验比特表示的第一数据多项式为sj(x)=s0,j+s1,jx+…+sp-2,jxp-2+sp-1,jxp-1,其中,si,j表示阵列码c(k,r,p)的第j信息列的第i个比特;第三编码多项式为c(k,r,p)码中的除法按以下方式进行:为每个数据多项式计算一个除法运算,然后把相应的数据多项式除法运算的结果相加。c(k,r,p)码为二进制柯西阵列码,其生成矩阵为g=[ic],其中矩阵i表示k×k的单位阵,矩阵c为的k×r柯西矩阵,本发明同时提供了一种修复多节点失效的mds阵列码编码的解码方法,包括如下步骤:当阵列码c(k,r,p)中有ρ≤r个列丢失时,设γ个信息列a1,a2,...,aγ和δ个冗余列b1,b2,...,bδ丢失,其中1≤a1<a2<...<aγ≤k,1≤b1<b2<...<bγ≤r,k≥γ≥0,r≥δ≥0且γ+δ=ρ≤r,把存活的没有丢失的信息列表示为m={1,2,...,k}\{a1,a2,...,aγ},把没有丢失的冗余列表示为p={1,2,...,r}\{b1,b2,...,bδ},首先下载存活的没有丢失的k-γ个信息列i1,i2,...,ik-γ∈m,和γ个冗余列l1,l2,...,lγ∈p,恢复出丢失的γ个信息列,然后把丢失冗余列的编码向量与k个数据多项式相乘计算出丢失的冗余多项式。为信息列iτ添加一个校验比特并形成数据多项式其中τ=1,2,...,k-γ;为冗余列lh添加比特零并形成编码多项式其中,h=1,2,...,γ;分别为γ个编码多项式减去k-γ个数据多项式所得到的多项式为通过求解线性方程组解出丢失的γ个数据多项式,其中线性方程组为然后获得γ个丢失的信息列。丢失的δ个冗余列通过相应的编码向量与k个信息多项式相乘得到。本发明中,这种新的基于二进制多项式环和cauchy矩阵构造的mds阵列码针对现有的mds码一般容纳存储节点失效个数少、编解码计算复杂度高等问题,提出来了一种能修复任意n-k个节点失效且编解码计算复杂度较低的新cauchy阵列码,提高了系统的容错性。通过二进制异或运算实现了新cauchy阵列码的编解码,并且与crs码相比,编解码过程的计算复杂度更低。简称这种新cauchy阵列码为c(k,r,p)码,本文的所有的加法运算和减法运算均指二进制异或运算,其中r=n-k。c(k,r,p)码通过构建一个(p-1)×(k+r)的矩阵来存储原始信息数据块和冗余块,其中p为质数,且p大于k和r,k和r小于为小于p大于0的任意整数。c(k,r,p)码的前k列称为信息列,对应为k个数据块,后r列为冗余列,对应为r个冗余块。在一实施例中,c(k,r,p)码的构造过程如下:令i=0,1,...,p-2,j=1,2,...,k,用si,j表示阵列码c(k,r,p)的第j信息列的第i个比特。令i=0,1,...,p-2,l=1,2,...,r,用ci,j表示阵列码c(k,r,p)的第l冗余列的第i个比特。对于存储在第j信息列的p-1个信息比特s0,j,s1,j,…,sp-2,j,定义校验比特sp-1,j为sp-1,j=s0,j+s1,j+…+sp-2,j。令j=1,2,...,k,把存储在第j信息列的p-1个信息比特和其校验比特表示为数据多项式sj(x)=s0,j+s1,jx+…+sp-2,jxp-2+sp-1,jxp-1。(1)同样的,令l=1,2,...,r,定义冗余列l的校验比特cp-1,l为cp-1,l=c0,l+c1,l+…+cp-2,l,并把存储在第l冗余列的p-1个冗余比特和其校验比特表示为编码多项式cl(x)=c0,l+c1,lx+…+cp-2,lxp-2+cp-1,lxp-1。(2)因此,现在有多项式环f2[x]/(1+xp)中的k个数据多项式和r个编码多项式。而r个编码多项式是由以下等式计算而得注意,以上计算均是多项式环f2[x]/(1+xp)中的运算。因此,阵列码c(k,r,p)的生成矩阵为g=[ic],其中矩阵i表示k×k的单位阵,矩阵c为的k×r柯西矩阵二进制柯西阵列码c(k,r,p)的编码过程可以描述如下。给定k(p-1)个信息比特,计算并添加k个校验比特,得到k个如式(1)所示的数据多项式。通过计算出式(3)所示的编码多项式,忽略这些多项式中次数为p-1的项,然后存储多项式的次数为从0到p-2的多项式的系数。在阵列码c(k,r,p)的编码过程中,需要在多项式环f2[x]/(1+xp)中计算很多形如的除法运算,其中多项式s(x)有偶数个项,b是小于素数p的一个正整数。在以下引理中给出了如何有效的计算这种除法运算。引理1.在多项式环f2[x]/(1+xp)中,多项式s(x)=s0+s1x+…+sp-1xp-1有偶数个项,给定正整数b和等式其中b是小于素数p的一个正整数。则可以通过以下等式计算出多项式c(x)=c0+c1x+…+cp-1xp-1的系数。证明:通过把等式s(x)=c(x)(1+xb)展开有,选择多项式c(x)的一个系数为0,然后多项式c(x)的其它系数可以通过以上等式迭代的计算出。具体的讲,令系数cp-1等于0,然后可以计算出cp-b-1=sp-1和cb-1=sb-1。多项式c(x)的其它系数均可以通过一个异或运算迭代的计算出。证毕。由引理1的证明过程知,在计算多项式c(x)的系数过程中需要p-3个异或。以参数k=2,r=2,p=5为例,介绍柯西阵列码c(2,2,5)的编码过程。在这个例子中,有两个数据多项式,如式(5)和式(6)所示。s1(x)=s0,1+s1,1x+s2,1x2+s3,1x3+(s0,1+s1,1+s2,1+s3,1)x4式(5)s2(x)=s0,2+s1,2x+s2,2x2+s3,2x3+(s0,2+s1,2+s2,2+s3,2)x4式(6)两个编码多项式c1(x)和c2(x)由以下式(7)所示的等式计算而得。根据引理1,在以上计算编码多项式的过程中,每个除法运算均涉及2个异或运算。表1列出了该例子的信息列比特和冗余列比特。在计算二进制柯西阵列码的编码多项式中,首先需要为每个数据多项式计算一个除法运算,然后把相应的数据多项式除法运算的结果相加。表1阵列码c(2,2,5)的信息列和冗余列信息列1信息列2冗余列1冗余列2s0,1s0,2(s0,1+s1,1+s3,1)+(s0,2+s2,2)(s0,1+s1,1+s3,1)+(s0,2+s3,2)s1,1s1,2s1,1+(s0,2+s1,2+s2,2+s3,2)s1,1+s2,2s2,1s2,2(s0,1+s1,1+s2,1+s3,1)+s2,2(s0,1+s1,1+s2,1+s3,1)+s0,2s3,1s3,2(s1,1+s3,1)+(s0,2+s2,2+s3,2)(s1,1+s3,1)+(s0,2+s1,2+s3,2)在又一实施例中,阵列码c(k,r,p)的解码过程如下:当二进制柯西阵列码的一些数据列丢失时,想要从其他存活的数据列中下载数据并解码出丢失的数据。称这一过程为解码过程。本节给出阵列码c(k,r,p)的一种快速解码方法,这种方法是基于柯西矩阵的lu分解。该解码方法适用于任意数据列的丢失。首先来介绍柯西矩阵的lu分解。给定2k个互不相等的变量x1,x2,...,xk,y1,y2,...,yk,柯西方阵被定义为如式(8)所示。文献[t.boros,t.kailathandv.olshevsky.afastparallelbjorck-pereyra-typealgorithmforsolvingcauchylinearequations.elsevierlinearalgebraandltsapplications,vol.1999,302(1):265-293.]中给出了柯西方阵的逆矩阵并提出了柯西矩阵逆矩阵的lu分解,主要结论如下。定理2.柯西方阵c(x1:k,y1:k)的逆矩阵可以被分解为式(9)所示。其中式(10)和式(11)满足。其中i=1,2,...,k-1,和式(12)满足。dk=diag{(x1-y1)(x2-y2)…(xk-yk)}式(12)举例说明,当k=2时,柯西逆矩阵c(x1:2,y1:2)-1可以分解为式(13)所示。基于定理2的结论,提出了一种快速求解柯西矩阵形式的线性方程组的方法。给定一个k×k柯西矩阵形式的线性方程组c(x1:k,y1:k)z=b,其中z=(z1,z2,...,zk)t和b=(b1,b2,...,bk)t均是长度为k的列向量。当给定向量b=(b1,b2,...,bk)t和矩阵c(x1:k,y1:k)的值时,可以求解出向量z=(z1,z2,...,zk)t的值,为式(14)所示。算法的伪代码请见算法1。在算法1中,需要处理三种运算:(i)多项式bl和xi的乘积,(ii)除法运算bl/(xj-yj-i),(iii)多项式的加法运算bi+bj。可以统计算法1中共有5k(k-1)次第一种类型乘法运算,k(k-1)次第二种类型除法运算和k+3k(k-1)次第三种类型加法运算。对应到阵列码c(k,r,p)的解码过程中,算法1中的xi和yi均被x的幂所代替,而变量bl和则被多项式环f2[x]/(1+xp)中的一个多项式代替。算法1中所有的类型二除法运算均可以通过引理1给出的方法计算出,且一个除法运算涉及p-3次异或运算。对于第一种类型乘法运算,在多项式环f2[x]/(1+xp)中,一个多项式乘以xi就是这个多项式的循环移位i位,因此没有涉及异或运算。在多项式环f2[x]/(1+xp)中,两个多项式相加会用到p次异或运算。在算法1中,步骤5到7是计算矩阵的右矩阵和列向量b的乘积,共有3(k-i)个多项式加法运算,其计算复杂度最多为3p(k-i)次异或。步骤8到10则是计算矩阵的左矩阵和列向量b的乘积,其计算复杂度最多为3k(k-1)(p-3)/2次异或。因此,步骤5到10,计算矩阵和列向量b的乘积的计算复杂度最多为3pk(k-1)/2+3k(k-1)(p-3)/2次异或。步骤12到14是计算对角矩阵dk和以上步骤得到的多项式向量的乘积,其计算复杂度最多为p+(k-1)(p-2)次异或。步骤16到18是计算矩阵的右矩阵和以上步骤得到的多项式向量的乘积,其计算复杂度最多为(k-3)k(k-1)/2次异或。步骤19到26则是计算矩阵的左矩阵和以上步骤得到的多项式向量的乘积,其计算复杂度最多为k(k-1)(3p-4)/2次异或。所以,在多项式环f2[x]/(1+xp)中,算法1的计算复杂度最多为式(15)所示。考虑上文给出的例子,两个编码多项式是通过以下等式计算出式(16)所示等式。假设两个数据多项式分别为s1(x)=1+x和s2(x)=x+x3。那么,可以得出其两个编码多项式分别为c1(x)=x和c2(x)=x+x2+x3。根据定理1,这个2×2的柯西矩阵可以分解为式(17)所示。可以验证两个数据多项式可以由两个编码多项式通过以下等式计算出式(18)。在求解两个编码多项式的过程中,有32个异或运算。当阵列码c(k,r,p)中有ρ≤r个列丢失时,接下来描述阵列码的解码过程。假设γ个信息列a1,a2,...,aγ和δ个冗余列b1,b2,...,bδ丢失,其中1≤a1<a2<...<aγ≤k,1≤b1<b2<...<bγ≤r,k≥γ≥0,r≥δ≥0且γ+δ=ρ≤r。把存活的没有丢失的信息列表示为式(19)。m={1,2,...,k}\{a1,a2,...,aγ}式(19)把没有丢失的冗余列表示为式(20)。p={1,2,...,r}\{b1,b2,...,bδ}式(20)首先下载存活的没有丢失的k-γ个信息列i1,i2,...,ik-γ∈m,和γ个冗余列l1,l2,...,lγ∈p,恢复出丢失的γ个信息列,然后把丢失冗余列的编码向量与k个数据多项式相乘计算出丢失的冗余多项式。下面详细的介绍其解码过程。对于τ=1,2,...,k-γ,首先为信息列iτ添加一个校验比特并形成数据多项式如式(21)。对于h=1,2,...,γ,为冗余列lh添加比特零并形成编码多项式如式(22)令式(23)分别为γ个编码多项式减去k-γ个数据多项式所得到的多项式,则有式(24)。其中h=1,2,...,γ。然后,可以通过求解以下线性方程组解出丢失的γ个数据多项式。如式(25)所示。通过调用算法1,可以得到γ个丢失的信息列。然后,丢失的δ个冗余列可以通过相应的编码向量与k个信息多项式相乘得到。下面来分析编解码的复杂度。下面统计下二进制柯西阵列码的解码复杂度。为k-γ个信息列添加校验比特并形成数据多项式用到了(k-γ)(p-2)次异或运算。计算式子(22)所表示的γ个多项式需要γ((k-γ)(p-3)+(k-γ)(p-1))=γ(k-γ)(2p-4)次异或运算。在求解γ×γ柯西形式的线性方程组时用到了4γ2p-3γp-5γ2+3γ+2次异或运算。在恢复δ个冗余列时需要δ(k(p-3)+(k-1)(p-1))次异或运算。因此,解码出γ个信息列和δ个冗余列的解码计算复杂度dγ,δ,为式(26)。次异或运算。当没有冗余列丢失,仅仅有信息列丢失时,解码复杂度为式(27)所示次异或运算。dγ=(k-γ)(p-2)+γ(k-γ)(2p-4)+4γ2p-3γp-5γ2+3γ+2式(27)。为方便比较,定义单位编码复杂度为编码过程中涉及到的异或运算的个数除以信息比特的个数,单位解码复杂度为解码过程中涉及到的异或运算的个数除以信息比特的个数。相比于之前的编码方案,比如evenodd码,阵列码c(k,r,p)的编解码复杂度几乎不变,但却能大大提升系统的容错能力,最多能修复任意r个节点失效;相比于crs码,阵列码c(k,r,p)在同样能恢复多个节点失效的同时,编解码复杂度均很低。其次,c(k,r,p)码对原始信息数据块的数量不固定,取值更加灵活。而且,c(k,r,p)码的构造过程和重建过程均只涉及异或运算,所以计算复杂度很低、计算开销很小,很大程度上降低了系统计算时延,节省时间和资源,能减少成本的消耗,适合实际的存储系统;c(k,r,p)码可以满足mds属性,在节省存储空间的同时,又让系统能够容纳多个结点故障,增加了数据的容错性和稳定性。编码计算复杂度:在阵列码c(k,r,p)中,有k个信息列,r个冗余列。首先,为每个信息列计算一个校验比特形成数据多项式,需要k(p-2)次异或运算。然后,根据编码计算公式计算出r个编码多项式。在计算每个编码多项式的过程中,需要计算k个除法运算,根据引理8知需要个k(p-3)异或运算。另外,根据引理1的结论,除法运算所得多项式的次数为p-1的系数为0。因此,在计算每个编码多项式的过程中的k-1个加法运算,需要(k-1)(p-1)次异或运算。所以,计算一个编码多项式需要的异或个数e1为式(28)所示。e1=k(p-3)+(k-1)(p-1)式(28)计算r个冗余列需要的计算量er,为式(29)所示。er=k(p-2)+r(2kp-4k-p+1)式(29)二进制柯西阵列码c(k,r,p)的单位编码计算复杂度nec(k,r,p),为式(30)。当给定冗余列的个数r时,循环柯西(circulantcauchy)阵列码[c.schindelhauerandc.ortolf.maximumdistanceseparablecodesbasedoncirculantcauchymatrices.structuralinformationandcommunicationcomplexity.springer,2013,3(1):334-345.]的单位编码计算复杂度为式(31)所示。为了公平的比较柯西阵列码的编码复杂度,令参数k等于p-r,因此有阵列码c(k,r,p)的单位编码计算复杂度为式(32)所示。当r=4时,对阵列码c(p-4,4,p),令k=p-4。当p取值范围从11到47时,阵列码c(p-4,4,p)、循环柯西阵列码和crs码的单位编码计算复杂度如图1。对于crs码,令k=p-4。在图1中,crs码的数值均是1000次运行数据的平均值。图1的结果表明阵列码c(p-4,4,p)的单位编码计算复杂度是三种阵列码中最低的,而crs码的计算复杂度是三种阵列码中最大的。解码计算复杂度:同样的,令k=p-r,阵列码c(p-r,r,p)的单位解码计算复杂度ndc(p-r,r,p),为式(33)所示。当r=4时,rabin-like码[g.l.feng,r.h.deng,f.bao,etal.newefficientmdsarraycodesforraid.partii.rabin-likecodesfortoleratingmultiple(≥4)diskfailures.ieeetransactionsoncomputers,2006,54(12):1473-1483]的解码计算复杂度为p(9k+95)异或运算,而当r大于4时,其解码计算复杂度会很大且作者并没有给出精确地异或个数。当循环柯西阵列码中有r个信息列丢失时,其单位解码计算复杂度ndcc,为式(34)所示。当r=4时,且当参数p取值范围从11到37时,阵列码c(p-4,4,p)、rabin-like码、柯西循环码和crs码的单位解码计算复杂度如图2。图2的结果表明,循环柯西码、rabin-like码和阵列码c(p-4,4,p)均是随着参数p的增加而减少,而crs码则是随着参数p的增加而增加。这是因为crs码的解码优化算法对参数值小时性能较好,而当参数值较大时,其优化效果不佳。因此,当参数较大时,crs码的解码计算复杂度是最大的,而当参数较小时,crs码的解码计算复杂度相对较低。在阵列码c(p-4,4,p)、rabin-like码和柯西循环码中,阵列码c(p-4,4,p)的解码计算复杂度是最低的,无论是当参数p取值小还是取值大。当r=5时,且当参数p取值范围从11到59时,阵列码c(p-5,5,p)、柯西循环码和crs码的单位解码计算复杂度如图3。与r等于4的情况类似,crs码的解码计算复杂度随着参数p的增加而变大,而阵列码c(p-5,5,p)和柯西循环码的计算复杂度则随着参数p的增加而变小。在所有测试的数据点,阵列码c(p-5,5,p)的解码计算复杂度均是最低的。当参数p大于47时,crs码的解码计算复杂度大于循环柯西码的解码计算复杂度。相反,当参数p小于47时,crs码的解码计算复杂度则小于循环柯西码的解码计算复杂度。阵列码c(k,r,p)相比于其他mds码,如crs码,最大的优势在于其编码计算复杂度和解码计算复杂度都低很多,而且对于原始信息数据块的数量没有固定,可取2到p内的任意整数。相比于能恢复两个结点的evenodd码,阵列码c(k,r,p)在编解码复杂度几乎不变的情况下,提高了系统的容错性,最多能修复任意r个节点失效。阵列码c(k,r,p)拥有较优的编解码复杂度,同时大大提升了系统的容错能力,而且对原始信息数据块的数量没有固定,可取2到p内的任意整数,更加灵活,达到存储开销与系统可靠性的最优折中。以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属
技术领域
的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1