一种基于纠删码的编码方法以及相关设备技术

技术编号:37102363 阅读:18 留言:0更新日期:2023-04-01 05:02
本申请实施例公开了基于纠删码的编码方法以及相关设备,该方法包括:编码端分批获取多个数据块,并对多个数据块进行编码;对于第i次编码中,编码端获取增量数据块后,采用纠删码对增量数据块进行编码处理,生成增量校验块,增量数据块包括至少一个数据块,i为大于1的整数;编码端基于增量校验块和原始全局校验块进行异或操作,生成第一增量全局校验块,原始全局校验块为编码端在第i

【技术实现步骤摘要】
一种基于纠删码的编码方法以及相关设备


[0001]本申请涉及编码
,尤其涉及一种基于纠删码的编码方法以及相关设备。

技术介绍

[0002]纠删码(erasure code,EC)技术可以应用于数据存储系统,是一种能够减少数据冗余、保证数据可靠性的数据编码方法。(n,k)纠删码表示一类数据块数量为k,校验块数量为n

k的纠删码。一种满足最大距离可分(maximum distance separable,MDS)特性的纠删码具有如下性质:任取n个块中总数为k个数据块和校验块,均可以重构初始的k个数据块。因此对于一组满足MDS特性的(n,k)纠删码,当发生不多于n

k个数据块丢失时,均可以通过上述译码的方式来重构丢失的数据块。
[0003]目前常用的纠删码称为全量纠删码方案。当将写入的数据块累计达到k个数据块时,对k个数据块进行EC编码生成校验块。以数据块为a,校验块为b,具体计算过程如下:
[0004]b=Qa;
[0005]其中,a=[a1,a2,

,a
k
]T
为k个数据块对应的数据向量,Q为(n

k)
×
k编码矩阵,b=[b1,

,b
n

k
]T
为n

k个校验块对应的校验向量,a
i
为一个数据块,b
i
为一个校验块,1≤i≤k。
[0006]对于全量纠删码方案,需要等待写入的数据块的数量达到k后,才能对k个数据块进行EC编码。在写入的数据块的数量未达到k时,需要将这些待编码的数据进行三副本冗余保护以保证数据的可靠性。造成存储空间浪费的问题。

技术实现思路

[0007]第一方面,本申请实施例提出一种基于纠删码的编码方法,所述方法应用于编码端,包括:所述编码端分批获取多个数据块,所述多个数据块属于同一个编码分组;所述编码端采用所述纠删码对所述多个数据块进行编码处理,其中,对于第i次编码中,所述编码端获取增量数据块后,采用所述纠删码对所述增量数据块进行编码处理,生成所述增量校验块,所述增量数据块包括至少一个所述数据块,i为大于1的整数;所述编码端基于所述增量校验块和原始全局校验块进行异或操作,生成第一增量全局校验块,所述原始全局校验块为所述编码端在第i

1次编码中生成所述第一增量全局校验块,所述原始全局校验块用于对原始数据块中损坏的数据块进行重构,所述原始数据块为所述编码端在第i

1次编码前获取的所述数据块,所述原始数据块和所述增量数据块属于所述同一个编码分组,所述第一增量全局校验块用于对所述原始数据块和所述增量数据块中损坏的数据块进行重构。
[0008]具体的,编码端应用于不同场景时,该多个数据块的来源可能不一致。具体的:当编码端应用于存储系统中,则编码端分批获取的多个数据块为上层业务分批写入该存储系统的多次数据块。该上层业务可以是应用层的业务,例如应用程序的写入业务;该上层业务可以是其它客户端的写入业务,此处不作限制。
[0009]当编码端应用于编码系统中,编码端分批获取的多个数据块可以是服务器的待传
输数据。编码分组指的是纠删码所支持编码的数据块集合,纠删码支持的数据块的最大数量为k,即编码分组包括的数据块的最大数量为k,k为正整数。当编码端应用于存储系统时,该编码分组也称为分条。
[0010]所述编码端分批获取多个数据块,所述多个数据块属于同一个编码分组,属于同一个编码分组的数据块使用相同的纠删码进行编码。该编码分组也可以称为全局数据向量,编码端获取的数据块在编码分组中的位置也可以称为该数据块在全局数据向量中的位置。示例性的,为编码端在第i次编码过程中第一个数据块,b
i
+1表示该数据块在全局数据向量(或者编码分组)中的位置,全局数据向量(或者编码分组)为x,x=[x1,x2,

,x
k
]T
,i为大于1的整数。
[0011]本申请实施例中将编码端分批获取的多个数据块按照编码次序划分为:增量数据块和原始数据块。该增量数据块包括至少一个数据块。具体如下:对于第i次编码获取的数据块,称为增量数据块。对于第i

1次编码前获取的数据块,称为原始数据块。例如:i=2,则第2次编码获取的数据块称为增量数据块,第一次编码获取的数据块称为原始数据块。i=3,则第3次编码获取的数据块称为增量数据块,第2次编码和第1次编码获取的数据块称为原始数据块。
[0012]对于第i次编码中,当编码端获取增量数据块后,采用纠删码对增量数据块进行编码处理,生成增量校验块。本申请实施例中,将基于增量数据块生成的校验块称为增量校验块,类似的,将基于原始数据块生成的校验块称为原始校验块。
[0013]编码端在获取增量校验块后,对原始全局校验块进行更新处理。具体的,编码端基于增量校验块和原始全局校验块进行有限域中的异或操作,生成第一增量全局校验块。编码端使用第一增量全局校验块更新(或者替换,又或者覆盖)原始全局校验块。
[0014]本申请实施例提出的基于纠删码的编码方法显著增加了编码的灵活性,避免了全量编码方案应用三副本备份处理对大量的增量数据块进行可靠性保护而导致的高写入开销和写放大问题,有效降低备份处理所占用的存储空间。将编码端的编码处理平均化,避免了全量编码带来的计算热点问题。
[0015]结合第一方面,在第一方面的一种可能实现方式中,当i=2时,所述编码端在所述第i

1次编码中生成所述第一增量全局校验块,包括:所述编码端采用所述纠删码对所述原始数据块进行编码处理,生成所述第i

1次编码的校验块,所述第i

1次编码的校验块等于所述第i

1次编码中生成的所述第一增量全局校验块。
[0016]具体的,对于第1次编码,此时编码端的原始数据块即等于增量数据块等于第1次编码时获取的数据块。示例性的,i=2时,对于第2次编码,当编码端获取增量数据块X2后,采用纠删码对增量数据块进行编码处理,生成增量校验块X2

;对于第1次编码,当编码端获取原始数据块X1后,采用纠删码对该原始数据块进行编码处理,生成原始校验块。
[0017]结合第一方面,在第一方面的一种可能实现方式中,所述编码端采用所述纠删码对所述增量数据块进行编码处理,生成所述增量校验块,包括:所述编码端确定所述增量数据块中的数据块数量;当所述增量数据块中的数据块数量小于或等于第一编码阈值时,所述编码端使用第一增量编码矩阵对所述增量数据块进行编码处理,生成所述增量校验块;或者,当所述增量数据块中的数据块数量大于所述第一编码阈值时,所述编码端使用第一增量校验矩阵和第一中间校验矩阵的逆矩阵对所述增量数据块进行编码处理,生成所述增
量本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于纠删码的编码方法,其特征在于,所述方法应用于编码端,包括:所述编码端分批获取多个数据块,所述多个数据块属于同一个编码分组;所述编码端采用所述纠删码对所述多个数据块进行编码处理,其中,对于第i次编码中,所述编码端获取增量数据块后,采用所述纠删码对所述增量数据块进行编码处理,生成所述增量校验块,所述增量数据块包括至少一个所述数据块,i为大于1的整数;所述编码端基于所述增量校验块和原始全局校验块进行异或操作,生成第一增量全局校验块,所述原始全局校验块为所述编码端在第i

1次编码中生成所述第一增量全局校验块,所述原始全局校验块用于对原始数据块中损坏的数据块进行重构,所述原始数据块为所述编码端在第i

1次编码前获取的所述数据块,所述原始数据块和所述增量数据块属于所述同一个编码分组,所述第一增量全局校验块用于对所述原始数据块和所述增量数据块中损坏的数据块进行重构。2.根据权利要求1所述的方法,其特征在于,所述编码端采用所述纠删码对所述增量数据块进行编码处理,生成所述增量校验块,包括:所述编码端确定所述增量数据块中的数据块数量;当所述增量数据块中的数据块数量小于或等于第一编码阈值t
th
时,所述编码端使用第一增量编码矩阵对所述增量数据块进行编码处理,生成所述增量校验块;或者,当所述增量数据块中的数据块数量大于所述第一编码阈值t
th
时,所述编码端使用第一增量校验矩阵和第一中间校验矩阵H
y
的逆矩阵对所述增量数据块进行编码处理,生成所述增量校验块;其中,所述第一增量编码矩阵为所述纠删码的全局编码矩阵G的子矩阵,所述第一增量校验矩阵与所述第一中间校验矩阵H
y
的逆矩阵的乘积等于所述第一增量编码矩阵所述第一中间校验矩阵H
y
为所述纠删码的全局校验矩阵H的子矩阵。3.根据权利要求2所述的方法,其特征在于,所述编码端确定所述增量数据块中的数据块数量之后,所述方法还包括:所述纠删码支持编码的数据块的最大数量为k,所述编码端使用所述纠删码对k个数据块进行编码处理生成的全局校验块的数量为n

k,所述全局校验块用于对进行编码处理的所述数据块中损坏的数据块进行重构,k为正整数,n为正整数,n大于k;所述编码端根据所述增量数据块,从所述纠删码的全局编码矩阵G中确定所述第一增量编码矩阵其中,所述第一增量编码矩阵为所述增量数据块在所述纠删码的全局编码矩阵G中对应的列进行列并置构成;或者,所述编码端从所述纠删码的全局校验矩阵H中确定所述第一中间校验矩阵H
y
,所述第一中间校验矩阵H
y
为所述纠删码的全局校验矩阵H的后n

k列;或者,所述编码端从所述纠删码的全局校验矩阵H中确定第二中间校验矩阵H
x
,所述第二中间校验矩阵H
x
为所述纠删码的全局校验矩阵H的前k列;所述编码端根据所述增量数据块,从所述第二中间校验矩阵H
x
中确定所述第一增量校
验矩阵所述第一增量校验矩阵为所述增量数据块在所述第二中间校验矩阵H
x
中对应的列进行列并置构成。4.根据权利要求1所述的方法,其特征在于,所述编码端采用所述纠删码对所述增量数据块进行编码处理,生成所述增量校验块,包括:所述纠删码支持编码的数据块的最大数量为k,所述编码端使用所述纠删码对k个数据块进行编码处理生成的全局校验块的数量为n

k,所述全局校验块用于对进行编码处理的所述数据块中损坏的数据块进行重构,k为正整数,n为正整数,n大于k;所述编码端确定所述增量数据块中的数据块数量;当所述增量数据块中的数据块数量小于或等于第一编码阈值时,所述编码端使用第二增量编码矩阵对所述增量数据块进行编码处理,生成所述增量校验块,所述第二增量编码矩阵为第一增量校验矩阵和第三中间校验矩阵H
ys
的逆矩阵的乘积,所述第一增量校验矩阵为所述增量数据块在第二中间校验矩阵中对应的列进行列并置构成,所述第二中间校验矩阵H
x
为所述纠删码的全局校验矩阵H的前k列,所述第三中间校验矩阵的逆矩阵的稠密性低于第一中间校验矩阵的逆矩阵,所述第一中间校验矩阵H
y
为所述纠删码的全局校验矩阵H的后n

k列,矩阵[H
x
|H
ys
]的任意(n

k)阶子矩阵均为非奇异的;或者,当所述增量数据块中的数据块数量大于所述第一编码阈值时,所述编码端使用所述第一增量校验矩阵与所述第三中间校验矩阵H
ys
的逆矩阵对所述增量数据块进行编码处理,生成所述增量校验块。5.根据权利要求4所述的方法,其特征在于,所述编码端确定所述增量数据块中的数据块数量之后,所述方法还包括:所述编码端根据所述增量数据块,从所述纠删码的全局校验矩阵中确定所述第一中间校验矩阵H
y
,所述第一中间校验矩阵H
y
为所述纠删码的全局校验矩阵H的后n

k列;或者,所述编码端根据所述增量数据块,从所述纠删码的全局校验矩阵中确定所述第二中间校验矩阵H
x
,所述第二中间校验矩阵H
x
为所述纠删码的全局校验矩阵H的前k列;所述编码端根据所述增量数据块,从所述第二中间校验矩阵H
x
中确定所述第一增量校验矩阵所述第一增量校验矩阵为所述增量数据块在所述第二中间校验矩阵中对应的列进行列并置构成;所述编码端根据所述纠删码的全局校验矩阵H,确定所述第三中间校验矩阵H
ys
,所述第三中间校验矩阵的逆矩阵的稠密性低于所述第一中间校验矩阵的逆矩阵,矩阵[H
x
|H
ys
]的任意(n

k)阶子矩阵均为非奇异的;所述编码端根据所述第二中间校验矩阵H
x
和所述第三中间校验矩阵H
ys
,确定所述第二增量编码矩阵其中,所述第二增量编码矩阵为所述第一增量校验矩阵和所述第三中间校验矩阵H
ys
的逆矩阵的乘积。6.根据权利要求4

5中任一项所述的方法,其特征在于,所述编码端基于所述增量校验块和原始全局校验块进行异或操作,生成所述第一增量全局校验块之后,所述方法还包括:当所述原始数据块和所述增量数据块中的数据块数量之和等于k时,所述编码端使用第一校验矩阵对所述第一增量全局校验块y进行编码,生成第二增量全局校验块y
**
,所述第
一校验矩阵为所述第一中间校验矩阵H
y
的逆矩阵与所述第三中间校验矩阵H
ys
的乘积,所述第二增量全局校验块用于对k个所述原始数据块和所述增量数据块中损坏的数据块进行重构。7.根据权利要求1所述的方法,其特征在于,所述编码端采用所述纠删码对所述增量数据块进行编码处理,生成所述增量校验块,包括:所述编码端使用第一增量校验矩阵对所述增量数据块进行编码处理,生成所述增量校验块;其中,所述第一增量校验矩阵为所述纠删码的全局校验矩阵H的子矩阵。8.根据权利要求7所述的方法,其特征在于,所述方法还包括:所述纠删码支持编码的数据块的最大数量为k,所述编码端使用所述纠删码对k个数据块进行编码处理生成的全局校验块的数量为n

k,所述全局校验块用于对进行编码处理的所述数据块中损坏的数据块进行重构,k为正整数,n为正整数,n大于k;所述编码端根据所述增量数据块,从所述纠删码的全局校验矩阵中确定第一中间校验矩阵H
y
,所述第一中间校验矩阵H
y
为所述纠删码的全局校验矩阵H的后n

k列;所述编码端从所述纠删码的全局校验矩阵H中确定第二中间校验矩阵H
x
,所述第二中间校验矩阵H
x
为所述纠删码的全局校验矩阵H的前k列;所述编码端根据所述增量数据块,从所述第二中间校验矩阵H
x
中确定所述第一增量校验矩阵所述第一增量校验矩阵为所述增量数据块在所述第二中间校验矩阵H
x
中对应的列进行列并置构成。9.根据权利要求8所述的方法,其特征在于,所述编码端基于所述增量校验块和所述原始全局校验块进行异或操作,生成所述第一增量全局校验块之后,所述方法还包括:当所述原始数据块和所述增量数据块中的数据块数量之和等于k时,所述编码端使用所述第一中间校验矩阵的逆矩阵对所述第一中间增量全局检验块y进行编码,生成第三增量全局校验块y
***
,所述第三增量全局校验块用于对k个所述原始数据块和所述增量数据块中损坏的数据块进行重构。10.根据权利要求7

9中任一项所述的方法,其特征在于,所述方法还包括:所述编码端对所述第一增量全局校验块进行三副本...

【专利技术属性】
技术研发人员:陈祥玉裴家宁刘少腾张晓阳
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1