本发明属于数字处理技术改进领域,尤其涉及一种修复二进制码生成矩阵构造方法及修复方法。
背景技术:
现代分布式存储系统部署擦除代码来维护数据可用性,以防止存储节点的故障.二进制最大距离可分(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]都是基于矩阵构建生成器或校验矩阵,提出的编码在二进制中构建,编码矩阵或校验矩阵在具有循环结构的环中选择。
技术实现要素:
本发明的目的在于提供一种修复二进制码生成矩阵构造方法及修复方法,旨在解决上述的技术问题。
本发明是这样实现的,一种修复二进制码生成矩阵构造方法,所述修复二进制码生成矩阵构造方法包括:设构造码
本发明的进一步技术方案是:对于j=k+1,k+2,…,k+r,每一个编码多项式
本发明的进一步技术方案是:所述修复二进制码生成矩阵构造方法中信息位计算的额外位不需要存储,且用来计算冗余位。
本发明的另一目的在于提供一种修复二进制码生成矩阵修复方法,所述修复二进制码生成矩阵修复方法包括:对于0≤l≤pτ-1,j=1,2,…,r,第j个校验列的第l个校验集合分别定义如下
本发明的进一步技术方案是:对lmodηf∈{0,1,2,...,ηf-1-1}且l<(p-1)τ,比特
本发明的进一步技术方案是:所述修复二进制码生成矩阵修复方法中第一个奇偶校验列的奇偶校验集与rdp和偶数奇中的第一个奇偶列相同。
本发明的进一步技术方案是:所述修复二进制码生成矩阵修复方法中其他奇偶校验列的奇偶校验位不是与数组中的直线相对应的位元,而是对应于多边形线的位元,在被提出的编码中的行数可以被ηk-2整除。
本发明的有益效果是:再生码的产品矩阵结构仍在商环下工作,计算复杂度较低,以更大的容错度减少修复带宽。
附图说明
图1是本发明实施例提供的三个校验列的存储编码示例图。
具体实施方式
考虑一个具有k≥2个信息列和r≥3个校验列的二进制mds阵列码。该阵列码的每一列都存储l=(p-1)τ位元,其中p是一个素数,这样2是有限域
对i=1,2,...,k和μ=0,1,...,τ-1,我们定义下面的简短表示法:
我们把
对于l=1,2,...,k+r,我们用一个在环
把对应于第i(i=1,2,...,k)个信息列的多项式
该向量可以通过在环
其中k×(k+r)的生成矩阵g由k×k的单位矩阵i和k×r的编码矩阵p构成,计算如下:gk×(k+r)=[ik×kpk×r](6)
所提出的编码可以描述为一个校验矩阵h(k+r)×r。考虑(4),我们有
用rpτ表示环
考虑由rpτ中具有因子xτ+1的多项式构成的rpτ的子环cpτ,cpτ={a(x)(1+xτ)mod(1+x(pτ)|a(x)∈rpτ}(8)
事实上,cpτ是理想的,因为
由于
定理1当且仅当多项式的系数
证明:假设多项式的系数
这种化简是为了证明对于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τ+x2τ+…+x(p-i-2)τ)。
这便证明了多项式系数
相反,假设
因此,对于μ=0,1,…,τ-1,可以得到
因此,多项式的系数
由于存在两个多项式1和xτ+x3τ+…+x(p-2)τ,因此等式
(1+xτ)(xτ+x3τ+…+x(p-2)τ)+1·h(x)=1
在限域
引理2:环rpτ和
证明我们需要在rpτ和
映射θ是一个环同态和双射,因为它有一个逆函数φ(a(x),b(x)),其中
φ(a(x),b(x))=[a(x)h(x)+b(x)e(x)]modxpτ+1。
下面将说明
对于任意多项式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))]modxpτ+1
=[h(x)(f(x)-g1(x)(1+xτ))+(1+h(x))(f(x)-g2(x)h(x))]modxpτ+1
=[h(x)(f(x)-h(x)g1(x)(1+xτ))+f(x)+f(x)h(x)-e(x)g2(x)h(x)]modxpτ+1
=[f(x)-h(x)g1(x)(1+xτ)-e(x)g2(x)h(x)]modxpτ+1
=[f(x)-(1+xτ)(xτ+x3τ+…+x(p-2)τ)g2(x)h(x)]modxpτ+1
=f(x).
这样
通过引理2,我们有环cpτ和
引理3:环cpτ和
例如,当p=5和τ=2时,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是
在引入所提出的阵列码的显式构造结构前,我们需要对e(x)-逆进行定义。
定义1:如果多项式f(x)∈rpτ有一个多项式
引理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,我们有
编码过程可以用如下多项式操作来描述.给定k(p-1)τ个信息位,通过(3),为每(p-1)τ个信息位附加τ个额外位,并形成属于cpτ的k个数据多项式.在通过选择某种特定的编码矩阵或检查矩阵得到向量(4)后,将多项式中下标在0到(p-1)τ-1的系数存储起来,并将其余下标的系数丢掉。提出的阵列码可以被看作cpτ上的一种系统线性码。
本文的目的是寻找合适的编码矩阵pk×r,使之对应的编码是mds编码,而单次故障的修复带宽是渐近最优的。在本节的其余部分,我们将给出二元mds数组代码的编码矩阵构造方法。我们提出的二进制阵列码的修复带宽对于任何单个信息列故障都是渐近最优的。
a编码矩阵构造方法
构造码用
因为每一个数据多项式都在环cpτ中且环cpτ是理想的,我们有如下引理。
图1三个校验列的存储编码示例,当第一列信息失效时,实线框中的比特用来修复信息比特
引理5:对于j=k+1,k+2,…,k+r,每一个编码多项式
根据引理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:对于0≤l≤pτ-1,j=1,2,…,r,第j个校验列的第l个校验集合分别定义如下
注意,在定义2和整个论文中,所有的索引都是从定义2中提取的,奇偶校验集pl,j是由用来产生冗余位
修复算法在算法1中进行了说明.我们再次用图1给出的例子来详细说明修复过程.在这个例子中,k=4,d=5和τ=4。假设第一个信息列(即节点1,f=1)失败。通过算法1中的步骤2和步骤3,我们可以通过第一个校验列来修复
当f=1∈{1,2}时,剩余的比特位
因为我们可以用
假设第二个信息列(即节点2,f=2)失效.通过算法1中的步骤2和3,比特
同样,比特
结果显示,通过从第一个信息列中下载6比特和从第三个信息列,第四个信息列,第一个验列和第二个校验列分别下载4比特,便可以恢复第二个信息列中的8个比特。修复过程中共下载了22个比特数据。可以验证,对于图1给出的例子,可以通过分别下载来自5列的22个比特和20个比特来重建第三个信息列和最后一个信息列。
算法1中的关键思想是,对于每个擦除的信息列,访问的奇偶集有一个很大的交集,导致少量的访问。而且,很明显,如果我们想要确保mds的属性和有效的修复,那么选择编码向量是至关重要的。下一个定理表明,一个信息列的修复带宽是渐进最优的。
定理11:当
证明:通过算法1,对lmodηf∈{0,1,2,...,ηf-1-1}且l<(p-1)τ,比特
对于t=1,2,…,d-k,
所以我们需要从校验列δ+1获取(p-1)ηk-3个冗余比特
中的所有值,需要(p-1)ηk-3个比特
注意,对于lmodηf∈{0,1,2,...,ηf-1-1}和l<(p-1)τ的比特
我们可以计算从d=k+(r-1)/2列中来修复信息列f下载的比特数是
当
它严格小于(1)中的值(d+1)/d倍。因此,任何一个信息故障的修复带宽都可以达到(1)渐近的最优修复。
应该注意的是,在提出的编码中,第一个奇偶校验列的奇偶校验集与rdp和偶数奇中的第一个奇偶列相同。所提出的编码和现有的二进制mds阵列码之间的关键区别是其他奇偶列的构造。首先,与现有的二进制mds阵列码相比,在提出的编码中,其他奇偶校验列的奇偶校验位不是与数组中的直线相对应的位元,而是对应于多边形线的位元。其次,被提出的编码中的行数可以被ηk-2整除,这两个属性对于减少修复带宽是非常重要的。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。