多容错性的MDS阵列码编码以及修复方法与流程

文档序号:13009896阅读:758来源:国知局

【技术领域】

本发明涉及数据处理领域,尤其涉及一种多容错性的mds阵列码编码以及修复方法。



背景技术:

现代分布式存储系统利用纠删码来维持数据可用性,以避免存储节点的失效。二进制最大距离可分(mds)阵列码是一种特殊的纠删码,其凭借最小存储冗余和较低计算复杂度实现容错性。具体来说,二进制阵列码由k+r列的阵列组成,每列具有l位,对于所述的k+r列,其中的k列信息列存储信息位,而r列奇偶校验列存储冗余位。每列中的l位存储在相同的存储节点中。如果k+r列中的任何k足以重建所有的k列信息列,那么这种码就可以称之为mds(即其可容许任何r列失效)。二进制mds阵列码的例子包括:x码[1]和rdp码[2],两者均为双容错型(即r=2);还有star码[3]、普遍化的rdp码[4]以及tip码,三者都是三容错型(即r=3)。

当分布式存储系统中的一个节点失效时,应该通过从未失效节点d下载位元来修复失效的列,其中k≤d≤k+r-1。将修复带宽定义为修复运算中的下载位数。尽可能降低修复带宽对于加快修复运算和最小化脆弱之窗至关重要,尤其在网络传输常常成为瓶颈的分布式存储系统中更是如此。修复问题由dimakis等人[5]基于信息流图首次阐述和研究。如[5]中所阐述,最小修复带宽受制于最小存储冗余,其也被称为最小存储再生(msr)点,其计算公式如下:

此时d=k+1。虽然在足够大的有限域中最小修复带宽是可实现的[5]、[6],但如何构造实现最小修复带宽的二进制mds阵列码依然是一个极富挑战性的问题。

目前已有不少研究着眼于减少二进制mds阵列码中的单个失效列的修复带宽。有些方法将rdp码[7]和x码[8]的磁盘读取尽可能降至最小,但其修复带宽只能算是次优,依然比(1)中的最小值要大50%。mdr码[9]、[10]和butterfly码[11]为二进制mds阵列码,其实现了最优修复,但它们只提供双容错性(即r=2)。如何构造兼具最优修复和更高容错性(即r>2)的二进制mds阵列码依然是一个尚待解决的问题。此类构造将会有利于维持现实中故障频发之分布式存储系统中的数据可用性。



技术实现要素:

为了解决现有技术中的问题,本发明提供了一种多容错性的mds阵列码编码以及修复方法,解决现有技术中无法兼具最优修复和更高容错性的问题。

本发明是通过以下技术方案实现的:设计、制造了一种多容错性的mds阵列码编码,其组成部分为c(k,3,p)码,将数据块分成k(p-1)τ信息位并编码产生3(p-1)τ个冗余位,(p-1)τ为正整数,τ=2k-2,p为素数,k≥3,信息位表示为冗余位表示为其中j为k+1、k+2和k+3,i=1,2,…,k;每个(p-1)τ信息位附加τ额外位并形成消息向量。

作为本发明的进一步改进:将信息列通过多项式进行表示,对应的每一信息列为数据多项式,其对应的三个奇偶校验列形成已编码多项式,数据多项式和已编码多项式形成列向量[s1(x),s2(x),…,sk+3(x)]。

作为本发明的进一步改进:所述列向量通过rpτ:=f2[x]/(1+x)中所体现的算法取[s1(x),s2(x),…,sk+3(x)]=[s1(x),s2(x),…,sk(x)].g的积来进行计算,其中g为由kxk单位矩阵i和一个kx3编码矩阵p所组成的kx(k+3)生成矩阵。

作为本发明的进一步改进:c(k,3,p)码为在rpτ内穿入一个系统化线性码。

本发明同时提供了一种多容错性的mds阵列码的修复方法,包括如下步骤:获取已经失效的信息列;若已经失效的信息列则通过第一奇偶校验来修复信息位sl,f,其中lmod2f∈{0,1,2,...2f-1-1},否则通过第二个奇偶校验来修复信息位sl,f,其中lmod2f∈{2f-1,2f-1+1,2f-1+2,...,2f-1};若已经失效的信息列通过第一个奇偶校验来修复信息位sl,f,其中lmod2f∈{0,1,2,...2f-1-1},否则,通过第三个奇偶校验来修复信息位sl,f,其中lmod2f∈{2f-1,2f-1+1,2f-1+2,...,2f-1}。

作为本发明的进一步改进:已经失效的信息列的修复宽带为(p-1)((k+2)2k-3-2k-f-2)。

作为本发明的进一步改进:第二奇偶校验列和第三奇偶校验列的奇偶校验集不是对应于阵列中呈直线的那些信息列,而是对应于呈折线的那些信息列;阵列的行数被2k-2整除。

本发明的有益效果是:提高了系统的容错性;编解码过程的计算复杂度更低,极大的减少了修复宽带。

【附图说明】

图1为本发明三奇偶校验列所用存储码的实施例示意图。

【具体实施方式】

下面结合附图说明及具体实施方式对本发明进一步说明。

缩略语和关键术语定义

mdsmaximumdistanceseparable最大距离可分离

rdprow-diagonalparity行对角线校验

一种多容错性的mds阵列码编码,其组成部分为c(k,3,p)码,将数据块分成k(p-1)τ信息位并编码产生3(p-1)τ个冗余位,(p-1)τ为正整数,τ=2k-2,p为素数,k≥3,信息位表示为冗余位表示为其中j为k+1、k+2和k+3,i=1,2,…,k;每个(p-1)τ信息位附加τ额外位并形成消息向量。

将信息列通过多项式进行表示,对应的每一信息列为数据多项式,其对应的三个奇偶校验列形成已编码多项式,数据多项式和已编码多项式形成列向量[s1(x),s2(x),…,sk+3(x)]。

所述列向量通过rpτ:=f2[x]/(1+x)中所体现的算法取[s1(x),s2(x),…,sk+s(x)]=[s1(x),s2(x),…,sk(x)].g的积来进行计算,其中g为由kxk单位矩阵i和一个kx3编码矩阵p所组成的kx(k+3)生成矩阵。

c(k,3,p)码为在rpτ内穿入一个系统化线性码。

本发明同时提供了一种多容错性的mds阵列码的修复方法,包括如下步骤:获取已经失效的信息列;若已经失效的信息列则通过第一奇偶校验来修复信息位sl,f,其中lmod2f∈{0,1,2,...2f-1-1},否则通过第二个奇偶校验来修复信息位sl,f,其中lmod2f∈{2f-1,2f-1+1,2f-1+2,...,2f-1};若已经失效的信息列通过第一个奇偶校验来修复信息位sl,f,其中lmod2f∈{0,1,2,...2f-1-1},否则,通过第三个奇偶校验来修复信息位sl,f,其中lmod2f∈{2f-1,2f-1+1,2f-1+2,...,2f-1}。

已经失效的信息列的修复宽带为(p-1)((k+2)2k-3-2k-f-2)。

第二奇偶校验列和第三奇偶校验列的奇偶校验集不是对应于阵列中呈直线的那些信息列,而是对应于呈折线的那些信息列;阵列的行数被2k-2整除。

在一实施例中,多容错性的mds阵列码的构造如下:

令k≥3且l=(p-1)τ为正整数,其中τ=2k-2,而p为素数且2为zp域中的基元。考虑一个文档大小为k(p-1)τ比特,由信息位表示(i=1,2,…,k),其可用于生成3(p-1)τ冗余位(j=k+1,k+2,k+3)。

对于1=1,2,…,k+3及μ=0,1,…τ-1,定义如下速记表示法:

为额外比特,其与相关。例如,当p=3,k=4及τ=4时,的额外位为

对于l=1,2,…,k+3,通过环f2[x]上的多项式s1(x)将列l中的比特与τ额外比特共同表达为多项式sl(x):

对应于第i信息列(i=1,2,…,k)的多项式si(x)被称为数据多项式,对应于j-k奇偶校验列(j=k+1,.k+2,.k+3)的多项式被称为编码多项式。

将k个数据多项式和3个编码多项式写为列向量

[s1(x),s2(x),…,sk+3(x)],(3)

其可通过利用中所体现的算法取[s1(x),s2(x),…,sk+3(x)]=[s1(x),s2(x),…,sk(x)]·g的积来进行计算。kx(k+3)生成矩阵g由kxk单位矩阵i和一个kx3编码矩阵p所组成,

在环rpτ中,变量x代表多项式上的循环右移运算符。这对于减小一个信息列失效的修复带宽而言至关重要。所提出的代码表示为c(k,3,p)。请注意不会将额外比特存储在磁盘上;它们仅用于表示的方便性。考虑k=4且p=3这样一个示例,32个信息比特由s0,i,s1,i,...,s7,i来表示,其中i=1,2,3,4。该示例的编码矩阵为

该示例在图1中进行了阐明,其中字体加粗的比特元为额外位。

编码过程可用如下多项式的形式来描述。给定k(p-1)τ信息比特,为每个(p-1)τ信息比特附加τ额外位,并形成消息向量[s1(x),s2(x),…,sk(x)]。

在获得(3)中的向量后,存储次数为0到(p-1)τ-1多项式中的项系数。所提出的阵列码可被看作为在rpτ内运算的一个系统线性码。

一次信息失效的渐进最优修复,在一实施例中,

将会展示如何通过访问来自k-1个其它信息列以及2个奇偶校验列的位元来修复存储在信息列f中的比特s0,f,s1,f,...,s(p-1)τ-1,f且具有渐进最优修复带宽,其中1≤f≤k。请记住可以由(2)计算额外比特。为了表示的方便性,将列i的比特元表示为pτ位s0,i,s1,i,...,spτ-1,i。在给出修复算法之前,正式将奇偶校验集作如下定义。

定义1.对于0≤1≤pτ-1,将第一列、第二列和第三列的第1个奇偶校验集分别定义为

请注意定义1及全文中的所有指数取模为pτ。由定义1,奇偶校验集包括多个信息比特,其可用于生成冗余位当说一个信息比特由一个奇偶校验列所修复时,这意味着除了已擦除比特以外,访问了奇偶校验列的冗余位以及该奇偶校验列中的所有信息比特。考虑图1中给出的示例。假定第一列被擦除。人们可以访问位比特s0,2,s0,3,s0,4以及冗余比特s0,1+s0,2+s0,3+s0,4以通过s0,2+s0,3+s0,4+(s0,1+s0,2+s0,3+s0,4)来重建s0,1。

以下又一实施例。

修复算法在算法1中做了陈述。来再次考虑图1所给出的示例,以详细阐述修复过程。在该示例中,k=5,d=5且τ=4。假设第一信息列(即节点1)失效,也就是说f=1。依照算法1中的第2、3步,可以通过第一个奇偶校验列来修复比特其中且0≤1≤7。更具体地说,比特s0,1,s2,1,s4,1,s6,1由重建。

由于f=1∈{1,2},其它信息比特由第二奇偶校验列修复,其中mod2且0≤1≤7。

因此,比特s1,1,s3,1,s5,1,s7,1由

s1,1=s0,2+s10,3+s2,4+(s1,1+s0,2+s10,3+s2,4)

s3,1=s2,2+s0,3+s4,4+(s3,1+s2,2+s0,3+s4,4)

s5,1=s4,2+s2,3+s6,4+(s5,1+s10,2+s8,3+s0,4)

s7,1=s6,2+s4,3+s8,4+(s11,1+s10,2+s8,3+s0,4)+(s3,1+s2,2+s0,3+s4,4)

重建。

因为可以通过s6,3+s2,3计算s10,3以及通过s4,4+s0,4计算s8,4,所以无需下载比特s10,3和s8,4。因此,认为需要从三个信息列以及两个奇偶校验列的每一列下载四个比特。要修复第一信息列的比特总共需要从五列下载20个位元。也就是说,用于修复的数据列的比特只有一半受到了访问。在图1中,实线框内的比特会被下载,以修复信息比特s0,1,s2,1,s4,1,s6,1,并且虚线框内的位元会被用来修复信息比特s1,1,s3,1,s5,1,s7,1。

假设第二信息列(即节点2)失效,也就是说f=2。依照算法1中的第2、3

步,可以通过

修复比特s0,2,s1,2,s4,2,s5,2。

类似地,可以通过

s2,2=s3,1+s0,3+s4,4+(s3,1+s2,2+s0,3+s4,4)

s3,2=s4,1+s1,3+s5,4+(s4,1+s3,2+s1,3+s5,4)

s6,2=s7,1+s4,3+s0,4+s4,4+

(s11,1+s10,2+ss,3+s0,4)+(s3,1+s2,2+s0,3+s4,4)

s7,2=s0,1+s4,1+s5,3+s1,4+s5,4+

(s0,1+s11,2+s9,3+s1,4)+(s4,1+s3,2+s1,3+s5,4).

修复比特s2,2,s3,2,s6,2,s7,2。

因此,存储在第二信息列中的八个比特可通过下载来自第一信息列的六个比特和来自第三信息列、第四信息列、第一奇偶校验列以及第二奇偶校验列中每一列的四个比特予以恢复。修复过程中总共下载了22个比特。对于图1中所给出的代码,第三信息列和最后信息列可分别通过访问来自5列的22个比特和20个比特予以重建。

定理3:当时,由算法1得出的信息列f修复带宽为

(p-1)((k+2)2k-3-2k-f-2)。

证明:按照算法1,比特通过第一奇偶校验列的奇偶校验集进行修复,其中1mod2f∈{0,1,2,...,2f-1-1}且因此,需要从剩余k-1个信息列的每一列来访问(p-1)τ/2个位元其中i∈{1,2,...,f-1,f+1,...,k}且1mod2f∈{0,1,2,...2f-1-1},并且从第一奇偶校验列下载(p-1)τ/2个冗余比特其中1mod2i∈{0,1,2,..,2i-1-1}。由此得出,有k(p-1)τ/2个位元需要下载。

对于1mod2f∈{2f-1,2f-1+1,2f-1+2,...,2f-1},位元通过进行修复。请记住因此需要访问(p-1)τ/2个冗余位

对于i∈{1,2...,f-1}的列i,需要(p-1)τ/2位其中1mod2f的全部值位于集{0,1,...,2f-1-2i-1-1,2f-2i-1,2f-2i-1+1,...,2f-1}之中。而对于i∈{f+1,f+2,...,k}的列i,需要(p-1)τ/2位其中1mod2f∈{0,1,2,....,2f-1-1}。

请注意,在修复过程中,位元(其中1mod2f∈{0,1,2,...2f-1-1}且已经通过第一奇偶校验列下载。因而,只需要从第二奇偶校验列下载(p-1)τ/2个冗余位,以及从列i下载(p-1)2k+i-f-3个位元,其中i=1,2,...,f-1。

可以算出修复信息列f需要从k+2列下载的位元总数为

时,根据算法1,信息列k+1-f的修复带宽与列f的修复带宽相同。

因此,只考虑的情形。按照定理3,当f增大时,修复带宽随之增大。当f=1时,修复带宽为这样就在(1)中获得了最优值。即便对于的最坏情形,修复带宽为(p-1)((k+2)2k-3-2k-[k/2]-2)<(p-1)(k+2)2k-3,这严格的低于(1)中值的倍。因此,当k足够大时,任何一个信息失效的修复带宽可渐进地在(1)中获得最优修复。

应当指出的是,所提出代码中第一奇偶校验列的奇偶校验集与rdp和evenodd中第一奇偶校验列的奇偶校验集相同。所提出的代码与现有的二进制mds阵列码之间的关键区别在于第二和第三奇偶校验列的构造。首先,所提出的代码中的第二和第三奇偶校验列的奇偶校验集不是对应于阵列中呈直线的那些位元,而是对应于呈折线的那些位元。其次,所提出代码中阵列的行数可以被2k-2整除。这两个性质对于减少修复带宽至关重要。

参考文献

[1]l.xu和j.bruck,“x码:具有最优编码的mds阵列码”ieee信息理论会报,1999年第45卷第1期第272—276页。

[2]p.corbett、b.english、a.goel、t.grcanac,s.kleiman、j.leong和s.sankar,“用于双磁盘失效校正的行-对角线奇偶校验”,第3届usenix会议文档及存储技术论文集,2004年第1—14页。

[3]c.huang和l.xu,“star:一种用于校正三重存储节点失效的有效编码方案”,ieee计算机会报,2008年第57卷第7期第889—901页。

[4]m.blaum,“一系列具有最小编码运算数的mds阵列码”,ieee信息理论国际研讨会,2006年第2784—2788页。

[5]a.dimakis、p.godfrey、y.wu、m.wainwright和k.ramchandran,“用于分布式存储系统的网络编码”,ieee信息理论会报,2010年9月第56卷第9期第4539—4551页。

[6]i.tamo,z.wang和j.bruck,“曲折码:具有最优重建的mds阵列码”ieee信息理论会报,2013年第59卷第3期第1597—1616页。

[7]l.xiang、y.xu、j.lui和q.chang,“rdp编码存储系统中单磁盘失效的最优修复”acmsigmetrics性能评估版,2010年acm第38卷第1期第119—130页。

[8]s.xu、r.li、p.p.lee、y.zhu、l.xiang、y.xu和j.lui,“用于x码基平行存储系统的单磁盘失效恢复”ieee计算机会报,2014年第6卷第4期第995—1007页。

[9]y.wang、x.yin、和x.wang,“mdr编码:一种具有最优重建和编码方式的raid-6编码类别”ieee通讯选定区域期刊,2013年第32卷第5期第1008—1018页。

[10]——,“两种具有最优修复的双奇偶校验mds阵列码新类别”,ieee通讯快报,2016年第20卷第7期第1293–1296页。

[11]l.pamies-juarez、f.blagojevic、r.mateescu,c.gyuot、e.e.gad和z.bandic,“打破束缚:msr编码的真实修复性能”第14届usenix文档及存储技术会议(fast16),2016年第81–94页。

[12]k.w.shum、h.hou、m.chen、h.xu和h.li,“在二进制循环码中重新生成代码”,ieee信息理论研讨会论文集,2014年7月檀香山,第1046–1050页。

[13]h.hou、k.w.shum、m.chen和h.li,“校正多重磁盘失效的新型mds阵列码”,全球通讯会议,2015年第2369–2374页。

[14]——,“basic代码:用于分布式存储系统的低复杂度再生代码”ieee信息理论会报,2016年第62卷第6期第3053–3069页。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

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