一种可同时恢复数据元素及冗余元素的纠删码解码方法与流程

文档序号:14653580发布日期:2018-06-08 22:30阅读:310来源:国知局
一种可同时恢复数据元素及冗余元素的纠删码解码方法与流程

本发明涉及计算机信息存储及恢复技术领域,特别涉及一种纠删码解码方法。



背景技术:

随着大数据时代的到来,计算机技术发展迅猛,信息技术在各个行业和领域都被广泛普及,数据也呈爆炸性的增长,使得人们对存储系统的要求越来越高。日益增长的存储需求使得存储系统中的存储节点数量和单节点容量都呈指数级增长,这意味着发生存储节点失效的概率以及单节点中的扇区失效的概率越来越大,因此,数据容错技术是存储系统中一项不可或缺的关键技术。

现在使用较多的容错技术一种是多副本复制技术,通过复制副本进行容错。另外一种是纠删码容错技术,通过编码进行容错。纠删码技术主要是依靠纠删码算法将原始的数据进行编码得到冗余数据后存储,以达到容错的目的。在存储系统中,它的主要思想是通过将k块原始的数据元素编码后得到m块冗余元素,当其中有m-k块元素(数据元素或冗余元素)失效时,均能通过余下的元素利用一定的解码算法将失效元素恢复出来。与多副本容错技术相比,纠删码容错技术可以在显著降低存储空间消耗的同时提供相同甚至较高的数据容错能力。

近年来人们对于纠删码的研究大多集中在编码过程上,很少涉及解码过程,原始的纠删码解码过程基本上是利用循环迭代或矩阵求逆的方式来处理,每种码制的解码算法均不相同,且原始的解码类型是对于整个数据节点的恢复,当一个数据节点中丢失一个数据元素或扇区时,即认为该节点失效。但是随着数据量的不断增大,硬件不断增多,某个数据节点中扇区丢失的现象越来越多,当重建该数据节点时,也会重建那些不必要重建的扇区而造成重复,增大不必要的计算量,因此针对随机元素或扇区丢失的恢复也成为纠删码解码的一个重要问题。

文献【Research of Methods for Lost Data Reconstruction in Erasure Codes over Binary Fields】中提出了一种在二元域上的归并译码的算法(本发明中简称归并译码),该算法通过在容错存储系统上重建数据块来恢复数据节点的错误,可以用来恢复随机元素的丢失,但是此算法的运算过程涉及到逆矩阵的计算,因而恢复单错时效率较高,一旦发生多错(多个随机元素),求逆运算会很大程度影响到运算的速度,从而影响解码效率。

文献【Matrix Methods for Lost Data Reconstruction in Erasure Codes】中提出一种针对纠删码的解码算法(本发明中简称矩阵译码),这种算法基于生成矩阵及其伪逆矩阵,该算法既解决了随机扇区丢失的恢复问题,同时摒弃了求逆矩阵的运算,恢复效率很高,同时也是一种通用性的解码算法,适用于任意的阵列码,也可以用于非异或的纠删码。但是矩阵译码算法同时存在一个不足,对于冗余元素的丢失只能等数据元素恢复后运用编码算法来求解,却不能同时恢复数据元素和冗余元素。



技术实现要素:

基于上述所述,本发明要解决的技术问题提供一种可同时恢复数据元素和冗余元素的纠删码解码方法,该解码方法的效率与普通的解码算法效率相当,但由于可同时对数据元素和冗余元素进行解码,其具有更好的适用性。

本发明的整体思路是:构造一个方阵空间,利用方阵空间中的校验矩阵对其中丢失的元素行进行异或替换操作,最后变换出一个新的方阵空间,新方阵空间中的每一行代表条带中的一个元素,即丢失元素对应新方阵空间中的一个非标识行或非0行,每一列代表相对应的元素在条带中的位置;最后通过建立方程组,求解得出丢失的数据

本发明具体的技术方案是:

S1、首先构造一个方阵空间A,该方阵空间由矩阵O及校验矩阵H上下拼接构成,方阵空间为A记为其中,矩阵O也是一个组合矩阵,它是由一个单位阵和一个全0矩阵左右拼接而成,它的构成为O=(I|0);

S2、构建丢失元素列表L;其中,丢失元素列表L中的数值代表是丢失元素在整个条带中该元素扇区的表示位置;

S3、对方阵空间A进行变换,得到新方阵空间A',A'由数据矩阵R和冗余矩阵U上下拼接构成;新方阵空间A'记为

S4、A'中的非零行向量即为对应的丢失数据元素,非单位行向量即为对应的丢失冗余元素,建立方程组求解。

进一步地,步骤S3中的具体变换步骤为:

S3.1、首先判断构成方阵空间A的校验矩阵H,它的右半部分是否为单位阵。如是,则执行下述S3.2步骤;若不是,则先将校验矩阵H中行与行进行异或计算,将其右半部分变为单位阵后再执行S3.2步骤;

S3.2、对丢失元素列表L中的元素值s依序从小到大在上一次方阵空间基础上进行行行异或计算,遍历丢失元素列表L中所有元素值s,得到新方阵空间A'。

进一步地,步骤S3.2中的具体操作是,

S3.2.1、对丢失元素列表L中的每个元素值s,首先判断该元素值s的类型;

S3.2.2、如果元素值s属于原始数据,则进行行行异或计算;如果是冗余元素,则跳过。

具体是:

⑴、在校验矩阵H中找到与所述元素值s相对应的列,再在该列中找到数值为1所对应的行h;如果行h不存在,则将数据矩阵R中与元素值s相对应的列含有数值1的行置零;

⑵、找到行h后,如果丢失元素列表L中没有包含冗余元素,那么就从找到的所有行h中选择最稀疏的一行f;如果L中包含冗余元素,则将丢失元素列表L中丢失的冗余元素从找到的行h中去除后在余下的行h中选择最稀疏的一行f;对于矩阵空间中第s列为1的行e,如果f≠e,那么将f与e进行异或计算,计算结果替换掉行e,并将H中第f行全部置零;

⑶、遍历完丢失元素列表L中所有数据块元素后,将L中冗余元素对应于H中的列置零。

本发明所阐述的解码方法(也可称之为算法)可以从解码效率、通用性、是否能恢复随机扇区错误,是否能同时恢复理论上所有可恢复情况四个方面来评价分析。解码效率指标可以由恢复同样大小同样错误的文件来观察得出,本发明提出的方法解码效率虽然不是最好,但与最基本的解码算法循环迭代效率(也是最优的)相差不多,相对于其余解码算法例如归并译码和矩阵译码效率有明显优势。通用性是指解码算法对于纠删码是否都可适用,原始的阵列码的循环迭代译码算法是不具有通用性的,它对于不同的码制都有不同的译码规则;归并译码和矩阵译码具有很好的通用性,本发明提出的解码算法同样拥有很好的通用性,可适用于任意纠删码。是否能恢复随机扇区错误同样是检验解码算法好坏的一个指标,现在随着数据节点中单个扇区数据丢失的情况增多,能恢复随机扇区数据丢失的解码算法也成为一个重要的问题。本发明提出的解码算法能够理论上恢复不同节点上不同扇区数据丢失的情况,而最基本的针对于阵列码的循环迭代算法并不能够恢复随机扇区错误。是否能同时恢复所有理论可恢复情况是指解码算法可以同时恢复出理论上可以恢复的所有丢失情况,包括数据元素和冗余元素的同时丢失,本发明所提出的算法即可很好的达到此要求,但对于矩阵译码算法来讲却不能达到,它通常是在恢复完数据元素后再通过编码恢复丢失的冗余元素。由以上说明的四个方面的指标,可以看出,本发明提出的解码算法是极优且易于推广的。

由上述技术方案可知,本发明的有益效果在于:

1、解决了矩阵译码不能同时恢复数据元素和冗余元素的情况,本发明是基于矩阵译码的改进,矩阵译码算法是一种利用伪逆原理来恢复随机数据元素扇区丢失情况的算法,且效率很高。但是却有一个不足,对于丢失元素中含有冗余元素的情况,不能同时将冗余元素恢复出来,而需要将数据元素恢复出来后,利用编码再来恢复冗余元素。本发明提出解码算法,可以在恢复数据元素的同时将冗余元素也恢复出来,在一定程度上降低了计算量,提高了解码效率。

2、解决了理论上可恢复的所有的随机扇区数据丢失的情况。本发明提出的解码算法构建一个方阵空间,利用校验矩阵来恢复丢失元素,可以理论上恢复可恢复的所有情况。本算法是一种通用的解码算法,可以适用于任意纠删码。

3、解决了归并译码中需要求逆的情况,归并译码算法也是一种针对随机扇区丢失的算法,有很好的的通用性,且能解所有理论可解的情况,但是该算法中涉及有矩阵求逆运算,在一定程度上影响了算法的解码速度,降低了算法的效率,而本发明提出的纠删码解码算法摒弃了求逆矩阵的过程,在运算速度和效率上都有很大的提高,是一种性能优异的算法。

附图说明

图1示出了STAR(3,6)码的结构示意图;

图2示出了RDP(3,4)码的结构示意图。

具体实施方式

下面结合附图对本发明的实施例进行详细说明。

本发明所描述的实施例仅是本发明的部分实施例,而不是全部实施例。为了便于描述,附图中仅示出与本发明相关的部分而非全部内容。

实施例一

参阅图1,本实施例提供了STAR(3,6)码的解码算法。

本实施例中,利用STAR(3,6)来进行编码,即素数P取3,数据元素为3,冗余元素也为3。假设丢失的块元素为0,2,4,5,8,9,即丢失元素列表L=(0,2,4,5,8,9);

将数据条带记为T,该条带的数据块记为D,则

D=(d0,0,d1,0|d0,1,d1,1|d0,2,d1,2);

T=(d0,0,d1,0|d0,1,d1,1|d0,2,d1,2|P0,P1|Q0,0,Q1,0|Q0,1,Q1,1)。

解码时:

S1、构造一个方阵空间A;

S2、判断组成方阵空间A中的校验矩阵H的右半部分是否为单位阵,若是,则继续往下操作,若不是将其变换为单位阵。本实施例中的H右半部分是单位阵,则继续往下操作;

S3、当丢失元素列表L中的元素值s=0时,在方阵空间A中的校验矩阵H中找第0列中数值为1的行,即行h的集合为h=(6,8,10),但是因为数字8存在于丢失元素列表L中,所以排除8,行h集合变为h=(6,10),第六行相比较第十行更稀疏,选定后将第六行与第0,8,10行分别异或计算,并将异或计算结果替换原有的第0,8,10行,最后将第六行置零;

方阵空间A变化为A0

S4、当丢失元素列表L中的元素值s=2时,在方阵空间A0中的校验矩阵H中找第2列中数值为1的行,即行h的集合为h=(8,9,11),但是因为数值8,9存在于丢失元素列表L中,所以排除8,9,行h的集合中只留有一个元素,选择h=11,选定后将第十一行与第0,2,8,9行分别异或计算,并将异或的结果替换原有的第0,2,8,9行,然后将第十一行置零;

方阵空间由A0变为A1

S5、当丢失元素列表L中的元素值s=4时,在方阵空间A1中的校验矩阵H中找到第4列中数值为1的行,即行h的集合为h=(8,10),但是因为数值8存在于丢失元素列表L中,所以排除8,行h的集合中只留有一个元素10,选择h=10,选定后将第十行分别与第2,4,8行进行异或计算,并将异或计算结果替换原有的第2,4,8行,最后将第十行置零;

方阵空间由A1变为A2

S6、当丢失元素列表L中的元素值s=5时,在方阵空间A2中的校验矩阵H中找到第5列中数值为1的行,即行h的集合为h=(7,8,9),但是因为8,9存在于丢失元素列表L中,所以排除8,9,行h的集合中只留有一个元素7,选择h=7,选定后将第七行分别与第0,4,5,8,9行进行异或计算,并将异或计算结果替换原有的第0,4,5,8,9行,然后将第7行置零;

方阵空间由A2变为A3

S7、当丢失元素列表L中的元素值s=8时,因为8为冗余元素,跳过,方阵空间不变,仍然为A3

S8、当丢失元素列表L中的元素值s=9时,因为9为冗余元素,跳过,方阵空间继续不变,仍然为A3

至此,丢失元素列表L中的所有元素值s遍历完成,将冗余元素s=8,9所对应的列置零,最后方阵空间A'=A3

S10、方阵空间A'中多个非零位置的行向量即为理论上可解的元素,通过下述公式解出:

实施例二

参阅图2,为本实施例提供了RDP(3,4)码的解码算法。

本实施例中,利用RDP(3,4)来进行编码,即素数p取3,数据元素为2,冗余元素也为2。假设丢失的块元素为0,2,4,5,即丢失元素列表L=(0,2,4,5);

将数据条带记为T,该条带的数据块记为D,则

D=(d0,0,d1,0|d0,1,d1,1);

T=(d0,0,d1,0|d0,1,d1,1|P0,P1|Q0,Q1);

S1、构建一个方阵空间A;

S2、判断组成方阵空间A中的校验矩阵H的右半部分是否为单位阵,若是,则继续往下操作,若不是将其变换为单位阵。本实施例中的校验矩阵H中右半部分不是单位阵,则首先变换矩阵空间,使其变换为规范的矩阵空间,即将第五行与第六行进行异或计算,使得校验矩阵H右半部分变为单位阵;

方阵空间A变化为A0

S3、当丢失元素列表L中的元素值s=0时,在方阵空间A0中的校验矩阵H中找第0列中数值为1的行,即行h的集合为h=(4,6),但是因为数值4存在于丢失元素列表L中,所以排除4,行h的集合中只留一个元素6,选择h=6,选定后将第六行分别与第0,4行进行异或计算,并将计算结果替换原有的第0,4行,最后将第六行置零;

方阵空间A0变化为A1

S4、当丢失元素列表L中的元素值s=2时,在方阵空间A1中的校验矩阵H中找到第2列中为数值为1的行,即行h的集合为h=(4,7),但是因为数值4存在于丢失元素列表L中,所以排除4,行h的集合中只留有一个元素7,选择h=7,选定后将第七行分别与第2,4行进行异或计算,计算后的结果替换后的第2,4行,然后将第七行置零;

方阵空间A1变化为A2

S5、当丢失元素列表L中的元素值s=4时,因为4为冗余元素,所以跳过,方阵空间不变,仍然为A2

S6、当丢失元素列表L中的元素值s=5时,5也为冗余元素,跳过;方阵空间继续保持不变,仍然为A2

至此,丢失元素列表L中的所有元素值s遍历完成,将冗余元素s=4,5所对应的列置零,最后的方阵空间A'=A2

S7、方阵空间A'中含有多个非零位置的行向量即为理论上可解的元素,通过下述公式解出:

最后应说明的是:以上各实施例仅用于说明本发明的技术方案,而非对其进行限制,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1