一种数据编码方法、装置、设备及介质转让专利

申请号 : CN202210119841.9

文献号 : CN114153651B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴睿振陈静静张永兴张旭王凛

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本申请公开了一种数据编码方法、装置、设备及介质,包括:获取基于原始编码方法确定的存储纠删结构,其中,所述存储纠删结构中对应第一预设数量的硬盘以及第二预设数量的条带,所述硬盘包括数据盘以及校验盘;基于第一划分规则对所述存储纠删结构中所述第二预设数量的条带进行分组,以得到不同条带小组,并基于第二划分规则对每组内不同所述条带对应的数据盘进行分组,以得到不同数据盘小组;根据所述不同条带小组以及所述不同数据盘小组并按照预设编码规则对待更新校验块进行更新,以完成数据编码,如此一来,本申请通过改进原始编码方法,使得解码时所需要读取的数据量减少,进一步使得解码速度得到较大的提高。

权利要求 :

1.一种数据编码方法,其特征在于,包括:获取基于原始编码方法确定的存储纠删结构,其中,所述存储纠删结构中对应第一预设数量的硬盘以及第二预设数量的条带,所述硬盘包括数据盘以及校验盘;

基于第一划分规则对所述存储纠删结构中所述第二预设数量的条带进行分组,以得到不同条带小组,并基于第二划分规则对每组内不同所述条带对应的数据盘进行分组,以得到不同数据盘小组;

根据所述不同条带小组以及所述不同数据盘小组并按照预设编码规则对待更新校验块进行更新,以完成数据编码;

其中,所述基于第二划分规则对每组内不同所述条带对应的数据盘进行分组,以得到不同数据盘小组具体为:

确定出每组内不同所述条带对应的数据块数量与所述待更新校验块数量;计算所述数据块数量与所述待更新校验块数量的比值,并当所述比值不为整数时,对所述比值进行向上取整;以所述比值为划分长度,对每组内不同所述条带对应的数据盘进行分组,并当每组内不同所述条带对应的未划分数据盘数量小于所述划分长度时,将所述未划分数据盘分为一组,以得到不同数据盘小组。

2.根据权利要求1所述的数据编码方法,其特征在于,当所述第二预设数量为偶数时,所述基于第一划分规则对所述存储纠删结构中所述第二预设数量的条带进行分组,以得到不同条带小组,包括:

将所述存储纠删结构中的每两个所述条带分为一组,以得到不同条带小组。

3.根据权利要求1所述的数据编码方法,其特征在于,当所述第二预设数量为奇数时,所述基于第一划分规则对所述存储纠删结构中所述第二预设数量的条带进行分组,以得到不同条带小组,还包括:

将所述存储纠删结构中的每两个所述条带分为一组,然后将所述存储纠删结构中剩余的一个所述条带分为一组,以得到不同条带小组,并对包括所述一个所述条带的所述条带小组使用所述原始编码方法进行编码。

4.根据权利要求1所述的数据编码方法,其特征在于,还包括:基于预设运算原则从所有所述校验盘中确定出一个校验盘,并对所述一个校验盘中的所述校验块使用原始编码方法进行编码,然后将所述所有校验盘中剩余的所述校验盘中的所述校验块确定为所述待更新校验块。

5.根据权利要求1至4任一项所述的数据编码方法,其特征在于,所述根据所述分组后的所述存储纠删结构并按照预设编码规则对待更新校验块进行更新,包括:对每个所述数据盘小组以及所述待更新校验分别进行排序;

在每个所述条带小组中,在确定出所述待更新校验块的序号后,利用本组内偶数条带对应的校验盘中的所述待更新校验块,以及所述本组内奇数条带对应的数据盘中与所述待更新校验块的序号具有相同序号的所述数据盘小组中的数据块,对所述本组内偶数条带对应的校验盘中的所述待更新校验块进行更新。

6.根据权利要求1至4任一项所述的数据编码方法,其特征在于,所述根据所述分组后的所述存储纠删结构并按照预设编码规则对待更新校验块进行更新,包括:对每个所述数据盘小组以及所述待更新校验分别进行排序;

在每个所述条带小组中,在确定出所述待更新校验块的序号后,利用本组内奇数条带对应的校验盘中的所述待更新校验块,以及所述本组内偶数条带对应的数据盘中与所述待更新校验块的序号具有相同序号的所述数据盘小组中的数据块,对所述本组内奇数条带对应的校验盘中的所述待更新校验块进行更新。

7.一种数据编码装置,其特征在于,包括:纠删结构获取模块,用于获取基于原始编码方法确定的存储纠删结构,其中,所述存储纠删结构中对应第一预设数量的硬盘以及第二预设数量的条带,所述硬盘包括数据盘以及校验盘;

分组模块,用于基于第一划分规则对所述存储纠删结构中所述第二预设数量的条带进行分组,以得到不同条带小组,并基于第二划分规则对每组内不同所述条带对应的数据盘进行分组,以得到不同数据盘小组;

更新模块,用于根据所述不同条带小组以及所述不同数据盘小组并按照预设编码规则对待更新校验块进行更新,以完成数据编码;

其中,所述分组模块具体用于:确定出每组内不同所述条带对应的数据块数量与所述待更新校验块数量;计算所述数据块数量与所述待更新校验块数量的比值,并当所述比值不为整数时,对所述比值进行向上取整;以所述比值为划分长度,对每组内不同所述条带对应的数据盘进行分组,并当每组内不同所述条带对应的未划分数据盘数量小于所述划分长度时,将所述未划分数据盘分为一组,以得到不同数据盘小组。

8.一种电子设备,其特征在于,包括:存储器,用于保存计算机程序;

处理器,用于执行所述计算机程序,以实现如权利要求1至6任一项所述的数据编码方法。

9.一种计算机可读存储介质,其特征在于,用于保存计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的数据编码方法。

说明书 :

一种数据编码方法、装置、设备及介质

技术领域

[0001] 本发明涉及数据存储技术领域,特别涉及一种数据编码方法、装置、设备及介质。

背景技术

[0002] 伴随着通讯技术和网络科技的迅速发展,数字化信息呈指数爆炸式增长,数据存储技术也因此迎来了巨大的挑战。存储系统中数据的可靠性问题以及存储系统的能耗问题
越来越被人们所关注,现如今面对如此庞大的数据规模,存储系统中数据的可靠性和存储
系统中包含的组件数量成反比关系,即存储系统组件数越多,存储系统中数据的可靠性就
越低。根据相关调查显示,在一个由600个磁盘构成的互联网数据中心中,每月大约会有30
个磁盘出现损坏的情况,在大规模存储系统中,磁盘故障造成的数据可靠性下降是相当严
重的问题,对此人们展开了相关容错技术的研究。纠删码(Erasure Coding,EC)是一种数据
保护方法,它将数据分割成片段,把冗余数据扩展、编码,并将其存储在不同的位置,比如磁
盘、存储节点或者其它地理位置。将原始数据分割成k个数据块,并根据编码矩阵生成m编码
块,将n(n=k+m)块分布到不同的服务器上,当不大于m块数据出现错误时,只需要k块就可以
恢复原来的数据。
[0003] 现如今环境下,大条带纠删是一个比较明确的应用需求,大条带纠删中的大条带指的是所组成纠删下数据和校验的条带数都比较大,这种情况下,数据的安全性能够得到
很大的提高,减少硬盘检查的需求几率。但是在大条带纠删的情况下,在对数据进行恢复
时,利用现有的纠删算法,需要取出的数据量太大,由于目前限制存储工作速度的主要是硬
盘的IOPS(Input/Output Operations Per Second,每秒进行读写操作的次数),因此当数
据量很大时,数据读取速度就会变慢,进一步导致数据恢复速度变慢。
[0004] 因此如何在大条带纠删场景下,降低数据恢复时所需要读取的数据量,提高数据恢复速度是本领域亟待解决的问题。

发明内容

[0005] 有鉴于此,本发明的目的在于提供一种数据编码方法、装置、设备及介质,能够在大条带纠删场景下,降低数据恢复时所需要读取的数据量,提高数据恢复速度,其具体方案
如下:
[0006] 第一方面,本申请公开了一种数据编码方法,包括:
[0007] 获取基于原始编码方法确定的存储纠删结构,其中,所述存储纠删结构中对应第一预设数量的硬盘以及第二预设数量的条带,所述硬盘包括数据盘以及校验盘;
[0008] 基于第一划分规则对所述存储纠删结构中所述第二预设数量的条带进行分组,以得到不同条带小组,并基于第二划分规则对每组内不同所述条带对应的数据盘进行分组,
以得到不同数据盘小组;
[0009] 根据所述不同条带小组以及所述不同数据盘小组并按照预设编码规则对待更新校验块进行更新,以完成数据编码。
[0010] 可选的,所述基于第一划分规则对所述存储纠删结构中所述第二预设数量的条带进行分组,以得到不同条带小组,包括:
[0011] 将所述存储纠删结构中的每两个所述条带分为一组,以得到不同条带小组。
[0012] 可选的,所述基于第一划分规则对所述存储纠删结构中所述第二预设数量的条带进行分组,以得到不同条带小组,还包括:
[0013] 将所述存储纠删结构中的每两个所述条带分为一组,然后将所述存储纠删结构中剩余的一个所述条带分为一组,以得到不同条带小组,并对包括所述一个所述条带的所述
条带小组使用所述原始编码方法进行编码。
[0014] 可选的,所述基于第二划分规则对每组内不同所述条带对应的数据盘进行分组,以得到不同数据盘小组,包括:
[0015] 确定出每组内不同所述条带对应的数据块数量与所述待更新校验块数量;
[0016] 计算所述数据块数量与所述待更新校验块数量的比值,并当所述比值不为整数时,对所述比值进行向上取整;
[0017] 以所述比值为划分长度,对每组内不同所述条带对应的数据盘进行分组,并当每组内不同所述条带对应的未划分数据盘数量小于所述划分长度时,将所述未划分数据盘分
为一组,以得到不同数据盘小组。
[0018] 可选的,所述数据编码方法,还包括:基于预设运算原则从所有所述校验盘中确定出一个校验盘,并对所述一个校验盘中的所述校验块使用原始编码方法进行编码,然后将
所述所有校验盘中剩余的所述校验盘中的所述校验块确定为所述待更新校验块。
[0019] 可选的,所述根据所述分组后的所述存储纠删结构并按照预设编码规则对待更新校验块进行更新,包括:
[0020] 对每个所述数据盘小组以及所述待更新校验分别进行排序;
[0021] 在每个所述条带小组中,在确定出所述待更新校验块的序号后,利用本组内偶数条带对应的校验盘中的所述待更新校验块,以及所述本组内奇数条带对应的数据盘中与所
述待更新校验块的序号具有相同序号的所述数据盘小组中的所述数据块,对所述本组内偶
数条带对应的校验盘中的所述待更新校验块进行更新。
[0022] 可选的,所述根据所述分组后的所述存储纠删结构并按照预设编码规则对待更新校验块进行更新,包括:
[0023] 对每个所述数据盘小组以及所述待更新校验分别进行排序;
[0024] 在每个所述条带小组中,在确定出所述待更新校验块的序号后,利用本组内奇数条带对应的校验盘中的所述待更新校验块,以及所述本组内偶数条带对应的数据盘中与所
述待更新校验块的序号具有相同序号的所述数据盘小组中的所述数据块,对所述本组内奇
数条带对应的校验盘中的所述待更新校验块进行更新。
[0025] 第二方面,本申请公开了一种数据编码装置,包括:
[0026] 纠删结构获取模块,用于获取基于原始编码方法确定的存储纠删结构,其中,所述存储纠删结构中对应第一预设数量的硬盘以及第二预设数量的条带,所述硬盘包括数据盘
以及校验盘;
[0027] 分组模块,用于基于第一划分规则对所述存储纠删结构中所述第二预设数量的条带进行分组,以得到不同条带小组,并基于第二划分规则对每组内不同所述条带对应的数
据盘进行分组,以得到不同数据盘小组;
[0028] 更新模块,用于根据所述不同条带小组以及所述不同数据盘小组并按照预设编码规则对待更新校验块进行更新,以完成数据编码。
[0029] 第三方面,本申请公开了一种电子设备,包括:
[0030] 存储器,用于保存计算机程序;
[0031] 处理器,用于执行所述计算机程序,以实现前述公开的数据编码方法。
[0032] 第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的数据编码方法。
[0033] 可见,本申请提出一种数据编码方法,包括:获取基于原始编码方法确定的存储纠删结构,其中,所述存储纠删结构中对应第一预设数量的硬盘以及第二预设数量的条带,所
述硬盘包括数据盘以及校验盘;基于第一划分规则对所述存储纠删结构中所述第二预设数
量的条带进行分组,以得到不同条带小组,并基于第二划分规则对每组内不同所述条带对
应的数据盘进行分组,以得到不同数据盘小组;根据所述不同条带小组以及所述不同数据
盘小组并按照预设编码规则对待更新校验块进行更新,以完成数据编码,如此一来,本申请
通过改进原始编码方法,使得在基于改进后编码方法进行解码时,解码所需要读取的数据
量减少,进一步使得解码速度得到较大的提高。

附图说明

[0034] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
提供的附图获得其他的附图。
[0035] 图1为本申请公开的一种数据编码方法流程图;
[0036] 图2为本申请公开的一种具体的数据编码方法流程图;
[0037] 图3为本申请公开的一种具体的数据编码方法流程图;
[0038] 图4公开了一种基于原始编码方法的纠删码编码结构示意图;
[0039] 图5公开了一种K=5,R=4情况下每盘4条带的原始存储纠删结构;
[0040] 图6为本申请公开的一种改进后的K=5,R=4情况下每盘4条带的存储纠删结构;
[0041] 图7为本申请公开的一种编码硬件结构示意图;
[0042] 图8为本申请公开的一种数据编码装置结构示意图;
[0043] 图9为本申请公开的一种电子设备结构图。

具体实施方式

[0044] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
[0045] 在大条带纠删的情况下,在对数据进行恢复时,利用现有的纠删算法,需要取出的数据量太大,由于目前限制存储工作速度的主要是硬盘的IOPS,因此当数据量很大时,数据
读取速度就会变慢,进一步导致数据恢复速度变慢。
[0046] 为此,本申请实施例提出一种数据编码方案,能够在大条带纠删场景下,降低数据恢复时所需要读取的数据量,提高数据恢复速度。
[0047] 本申请实施例公开了一种数据编码方法,参见图1所示,该方法包括:
[0048] 步骤S11:获取基于原始编码方法确定的存储纠删结构,其中,所述存储纠删结构中对应第一预设数量的硬盘以及第二预设数量的条带,所述硬盘包括数据盘以及校验盘。
[0049] 本实施例中,首先获取基于原始编码方法确定的存储纠删结构,通过所述存储纠删结构可以直观的看出条带与数据盘以及校验盘的对应关系,具体的,所述存储纠删结构
中对应第一预设数量的硬盘以及第二预设数量的条带,所述硬盘包括数据盘以及校验盘,
所述数据盘用来存来数据块,所述校验盘用来存储校验块。
[0050] 步骤S12:基于第一划分规则对所述存储纠删结构中所述第二预设数量的条带进行分组,以得到不同条带小组,并基于第二划分规则对每组内不同所述条带对应的数据盘
进行分组,以得到不同数据盘小组。
[0051] 本实施例中,首先对基于条带对硬盘进行存储容量的划分,具体的,利用所述第二预设数量的条带对每个硬盘进行划分,然后基于第一划分规则对所述存储纠删结构中所述
第二预设数量的条带进行分组,以得到不同条带小组,并基于第二划分规则对每组内不同
所述条带对应的数据盘进行分组,以得到不同数据盘小组。
[0052] 步骤S13:根据所述不同条带小组以及所述不同数据盘小组并按照预设编码规则对待更新校验块进行更新,以完成数据编码。
[0053] 本实施例中,在得到所述不同条带小组以及所述不同数据盘小组后,基于所述不同条带小组以及所述不同数据盘小组并按照预设编码规则对待更新校验块进行更新,以完
成数据编码。
[0054] 需要指出的是,本实施例中,确定所述待更新校验块的具体过程是:基于预设运算原则从所有所述校验盘中确定出一个校验盘,并对所述一个校验盘中的所述校验块使用原
始编码方法进行编码,然后将所述所有校验盘中剩余的所述校验盘中的所述校验块确定为
所述待更新校验块,本实施例中,所述预设运算原则是指最简运算原则,也即,所述待更新
校验块是基于能够使整个运算过程最简化的原则确定的。
[0055] 可见,本申请提出一种数据编码方法,包括:获取基于原始编码方法确定的存储纠删结构,其中,所述存储纠删结构中对应第一预设数量的硬盘以及第二预设数量的条带,所
述硬盘包括数据盘以及校验盘;基于第一划分规则对所述存储纠删结构中所述第二预设数
量的条带进行分组,以得到不同条带小组,并基于第二划分规则对每组内不同所述条带对
应的数据盘进行分组,以得到不同数据盘小组;根据所述不同条带小组以及所述不同数据
盘小组并按照预设编码规则对待更新校验块进行更新,以完成数据编码,如此一来,本申请
通过改进原始编码方法,使得在基于改进后编码方法进行解码时,解码所需要读取的数据
量减少,进一步使得解码速度得到较大的提高。
[0056] 本申请实施例公开了一种具体的数据编码方法,参见图2所示,该方法包括:
[0057] 步骤S21:获取基于原始编码方法确定的存储纠删结构,其中,所述存储纠删结构中对应第一预设数量的硬盘以及第二预设数量的条带,所述硬盘包括数据盘以及校验盘。
[0058] 关于上述步骤更加具体的工作过程参见前述公开的实施例,在此不做赘述。
[0059] 步骤S22:将所述存储纠删结构中的每两个所述条带分为一组,以得到不同条带小组。
[0060] 本实施例中,在进行条带分组时,需要根据条带数量定义分组规则,具体的,所述条带数量为所述第二预设数量,当所述第二预设数量为偶数时,将所述存储纠删结构中的
每两个所述条带分为一组,以得到不同条带小组;此外,当所述第二预设数量为奇数时,将
所述存储纠删结构中的每两个所述条带分为一组,然后将所述存储纠删结构中剩余的一个
所述条带分为一组,以得到不同条带小组,并对包括所述一个所述条带的所述条带小组使
用所述原始编码方法进行编码。需要指出的是,所述对包括所述一个所述条带的所述条带
小组使用所述原始编码方法进行编码是指,包括所述一个所述条带的所述条带小组不参与
重新编码,按照所述原始编码方法进行编码。
[0061] 步骤S23:确定出每组内不同所述条带对应的数据块数量与所述待更新校验块数量;计算所述数据块数量与所述待更新校验块数量的比值,并当所述比值不为整数时,对所
述比值进行向上取整;以所述比值为划分长度,对每组内不同所述条带对应的数据盘进行
分组,并当每组内不同所述条带对应的未划分数据盘数量小于所述划分长度时,将所述未
划分数据盘分为一组,以得到不同数据盘小组。
[0062] 本实施例中,在得到不同小组之后,要基于第二划分规则对每组内不同所述条带对应的数据盘进行分组,以得到不同数据盘小组,具体的,确定出每组内不同所述条带对应
的数据块数量与所述待更新校验块数量;计算所述数据块数量与所述待更新校验块数量的
比值,并当所述比值不为整数时,对所述比值进行向上取整;以所述比值为划分长度,对每
组内不同所述条带对应的数据盘进行分组,并当每组内不同所述条带对应的未划分数据盘
数量小于所述划分长度时,将所述未划分数据盘分为一组,以得到不同数据盘小组。
[0063] 步骤S24:对每个所述数据盘小组以及所述待更新校验分别进行排序;在每个所述条带小组中,在确定出所述待更新校验块的序号后,利用本组内偶数条带对应的校验盘中
的所述待更新校验块,以及所述本组内奇数条带对应的数据盘中与所述待更新校验块的序
号具有相同序号的所述数据盘小组中的所述数据块,对所述本组内偶数条带对应的校验盘
中的所述待更新校验块进行更新。
[0064] 本实施例中,在得到所述不同条带小组与所述不同数据盘小组后,根据所述不同条带小组以及所述不同数据盘小组并按照预设编码规则对待更新校验块进行更新,以完成
数据编码,具体的,对每个所述数据盘小组以及所述待更新校验分别进行排序;在每个所述
条带小组中,在确定出所述待更新校验块的序号后,利用本组内偶数条带对应的校验盘中
的所述待更新校验块,以及所述本组内奇数条带对应的数据盘中与所述待更新校验块的序
号具有相同序号的所述数据盘小组中的所述数据块,对所述本组内偶数条带对应的校验盘
中的所述待更新校验块进行更新,以完成数据编码。
[0065] 可见,本申请提出一种数据编码方法,包括:获取基于原始编码方法确定的存储纠删结构,其中,所述存储纠删结构中对应第一预设数量的硬盘以及第二预设数量的条带,所
述硬盘包括数据盘以及校验盘;将所述存储纠删结构中的每两个所述条带分为一组,以得
到不同条带小组;确定出每组内不同所述条带对应的数据块数量与所述待更新校验块数
量;计算所述数据块数量与所述待更新校验块数量的比值,并当所述比值不为整数时,对所
述比值进行向上取整;以所述比值为划分长度,对每组内不同所述条带对应的数据盘进行
分组,并当每组内不同所述条带对应的未划分数据盘数量小于所述划分长度时,将所述未
划分数据盘分为一组,以得到不同数据盘小组;对每个所述数据盘小组以及所述待更新校
验分别进行排序;在每个所述条带小组中,在确定出所述待更新校验块的序号后,利用本组
内偶数条带对应的校验盘中的所述待更新校验块,以及所述本组内奇数条带对应的数据盘
中与所述待更新校验块的序号具有相同序号的所述数据盘小组中的所述数据块,对所述本
组内偶数条带对应的校验盘中的所述待更新校验块进行更新,如此一来,本申请通过改进
原始编码方法,使得在基于改进后编码方法进行解码时,解码所需要读取的数据量减少,进
一步使得解码速度得到较大的提高。
[0066] 本申请实施例公开了一种具体的数据编码方法,参见图3所示,该方法包括:
[0067] 步骤S31:获取基于原始编码方法确定的存储纠删结构,其中,所述存储纠删结构中对应第一预设数量的硬盘以及第二预设数量的条带,所述硬盘包括数据盘以及校验盘。
[0068] 关于上述步骤更加具体的工作过程参见前述公开的实施例,在此不做赘述。
[0069] 步骤S32:将所述存储纠删结构中的每两个所述条带分为一组,以得到不同条带小组。
[0070] 本实施例中,在进行条带分组时,需要根据条带数量定义分组规则,具体的,所述条带数量为所述第二预设数量,当所述第二预设数量为偶数时,将所述存储纠删结构中的
每两个所述条带分为一组,以得到不同条带小组;此外,当所述第二预设数量为奇数时,将
所述存储纠删结构中的每两个所述条带分为一组,然后将所述存储纠删结构中剩余的一个
所述条带分为一组,以得到不同条带小组,并对包括所述一个所述条带的所述条带小组使
用所述原始编码方法进行编码。需要指出的是,所述对包括所述一个所述条带的所述条带
小组使用所述原始编码方法进行编码是指,包括所述一个所述条带的所述条带小组不参与
重新编码,按照所述原始编码方法进行编码。
[0071] 步骤S33:确定出每组内不同所述条带对应的数据块数量与所述待更新校验块数量;计算所述数据块数量与所述待更新校验块数量的比值,并当所述比值不为整数时,对所
述比值进行向上取整;以所述比值为划分长度,对每组内不同所述条带对应的数据盘进行
分组,并当每组内不同所述条带对应的未划分数据盘数量小于所述划分长度时,将所述未
划分数据盘分为一组,以得到不同数据盘小组。
[0072] 本实施例中,在得到不同小组之后,要基于第二划分规则对每组内不同所述条带对应的数据盘进行分组,以得到不同数据盘小组,具体的,确定出每组内不同所述条带对应
的数据块数量与所述待更新校验块数量;计算所述数据块数量与所述待更新校验块数量的
比值,并当所述比值不为整数时,对所述比值进行向上取整;以所述比值为划分长度,对每
组内不同所述条带对应的数据盘进行分组,并当每组内不同所述条带对应的未划分数据盘
数量小于所述划分长度时,将所述未划分数据盘分为一组,以得到不同数据盘小组。
[0073] 步骤S34:对每个所述数据盘小组以及所述待更新校验分别进行排序;在每个所述条带小组中,在确定出所述待更新校验块的序号后,利用本组内奇数条带对应的校验盘中
的所述待更新校验块,以及所述本组内偶数条带对应的数据盘中与所述待更新校验块的序
号具有相同序号的所述数据盘小组中的所述数据块,对所述本组内奇数条带对应的校验盘
中的所述待更新校验块进行更新。
[0074] 本实施例中,在得到所述不同条带小组与所述不同数据盘小组后,根据所述不同条带小组以及所述不同数据盘小组并按照预设编码规则对待更新校验块进行更新,以完成
数据编码,具体的,对每个所述数据盘小组以及所述待更新校验分别进行排序;在每个所述
条带小组中,在确定出所述待更新校验块的序号后,利用本组内奇数条带对应的校验盘中
的所述待更新校验块,以及所述本组内偶数条带对应的数据盘中与所述待更新校验块的序
号具有相同序号的所述数据盘小组中的所述数据块,对所述本组内奇数条带对应的校验盘
中的所述待更新校验块进行更新。
[0075] 需要指出的是,本实施例中,为了获得最大的出错数量,在按照预设编码规则对待更新校验块进行更新时,必须保证一个条带存有原始数据块,因此上述编码规则中只能是
利用本组内偶数条带对应的校验盘中的所述待更新校验块,以及所述本组内奇数条带对应
的数据盘中与所述待更新校验块的序号具有相同序号的所述数据盘小组中的所述数据块,
对所述本组内偶数条带对应的校验盘中的所述待更新校验块进行更新,或利用本组内奇数
条带对应的校验盘中的所述待更新校验块,以及所述本组内偶数条带对应的数据盘中与所
述待更新校验块的序号具有相同序号的所述数据盘小组中的所述数据块,对所述本组内奇
数条带对应的校验盘中的所述待更新校验块进行更新。两种情况不能同时存在。
[0076] 可见,本申请提出一种数据编码方法,包括:获取基于原始编码方法确定的存储纠删结构,其中,所述存储纠删结构中对应第一预设数量的硬盘以及第二预设数量的条带,所
述硬盘包括数据盘以及校验盘;将所述存储纠删结构中的每两个所述条带分为一组,以得
到不同条带小组;确定出每组内不同所述条带对应的数据块数量与所述待更新校验块数
量;计算所述数据块数量与所述待更新校验块数量的比值,并当所述比值不为整数时,对所
述比值进行向上取整;以所述比值为划分长度,对每组内不同所述条带对应的数据盘进行
分组,并当每组内不同所述条带对应的未划分数据盘数量小于所述划分长度时,将所述未
划分数据盘分为一组,以得到不同数据盘小组;对每个所述数据盘小组以及所述待更新校
验分别进行排序;在每个所述条带小组中,在确定出所述待更新校验块的序号后,利用本组
内奇数条带对应的校验盘中的所述待更新校验块,以及所述本组内偶数条带对应的数据盘
中与所述待更新校验块的序号具有相同序号的所述数据盘小组中的所述数据块,对所述本
组内奇数条带对应的校验盘中的所述待更新校验块进行更新,如此一来,本申请通过改进
原始编码方法,使得在基于改进后编码方法进行解码时,解码所需要读取的数据量减少,进
一步使得解码速度得到较大的提高。
[0077] 图4公开了一种基于原始编码方法的纠删码编码结构示意图。
[0078] 1、纠删码(Erasure Code)属于编码理论中的一种前向纠错技术,最早应用于通信领域以解决数据传输中的丢失与损耗的问题。由于纠删码技术在防止数据丢失上取得了较
好的效果,因此被引入存储领域。纠删码可以在保证相同可靠性的前提下有效地降低存储
开销,因此纠删码技术被广泛地应用于各大存储系统以及数据中心例如微软的Azure、
Facebook的F4等。纠删码是指将原始数据分割成k个数据块,并根据编码矩阵生成m编码块,
将n(n=k+m)块分布到不同的服务器上。当不大于m块数据出现错误时,只需要k块就可以恢
复原来的数据,其参数配置如下所示:
[0079] (1)k:数据块。k表示将原始数据划分的块数和恢复原始数据的最小块数。k值越小,发生故障时,数据重构的代价越大;k值越大,需要多路数据拷贝,增加网络和IO的负载。
[0080] (2)m:编码块。m影响数据保存的可靠性和存储成本。取值越大,对故障的容忍度大,数据的冗余度也会增加,存储成本也会提高。
[0081] (3)n:生成块数(n=k+m)。
[0082] (4)有效存储比:k/n。
[0083] 原始纠删码编码一般利用范德蒙或柯西矩阵,参见图4所示,图中待编码的数据块为k=5个,编码需求为m=3,B11,B12等部分可以是范德蒙矩阵或柯西矩阵,最终的生成码块
为D+C部分,总量为k+m=8个,有效存储比为:k/n=5/8。这样的纠删系统,可以对K个D进行编
码,得到m个C。纠删系统可在m个编码实现后很对系统中任意m个错误进行解码恢复。
[0084] 2、在实际存储系统中较常见的有应用在分布式环境下的RS码(Reed‑Solomon Code)。RS码与两个参数k和r相关。给定两个正整数k和r,RS码将k个数据块编码为r个额外
的校验块。而r个校验块基于范德蒙矩阵或柯西矩阵进行编码的方式就称为利用范德蒙矩
阵或柯西矩阵编码的RS纠删码,基于范德蒙矩阵的RS纠删码以及基于柯西矩阵的RS纠删码
的具体编码过程分别如下所示:
[0085] ;
[0086] ;
[0087] 上述公式中的k*k矩阵对应的就是k个原始数据块,r*k矩阵对应的就是编码矩阵,通过与原始数据D1到Dk相乘,得到新添加的P1到Pr就是编码所得到的r个校验数据。当其中
任意做多r个数据在传输中出错或丢失,需要纠错时,即用剩余数据对应矩阵的逆矩阵与数
据相乘,即会得到原始数据块D1到Dk。以D1到Dr数据丢失,进行解码为例,过程如下所示:
[0088] ;
[0089] 由此可知,纠删码的核心概念是构建一个可逆的编码矩阵用以产生校验数据,其逆矩阵可经过计算恢复原始数据。常见的RS纠删码使用的是上面介绍的柯西矩阵或范德蒙
矩阵,这样的优势是所得到的矩阵可逆,其任意子矩阵也都可逆,并且矩阵的大小扩充简
单。
[0090] 现有纠删的算法使用的大部分都是RS算法,RS算法具有计算简单、扩展灵活等优势,因此在工业界具有广泛的应用。RS算法一般采用的是如上面所介绍的范德蒙或柯西的
算法。这里无论采用何种算法,本申请将其编码的关系和解码的关系分别设置为:
[0091] ;
[0092] ;
[0093] 利用任意一个大条带纠删k=5,r=4的情况下使用标准范德蒙的RS算法进行编解码构建的纠删系统进行举例。则此时的编码关系如下所示:
[0094] ;
[0095] 在上述的编码关系中,对本申请提出的上述编码和解码的关系的公式中以p1进行举例:
[0096] ;
[0097] 同理可得到解码时对应的 的关系,其中, 为异或符号。
[0098] 图5公开了一种K=5,R=4情况下每盘4条带的原始存储纠删结构。
[0099] 假设将每个硬盘分为四个条带,不考虑负载均衡,只考虑数据和校验的关系,则存储纠删结构的关系参见图5所示。图5中的p11,p12,p13,p14是利用条带1通过编码关系的公
式生成的校验数据,相应的,其他条带编码关系相同。则在原始的编码情况下,上述编码可
以恢复1‑4个任意盘的错误。当发生一个错误,且错误为盘1的情况下,原始的RS编码需要求
出盘2‑5的数据以及盘6‑9的任意一个校验,来完成解码运算,此时所需取出的数据块数为
20。
[0100] 本申请提出了一种以编码复杂度为代价,减少解码恢复所需要读取的数据量的算法,在硬件实现中,因为编码时所读取的数据可以并行应用于不同的校验块产生,因此实际
的编码速度并没有受到影响,而解码的速度会因为读取数据的减少,得到较大的提升。
[0101] 图6为本申请公开的一种改进后的K=5,R=4情况下每盘4条带的存储纠删结构。
[0102] 具体实施过程参见图6所示:
[0103] (1)对条带基于偶数分组:具体的,将每两个条带组分为一组。
[0104] (2)基于校验盘数量对数据盘进行分组:分组方式如下所示:
[0105] ;
[0106] 当除不尽时,则向上取整,每组对应的数据盘个数基于n划分为整数。以上述情况举例,k=5,r=4,则:
[0107] ;
[0108] 则每组基于n=2进行整数的划分,划分为分别:2,2,1个元素。
[0109] 上述例子任意划分为:盘1和盘2一组,盘3和盘4一组,盘5一组。
[0110] (3)将每组内奇数(或偶数)的校验生成增加组内偶数(或奇数)的步骤(2)中的数据盘,以图6进行举例说明,考虑将奇数的数据盘增加给偶数的校验盘,以组1举例,则分组
增加为:
[0111] ;
[0112] ;
[0113] ;
[0114] 同理,相应的组2的偶数条带也利用奇数条带的数据做同样更新,以上,完成所有的编码。需要指出的是,这里的编码运算没有改变原本的RS编码的生成方式,对于额外添加
给偶数(或奇数)的校验码的增加的异或数据,只需要在进行其本身涉及的编码时,将其同
时送给更新的校验码块进行运算即可。
[0115] 图7为本申请公开的一种编码硬件结构示意图。
[0116] 以p24’的生成举例,其硬件结构参见图7,由此可知,原本的编码顺序和方式无需改变,对于新增的对于校验块的新增部分,通过将其他编码涉及的数据块直接传输新增即
可,这里的操作并行进行,无需增加新的数据读取和搬移,因此对速度和面积没有影响。
[0117] 在解码部分:当一个盘发生错误时,以盘5发生错误为例进行说明,此时发生错误为d15,d25,d35,d45,首先读取d21‑d24,d41‑d44全部8个数据块,利用p21和p41分别进行恢
复,得到d25,d45两个数据块。然后再取出p24’和p44’,基于上述分组增加的公式可知,此时
已经取得d21‑d25和d41‑d45,则通过上述分组增加的公式可直接求得d15和d35。也就是说,
完成一个盘错误时的恢复,仅需从硬盘中取出d21‑d24,d41‑d44,p21,p41,p24’,p44’总共
12个数据块。相比原始方法需要取出20个数据块相比,减少了一部分数据读取需求,一定程
度上提高读取速度。同理在发生一个以上错误的时候,也有不同的速度提升,这里不再举例
说明。如此一来,本深情提出了一种针对大条带纠删下纠错恢复速度改进的纠删硬件加速
器方案,针对用户当今实际的需求下,发生错误的恢复速度要求高的情况,针对限制存储纠
删结构速度的主要原因是数据搬运的IOPS限制的特性,在原有RS纠删方法的前提下,改进
编码方案,使得解码需求发生时,可以减少数据的搬运量以提高解码速度。
[0118] 相应的,本申请实施例还公开了一种数据编码装置,参见图8所示,该装置包括:
[0119] 纠删结构获取模块11,用于获取基于原始编码方法确定的存储纠删结构,其中,所述存储纠删结构中对应第一预设数量的硬盘以及第二预设数量的条带,所述硬盘包括数据
盘以及校验盘;
[0120] 分组模块12,用于基于第一划分规则对所述存储纠删结构中所述第二预设数量的条带进行分组,以得到不同条带小组,并基于第二划分规则对每组内不同所述条带对应的
数据盘进行分组,以得到不同数据盘小组;
[0121] 更新模块13,用于根据所述不同条带小组以及所述不同数据盘小组并按照预设编码规则对待更新校验块进行更新,以完成数据编码。
[0122] 其中,关于上述各个模块更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0123] 可见,本申请提出一种数据编码方法,包括:获取基于原始编码方法确定的存储纠删结构,其中,所述存储纠删结构中对应第一预设数量的硬盘以及第二预设数量的条带,所
述硬盘包括数据盘以及校验盘;基于第一划分规则对所述存储纠删结构中所述第二预设数
量的条带进行分组,以得到不同条带小组,并基于第二划分规则对每组内不同所述条带对
应的数据盘进行分组,以得到不同数据盘小组;根据所述不同条带小组以及所述不同数据
盘小组并按照预设编码规则对待更新校验块进行更新,以完成数据编码,如此一来,本申请
通过改进原始编码方法,使得在基于改进后编码方法进行解码时,解码所需要读取的数据
量减少,进一步使得解码速度得到较大的提高。
[0124] 进一步的,本申请实施例还提供了一种电子设备。图9是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
[0125] 图9为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、显示屏23、输入输出接口24、通信接口25、
电源26、和通信总线27。其中,所述存储器22 用于存储计算机程序,所述计算机程序由所述
处理器21加载并执行,以实现前述任一实施例公开的数据编码方法中的相关步骤。另外,本
实施例中的电子设备20具体可以为电子计算机。
[0126] 本实施例中,电源26用于为电子设备20上的各硬件设备提供工作电压;通信接口25能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适
用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口24,用于获
取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,
在此不进行具体限定。
[0127] 另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括计算机程序221,存储方式可以是短暂存储或者永久存
储。其中,计算机程序221除了包括能够用于完成前述任一实施例公开的由电子设备20执行
的数据编码方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算
机程序。
[0128] 进一步的,本申请实施例还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的数据编码方法。
[0129] 关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0130] 本申请书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装
置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分
说明即可。
[0131] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和
软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些
功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业
技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应
认为超出本申请的范围。
[0132] 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存
储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD‑ROM、或技术
领域内所公知的任意其它形式的存储介质中。
[0133] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作
之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意
在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那
些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者
设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排
除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0134] 以上对本申请所提供的一种数据编码方法、装置、设备、存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只
是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申
请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理
解为对本申请的限制。