CN103746774A - 一种高效数据读取的容错编码方法 - Google Patents

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

Info

Publication number
CN103746774A
CN103746774A CN201410002928.3A CN201410002928A CN103746774A CN 103746774 A CN103746774 A CN 103746774A CN 201410002928 A CN201410002928 A CN 201410002928A CN 103746774 A CN103746774 A CN 103746774A
Authority
CN
China
Prior art keywords
data
group
original
piece
slice
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410002928.3A
Other languages
English (en)
Other versions
CN103746774B (zh
Inventor
黄震
游鹏飞
彭宇行
吴泉森
牛爱民
李明昊
李慧
方长江
马嫣
汪昌健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201410002928.3A priority Critical patent/CN103746774B/zh
Publication of CN103746774A publication Critical patent/CN103746774A/zh
Application granted granted Critical
Publication of CN103746774B publication Critical patent/CN103746774B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Error Detection And Correction (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

一种高效数据读取的容错编码方法,包括IZSHC码的编码构造方法与IZSHC码下读取失效数据的方法,IZSHC码的编码构造方法是对要读取的原始数据冗余处理,即将原始文件进行编码来生成冗余数据块,冗余数据块分为原始数据块和校验数据块;IZSHC码下读取失效数据的方法是在原始数据块发生读取失效时利用冗余数据块对失效数据进行解码恢复。本发明基于IZSHC码,可以显著地提升节点失效情况下的数据读取性能。

Description

一种高效数据读取的容错编码方法
技术领域
本发明涉及一种高效数据读取的容错编码方法,属于分布式存储领域。
背景技术
当前,随着分布式系统特别是云计算系统规模的不断扩大,系统中的服务器失效已成常态,这严重影响数据存储的可靠性。针对存储的可靠性问题,云计算系统通常采用数据冗余技术来提高数据的持久性和可用性。目前实际应用中最广泛的数据冗余技术是基于副本(replication)的数据冗余技术。副本冗余技术将原始数据文件复制为n份,分发给不同的网络节点;当一个数据节点失效时再利用可用节点恢复失效数据。然而,基于副本的数据冗余方案大大地增加了存储成本开销,难以有效支持云计算技术的快速发展。
近几年来,基于编码的数据冗余技术成为研究热点。该方案先将原始数据切分成k个原始数据块,再用这些数据块编码生成(n-k)个校验数据块,即共有n个冗余数据块,之后存放到不同的存储节点。相比副本方案,在同等可靠性的情况下,该编码方案可以极大地减少数据的存储空间,换而言之,在同等存储开销的情况下,编码方案可以极大地提高数据的可靠性。编码方案可以既提高数据的可靠性又降低数据的存储开销。目前主要有三类基于编码的数据冗余技术:(1)里德--所罗门编码(Reed-Solomon Codes)[I.Reed,G.Solomon.Polynomial CodeS over certain finite fieldS.Journal of the Societyfor Industrial and Applied Mathematics.1960,8:300304.]:在用户读取数据时,若原始数据失效,则需要先下载k倍个冗余数据块,然后恢复出所有的原始数据块。因而,随机访问单个原始数据块时,下载的数据量大,不利于数据读取。(2)再生码(Regenerating Codes)[A.G.Dimakis,K.Ramchandran,Y.Wu,et al.A Survey on Network CodeS fbr Distributed Storage.InProceedings of the IEEE.March2011]:由随机网络编码演变而来,采用更加细粒度的数据片(相比数据块)进行编码。相对于里德--所罗门编码,它能降低修复失效数据块所用的网络开销。但用于解码的数据片数量较大且会随着参与修复失效数据的冗余节点数量d(称为修复度数)的增加而增大,进而极大地增加了数据解码的计算复杂度。因此,顺序访问所有原始数据块时,解码计算复杂度高,不利于数据读取。使用精确式编码方案,如intersectingzigzag sets codes(IZS codes:再生码的一种),可完整地恢复出原有冗余数据块,但同样无法避免由于细粒度编码导致的解码复杂度高问题。(3)层次码(Hierarchical Codes)[A.Duminuco,E.Biersack.Hierarchical Codes:How toMake Erasure Codes Attractive for Peer-to-Peer Storage Systems.In 8thInternational Conference on Peer-to-Peer Computing(P2P).2008]:与再生码使用了一个大的修复度数d≥k不同,层次码使用了一个小的修复度数d<<k。然而,它仍然存在访问单个原始数据块时下载数据量大的问题。
针对基于纠删码的分布式存储系统,在存储开销一致的情况下,当部分节点失效时,现有纠删码技术存在着数据修复通信量大和解码开销高等问题,即导致了数据读取性能低。
发明内容
本发明的技术解决问题是:为克服现有技术的不足,提供一种高效数据读取的容错编码方法,基于intersecting zigzag sets codes(IZS codes)的精确式再生-层次复合编码——IZSHC码,可以显著地提升节点失效情况下的数据读取性能。
本发明技术解决方案:一种高效数据读取的容错编码方法,包括:IZSHC码的编码构造方法与IZSHC码下读取失效数据的方法,两种方法针对数据读取的不同场景。前者用于对待读取的原始数据的冗余处理,即将原始文件进行编码来生成冗余数据块,分为原始数据块和校验数据块;后者则是对失效数据进行有效读取,即读取原始数据块发生失效时利用冗余数据块对失效数据进行解码恢复。后者的解码方法基于前者的编码结构来实施,其中:
1.IZSHC码的编码构造方法,其特征在于实现步骤如下:
(1)将大小为M字节的原始二进制数据文件进行分块分组分片的预处理得到原始数据组,并将每一块文件数据块放置于分布式系统中不同的存储节点上。过程如下:
a)将原始文件分割为大小相等的k个原始数据块,并顺序划分为s个组;这些组被称为原始数据组(原始组),记m=k/s-1,则每个组包含m+1个原始数据块并顺序编号;
b)以数据块为单位,将每个原始数据块放置于不同存储节点上,对应的节点称为原始节点;
c)将每个数据块在其存储节点上顺序分割为大小相等的α=2m个数据片并按数字顺序编号;
(2)基于原始数据组构造得到单元组。一个单元组包含一个原始数据组及由原始组内数据块编码生成的两个校验数据块:row块和zigzag块。每个校验块均由α个数据片连接组成。构造过程如下:
d)row块中每个数据片均由组内所有原始数据块中同序号的数据片直接在某个有限域中相加生成;
e)zigzag块中每个待生成的数据片依次按0,1,2,...α顺序编号,为组内每个原始数据块指定一个这些序号的排列组合,再根据所有原始数据块分配的排列组合得到生成每个zigzag数据片所对应的原始数据片集合;
f)在每个zigzag数据片对应的原始数据片集合中,为每个数据片指定一个线性组合生成系数,再用这些系数在有限域中线性组合各数据片从而生成对应的zigzag数据片;
g)依照同样方法对每个原始数据组构造单元组并按顺序编号;
(3)基于单元组构造得到第1层复合组。一个复合组由若干(设为s1)个单元组及新生成的两个校验块构成,记为
Figure BDA0000453038930000041
两个校验块分别称为组内顶层row块和组内顶层zigzag块,均由α个数据片连接组成。构造过程如下:
h)顶层row块中的每个数据片由复合组内各单元组的row块中的同序号的数据片在有限域中直接相加生成;
i)顶层zigzag块中的每个数据片由组内各单元组的zigzag块中的同序号的数据片在有限域中直接相加生成;
(4)基于第1层复合组构造得到第2层复合组。一个第2层复合组由若干(设为s2)个第1层复合组及新生成的组内顶层row块和组内顶层zigzag块构成。构造过程如下:
j)根据步骤(3)中的方法用不同的单元组构造得到s2个相同结构的第1层复合组
Figure BDA0000453038930000051
k)顶层row块中的每个数据片由前一层各复合组(此时为
Figure BDA0000453038930000052
Figure BDA0000453038930000053
)的组内顶层row块中的同序号的数据片在有限域中直接相加生成;
I)顶层zigzag块中的每个数据片由前一层各复合组的组内顶层zigzag块中的同序号的数据片在有限域中直接相加生成;
(5)按照步骤(4)中的方法逐级构建更高层复合组,最终生成IZSHC编码IZSHC(k,r,α)。其中k即为文件的原始数据块个数,r则是所有生成的校验块个数,α为每个数据块划分的片数。每个数据块,包括整个方法中新生成的校验数据块,分别放置到不同的存储节点上。
在上述IZSHC码的编码构造方法中,步骤(2)中为生成zigzag数据片而给原始组数据块指定的排列组合定义表示及生成zigzag数据片的原始数据片集合构造方法如下:
组内每个数据块中的数据片按前后顺序0,1,2,....,α-1编号,并将所有原始数据块的数据片以矩阵的元素方式进行标记,为组内第i个原始块分配一个排列组合fi(i=0,1,2,....,m),fi是zigzag块中数据片序号,也就是0,1,2,...α-1这几个数的一个排列组合。对于zigzag块的第k个校验数据片,(k=0,1,2,...α-1),设k在fi中的排列序号为j,则第i个原始数据块的第j个数据片参与生成zigzag块中的校验数据片k。依次从每个原始节点获取参与生成它的原始数据片,组成集合Zk,则Zk即为所有参与生成校验数据片k的原始数据片集合。
在上述IZSHC码的编码构造方法中,步骤(2)中为生成zigzag数据片而给原始组数据块分配排列组合的方法如下:
记以a为本原元,大小为q的有限域为
Figure BDA0000453038930000061
取有限域
Figure BDA0000453038930000062
及其上的m维向量空间
Figure BDA0000453038930000063
Figure BDA0000453038930000065
上的一组标准正交基,e0为零向量。设函数b(x)将十进制数x转换为二进制数,函数d(x)将二进制数x转换为十进制数。原始数据块i的排列组合fi由函数 f e i : [ 0 , α - 1 ] → [ 0 , α - 1 ] , f e i ( x ) = d ( b ( x ) + e i ) 生成,其中ei直接表示为二进制数。
在上述IZSHC码的编码构造方法中,步骤(2)中构造zigzag数据片的原始数据片的线性组合系数生成方法如下:
取有限域
Figure BDA0000453038930000067
其本原元为a,满足q为[s+1,+∞)上的最小奇数。记第t(t=0,1,2,....,s-1)个单元组中原始数据片ai,j对应的生成系数为 β i , j t = a t + 1 , u j · i = 1 a t , u j · i ≠ 1 , u j = Σ l = 0 j e l ,
实际计算时将i转化为二进制的形式。
在上述IZSHC码的编码构造方法中,步骤(5)中所生成的编码的构造过程具有如下特性:
整个构造过程中,k个原始数据块首先被等分为s个原始组,再以原始组为基础进行编码的构造。设编码的最高层为第L层,每个第i层编码组包含的最大子编码组个数为si,i=1,2,....,L。则k,r,α,s,si满足如下关系:
α = 2 m , m = k s - 1 s = Π i = 1 L s i r = ( ( ( 2 · s 1 + 2 ) · s 2 + 2 ) · . . . . · s L ) + 2
2.对于IZSHC码下读取失效数据的方法,是对失效节点数据恢复后读取,其特征在于实现步骤如下(步骤(1)与(2)相互独立,分别针对不同失效情况):
(1)当一个原始节点失效时,恢复过程如下:
a)设失效节点的数据块编号为i,构造数据块i的修复集合Xi,其元素为相关的数据片编号;
b)从数据块i所属单元组中所有未失效数据块下载Xi标识的数据片来恢复数据块i;此时每个未失效节点所上传数据片的总数据量为M/2k,总共的传输量为(m+2)·M/2k。
(2)当两个原始节点失效时,设失效节点的数据块编号为I,n,所处的单元组分别为 G 0 , p 1 , G 0 , p 2 , ( p 1 , p 2 = 0,1,2 . . . ) , 每个单元组中的原始数据块个数为m+1,每个数据块大小为M/k。针对p1,p2的不同取值情况,对应恢复过程如下:
c)若p1=p2,此时I,n位于同一组内。下载组内剩余m+1个未失效数据块即可恢复失效数据,此时下载量为单元组内m+1个数据块大小之和(m+1)·M/k;
d)若p1≠p2,此时I,n在不同的2个单元组内。使用步骤(1)的方法分别在各单元组中独自恢复两个节点。此时总共的下载量为(m+2)·M/k。
在上述IZSHC码下读取失效数据的方法中,步骤(1)中Xi的构造方法如下:
Figure BDA0000453038930000081
当i>0时,定义Xi为[0,α-1]的一个最大子集,对所有x∈Xi满足(x·ei)mod2=0;依次求出X1,X2,....,Xm。在计算过程中,直接将向量表示为二进制形式。
本发明与现有技术相比的优点在于:
(1)使用了精确式的编解码方式(即权利要求的步骤(11)、(12)和(2)),相对于传统的里德--所罗门编码和再生码等编码,读取的原始节点未失效时无需进行解码操作,有效提高了读取效率;
(2)使用了在单元组内进行IZS codes编码的模式(权利要求的步骤(12)),相对于层次码等传统编码,有效降低了读取单个失效节点时所需的修复通信开销;设原始文件大小为M,被划分的原始文件块个数为k,对于IZSHC(6,6,4)编码,即k=6,r=6,α=4,m=2,其修复单个失效节点的通信开销为(m+2)·M/2k=M/3;而采用相同参数的层次码在同一个层次编码组中修复单个失效节点的通信开销为(m+2)·M/k=2M/3;可见IZSHC(6,6,4)编码相对层次码降低了一半的修复通信开销,因而使用本发明的编码方法大大提高了失效数据的读取性能;
(3)使用了层次化的编码结构(权利要求的步骤(13)、(14)和(15)),相对于传统编码及精确式再生码,有效降低了读取失效节点时参与修复的节点度数,从而降低了解码复杂度;以IZSHC(6,6,4)编码为例,在进行单节点失效的修复中,当参与修复的节点上传的数据量相同,如均为M/2k时,IZSHC(6,6,4)编码只需使用m+2=4个节点进行修复,而精确式再生码要使用k+1=7个节点进行修复;因此本发明的编码方法大大降低了修复失效节点时的解码复杂度,从而提升读取性能。
总之,本发明大大降低了读取失效节点时的修复通信量和解码开销,有效提升了读取性能,适合于工程实现。
附图说明
图1为本发明对原始文件预处理及编码构造生成的编码IZSHC(6,6,4)结构图;
图2为本发明中生成IZSHC编码的方法流程图;
图3为本发明中修复失效节点的方法示意图。
具体实施方式
本发明基于intersecting zigzag sets codes(IZS codes)的精确式再生-层次复合编码——IZSHC码,可以显著地提升节点失效情况下的数据读取性能,具体实现如下:
一、IZSHC编码的构建过程
将大小为M的文件分割为大小相等的k个原始数据块,并顺序分成s个组;这些组被称为原始数据组(原始组),每个组包含k/s个原始数据块并顺序编号,每块顺序分割为大小相等的α=2m个数据片(m=k/s-1),并按数字顺序编号;再按照层次码的结构将这些原始数据组分配至不同的编码组中,组中使用原始数据块生成校验数据块,分为row块与zigzag块两种类型,每个校验数据块均由顺序编号的α个数据片组成。在单元组中,row块的数据片由原始数据片按行相加生成,zigzag块的数据片按照IZS码的交叉编码规则生成(详见编码构造方法流程2);复合组中最上层的row块数据片与zigzag块数据片分别对应由低一层的所有子编码组的组内最上层row块与zigzag块数据片按行相加生成。设编码后最终生成的总的校验块个数为r,即构成了编码IZSHC(k,r,α)。如图1方框部分所示为IZSHC(6,6,4)编码,即k=6,r=6,α=4,m=2;其中数据块S1~S3与数据块S4~S6为s=2个原始数据组G1和G2,P1~P6为校验块,每个数据块被划分为4片。
具体地,编码构造方法流程如图2所示,涉及定义及具体内容如下所示:
1.将大小为M的文件先进行预处理,即分割为大小相等的k个原始数据块,并顺序分成s个原始数据组;记m=k/s-1,则每个组包含m+1个原始数据块并顺序编号,每块顺序分割为大小相等的α=2m个数据片并按数字顺序编号;每个原始数据块分别放置于不同的存储节点,即原始节点。
2.基于原始数据组构造单元组。
一个原始组通过其数据块生成2个校验数据块。一个称为row块,row块中的每个数据片均由组内所有原始数据块中同序号的数据片直接线性相加生成;一个称为zigzag块,其每个数据片都由IZSHC交叉编码规则统一指定的各个原始数据块中不同序号的数据片线性生成,即是用指定的原始数据片的内容乘以各自指定的生成系数再线性相加。该原始组连同生成的两个校验块即构成了一个单元组,对每个原始组应用相同操作生成相应的单元组,最终生成s个单元组,记为Gm+1,1,Gm+1,2,....,Gm+1,s。如图1所示,s=m=2,两个箭头表示单元组G3,1与G3,2分别由原始组G1(S1~S3)与G2(S4~S6)生成;P1,P2分别为G3,1中的row校验块与zigzag校验块。P3,P4分别为G3,2中的row块与zigzag块。
(1)IZSHC交叉编码规则:先指定每个单元组内zigzag块所有校验数据片序号相对于每个原始节点的排列组合,根据各个排列组合得到每个zigzag块数据片生成时所需参与的原始数据片集合;再为每个集合统一指定线性组合系数;所有单元组拥有相同的排列组合。
(2)排列组合定义表示:组内每个数据块中的数据片按前后顺序0,1,2,....,α-1编号,并将所有原始数据块的数据片以矩阵的元素方式进行标记(如图1中的G3,1与图3所示),为组内第i个原始块分配一个排列组合fi(i=0,1,2,...,m),fi是zigzag块中数据片序号,也就是0,1,2,...α-1这几个数的一个排列组合。对于zigzag块的第k个校验数据片,(k=0,1,2,...α-1),设k在fi中的排列序号为j,则第i个原始数据块的第j个数据片参与生成zigzag块中的校验数据片k。依次从每个原始节点获取参与生成它的原始数据片,组成集合Zk,则Zk即为所有参与生成校验数据片k的原始数据片集合。如在图3中,f1={2,3,0,1}表明在数据块1中,第0个原始数据片a0,1参与生成第2个校验数据片za2,第1个原始数据片a1,1参与生成za3,第2个原始数据片a2,1参与生成za0,第3个原始数据片a3,1参与生成za1;Z1={a1,0,a3,1,a0,2}表示第1个zigzag校验数据片由原始数据片a1,0,a3,1,a0,2通过线性组合生成。
(3)排列组合生成规则:记以a为本原元,大小为q的有限域为
Figure BDA0000453038930000121
取有限域
Figure BDA0000453038930000122
及其上的m维向量空间
Figure BDA0000453038930000123
Figure BDA0000453038930000125
上的一组标准正交基,e0为零向量。设函数b(x)将十进制数x转换为二进制数,函数d(x)将二进制数x转换为十进制数。原始数据块i的排列组合fi由函数 f e i : [ 0 , α - 1 ] → [ 0 , α - 1 ] , f e i ( x ) = d ( b ( x ) + e i ) 生成,其中ei直接表示为二进制数。例如,m=2,e1=(1,0)=102进制,则
Figure BDA0000453038930000127
Figure BDA0000453038930000131
因此f1=[2,3,0,1]。依次求出每个fi,i=0,1,2,....m。
(4)组合系数生成方法:各zigzag数据片均由相关的原始数据片内容乘以各自指定的生成系数再线性相加成生。取有限域
Figure BDA0000453038930000132
其本原元为a,满足q为[s+1,+∞)上的最小奇数。记第t(t=0,1,2,....,s-1)个单元组中原始数据片ai,j对应的生成系数为
Figure BDA0000453038930000133
β i , j t = a t + 1 , u j · i = 1 a t , u j · i ≠ 1 , u j = Σ l = 0 j e l ,
实际计算时将i转化为二进制的形式。如图1中单元组G3,2对应的原始组编号为t=1,取q=3,由有限域
Figure BDA0000453038930000135
性质可知,a=2,at=a=2,at+1=a2=1;u0=e0=(0,0),由u0·0=0可知
Figure BDA0000453038930000136
同理u1=e1=(1,0),u1·1=(1,0)·(0,1)T=0,可知
Figure BDA0000453038930000137
依次算出所有的
Figure BDA0000453038930000138
Figure BDA0000453038930000139
对于单元组G3,1,t=0,计算出所有的
Figure BDA00004530389300001310
如图3所示,在G3,1中zigzag数据片za0通过交叉编码规则得到需要组合的原始数据片组:a0,0,a2,1,a1,2;通过组合系数生成方法得到组合系数:
Figure BDA00004530389300001311
因此得到za0=a0,0+2a2,1+2a1,2;同理,单元组G3,2中的zigzag数据片zb0=2b0,0+b2,1+b1,2。依此生成所有单元组中的zigzag数据片。
3.基于单元组构建第1层复合组。
由若干个(设为s1)原始组对应的单元组组合在一起并加入新生成的一个row块和一个zigzag块即构成第一层中的一个复合细
Figure BDA0000453038930000141
新生成的两个校验块分别称为组内顶层row块和组内顶层zigzag块。顶层row块的数据片由复合组内各单元组的row块中的同序号的数据片直接相加生成,顶层zigzag块的数据片则由组内各单元组的zigzag块中的同序号的数据片直接相加生成。如图1所示,m=2,s1=2,复合组G6,1即为单元组G3,1与G3,2及组内顶层row块P5与顶层zigzag块P6组成。P5由P1与P3直接相加生成;P6由P3与P4直接相加生成。
4.构建第2层复合组
在第1层用不同的原始数据组生成若干个相同结构的复合组,设生成的组数为s2,即相当于复制生成了s2个相同结构的复合组
Figure BDA0000453038930000142
Figure BDA0000453038930000143
再用这s2个复合组构成第2层的1个复合组
Figure BDA0000453038930000144
组内同样生成有一个顶层row块和顶层zigzag块,每个顶层校验块分别由组内前一层(此时为第一层)中各个复合组的组内顶层校验块按照前一步骤中的方法生成。如在图1基础上,用不同的原始数据组生成若干个与G6,1结构相同的第一层复合组G6,2,G6,3,...等,设复制生成了s2个复合组,然后可组合生成第2层的一个复合细
Figure BDA0000453038930000151
5.依此类推,逐级构建更高层复合组,最终生成IZSHC编码IZSHC(k,r,α)。其中k即为文件的原始数据块个数,r则是所有生成的校验块个数,α为每个数据块划分的片数。每个数据块分别放置到不同的存储节点上。由整个构造过程,k个原始数据块首先被等分为s个原始组,再以原始组为基础进行编码的构造。设编码的最高层为第L层,每个第i层编码组包含的最大子编码组个数为si,i=1,2,....,L。则k,r,α,s,si满足如下关系:
α = 2 m , m = k s - 1 s = Π i = 1 L s i r = ( ( ( 2 · s 1 + 2 ) · s 2 + 2 ) · . . . . · s L ) + 2
如图1中的编码组,k=6,s=2,s1=2,L=1,于是m=2,α=4,r=6。
二、IZSHC编码下的读取失效数据方法
当读取失效数据时,方法是对数据进行恢复后再读取,具体过程分为两种独立失效情况:
1.当一个原始节点失效时:
设失效的原始节点的数据块编号为i(i=0,1,...m),构造数据块i的修复集合Xi。它是一些数据片编号的集合。从数据块i所属单元组中所有未失效数据块下载Xi标识的数据片来恢复数据块i。针对Xi的构造方法如下:
Figure BDA0000453038930000161
当i>0时,定义Xi为[0,α一1]的一个最大子集,对所有x∈Xi满足(x·ei)mod2=0;依次求出X1,X2,....,Xm。于是,从单元组内所有未失效数据块下载Xi包含的数据片即可恢复节点i的数据。此时每个未失效节点所上传数据片的总数据量为M/2k,故总共的传输量为(m+2)·M/2k。
在计算过程中,直接将向量表示为二进制形式。如图3所示,m=2时,可求出X0={(0,0),(1,1)}={002进制,112进制}={0,3},X1={0,1},X2={0,2}。当第1个原始数据块S2(加粗边框部分)失效时,对应的修复集合为X1={0,1},因此G3,1组内每个未失效数据块所在节点都上传各自的第0和1个数据片(斜线阴影部分)便可修复S2。即是由上传数据片a0,0,a0,2,a1,0,a1,2以及ra0=a0,0+a0,1+a0,2,ra1=a1,0+a1,1+a1,2,za0=a0,0+2a2,1+2a1,2,za1=a1,0+2a3,1+a0,2可求出a0,1,a1,1,a2,1,a3,1从而恢复数据块S2。
2.当两个原始节点失效时:
设失效节点的数据块编号为I,n,所处的单元组分别为
Figure BDA0000453038930000162
(p1,p2=0,1,2...),每个单元组中的原始数据块个数为m+1,每个数据块大小为M/k。
a)若p1=p2,此时I,n位于同一组内。下载组内剩余m+1个未失效数据块即可恢复失效数据,此时下载量为单元组内m+1个数据块大小之和(m+1)·M/k。如图1位于同一编码组G3,1中的原始数据块S1和S2均失效时,只需利用S3,P1与P2的数据片即可同时恢复S1和S2。
b)若p1≠p2,此时I,n在不同的2个单元组内。使用情况一的方法分别在各
单元组中独自恢复这两个数据块。此时总共的下载量为(m+2)·M/k。

Claims (10)

1.一种高效数据读取的容错编码方法,其特征在于包括:IZSHC码的编码构造方法与IZSHC码下读取失效数据的方法,IZSHC码的编码构造方法是对要读取的原始数据冗余处理,即将原始文件进行编码来生成冗余数据块,冗余数据块分为原始数据块和校验数据块;IZSHC码下读取失效数据的方法是在原始数据块发生读取失效时利用冗余数据块对失效数据进行解码恢复;其中:
(1)IZSHC码的编码构造方法,实现步骤如下:
(11)将大小为M字节的原始二进制数据文件进行分块分组分片的预处理得到原始数据组,组中的每一个文件数据块称为原始数据块,每个组均分配有m+1个原始数据块并顺序编号;将每个数据块放置于分布式系统中不同的存储节点上,对应的节点称为原始节点;
(12)基于原始数据组构造得到单元组,一个单元组包含一个原始数据组及由原始组内数据块编码生成的两个校验数据块:row块和zigzag块,每个校验块均由α个数据片连接组成;
(13)基于单元组构造得到第1层复合组,一个复合组由若干,设为s1个单元组及新生成的两个校验块构成,记为
Figure FDA0000453038920000011
两个校验块分别称为组内顶层row块和组内顶层zigzag块,均由α个数据片连接组成;
(14)基于第1层复合组构造得到第2层复合组,一个第2层复合组由若干,设为s2个第1层复合组及新生成的组内顶层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,所处的单元组分别为
Figure FDA0000453038920000021
每个单元组中的原始数据块个数为m+1,每个数据块大小为M/k,针对p1,p2的不同取值情况,对应恢复过程如下:
(221)若p1=p2,此时I,n位于同一组内,下载组内剩余m+1个未失效数据块即可恢复失效数据,此时下载量为单元组内m+1个数据块大小之和(m+1)·M/k;
(222)若p1≠p2,此时I,n在不同的2个单元组内,使用步骤(21)的方法分别在各单元组中独自恢复这两个数据块,此时总共的下载量为(m+2)·M/k。
2.根据权利要求1的高效数据读取的容错编码方法,其特征在于:所述步骤(11)中将大小为M字节的原始二进制数据文件进行分块分组分片的预处理得到原始数据组,并将每一块文件数据块放置于分布式系统中不同的存储节点上,具体实现过程为:
a)将原始文件分割为大小相等的k个原始数据块,并顺序划分为s个组;这些组被称为原始数据组即原始组,每个组包含k/s个原始数据块并顺序编号;
b)以数据块为单位,将每个数据块放置于不同存储节点上;
c)将每个数据块在其存储节点上顺序分割为大小相等的α=2m个数据片并按数字顺序编号,m=k/s-1。
3.根据权利要求1的高效数据读取的容错编码方法,其特征在于:所述步骤(12)基于原始数据组构造得到单元组,一个单元组包含一个原始数据组及由原始组内数据块编码生成的两个校验数据块:row块和zigzag块,每个校验块均由α个数据片连接组成的具体构造过程如下:
d)row块中每个数据片均由组内所有原始数据块中同序号的数据片直接在某个有限域中相加生成;
e)zigzag块中每个待生成的数据片依次按0,1,2,...α顺序编号,为组内每个原始数据块指定一个这些序号的排列组合,再根据所有原始数据块分配的排列组合得到生成每个zigzag数据片所对应的原始数据片集合;
f)在每个zigzag数据片对应的原始数据片集合中,为每个数据片指定一个线性组合生成系数,再用这些系数在有限域中线性组合各数据片从而生成对应的zigzag数据片;
g)依照同样方法对每个原始数据组构造单元组并按顺序编号。
4.根据权利要求1的高效数据读取的容错编码方法,其特征在于:所述步骤(13)中基于单元组构造得到第1层复合组,一个复合组组内顶层row块和组内顶层zigzag块,均由α个数据片连接组成的具体构造过程如下:
h)顶层row块中的每个数据片由复合组内各单元组的row块中的同序号的数据片在有限域中直接相加生成;
i)顶层zigzag块中的每个数据片由组内各单元组的zigzag块中的同序号的数据片在有限域中直接相加生成。
5.根据权利要求1的高效数据读取的容错编码方法,其特征在于:所述步骤(14)具体构造过程如下:
j)根据步骤(13)中的方法用不同的单元组构造得到s2个相同结构的第1层复合组
Figure FDA0000453038920000041
k)顶层row块中的每个数据片由前一层各复合组记为
Figure FDA0000453038920000043
的组内顶层row块中的同序号的数据片在有限域中直接相加生成;
1)顶层zigzag块中的每个数据片由前一层各复合组的组内顶层zigzag块中的同序号的数据片在有限域中直接相加生成。
6.根据权利要求3的高效数据读取的容错编码方法,其特征在于:所述步骤(12)的e)中根据所有原始数据块分配的排列组合得到生成每个zigzag数据片所对应的原始数据片集合的方法如下:
组内每个数据块中的数据片按前后顺序0,1,2,....,α-1编号,并将所有原始数据块的数据片以矩阵的元素方式进行标记,为组内第i个原始块分配一个排列组合fi,i=0,1,2,...,m,fi是zigzag块中数据片序号,也就是0,1,2,...α-1这几个数的一个排列组合,对于zigzag块的第k个校验数据片,k=0,1,2,...α-1,设k在fi中的排列序号为j,则第i个原始数据块的第j个数据片参与生成zigzag块中的校验数据片k,依次从每个原始节点获取参与生成它的原始数据片,组成集合Zk,则Zk即为所有参与生成校验数据片k的原始数据片集合。
7.根据权利要求3的高效数据读取的容错编码方法,其特征在于:所述步骤(12)的e)中为每个原始数据块分配排列组合的方法如下:
记以a为本原元,大小为q的有限域为
Figure FDA0000453038920000051
取有限域
Figure FDA0000453038920000052
及其上的m维向量空间
Figure FDA0000453038920000053
Figure FDA0000453038920000054
Figure FDA0000453038920000055
上的一组标准正交基,e0为零向量。设函数b(x)将十进制数x转换为二进制数,函数d(x)将二进制数x转换为十进制数。原始数据块i的排列组合fi由函数
Figure FDA0000453038920000056
生成,其中ei直接表示为二进制数。
8.根据权利要求3的高效数据读取的容错编码方法,其特征在于:所述步骤(12)的f)中构造zigzag数据片的原始数据片的线性组合系数生成方法如下:
取有限域
Figure FDA00004530389200000511
其本原元为a,满足q为[s+1,+∞)上的最小奇数,记第t(t=0,1,2,....,s-1)个单元组中原始数据片ai,j对应的生成系数为
Figure FDA0000453038920000057
β i , j t = a t + 1 , u j · i = 1 a t , u j · i ≠ 1 , u j = Σ l = 0 j e l ,
实际计算时将i转化为二进制的形式。
9.根据权利要求1的高效数据读取的容错编码方法,其特征在于:所述步骤(15)中生成IZSHC编码IZSHC(k,r,α)的过程如下:
首先将k个原始数据块等分为s个原始组,再以原始组为基础进行编码的构造,设编码的最高层为第L层,每个第i层编码组包含的最大子编码组个数为si,i=1,2,....,L,则k,r,α,s,si满足如下关系:
α = 2 m , m = k s - 1 s = Π i = 1 L s i r = ( ( ( 2 · s 1 + 2 ) · s 2 + 2 ) · . . . . · s L ) + 2 .
10.根据权利要求1的高效数据读取的容错编码方法,其特征在于:所述步骤(221)中Xi的构造方法如下:
当i>0时,定义Xi为[0,α-1]的一个最大子集,对所有x∈Xi满足(x·ei)mod2=0;依次求出X1,X2,....,Xm,在计算过程中,直接将向量表示为二进制形式,其中m=k/s-1,k为原始数据块的个数,s为原始组的个数。
CN201410002928.3A 2014-01-03 2014-01-03 一种高效数据读取的容错编码方法 Active CN103746774B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410002928.3A CN103746774B (zh) 2014-01-03 2014-01-03 一种高效数据读取的容错编码方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410002928.3A CN103746774B (zh) 2014-01-03 2014-01-03 一种高效数据读取的容错编码方法

Publications (2)

Publication Number Publication Date
CN103746774A true CN103746774A (zh) 2014-04-23
CN103746774B CN103746774B (zh) 2017-07-14

Family

ID=50503768

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410002928.3A Active CN103746774B (zh) 2014-01-03 2014-01-03 一种高效数据读取的容错编码方法

Country Status (1)

Country Link
CN (1) CN103746774B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105356892A (zh) * 2015-06-24 2016-02-24 深圳大学 网络编码的方法及系统
WO2016201639A1 (zh) * 2015-06-17 2016-12-22 华为技术有限公司 分布式数据存储方法、控制设备和系统
CN106527993A (zh) * 2016-11-09 2017-03-22 北京搜狐新媒体信息技术有限公司 一种分布式系统中的海量文件储存方法及装置
CN106779732A (zh) * 2016-11-22 2017-05-31 中食安电子商务服务有限公司 18位十进制编码转化为可检错二进制编码的方法
CN107852240A (zh) * 2016-01-18 2018-03-27 华为技术有限公司 一种基于可见光通信的数据发送方法及发送端设备
CN108183712A (zh) * 2017-12-28 2018-06-19 北京华生恒业科技有限公司 一种汉字基因编、解码方法及系统
CN108197688A (zh) * 2018-02-07 2018-06-22 施玥 一种带有校验码的编码方式
CN111292309A (zh) * 2020-02-13 2020-06-16 中国人民解放军国防科学技术大学 一种肺组织异化程度判断方法及装置
CN111625394B (zh) * 2020-05-27 2023-03-21 成都信息工程大学 基于纠删码的数据恢复方法、装置、设备及存储介质
WO2024037010A1 (zh) * 2022-08-17 2024-02-22 华为技术有限公司 数据存储方法、装置及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102624866B (zh) * 2012-01-13 2014-08-20 北京大学深圳研究生院 一种存储数据的方法、装置及分布式网络存储系统

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016201639A1 (zh) * 2015-06-17 2016-12-22 华为技术有限公司 分布式数据存储方法、控制设备和系统
CN105356892B (zh) * 2015-06-24 2018-11-16 深圳大学 网络编码的方法及系统
CN105356892A (zh) * 2015-06-24 2016-02-24 深圳大学 网络编码的方法及系统
CN107852240A (zh) * 2016-01-18 2018-03-27 华为技术有限公司 一种基于可见光通信的数据发送方法及发送端设备
CN107852240B (zh) * 2016-01-18 2019-12-17 华为技术有限公司 一种基于可见光通信的数据发送方法及发送端设备
CN106527993A (zh) * 2016-11-09 2017-03-22 北京搜狐新媒体信息技术有限公司 一种分布式系统中的海量文件储存方法及装置
CN106527993B (zh) * 2016-11-09 2019-08-30 北京搜狐新媒体信息技术有限公司 一种分布式系统中的海量文件储存方法及装置
CN106779732A (zh) * 2016-11-22 2017-05-31 中食安电子商务服务有限公司 18位十进制编码转化为可检错二进制编码的方法
CN108183712A (zh) * 2017-12-28 2018-06-19 北京华生恒业科技有限公司 一种汉字基因编、解码方法及系统
CN108197688A (zh) * 2018-02-07 2018-06-22 施玥 一种带有校验码的编码方式
CN108197688B (zh) * 2018-02-07 2021-05-18 施玥 一种带有校验码的编码方法
CN111292309A (zh) * 2020-02-13 2020-06-16 中国人民解放军国防科学技术大学 一种肺组织异化程度判断方法及装置
CN111292309B (zh) * 2020-02-13 2023-08-18 中国人民解放军国防科学技术大学 一种肺组织异化程度判断方法及装置
CN111625394B (zh) * 2020-05-27 2023-03-21 成都信息工程大学 基于纠删码的数据恢复方法、装置、设备及存储介质
WO2024037010A1 (zh) * 2022-08-17 2024-02-22 华为技术有限公司 数据存储方法、装置及存储介质

Also Published As

Publication number Publication date
CN103746774B (zh) 2017-07-14

Similar Documents

Publication Publication Date Title
CN103746774A (zh) 一种高效数据读取的容错编码方法
CN103688514B (zh) 一种最小存储再生码的编码和存储节点修复方法
CN103688515B (zh) 一种最小带宽再生码的编码和存储节点修复方法
CN107086870B (zh) 修复多节点失效的mds阵列码编码以及解码方法
CN102647193B (zh) 具有良好性能的不规则缩短的ldpc码的码构造
US8775860B2 (en) System and method for exact regeneration of a failed node in a distributed storage system
MX2008003922A (es) Conjunto de codigos irregulares de comprobacion de de paridad de baja densidad (ldpc) con escritura aleatoria codificacion.de baja complejidad.
CN111078460B (zh) 一种快速纠删码计算方法
CN104156283B (zh) 数据恢复方法、装置及存储系统
CN105356968B (zh) 基于循环置换矩阵的网络编码的方法及系统
CN105518996B (zh) 一种基于二进制域里德所罗门码的数据编解码方法
WO2018072294A1 (zh) 一种校验矩阵的构造方法及水平阵列纠删码的构造方法
CN105703782B (zh) 一种基于递增移位矩阵的网络编码方法及系统
Hou et al. A new design of binary MDS array codes with asymptotically weak-optimal repair
CN114153651A (zh) 一种数据编码方法、装置、设备及介质
CN108762978B (zh) 一种局部部分重复循环码的分组构造方法
Jeong et al. Locally recoverable coded matrix multiplication
KR100669152B1 (ko) 저밀도 패리티 검사 코드의 부호화 장치 및 방법
CN104782101B (zh) 用于分布式网络存储的自修复码的编码、重构和恢复方法
CN113258936B (zh) 一种基于循环移位的双重编码的构造方法
CN101515839A (zh) 一种编码输出的方法、装置及其系统
WO2017041232A1 (zh) 一种二进制循环码的编解码框架
CN101577554A (zh) 多码长多码率的低密度奇偶校验码的编码方法
CN106911793B (zh) I/o优化的分布式存储数据修复方法
CN104866386A (zh) 具有最优更新代价的编码及解码方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant