本申请属于计算机存储,更具体地,涉及一种低修复带宽的纠删码编码方法及装置。
背景技术:
1、分布式存储系统使得企业能够在多个存储节点之间管理大量数据。而分布式存储系统通常由廉价的商用服务器组成,因此具有较高的故障率,所以常常会通过增加数据冗余来防止故障。纠删码编码由于能以较少的存储开销提供相同的容错能力,而受到许多分布式存储系统的青睐。纠删码编码技术通过将原有数据分为若干数据块,然后通过特定的矩阵运算生成若干个校验块,这些数据块与校验块组成一个条带。
2、然而,虽然纠删码编码技术提供了低成本的冗余,但却产生了高额的修复开销。
3、例如,对于一个(n,k)=(14,10)的纠删码编码,n为条带中包括的数据块和校验块的总个数,k为数据块个数。其将原始数据分为10个数据块,然后通过纠删码编码额外生成4个校验块,并将这10个数据块和4个校验块分别存储在分布式存储系统的不同存储节点上。如果任何数据块出现故障而失效,进行修复的存储节点需要通过从其他10个可用存储节点上请求10个数据块并解码来修复这一个失效块,这造成了10倍的带宽放大。
4、过高的修复带宽会影响存储系统的前台存储服务,同时可能造成修复时间延长,使得系统长时间处于一种降级状态,进一步增加了数据丢失的风险。因此如何解决在使用纠删码编码方式的分布式存储系统中的存储节点失效的情况下,存在的过高的修复带宽是目前亟需解决的问题。
技术实现思路
1、针对现有技术的缺陷,本申请的目的在于提供一种低修复带宽的纠删码编码方法及装置,旨在解决相关技术中在使用纠删码编码方式的分布式存储系统中的存储节点失效的情况下,存在的过高的修复带宽的问题。
2、为实现上述目的,第一方面,本申请提供了一种低修复带宽的纠删码编码方法,包括:
3、将包含k个数据块和m个校验块的条带均分成t个子条带,每个子条带包括k个子数据块和m个子校验块,t=m;
4、对每个子条带中的k个子数据块进行分组;
5、按照分组计算校验信息,并将校验信息嵌入到对应子条带中的子校验块中。
6、在一些实施例中,将包含k个数据块和m个校验块的条带均分成t个子条带,包括:
7、将每个数据块均分成t个子数据块;
8、将每个校验块均分成t个子校验块;
9、根据每个数据块中的任一子数据块和每个校验块中的任一子校验块,确定任一子条带。
10、在一些实施例中,对每个子条带中的k个子数据块进行分组,包括:
11、对于t个子条带中的第i个子条带,0<i≤t:
12、将第i个子条带中的k个子数据块分成i′个分组,i′=i。
13、在一些实施例中,将第i个子条带中的k个子数据块分成i′个分组,包括:
14、在k能被i′整除的情况下,将第i个子条带中的k个子数据块均分成i′个分组;
15、在k不能被i′整除的情况下,将第i个子条带中的k个子数据块分成i′个分组;
16、其中,第一个分组至第(i′-1)个分组中包括个子数据块,第i′个分组中包括个子数据块。
17、在一些实施例中,按照分组计算校验信息,并将校验信息嵌入到对应子条带中的子校验块中,包括:
18、对于第i个子条带中的第j个分组,1≤j≤i′,0<i≤t:
19、获取(t-i+1)个线性无关的校验信息,并将所述(t-i+1)个线性无关的校验信息依次嵌入到第j个子条带中的第γ个子校验块中,i≤γ≤m;
20、对于第i″个子条带,1<i″≤t:
21、获取(i″-1)个线性无关的校验信息,并将所述(i″-1)个线性无关的校验信息嵌入到第i″个子条带中的第γ′个子校验块中,1≤γ′≤i″-1;
22、对于第i″′个子条带,1≤i″′<t:
23、获取t个线性无关的校验信息;
24、分别对所述t个线性无关的校验信息取负数,并将取负数后的t个线性无关的校验信息嵌入到第(i″′+1)个子条带中的m个子校验块中。
25、在一些实施例中,包含k个数据块和m个校验块的条带是通过如下方式获取的:
26、将原始数据均分成k个数据块;
27、基于纠删码编码方式,对k个数据块进行编码,生成m个校验块;
28、根据k个数据块和m个校验块,获取条带。
29、第二方面,本申请提供一种低修复带宽的纠删码编码装置,包括:
30、获取模块,用于将包含k个数据块和m个校验块的条带均分成t个子条带,每个子条带包括k个子数据块和m个子校验块,t=m;
31、分组模块,用于对每个子条带中的k个子数据块进行分组;
32、编码模块,用于按照分组计算校验信息,并将校验信息嵌入到对应子条带中的子校验块中。
33、第三方面,本申请提供一种电子设备,包括:至少一个存储器,用于存储程序;至少一个处理器,用于执行存储器存储的程序,当存储器存储的程序被执行时,处理器用于执行第一方面或第一方面的任一些实施例所描述的低修复带宽的纠删码编码方法。
34、第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序在处理器上运行时,使得处理器执行第一方面或第一方面的任一些实施例所描述的低修复带宽的纠删码编码方法。
35、第五方面,本申请提供一种计算机程序产品,当计算机程序产品在处理器上运行时,使得处理器执行第一方面或第一方面的任一些实施例所描述的低修复带宽的纠删码编码方法。
36、总体而言,通过本申请所构思的以上技术方案与现有技术相比,具有以下有益效果:
37、本申请提供的一种低修复带宽的纠删码编码方法及装置,通过将k个数据块和m个校验块组成一个条带,在使用纠删码编码方式的分布式存储系统中,通过将该条带子条带化,并将部分子条带中的子数据块的校验信息嵌入到其他子条带的子校验块中,从而在一个分布式存储系统中的存储节点失效时,能够通过这些嵌入的校验信息来减少部分子条带的修复带宽。
1.一种低修复带宽的纠删码编码方法,其特征在于,包括:
2.如权利要求1所述的低修复带宽的纠删码编码方法,其特征在于,所述将包含k个数据块和m个校验块的条带均分成t个子条带,包括:
3.如权利要求1所述的低修复带宽的纠删码编码方法,其特征在于,所述对每个子条带中的k个子数据块进行分组,包括:
4.如权利要求3所述的低修复带宽的纠删码编码方法,其特征在于,所述将第i个子条带中的k个子数据块分成i′个分组,包括:
5.如权利要求1所述的低修复带宽的纠删码编码方法,其特征在于,所述按照分组计算校验信息,并将所述校验信息嵌入到对应子条带中的子校验块中,包括:
6.如权利要求1-5任一所述的低修复带宽的纠删码编码方法,其特征在于,所述包含k个数据块和m个校验块的条带是通过如下方式获取的:
7.一种低修复带宽的纠删码编码装置,其特征在于,包括:
8.一种电子设备,其特征在于,包括:
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,当所述计算机程序在处理器上运行时,使得所述处理器执行如权利要求1-6任一所述的低修复带宽的纠删码编码方法。
10.一种计算机程序产品,其特征在于,当所述计算机程序产品在处理器上运行时,使得所述处理器执行如权利要求1-6任一所述的低修复带宽的纠删码编码方法。