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

技术编号:9960183 阅读:133 留言:0更新日期:2014-04-23 20:12
一种高效数据读取的容错编码方法,包括IZSHC码的编码构造方法与IZSHC码下读取失效数据的方法,IZSHC码的编码构造方法是对要读取的原始数据冗余处理,即将原始文件进行编码来生成冗余数据块,冗余数据块分为原始数据块和校验数据块;IZSHC码下读取失效数据的方法是在原始数据块发生读取失效时利用冗余数据块对失效数据进行解码恢复。本发明专利技术基于IZSHC码,可以显著地提升节点失效情况下的数据读取性能。

【技术实现步骤摘要】
一种高效数据读取的容错编码方法
本专利技术涉及一种高效数据读取的容错编码方法,属于分布式存储领域。
技术介绍
当前,随着分布式系统特别是云计算系统规模的不断扩大,系统中的服务器失效已成常态,这严重影响数据存储的可靠性。针对存储的可靠性问题,云计算系统通常采用数据冗余技术来提高数据的持久性和可用性。目前实际应用中最广泛的数据冗余技术是基于副本(replication)的数据冗余技术。副本冗余技术将原始数据文件复制为n份,分发给不同的网络节点;当一个数据节点失效时再利用可用节点恢复失效数据。然而,基于副本的数据冗余方案大大地增加了存储成本开销,难以有效支持云计算技术的快速发展。近几年来,基于编码的数据冗余技术成为研究热点。该方案先将原始数据切分成k个原始数据块,再用这些数据块编码生成(n-k)个校验数据块,即共有n个冗余数据块,之后存放到不同的存储节点。相比副本方案,在同等可靠性的情况下,该编码方案可以极大地减少数据的存储空间,换而言之,在同等存储开销的情况下,编码方案可以极大地提高数据的可靠性。编码方案可以既提高数据的可靠性又降低数据的存储开销。目前主要有三类基于编码的数据冗余技术:(1)里德--所罗门编码(Reed-SolomonCodes)[I.Reed,G.Solomon.PolynomialCodeSovercertainfinitefieldS.JournaloftheSocietyforIndustrialandAppliedMathematics.1960,8:300304.]:在用户读取数据时,若原始数据失效,则需要先下载k倍个冗余数据块,然后恢复出所有的原始数据块。因而,随机访问单个原始数据块时,下载的数据量大,不利于数据读取。(2)再生码(RegeneratingCodes)[A.G.Dimakis,K.Ramchandran,Y.Wu,etal.ASurveyonNetworkCodeSfbrDistributedStorage.InProceedingsoftheIEEE.March2011]:由随机网络编码演变而来,采用更加细粒度的数据片(相比数据块)进行编码。相对于里德--所罗门编码,它能降低修复失效数据块所用的网络开销。但用于解码的数据片数量较大且会随着参与修复失效数据的冗余节点数量d(称为修复度数)的增加而增大,进而极大地增加了数据解码的计算复杂度。因此,顺序访问所有原始数据块时,解码计算复杂度高,不利于数据读取。使用精确式编码方案,如intersectingzigzagsetscodes(IZScodes:再生码的一种),可完整地恢复出原有冗余数据块,但同样无法避免由于细粒度编码导致的解码复杂度高问题。(3)层次码(HierarchicalCodes)[A.Duminuco,E.Biersack.HierarchicalCodes:HowtoMakeErasureCodesAttractiveforPeer-to-PeerStorageSystems.In8thInternationalConferenceonPeer-to-PeerComputing(P2P).2008]:与再生码使用了一个大的修复度数d≥k不同,层次码使用了一个小的修复度数d<<k。然而,它仍然存在访问单个原始数据块时下载数据量大的问题。针对基于纠删码的分布式存储系统,在存储开销一致的情况下,当部分节点失效时,现有纠删码技术存在着数据修复通信量大和解码开销高等问题,即导致了数据读取性能低。
技术实现思路
本专利技术的技术解决问题是:为克服现有技术的不足,提供一种高效数据读取的容错编码方法,基于intersectingzigzagsetscodes(IZScodes)的精确式再生-层次复合编码——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)个单元组及新生成的两个校验块构成,记为两个校验块分别称为组内顶层row块和组内顶层zigzag块,均由α个数据片连接组成。构造过程如下:h)顶层row块中的每个数据片由复合组内各单元组的row块中的同序号的数据片在有限域中直接相加生成;i)顶层zigzag块中的每个数据片由组内各单元组的zigzag块中的同序号的数据片在有限域中直接相加生成;(4)基于第1层复合组构造得到第2层复合组。一个第2层复合组由若干(设为s2)个第1层复合组及新生成的组内顶层row块和组内顶层zigzag块构成。构造过程如下:j)根据步骤(3)中的方法用不同的单元组构造得到s2个相同结构的第1层复合组k)顶层row块中的每个数据片由前一层各复合组(此时为)的组内顶层row块中的同序号的数据片在有限域中直接相加生成;I)顶层zigzag块中的每个数据片由前一层各复合组的组内顶层zigzag块中的同序号的数据片在有限域中直接相加生成;(5)按照步骤(4)中的方法逐级构建更高层复合组,最终生成IZSHC编码IZSHC(k,r,α)。其中k即为文件的原始数据块个数,r则是所有生成的校验块个数,α为每个数据块划分的片数。每个数据块,包括整个方法中新生成的校验数据块,分别放置到不同的存储节点上。在上述IZSHC码的编码构造方法中本文档来自技高网
...
一种高效数据读取的容错编码方法

【技术保护点】
一种高效数据读取的容错编码方法,其特征在于包括:IZSHC码的编码构造方法与IZSHC码下读取失效数据的方法,IZSHC码的编码构造方法是对要读取的原始数据冗余处理,即将原始文件进行编码来生成冗余数据块,冗余数据块分为原始数据块和校验数据块;IZSHC码下读取失效数据的方法是在原始数据块发生读取失效时利用冗余数据块对失效数据进行解码恢复;其中:(1)IZSHC码的编码构造方法,实现步骤如下:(11)将大小为M字节的原始二进制数据文件进行分块分组分片的预处理得到原始数据组,组中的每一个文件数据块称为原始数据块,每个组均分配有m+1个原始数据块并顺序编号;将每个数据块放置于分布式系统中不同的存储节点上,对应的节点称为原始节点;(12)基于原始数据组构造得到单元组,一个单元组包含一个原始数据组及由原始组内数据块编码生成的两个校验数据块:row块和zigzag块,每个校验块均由α个数据片连接组成;(13)基于单元组构造得到第1层复合组,一个复合组由若干,设为s1个单元组及新生成的两个校验块构成,记为两个校验块分别称为组内顶层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,所处的单元组分别为每个单元组中的原始数据块个数为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。...

【技术特征摘要】
1.一种高效数据读取的容错编码方法,其特征在于包括:IZSHC码的编码构造方法与IZSHC码下读取失效数据的方法,IZSHC码的编码构造方法是对要读取的原始数据冗余处理,即将原始文件进行编码来生成冗余数据块,冗余数据块分为原始数据块和校验数据块;IZSHC码下读取失效数据的方法是在原始数据块发生读取失效时利用冗余数据块对失效数据进行解码恢复;其中:(1)IZSHC码的编码构造方法,实现步骤如下:(11)将大小为M字节的原始二进制数据文件进行分块分组分片的预处理得到原始数据组,组中的每一个文件数据块称为原始数据块,每个组均分配有m+1个原始数据块并顺序编号;将每个数据块放置于分布式系统中不同的存储节点上,对应的节点称为原始节点;(12)基于原始数据组构造得到单元组,一个单元组包含一个原始数据组及由原始组内数据块编码生成的两个校验数据块:row块和zigzag块,每个校验块均由α个数据片连接组成;(13)基于单元组构造得到第1层复合组,一个复合组由若干,设为s1个单元组及新生成的两个校验块构成,记为两个校验块分别称为组内顶层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,所处的单元组分别为p1,p2=0,1,2…,每个单元组中的原始数据块个数为m+1,每个数据块大小为M/k,针对p1,p2的不同取值情况,对应恢复过程如下:(221)若p1=p2,此时l,n位于同一组内,下载组内剩余m+1个未失效数据块即可恢复失效数据,此时下载量为单元组内m+1个数据块大小之和(m+1)·M/k;(222)若p1≠p2,此时l,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,…α顺序编号,为组内每个原始数据块指定一个这些序号的排列组合,再...

【专利技术属性】
技术研发人员:黄震游鹏飞彭宇行吴泉森牛爱民李明昊李慧方长江马嫣汪昌健
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1