一种高效数据读取的容错编码方法

文档序号:7794418阅读:585来源:国知局
一种高效数据读取的容错编码方法
【专利摘要】一种高效数据读取的容错编码方法,包括IZSHC码的编码构造方法与IZSHC码下读取失效数据的方法,IZSHC码的编码构造方法是对要读取的原始数据冗余处理,即将原始文件进行编码来生成冗余数据块,冗余数据块分为原始数据块和校验数据块;IZSHC码下读取失效数据的方法是在原始数据块发生读取失效时利用冗余数据块对失效数据进行解码恢复。本发明基于IZSHC码,可以显著地提升节点失效情况下的数据读取性能。
【专利说明】一种高效数据读取的容错编码方法
【技术领域】
[0001]本发明涉及一种高效数据读取的容错编码方法,属于分布式存储领域。
【背景技术】
[0002]当前,随着分布式系统特别是云计算系统规模的不断扩大,系统中的服务器失效已成常态,这严重影响数据存储的可靠性。针对存储的可靠性问题,云计算系统通常采用数据冗余技术来提高数据的持久性和可用性。目前实际应用中最广泛的数据冗余技术是基于副本(replication)的数据冗余技术。副本冗余技术将原始数据文件复制为η份,分发给不同的网络节点;当一个数据节点失效时再利用可用节点恢复失效数据。然而,基于副本的数据冗余方案大大地增加了存储成本开销,难以有效支持云计算技术的快速发展。
[0003]近几年来,基于编码的数据冗余技术成为研究热点。该方案先将原始数据切分成k个原始数据块,再用这些数据块编码生成(n-k)个校验数据块,即共有η个冗余数据块,之后存放到不同的存储节点。相比副本方案,在同等可靠性的情况下,该编码方案可以极大地减少数据的存储空间,换而言之,在同等存储开销的情况下,编码方案可以极大地提高数据的可靠性。编码方案可以既提高数据的可靠性又降低数据的存储开销。目前主要有三类基于编码的数据冗余技术:(I)里德一所罗门编码(Reed-Solomon Codes) [1.Reed,G.Solomon.Polynomial CodeS over certain finite fields.Journal of the Societyfor Industrial and Applied Mathematics.1960,8:300304.]:在用户读取数据时,若原始数据失效,则需要先下载k倍个冗余数据块,然后恢复出所有的原始数据块。因而,随机访问单个原始数据块时,下载的数据量大,不利于数据读取。(2)再生码(RegeneratingCodes)[A.G.Dimakis, K.Ramchandran, Y.ffu, et al.A Survey on Network CodeS fbrDistributed Storage.1nProceedings of the IEEE.March2011]:由随机网络编码演变而来,采用更加细粒度的数据片(相比数据块)进行编码。相对于里德一所罗门编码,它能降低修复失效数据块所用的网络开销。但用于解码的数据片数量较大且会随着参与修复失效数据的冗余节点数量d(称为修复度数)的增加而增大,进而极大地增加了数据解码的计算复杂度。因此,顺序访问所有原始数据块时,解码计算复杂度高,不利于数据读取。使用精确式编码方案,如intersecting zigzag sets codes (IZS codes:再生码的一种),可完整地恢复出原有冗余数据块,但同样无法避免由于细粒度编码导致的解码复杂度高问题。(3)层次石马(Hierarchical Codes)[A.Duminuco,Ε.Biersack.Hierarchical Codes:How to MakeErasure Codes Attractive for Peer-to-Peer Storage Systems.1n 8th InternationalConference on Peer-to-Peer Computing (P2P).2008]:与再生码使用了一个大的修复度数d > k不同,层次码使用了一个小的修复度数d << k。然而,它仍然存在访问单个原始数据块时下载数据量大的问题。
[0004]针对基于纠删码的分布式存储系统,在存储开销一致的情况下,当部分节点失效时,现有纠删码技术存在着数据修复通信量大和解码开销高等问题,即导致了数据读取性能低。
【发明内容】

[0005]本发明的技术解决问题是:为克服现有技术的不足,提供一种高效数据读取的容错编码方法,基于intersecting zigzag sets codes (IZS codes)的精确式再生_层次复合编码——IZSHC码,可以显著地提升节点失效情况下的数据读取性能。
[0006]本发明技术解决方案:一种高效数据读取的容错编码方法,包括=IZSHC码的编码构造方法与IZSHC码下读取失效数据的方法,两种方法针对数据读取的不同场景。前者用于对待读取的原始数据的冗余处理,即将原始文件进行编码来生成冗余数据块,分为原始数据块和校验数据块;后者则是对失效数据进行有效读取,即读取原始数据块发生失效时利用冗余数据块对失效数据进行解码恢复。后者的解码方法基于前者的编码结构来实施,其中:
[0007]1.1ZSHC码的编码构造方法,其特征在于实现步骤如下:
[0008](I)将大小为M字节的原始二进制数据文件进行分块分组分片的预处理得到原始数据组,并将每一块文件数据块放置于分布式系统中不同的存储节点上。过程如下:
[0009]a)将原始文件分割为大小相等的k个原始数据块,并顺序划分为s个组;这些组被称为原始数据组(原始组),记Hi = k/s-Ι,则每个组包含m+1个原始数据块并顺序编号;
[0010]b)以数据块为单位,将每个原始数据块放置于不同存储节点上,对应的节点称为原始节点;
[0011]c)将每个数据块在其存储节点上顺序分割为大小相等的α = 2Π个数据片并按数字顺序编号;
[0012](2)基于原始数据组构造得到单元组。一个单元组包含一个原始数据组及由原始组内数据块编码生成的两个校验数据块:row块和zigzag块。每个校验块均由α个数据片连接组成。构造过程如下:
[0013]d)row块中每个数据片均由组内所有原始数据块中同序号的数据片直接在某个有限域中相加生成;
[0014]e) zigzag块中每个待生成的数据片依次按0,1,2,...α顺序编号,为组内每个原始数据块指定一个这些序号的排列组合,再根据所有原始数据块分配的排列组合得到生成每个zigzag数据片所对应的原始数据片集合;
[0015]f)在每个zigzag数据片对应的原始数据片集合中,为每个数据片指定一个线性组合生成系数,再用这些系数在有限域中线性组合各数据片从而生成对应的zigzag数据片;
[0016]g)依照同样方法对每个原始数据组构造单元组并按顺序编号;
[0017](3)基于单元组构造得到第I层复合组。一个复合组由若干(设为S1)个单元组
及新生成的两个校验块构成,记为G—1.1。两个校验块分别称为组内顶层row块和组内顶层zigzag块,均由α个数据片连接组成。构造过程如下:
[0018]h)顶层row块中的每个数据片由复合组内各单元组的row块中的同序号的数据片在有限域中直接相加生成;
[0019]i)顶层zigzag块中的每个数据片由组内各单元组的zigzag块中的同序号的数据片在有限域中直接相加生成;[0020](4)基于第I层复合组构造得到第2层复合组。一个第2层复合组由若干(设为S2)个第I层复合组及新生成的组内顶层row块和组内顶层zigzag块构成。构造过程如下:
[0021]j)根据步骤(3)中的方法用不同的单元组构造得到S2个相同结构的第I层复合
组6:
[0022]k)顶层row块中的每个数据片由前一层各复合组(此时为G(斜IJ^si j1,
G(m+i)-Si,2, cCm+ Ij-S S2 )的组内顶层row块中的同序号的数据片在有限域中直接相加生成;
[0023]I)顶层zigzag块中的每个数据片由前一层各复合组的组内顶层zigzag块中的同序号的数据片在有限域中直接相加生成;
[0024](5)按照步骤⑷中的方法逐级构建更高层复合组,最终生成IZSHC编码IZSHC (k,r, α)。其中k即为文件的原始数据块个数,r则是所有生成的校验块个数,α为每个数据块划分的片数。每个数据块,包括整个方法中新生成的校验数据块,分别放置到不同的存储节点上。
[0025]在上述IZSHC码的编码构造方法中,步骤(2)中为生成zigzag数据片而给原始组数据块指定的排列组合定义表示及生成zigzag数据片的原始数据片集合构造方法如下:
[0026]组内每个数据块中的数据片按前后顺序0,1,2,....,α -1编号,并将所有原始数据块的数据片以矩阵的元素方式进行标记,为组内第i个原始块分配一个排列组合fji =
0,1,2,——,m), fi是zigzag块中数据片序号,也就是0,1,2,...α -1这几个数的一个排列组合。对于zigzag块的第k个校验数据片,(k = 0,1,2,...α-1),设k在A中的排列序号为j,则第i个原始数据块的第j个数据片参与生成zigzag块中的校验数据片k。依次从每个原始节点获取参与生成它的原始数据片,组成集合Zk,则Zk即为所有参与生成校验数据片k的原始数据片集合。
[0027]在上述IZSHC码的编码构造方法中,步骤(2)中为生成zigzag数据片而给原始组数据块分配排列组合的方法如下:
[0028]记以a为本原元,大小为q的有限域为F11 =【O, Cl' α1,…2}。取有限域F:
及其上的m维向量空间IFI1,记上的一组标准正交基,%为零向量。设函数b(x)将十进制数X转换为二进制数,函数d(X)将二进制数X转换为十进制数。原始数据块i的排列组合A由函数 0,cr -1] [O, or-1], e,(x) = d(b(x)十ej生成,其中
β?直接表示为二进制数。
[0029]在上述IZSHC码的编码构造方法中,步骤⑵中构造zigzag数据片的原始数据片的线性组合系数生成方法如下:
[0030]取有限域IFf其本原元为a,满足q为[s+1 )上的最小奇数。记第t(t = 0,1,2,....,s-Ι)个单元组中原始数据片屮,」对应的生成系数为取
【权利要求】
1.一种高效数据读取的容错编码方法,其特征在于包括=IZSHC码的编码构造方法与IZSHC码下读取失效数据的方法,IZSHC码的编码构造方法是对要读取的原始数据冗余处理,即将原始文件进行编码来生成冗余数据块,冗余数据块分为原始数据块和校验数据块;IZSHC码下读取失效数据的方法是在原始数据块发生读取失效时利用冗余数据块对失效数据进行解码恢复;其中: (1)IZSHC码的编码构造方法,实现步骤如下: (11)将大小为M字节的原始二进制数据文件进行分块分组分片的预处理得到原始数据组,组中的每一个文件数据块称为原始数据块,每个组均分配有m+1个原始数据块并顺序编号;将每个数据块放置于分布式系统中不同的存储节点上,对应的节点称为原始节占.(12)基于原始数据组构造得到单元组,一个单元组包含一个原始数据组及由原始组内数据块编码生成的两个校验数据块:row块和zigzag块,每个校验块均由α个数据片连接组成; (13)基于单元组构造得到第I层复合组,一个复合组由若干,设为Si个单元组及新生成的两个校验块构成,记为G(ra + i)?Sl,i,两个校验块分别称为组内顶层row块和组内顶层zigzag块,均由α个数据片连接组成; (14)基于第I层复合组构造得到第2层复合组,一个第2层复合组由若干,设为S2个第I层复合组及新生成的组内顶层row块和组内顶层zigzag块构成; (15)按照步骤(14)中的方法逐级构建更高层复合组,最终生成IZSHC编码IZSHC(k,r,α),其中k即为文件的原始数据块个数,r则是所有生成的校验块个数,α为每个数据块划分的片数;每个数据块,包括新生成的校验数据块,分别放置到不同的存储节点上; (2)IZSHC码下读取失效数据的方法,是对失效节点数据恢复后读取,采用下列步骤(21)或步骤(22)实现,所述步骤(21)与(22)相互独立,分别针对不同失效情况,步骤(21)针对一个节点发生失效的情况;步骤(22)针对两个节点同时发生失效的情况;步骤(2)通过在基于步骤(1)的编码结构得到的冗余数据块上进行实施; (21)当一个原始节点失效时,恢复过程如下: (211)设失效的原始节点的数据块编号为i,构造数据块i的修复集合Xi,其元素为相关的数据片编号; (212)从数据块i所属单元组中所有未失效数据块下载Xi标识的数据片来恢复数据块i ;此时每个未失效节点所上传数据片的总数据量为M/2k,总共的传输量为(m+2).M/2k ; (22)当两个原始节点失效时,设失效节点的数据块编号为I,n,所处的单元组分别为G0.Pl,G0.p2,Pi ’ P2=。,1,2...,每个单元组中的原始数据块个数为m+1,每个数据块大小为M/k,针对P1, p2的不同取值情况,对应恢复过程如下: (221)若P1= P2,此时I,n位于同一组内,下载组内剩余m+1个未失效数据块即可恢复失效数据,此时下载量为单元组内m+1个数据块大小之和(m+1) - M/k; (222)Sp1^p2,此时I,n在不同的2个单元组内,使用步骤(21)的方法分别在各单元组中独自恢复这两个数据块,此时总共的下载量为(m+2).ΜΛ。
2.根据权利要求1的高效数据读取的容错编码方法,其特征在于:所述步骤(11)中将大小为M字节的原始二进制数据文件进行分块分组分片的预处理得到原始数据组,并将每一块文件数据块放置于分布式系统中不同的存储节点上,具体实现过程为: a)将原始文件分割为大小相等的k个原始数据块,并顺序划分为s个组;这些组被称为原始数据组即原始组,每个组包含k/s个原始数据块并顺序编号; b)以数据块为单位,将每个数据块放置于不同存储节点上; c)将每个数据块在其存储节点上顺序分割为大小相等的α=2Π个数据片并按数字顺序编号,m = k/s-lo
3.根据权利要求1的高效数据读取的容错编码方法,其特征在于:所述步骤(12)基于原始数据组构造得到单元组,一个单元组包含一个原始数据组及由原始组内数据块编码生成的两个校验数据块:row块和zigzag块,每个校验块均由α个数据片连接组成的具体构造过程如下: cOrow块中每个数据片均 由组内所有原始数据块中同序号的数据片直接在某个有限域中相加生成; e)zigzag块中每个待生成的数据片依次按0,1,2,...α顺序编号,为组内每个原始数据块指定一个这些序号的排列组合,再根据所有原始数据块分配的排列组合得到生成每个zigzag数据片所对应的原始数据片集合; f)在每个zigzag数据片对应的原始数据片集合中,为每个数据片指定一个线性组合生成系数,再用这些系数在有限域中线性组合各数据片从而生成对应的zigzag数据片; g)依照同样方法对每个原始数据组构造单元组并按顺序编号。
4.根据权利要求1的高效数据读取的容错编码方法,其特征在于:所述步骤(13)中基于单元组构造得到第I层复合组,一个复合组组内顶层row块和组内顶层zigzag块,均由α个数据片连接组成的具体构造过程如下: h)顶层row块中的每个数据片由复合组内各单元组的row块中的同序号的数据片在有限域中直接相加生成; i)顶层zigzag块中的每个数据片由组内各单元组的zigzag块中的同序号的数据片在有限域中直接相加生成。
5.根据权利要求1的高效数据读取的容错编码方法,其特征在于:所述步骤(14)具体构造过程如下:
6.根据权利要求3的高效数据读取的容错编码方法,其特征在于:所述步骤(12)的e)中根据所有原始数据块分配的排列组合得到生成每个zigzag数据片所对应的原始数据片集合的方法如下: 组内每个数据块中的数据片按前后顺序O,1,2,....,α -1编号,并将所有原始数据块的数据片以矩阵的元素方式进行标记,为组内第i个原始块分配一个排列组合fi; i = O,1,2,...,m, A是zigzag块中数据片序号,也就是0,1,2,...α -1这几个数的一个排列组合,对于zigzag块的第k个校验数据片,k = 0,1,2,...α -1,设k在A中的排列序号为j,贝丨J第i个原始数据块的第j个数据片参与生成zigzag块中的校验数据片k,依次从每个原始节点获取参与生成它的原始数据片,组成集合Zk,则Zk即为所有参与生成校验数据片k的原始数据片集合。
7.根据权利要求3的高效数据读取的容错编码方法,其特征在于:所述步骤(12)的e)中为每个原始数据块分配排列组合的方法如下: 记以a为本原元,大小为q的有限域为
8.根据权利要求3的高效数据读取的容错编码方法,其特征在于:所述步骤(12)的f)中构造zigzag数据片的原始数据片的线性组合系数生成方法如下:取有限域2^,其本原元为a,满足q为
9.根据权利要求1的高效数据读取的容错编码方法,其特征在于:所述步骤(15)中生成IZSHC编码IZSHC (k,r,α )的过程如下: 首先将k个原始数据块等分为s个原始组,再以原始组为基础进行编码的构造,设编码的最高层为第L层,每个第i层编码组包含的最大子编码组个数为Si,i = 1,2,....,L,则k, r, α,s, S1满足如下关系:
10.根据权利要求1的高效数据读取的容错编码方法,其特征在于:所述步骤(221)中Xi的构造方法如下:^
【文档编号】H04L1/00GK103746774SQ201410002928
【公开日】2014年4月23日 申请日期:2014年1月3日 优先权日:2014年1月3日
【发明者】黄震, 游鹏飞, 彭宇行, 吴泉森, 牛爱民, 李明昊, 李慧, 方长江, 马嫣, 汪昌健 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1