一种修复二进制码生成矩阵构造方法及修复方法与流程

文档序号:16691766发布日期:2019-01-22 18:56阅读:505来源:国知局
一种修复二进制码生成矩阵构造方法及修复方法与流程

本发明属于数字处理技术改进领域,尤其涉及一种修复二进制码生成矩阵构造方法及修复方法。



背景技术:

现代分布式存储系统部署擦除代码来维护数据可用性,以防止存储节点的故障.二进制最大距离可分(mds)阵列编码是一种特殊的擦除码,它可以实现最小存储冗余和低计算复杂度的容错.特别地,二进制数组代码由k+r列组成,每个列中都有l位.在k+r列中,k信息列存储信息位r奇偶列存储冗余位.每个列中的l位都存储在相同的存储节点中.我们将磁盘作为一个列或一个存储节点,并将数组中的一个条目作为一个比特.当一个节点发生故障时,数组代码的相应列被认为是一个擦除.如果k+r列中的任何k都可以重构所有k信息列(即:它可以容忍任何r失败的列),这样的编码称作mds码.二进制mds阵列码的示例包括双容错代码(即r=2)如x-code[2],rdp码[3]和evenodd码[4],以及三重容错码(即r=3)如:star码[5],广义rdp码[6],和tip码[7]。

当一个节点在分布式存储系统中出现故障时,应该通过从d健康节点中下载片段来修复故障节点,其中k≤d≤k+r-1.最小化修复带宽,定义为在修复过程中下载的比特数量,对于加快修复操作和最小化漏洞的窗口是至关重要的,特别是在分布式存储中,网络传输是瓶颈.修复问题是由dimakis等人[8]基于信息流动图的概念制定的.最小存储冗余的最小修复带宽在[8]中进行了陈述,也称为最小存储再生(msr)点,是由下式表示:

虽然最小的修复带宽是可以达到的,在一个足够大的有限域上,但是如何构造二进制的mds阵列码来实现最小的修复带宽仍然是一个挑战。

一种传统的方法是从任何k幸存的列中下载所有的位元来重新生成故障列中的位元.因此,用于修复故障列的比特数的总数是故障位的k倍.在二进制mds阵列代码中,有研究减少了单个失败列的修复带宽.一些方法最小化了rdp代码[10]的磁盘读取和d=k+1的x-code[11],但是它们的修复带宽是次优的,比d=k+1时(1)的最小值大50%.mdr码[12],[13]和butterfly码[14],[15]是二进制的mds阵列编码,达到最优修复;然而,它们只提供了双重容错(即r=2).如何用最优修复和更好的容错(即r>2)来构造二进制mds阵列码仍然是一个开放的问题.这样的结构将有利于在故障易发的分布式存储系统中维护数据可用性。

基于专利【二进制阵列码编码框架】,本文通过选取合适的生成矩阵,提出了一种新的设计二进制mds阵列编码的方法,该方法可以容忍r≥3个磁盘故障。我们表明,当d足够大时,对于任何单个信息列故障的最小修复带宽(1)都可以渐进地实现.通过利用循环结构的商环和选择精心设计的编码矩阵,我们的结构最小化了修复带宽,这样在修复操作中访问的位元就会尽可能多地交叉。

大多数现有的二进制mds阵列编码[2]、[3]、[5]、[6]的修复带宽是次优的。一些构造[12-15]的二进制mds阵列码,具有最佳的修复带宽,只关注双容错(即r=2)。据我们所知,所提出的代码是第一个二进制的mds阵列码,它具有渐进的最优修复带宽,并且具有大于2的容错能力。所提议的代码和现有的二进制mds阵列码之间的关键区别如下。首先,与现有的结构,如[2]、[3]、[5]、[6],在校验列中(除了第一个校验列)的冗余位是通过对数组中特定的多边形线的对应来生成的.其次,在提议的代码中,数组的行数是k的指数函数。这两个属性对于减少修复带宽是非常重要的。双容错最优修复结构的[12-15]与建议结构之间的区别在于,采用了循环结构的商环,而[12-15]则没有采用。通过利用商环,我们可以选择设计良好的编码矩阵(校验矩阵),并以更大的容错度来达到最优的修复带宽。

之前的研究[16]、[17]也利用类似的技术来减少再生码的计算复杂度.在本研究中,我们证明当τ(稍后介绍的一个参数)足够大且满足某些条件时,我们可以找到一些二元mds阵列编码的结构,从而可以得到最优的修复。[16]、[17]的环可以看作是所提出的环在τ=1时的特殊情况。此外,[16]、[17]和这篇论文的主要结果是不同的。结果表明,在商环内,功能修复再生码的存储与修复带宽之间的基本权衡曲线在商环中也可以实现,而现有的再生码的产品矩阵结构仍在商环下工作,计算复杂度较低.在本文中,我们使用一个更一般的环来构造一个新的二进制mds阵列码,通过选择设计良好的生成矩阵来构造一个渐进的最优修复带宽。虽然提出了二进制数组mds码和结构的高数据率msr编码[9],[18]-[24]都是基于矩阵构建生成器或校验矩阵,提出的编码在二进制中构建,编码矩阵或校验矩阵在具有循环结构的环中选择。



技术实现要素:

本发明的目的在于提供一种修复二进制码生成矩阵构造方法及修复方法,旨在解决上述的技术问题。

本发明是这样实现的,一种修复二进制码生成矩阵构造方法,所述修复二进制码生成矩阵构造方法包括:设构造码其中η=d-k+1,k≥3,r≥3是一个奇数,d=k+(r-1)/2和τ=(d-k+1)k-2,构造矩阵pk×r;其计算公式:

本发明的进一步技术方案是:对于j=k+1,k+2,…,k+r,每一个编码多项式都在环cpτ中;让(i:j)={i,i+1,…,j}并根据列索引(i:j)生成pk×r的子矩阵pk×r(i:j),在pk×r中,子矩阵pk×r(η+1:2η-1)可由子矩阵pk×r(2:η)旋转180度得到,pk×r(2:η)中的最后一行是全为1的向量,并且pk×r(2:η)中第i行j列的元素的指数是第一行第j列的ηi-1的倍数,其中i=2,3,…,k-1和j=1,2,…,d-k。

本发明的进一步技术方案是:所述修复二进制码生成矩阵构造方法中信息位计算的额外位不需要存储,且用来计算冗余位。

本发明的另一目的在于提供一种修复二进制码生成矩阵修复方法,所述修复二进制码生成矩阵修复方法包括:对于0≤l≤pτ-1,j=1,2,…,r,第j个校验列的第l个校验集合分别定义如下

其中2≤j≤d-k+1,

,其中d-k+2≤j≤r;假设第f个信息列失效,如果因lmodηf∈{0,1,2,...,ηf-1-1},比特用第一个校验列修复;有因t=1,2,…,d-k,其lmodηf∈{tηf-1,tηf-1+1,...,(t+1)ηf-1-1},比特用第d-k-t+2个校验列修复;如果因lmodηk+1-f∈{0,1,2,...,ηk-f-1},比特用第一个校验列修复,有因t=1,2,…,d-k,其lmodηk+1-f∈{tηk-f,tηk-f+1,...,(t+1)ηk-f-1},比特用第d-k+t+1个校验列修复。

本发明的进一步技术方案是:对lmodηf∈{0,1,2,...,ηf-1-1}且l<(p-1)τ,比特可被第一个校验列的校验集合pl,1修复,需要从剩余k-1个信息列分别下载(p-1)ηk-3个比特,其中i∈{1,2,...,f-1,f+1,...,k}且lmodηf∈{0,1,2,...,ηf-1-1},并从第一个校验列中下载(p-1)ηk-3个冗余比特lmodηf∈{0,1,2,...,ηf-1-1},共有(p-1)ηk-3个比特需要下载。

本发明的进一步技术方案是:所述修复二进制码生成矩阵修复方法中第一个奇偶校验列的奇偶校验集与rdp和偶数奇中的第一个奇偶列相同。

本发明的进一步技术方案是:所述修复二进制码生成矩阵修复方法中其他奇偶校验列的奇偶校验位不是与数组中的直线相对应的位元,而是对应于多边形线的位元,在被提出的编码中的行数可以被ηk-2整除。

本发明的有益效果是:再生码的产品矩阵结构仍在商环下工作,计算复杂度较低,以更大的容错度减少修复带宽。

附图说明

图1是本发明实施例提供的三个校验列的存储编码示例图。

具体实施方式

考虑一个具有k≥2个信息列和r≥3个校验列的二进制mds阵列码。该阵列码的每一列都存储l=(p-1)τ位元,其中p是一个素数,这样2是有限域中的一个原始元素,τ的值稍后将指定。考虑一个大小为k(p-1)τ的文件,用信息比特来表示。这些信息比特可以用来生成r(p-1)τ个校验比特位元存储在第i个信息列中,(p-1)τ个位元存储在第j-k个校验列中。

对i=1,2,...,k和μ=0,1,...,τ-1,我们定义下面的简短表示法:

我们把称为的额外比特。例如,当p=3,k=4,和τ=4,时,的额外比特是对于j=k+1,k+2,…,k+r,τ个额外比特将加在第j-k个校验列后。后面将会很明显,第j-k个校验列的冗余位元将满足(2)对j=k+1,k+2,…,k+r和μ=0,1,...,τ-1。

对于l=1,2,...,k+r,我们用一个在环上的多项式来表示第l列中的比特和τ个额外比特例如

把对应于第i(i=1,2,...,k)个信息列的多项式叫做信息多项式;把对应于第j-k个校验列的多项式叫做编码多项式。我们把k个信息多项式和r个编码多项式写成如下的行向量

该向量可以通过在环上的运算得到,计算公式如下:

其中k×(k+r)的生成矩阵g由k×k的单位矩阵i和k×r的编码矩阵p构成,计算如下:gk×(k+r)=[ik×kpk×r](6)

所提出的编码可以描述为一个校验矩阵h(k+r)×r。考虑(4),我们有

用rpτ表示环rpτ中的一个元素a(x)可以表示成a(x)=apτ-1xpτ-1+…+a1x+a0,其系数是有限域中的元素。加法是通常的逐项加法,乘法是用通过模x+1来执行的。在rpτ中,乘以x可以被解释为循环移位.这对于减少一个列故障的修复带宽是至关重要的。请注意,我们不需要将额外的位存储在磁盘上,它们只用于标记的方便性。

考虑由rpτ中具有因子xτ+1的多项式构成的rpτ的子环cpτ,cpτ={a(x)(1+xτ)mod(1+x(pτ)|a(x)∈rpτ}(8)

事实上,cpτ是理想的,因为我们可以验证h(x)=x(p-1)τ+x(p-2)τ+…+xτ+1和cpτ中任意多项式的乘积为0。h(x)被成为cpτ中的校验多项式。cpτ中的乘法性质是e(x)=1+h(x)=x(p-1)τ+x(p-2)τ+…+xτ=(1+xτ)(x(p-2)τ+…+x3τ+xτ),

由于e(x)b(x)=(1+h(x))b(x)=b(x)mod(1+x)(9)

定理1当且仅当多项式的系数在cpτ中时才满足(2)。

证明:假设多项式的系数满足(2),通过调整得,

这种化简是为了证明对于i=0,1,…,p-2和j=0,1,…,τ-1,xiτ+j+x(p-1)τ+j是xτ+1的倍数。这是由于

xiτ+j+x(p-1)τ+j=xiτ+j(1+x(p-i-1)τ)=xiτ+j(1+xτ)(1+xτ+x+…+x(p-i-2)τ)。

这便证明了多项式系数是在环cpτ中的。

相反,假设在环cpτ中。根据(8),可以被写成

因此,对于μ=0,1,…,τ-1,可以得到

我们可以验证

因此,多项式的系数满足(2)。

由于存在两个多项式1和xτ+x+…+x(p-2)τ,因此等式

(1+xτ)(xτ+x+…+x(p-2)τ)+1·h(x)=1

在限域中是成立的,1+x可被分解成两个互素因子1+xτ和h(x)的乘积。在下一个引理中将说明环rpτ和是同构的。

引理2:环rpτ和是同构的。

证明我们需要在rpτ和中找到一种同构。甚至,我们可以通过定义θ(f(x)):=(f(x)modxτ+1,f(x)modh(x))设置一种同构:

映射θ是一个环同态和双射,因为它有一个逆函数φ(a(x),b(x)),其中

φ(a(x),b(x))=[a(x)h(x)+b(x)e(x)]modx+1。

下面将说明是环rpτ的恒等映射。

对于任意多项式f(x)∈rpτ,存在两个多项式g1(x),g2(x)∈rpτ,因此

f(x)=g1(x)(1+xτ)+f(x)mod(1+xτ),f(x)=g2(x)h(x)+f(x)modh(x).

那么我们可以有

φ(g(f(x)))=[h(x)(f(x)mod(1+xτ))+e(x)(f(x)modh(x))]modx+1

=[h(x)(f(x)-g1(x)(1+xτ))+(1+h(x))(f(x)-g2(x)h(x))]modx+1

=[h(x)(f(x)-h(x)g1(x)(1+xτ))+f(x)+f(x)h(x)-e(x)g2(x)h(x)]modx+1

=[f(x)-h(x)g1(x)(1+xτ)-e(x)g2(x)h(x)]modx+1

=[f(x)-(1+xτ)(xτ+x+…+x(p-2)τ)g2(x)h(x)]modx+1

=f(x).

这样便是环rpτ的恒等映射,并且引理证明完毕。

通过引理2,我们有环cpτ和是同构的,这将在下一个引理中给出。

引理3:环cpτ和是同构的。

例如,当p=5和τ=2时,c10和是同构的,并且1+x8在环c10中可以映射为:

1+x8mod(1+x2+x4+x6+x8)=x2+x4+x6

如果我们将函数φ应用在x2+x4+x6上,我们可以恢复;

φ(0,x2+x4+x6)=(x2+x4+x6)(x2+x4+x6+x8)=1+x8mod(1+x10)。

当τ=1时,cp在[16][17]中进行了讨论,并应用到一种具有低复杂度的再生码中。注意,当且仅当2是中的素元及τ=pi(i为非负整数)时[25],cpτ和有限域同构。

在引入所提出的阵列码的显式构造结构前,我们需要对e(x)-逆进行定义。

定义1:如果多项式f(x)∈rpτ有一个多项式使得那么多项式便称为多项式f(x)的e(x)-逆.在下一个引理中我们将说明1+xb在环rpτ中是可以e(x)-逆的。

引理4:让b(1≤b≤pτ)为一个整数,b和p的最大公约数为gcd(b,p)=1,gcd(b,τ)=α。1+xb在环rpτ中的e(x)-逆是

证明:在环rpτ中,我们可以验证

它被简化是为了证明上面的方程等于e(x),例如,

考虑一种整数模pτ的环,将其表示为中,有一个集合

现在对于i∈{1,2,…,p-1},我们考虑因此,

接下来对于i≠j∈{1,2,…,p-1},我们想要证明τib/a≠jτb/amodpτ.

假设iτb/amodpτ=jτb/amodpτ,这样便存在一个整数l使得τib/a=lpτ+jτb/a.

上面的式子可以进一步被化简为

(i-j)b/a=lp.

因为gcd(b,p)=1,gcd(b/a,p)=1,因此我们有p|(i-j)。然而由于1≤j≤i≤p-1,这是不可能的。同样,我们证明当1≤i≤p-1时iτb/amodpτ≠0.

因此,我们可以得到

(τb/a,2τb/a,…,(p-1)τb/a)≡(τ,2τ,…,(p-1)τ)modpτ.所以(11)成立。

通过引理1,对于i=1,2,…k,我们有用f(x)表示生成矩阵或校验矩阵中的任何一项。如果便可以用(f(x)e(x)mod(1+x))∈cpτ来替代f(x)而不会改变结果。这是由于1≤i≤k时,因此,在用(f(x)e(x)mod(1+x))∈cpτ替代了生成矩阵或校验矩阵中的所有f(x)后,我们有了等效的生成矩阵或校验矩阵,这样(4)中的编码多项式可以通过(5)或(7)在环cpτ上计算得到.

编码过程可以用如下多项式操作来描述.给定k(p-1)τ个信息位,通过(3),为每(p-1)τ个信息位附加τ个额外位,并形成属于cpτ的k个数据多项式.在通过选择某种特定的编码矩阵或检查矩阵得到向量(4)后,将多项式中下标在0到(p-1)τ-1的系数存储起来,并将其余下标的系数丢掉。提出的阵列码可以被看作cpτ上的一种系统线性码。

本文的目的是寻找合适的编码矩阵pk×r,使之对应的编码是mds编码,而单次故障的修复带宽是渐近最优的。在本节的其余部分,我们将给出二元mds数组代码的编码矩阵构造方法。我们提出的二进制阵列码的修复带宽对于任何单个信息列故障都是渐近最优的。

a编码矩阵构造方法

构造码用来表示,构造矩阵pk×r如(12),其中η=d-k+1,k≥3,r≥3是一个奇数,d=k+(r-1)/2和τ=(d-k+1)k-2

因为每一个数据多项式都在环cpτ中且环cpτ是理想的,我们有如下引理。

图1三个校验列的存储编码示例,当第一列信息失效时,实线框中的比特用来修复信息比特虚线框中的比特用于修复信息比特

引理5:对于j=k+1,k+2,…,k+r,每一个编码多项式都在环cpτ中。

根据引理1,5,如果把(2)中的i用j代替,编码多项式的系便数满足(2)。让(i:j)={i,i+1,…,j}并根据列索引(i:j)生成pk×r的子矩阵pk×r(i:j)。在pk×r中,子矩阵pk×r(η+1:2η-1)可由子矩阵pk×r(2:η)旋转180度得到。pk×r(2:η)中的最后一行是全为1的向量,并且pk×r(2:η)中第i行j列的元素的指数是第一行第j列的ηi-1的倍数,其中i=2,3,…,k-1和j=1,2,…,d-k。

例1:考虑k=4,p=3,r=3。因此d=4+1=5,τ=4,这32个信息比特用表示。这个例子的编码矩阵是:

例1在图1中进行了说明.注意,由信息位计算的额外位不需要被存储,并且被用来计算冗余位。

b第二个构造:校验矩阵

4高效修复单列故障

在本节中,我们将展示如何在本文提出的二进制阵列码中恢复存储在任何信息列或任何列中的位,并具有渐进最优的修复带宽。

在这个子节中,我们总是假设列f被擦除,f可以是1到k的任何值.我们希望通过从k-1个其他信息列和d-k+1个的校验列中获取位元来恢复信息列f中存储的位元并得到渐进最优的修复带宽.回想一下,我们可以通过(2)来计算额外的位。为了方便起见,本节中我们将列i中的pτ位看作在给出修复算法之前,我们正式定义了如下的奇偶校验集。

定义2:对于0≤l≤pτ-1,j=1,2,…,r,第j个校验列的第l个校验集合分别定义如下

,其中2≤j≤d-k+1,

,其中d-k+2≤j≤r。

注意,在定义2和整个论文中,所有的索引都是从定义2中提取的,奇偶校验集pl,j是由用来产生冗余位的信息位组成的。当我们说一个信息位被一个奇偶列修复时,它意味着我们访问等值列的冗余位,以及这个奇偶校验位中的所有信息位,除了被擦除的位。考虑图1中的例子。假设第一个列被擦除.可以访问信息比特和冗余比特并通过来重建

修复算法在算法1中进行了说明.我们再次用图1给出的例子来详细说明修复过程.在这个例子中,k=4,d=5和τ=4。假设第一个信息列(即节点1,f=1)失败。通过算法1中的步骤2和步骤3,我们可以通过第一个校验列来修复其中l≡0mod2,0≤l≤7。更具体地说,比特可以通过下面的计算来重建。

当f=1∈{1,2}时,剩余的比特位(其中l≡1mod2且0≤l≤7)由第二个校验列修复。因此,比特可以通过下面的计算来重建。

因为我们可以用来分别计算所以我们不需要下载这两个比特。因此,我们只需要从三个信息列和两个校验列中分别下载四个比特,总共20个比特来修复第一个信息列。即,只有需下载这五列总数据量中的一半数据。在图1中,实线框中的比特被下载以修复信息比特虚线框中的比特被用来修复信息比特

假设第二个信息列(即节点2,f=2)失效.通过算法1中的步骤2和3,比特可以通过下面的计算来重建。

同样,比特可以通过下面的计算来重建。

结果显示,通过从第一个信息列中下载6比特和从第三个信息列,第四个信息列,第一个验列和第二个校验列分别下载4比特,便可以恢复第二个信息列中的8个比特。修复过程中共下载了22个比特数据。可以验证,对于图1给出的例子,可以通过分别下载来自5列的22个比特和20个比特来重建第三个信息列和最后一个信息列。

算法1中的关键思想是,对于每个擦除的信息列,访问的奇偶集有一个很大的交集,导致少量的访问。而且,很明显,如果我们想要确保mds的属性和有效的修复,那么选择编码向量是至关重要的。下一个定理表明,一个信息列的修复带宽是渐进最优的。

定理11:当时,由算法1知第f个信息列的修复带宽是(p-1)((d+1)ηk-3k-f-2)(26)

证明:通过算法1,对lmodηf∈{0,1,2,...,ηf-1-1}且l<(p-1)τ,比特可被第一个校验列的校验集合pl,1修复。因此,我们需要从剩余k-1个信息列分别下载(p-1)ηk-3个比特其中i∈{1,2,...,f-1,f+1,...,k}且lmodηf∈{0,1,2,...,ηf-1-1},并从第一个校验列中下载(p-1)ηk-3个冗余比特因此,共有(p-1)ηk-3个比特需要下载.

对于t=1,2,…,d-k,比特可被校验集合修复,其中δ=d-k-t+1。因为

所以我们需要从校验列δ+1获取(p-1)ηk-3个冗余比特对于列i∈{1,2,…,f-1},及对于lmodηf在集合{0,1,…,ηf-1-δηi-1-1,ηf-δηi-1,ηf-δηi-1+1,…,ηf-1}

中的所有值,需要(p-1)ηk-3个比特。而对于列i∈{f+1,f+2,…,k},及对于lmodηf在集合{0,1,2,...,ηf-1-1}中的所有值,需要(p-1)ηk-3个比特

注意,对于lmodηf∈{0,1,2,...,ηf-1-1}和l<(p-1)τ的比特在修复中已经被第一个校验列下载了,因此只需要从列δ+1(δ=1,2,…,d-k)下载(d-k)(p-1)ηk-3个冗余位、从列i(i=1,2,…,f-1)下载(d-k)(p-1)ηk+i-f-3个比特位。

我们可以计算从d=k+(r-1)/2列中来修复信息列f下载的比特数是

根据(12)中的编码矩阵和算法1,列k+1-f的修复带宽与列f相同。因此,我们只考虑的情况。根据定理11,当f增加时,修复带宽会增加。当f=1时,修复带宽是d(p-1)ηk-3,它达到了(1)的最佳值。即使在最坏的情况下,修复带宽是

它严格小于(1)中的值(d+1)/d倍。因此,任何一个信息故障的修复带宽都可以达到(1)渐近的最优修复。

应该注意的是,在提出的编码中,第一个奇偶校验列的奇偶校验集与rdp和偶数奇中的第一个奇偶列相同。所提出的编码和现有的二进制mds阵列码之间的关键区别是其他奇偶列的构造。首先,与现有的二进制mds阵列码相比,在提出的编码中,其他奇偶校验列的奇偶校验位不是与数组中的直线相对应的位元,而是对应于多边形线的位元。其次,被提出的编码中的行数可以被ηk-2整除,这两个属性对于减少修复带宽是非常重要的。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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