本发明涉及计算机系统及存储,特别是涉及一种数据存储方法、一种数据存储装置、一种电子设备和一种存储介质。
背景技术:
1、面对海量数据的存储要求,为了提高存储系统的数据可靠性,保证数据收集节点能以很高的概率实现原始文件的重构,需要在存储原始数据的基础上,额外存储一定数量的冗余,使得在出现部分节点失效的情况下,系统仍然可以正常运行,数据收集节点仍然可以对原始文件实现解码恢复。同时,为了维持系统的可靠性,需要对失效的节点及时进行修复,因此,设计一个良好的节点修复机制十分重要。纠删码(erasure code)属于编码理论中的一种前向纠错技术,最早应用于通信领域以解决数据传输中的丢失与损耗这类问题。由于纠删码技术在防止数据丢失取得了较好的效果,因此被引入存储领域。但是当重建校验节点时,hitchhiker码等纠删码所需的网络流量和磁盘io(input/output,输入输出)较大,导致重建校验节点的速度较慢。
技术实现思路
1、鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据存储方法、一种数据存储装置、一种电子设备和一种存储介质。
2、在本发明的第一个方面,本发明实施例公开了一种数据存储方法,其特征在于,包括:
3、获取磁盘阵列的初始纠删码,所述初始纠删码包括初始第一子条带和初始第二子条带;
4、依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码;依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码;
5、依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码;
6、依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码;
7、确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码;
8、基于所述目标纠删码进行编码存储系统重建,以对数据进行存储。
9、可选地,所述依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码的步骤包括:
10、基于里德所罗门码编码,对所述初始第一子条带的数据码进行编码,生成所述初始第一子条带的校验码。
11、可选地,所述里德所罗门码编码为范德蒙矩阵,所述基于里德所罗门码编码,对所述初始第一子条带的数据码进行编码,生成所述初始第一子条带的校验码的步骤包括:
12、基于范德蒙矩阵,对所述初始第一子条带的数据码进行编码,得到全局校验码;
13、确定所述全局校验码为所述初始第一子条带的校验码。
14、可选地,所述依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码的步骤包括:
15、基于里德所罗门码编码,对所述初始第二子条带的数据码进行编码,生成所述初始第二子条带的校验码。
16、可选地,所述里德所罗门码编码为范德蒙矩阵,所述基于里德所罗门码编码,对所述初始第二子条带的数据码进行编码,生成所述初始第二子条带的校验码的步骤包括:
17、基于范德蒙矩阵,对所述初始第二子条带的数据码进行编码,得到全局校验码;
18、确定所述全局校验码为所述初始第二子条带的校验码。
19、可选地,所述初始第一子条带的数据码的数量为k个,所述初始第二子条带的校验码的数量为m个;所述依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码的步骤包括:
20、依据所述初始第二子条带的m个校验码,将所述初始第一子条带的k个数据码进行分组,得到多组第一数据码组;
21、将所述多组第一数据码组与所述初始第二子条带的校验码进行异或运算,生成所述目标第二子条带的校验码。
22、其中,所述k和所述m为非零正整数,且所述k大于所述m。
23、可选地,所述依据所述初始第二子条带的m个校验码,将所述初始第一子条带的k个数据码进行分组的步骤包括:
24、将所述初始第一子条带的k个数据码划分为m-1组第一数据码组;其中前m-2组第一数据码组包括个所述初始第一子条带的数据码,第m-1组第一数据码组包括个所述初始第一子条带的数据码。
25、可选地,所述将所述多组第一数据码组与所述初始第二子条带的校验码进行异或运算,生成所述目标第二子条带的校验码的步骤包括:
26、将所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成所述目标第二子条带的校验码。
27、可选地,将所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成所述目标第二子条带的校验码的步骤包括:
28、所述m-1组第一数据码组分别与所述初始第二子条带的第二个至第m个校验码进行异或运算,生成m-1个目标第二子条带的校验码;
29、将所述m-1个目标第二子条带的校验码按照所述初始第二子条带的校验码的位置进行填入。
30、可选地,所述k为10。
31、可选地,所述m为4。
32、可选地,所述依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码的步骤包括:
33、将所述m-1个目标第二子条带的校验码与所述初始第一子条带的校验码进行异或运算,生成所述目标第一子条带的校验码。
34、可选地,所述将所述m-1个目标第二子条带的校验码与所述初始第一子条带的校验码进行异或运算,生成所述目标第一子条带的校验码的步骤包括:
35、将所述m-1个目标第二子条带的校验码与所述初始第一子条带的第一个校验码进行异或运算,生成异或值;
36、依据所述异或值和所述初始第一子条带的校验码,生成所述目标第一子条带的校验码。
37、可选地,所述依据所述异或值和所述初始第一子条带的校验码,生成所述目标第一子条带的校验码的步骤包括:
38、将所述异或值更新至所述初始第一子条带的第一个校验码,生成所述目标第一子条带的校验码。
39、可选地,所述目标纠删码包括:目标第一子条带和目标第二子条带,所述确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码的步骤包括:
40、结合所述初始第一子条带的数据码和所述目标第一子条带的校验码确定所述目标第一子条带;
41、结合所述初始第二子条带的数据码和所述目标第二子条带的校验码确定所述目标第二子条带。
42、可选地,所述编码存储系统包括数据节点,所述基于所述目标纠删码进行编码存储系统重建的步骤包括:
43、依据所述目标纠删码对所述数据节点进行重建。
44、可选地,所述编码存储系统包括校验节点,所述基于所述目标纠删码进行编码存储系统重建的步骤包括:
45、依据所述目标纠删码对所述校验节点进行重建。
46、在本发明的第二个方面,本发明实施例公开了一种数据存储装置,包括:
47、获取模块,用于获取磁盘阵列卡的初始纠删码,所述初始纠删码包括初始第一子条带和初始第二子条带;
48、第一编码模块,用于依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码;依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码;
49、第二编码模块,用于依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码;
50、第三编码模块,用于依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码;
51、确定模块,用于确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码;
52、重建模块,用于基于所述目标纠删码进行编码存储系统重建,以对数据进行存储。
53、在本发明的第三个方面,本发明实施例还公开了一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的数据存储方法的步骤。
54、在本发明的第四个方面,本发明实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的数据存储方法的步骤。
55、本发明实施例包括以下优点:
56、本发明实施例通过获取磁盘阵列卡的初始纠删码,所述初始纠删码包括初始第一子条带和初始第二子条带;依据所述初始第一子条带的数据码生成所述初始第一子条带的校验码;依据所述初始第二子条带的数据码生成所述初始第二子条带的校验码;依据所述初始第一子条带的数据码和所述初始第二子条带的校验码,生成目标第二子条带的校验码;依据所述目标第二子条带的校验码和所述初始第一子条带的校验码,生成目标第一子条带的校验码;确定所述初始第一子条带的数据码、所述初始第二子条带的数据码、所述目标第一子条带的校验码和所述目标第二子条带的校验码为目标纠删码;基于所述目标纠删码进行编码存储系统重建,以对数据进行存储。通过依据初始纠删码创建目标纠删码,采用所述目标纠删码进行系统重建,减少节点读取量,提高了校验节点的重建速度。