一种数据存储纠删方法、装置、设备及可读存储介质与流程

文档序号:31067617发布日期:2022-08-09 20:38阅读:69来源:国知局
一种数据存储纠删方法、装置、设备及可读存储介质与流程

1.本发明涉及存储技术领域,特别是涉及一种数据存储纠删方法、装置、设备及计算机可读存储介质。


背景技术:

2.面对海量数据的存储要求,分布式存储以其成本低廉,可扩展性好等优势逐渐取代了统一存储的主导地位。分布式存储系统多以成本相对较低的磁盘作为存储节点,存储节点的可靠性不高,并且一个分布式存储系统通常包含很多的节点,由于软硬件故障,人为失误等原因,系统常常发生节点失效的情况。为了提高分布式存储系统的数据可靠性,保证数据收集节点能以较高的概率实现原始文件的重构,需要在存储原始数据的基础上,额外存储一定数量的冗余,使得在出现部分节点失效的情况下,系统仍然可以正常运行,数据收集节点仍然可以对原始文件实现解码恢复。
3.纠删码(erasure code)属于编码理论中的一种前向纠错技术,由于纠删码技术在防止数据丢失取得了较好的效果,因此被引入存储领域。纠删码的种类众多,在实际存储系统中较常见的有应用在分布式环境下的rs码(reed-solomon code)。rs码与两个参数k和r相关。给定两个正整数k和r,rs码将k个数据块编码为r个额外的校验块。而r个校验块基于范德蒙矩阵或柯西矩阵进行编码的方式就称为利用范德蒙矩阵编码的rs纠删码。可知纠删码的核心概念是构建一个可逆的编码矩阵用以产生校验数据,其逆矩阵可经过计算恢复原始数据。
4.常见的rs纠删码逆矩阵的计算采用的是高斯消元法,这种通用解法适用于任何可逆矩阵的求逆,虽然计算规律化,却会引入大量冗余运算。在数据纠删过程需要对磁盘中未被破坏的数据进行整体调用,需调用的数据量大,数据调用耗时长,数据纠删效率低。
5.综上所述,如何有效地解决现有的数据存储纠删方法需调用的数据量大,数据调用耗时长,数据纠删效率低等问题,是目前本领域技术人员急需解决的问题。


技术实现要素:

6.本发明的目的是提供一种数据存储纠删方法,该方法较大地降低了数据纠删时的数据调用量,减少了数据调用耗时,提高了数据纠删效率;本发明的另一目的是提供一种数据存储纠删装置、设备及计算机可读存储介质。
7.为解决上述技术问题,本发明提供如下技术方案:
8.一种数据存储纠删方法,包括:
9.将每个磁盘中的数据集划分为两个数据块,得到各第一数据块和各第二数据块;
10.从第一数值个磁盘中选取各所述第一数据块,从剩余的各所述磁盘中选取各所述第二数据块,得到各一轮选取数据块,并根据磁盘总数和各所述一轮选取数据块构建第一纠删范德蒙矩阵;
11.获取预设矩阵行数,对所述预设矩阵行数除以三向下取整得到第二数值,利用所
述预设矩阵行数与二倍的所述第二数值进行差值计算,得到第三数值;
12.利用各所述磁盘中除各所述一轮选取数据块之外的各剩余第一数据块和各剩余第二数据块,构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行至第所述第三数值行;
13.对各所述一轮选取数据块进行二轮选取,得到各二轮选取数据块,利用各所述剩余第一数据块、各所述剩余第二数据块和各所述二轮选取数据块构建所述第二纠删范德蒙矩阵中原有范德蒙矩阵的第所述第三数值行的下一行至第四数值行;其中,所述第四数值为所述第三数值与所述第二数值的加和;
14.利用各所述剩余第一数据块、各所述剩余第二数据块以及各所述一轮选取数据块中除各所述二轮选取数据块之外的各数据块,构建所述第二纠删范德蒙矩阵中原有范德蒙矩阵的第所述第四数值行的下一行至第所述预设矩阵行数行;
15.当存在数据块丢失时,利用所述第一纠删范德蒙矩阵和/或所述第二纠删范德蒙矩阵进行数据纠删。
16.在本发明的一种具体实施方式中,利用各所述磁盘中除各所述一轮选取数据块之外的各剩余第一数据块和各剩余第二数据块,构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行至第所述第三数值行,包括:
17.以各所述剩余第一数据块和各所述剩余第二数据块为各行参数的底数,构建所述第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行至第所述第三数值行。
18.在本发明的一种具体实施方式中,从第一数值个磁盘中选取各所述第一数据块,包括:
19.对磁盘总数除以二向下取整得到所述第一数值;
20.从所述第一数值个磁盘中选取各所述第一数据块;
21.对各所述一轮选取数据块进行二轮选取,得到各二轮选取数据块,包括:
22.对所述第一数值除以二向下取整得到第五数值;
23.从各所述一轮选取数据块中选取所述第五数值个所述第一数据块,并选取所述第一数值与所述第五数值差值个所述第二数据块,得到各所述二轮选取数据块。
24.在本发明的一种具体实施方式中,利用各所述剩余第一数据块、各所述剩余第二数据块和各所述二轮选取数据块构建所述第二纠删范德蒙矩阵中原有范德蒙矩阵的第所述第三数值行的下一行至第四数值行,包括:
25.以各所述剩余第一数据块和各所述剩余第二数据块为各行参数的底数构建原有范德蒙矩阵的第所述第三数值行的下一行至第所述第四数值行,得到所述第二纠删范德蒙矩阵中原有范德蒙矩阵的第所述第三数值行的下一行至第所述第四数值行的第一因子;
26.以各所述二轮选取数据块为各行参数的底数构建原有范德蒙矩阵的第一行至第所述第二数值行,得到所述第二纠删范德蒙矩阵中原有范德蒙矩阵的第所述第三数值行的下一行至第所述第四数值行的第二因子;
27.分别对每行中的第一因子和第二因子进行异或计算得到所述第二纠删范德蒙矩阵中原有范德蒙矩阵的第所述第三数值行的下一行至第所述第四数值行;其中,每行中第一因子包含的参数的指数与第二因子包含的参数的指数的差值为所述第三数值。
28.在本发明的一种具体实施方式中,利用各所述剩余第一数据块、各所述剩余第二数据块以及各所述一轮选取数据块中除各所述二轮选取数据块之外的各数据块,构建所述
第二纠删范德蒙矩阵中原有范德蒙矩阵的第所述第四数值行的下一行至第所述预设矩阵行数行,包括:
29.以各所述剩余第一数据块和各所述剩余第二数据块为各行参数的底数构建原有范德蒙矩阵的第所述第四数值行的下一行至第所述预设矩阵行数行,得到所述第二纠删范德蒙矩阵中原有范德蒙矩阵的第所述第四数值行的下一行至第所述预设矩阵行数行的第三因子;
30.以各所述一轮选取数据块中除各所述二轮选取数据块之外的各数据块为各行参数的底数构建原有范德蒙矩阵的第一行至第所述第二数值行,得到所述第二纠删范德蒙矩阵中原有范德蒙矩阵的第所述第四数值行的下一行至第所述预设矩阵行数行的第四因子;
31.分别对每行中的第三因子和第四因子进行异或计算得到所述第二纠删范德蒙矩阵中原有范德蒙矩阵的第所述第四数值行的下一行至第所述预设矩阵行数行;其中,每行中第三因子包含的参数的指数与第四因子包含的参数的指数的差值为所述第四数值。
32.在本发明的一种具体实施方式中,当存在数据块丢失时,利用所述第一纠删范德蒙矩阵和/或所述第二纠删范德蒙矩阵进行数据纠删操作,包括:
33.当存在数据块丢失的磁盘个数不超过所述第二数值时,利用所述第二纠删范德蒙矩阵进行数据纠删操作。
34.在本发明的一种具体实施方式中,当存在数据块丢失的磁盘个数不超过所述第二数值时,利用所述第二纠删范德蒙矩阵进行数据纠删操作,包括:
35.当丢失的数据块为同一磁盘中的第一数据块和第二数据块时,利用所述第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行和第所述第三数值行的下一行进行数据纠删,或者利用所述第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行和第所述第五数值行的下一行进行数据纠删。
36.一种数据存储纠删装置,包括:
37.数据块划分模块,用于将每个磁盘中的数据集划分为两个数据块,得到各第一数据块和各第二数据块;
38.矩阵构建模块,用于从第一数值个磁盘中选取各所述第一数据块,从剩余的各所述磁盘中选取各所述第二数据块,得到各一轮选取数据块,并根据磁盘总数和各所述一轮选取数据块构建第一纠删范德蒙矩阵;
39.数值计算模块,用于获取预设矩阵行数,对所述预设矩阵行数除以三向下取整得到第二数值,利用所述预设矩阵行数与二倍的所述第二数值进行差值计算,得到第三数值;
40.第一矩阵行构建模块,用于利用各所述磁盘中除各所述一轮选取数据块之外的各剩余第一数据块和各剩余第二数据块,构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行至第所述第三数值行;
41.第二矩阵行构建模块,用于对各所述一轮选取数据块进行二轮选取,得到各二轮选取数据块,利用各所述剩余第一数据块、各所述剩余第二数据块和各所述二轮选取数据块构建所述第二纠删范德蒙矩阵中原有范德蒙矩阵的第所述第三数值行的下一行至第四数值行;其中,所述第四数值为所述第三数值与所述第二数值的加和;
42.第三矩阵行构建模块,用于利用各所述剩余第一数据块、各所述剩余第二数据块以及各所述一轮选取数据块中除各所述二轮选取数据块之外的各数据块,构建所述第二纠
删范德蒙矩阵中原有范德蒙矩阵的第所述第四数值行的下一行至第所述预设矩阵行数行;
43.数据纠删模块,用于当存在数据块丢失时,利用所述第一纠删范德蒙矩阵和/或所述第二纠删范德蒙矩阵进行数据纠删操作。
44.一种数据存储纠删设备,包括:
45.存储器,用于存储计算机程序;
46.处理器,用于执行所述计算机程序时实现如前所述数据存储纠删方法的步骤。
47.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前所述数据存储纠删方法的步骤。
48.本发明所提供的数据存储纠删方法,将每个磁盘中的数据集划分为两个数据块,得到各第一数据块和各第二数据块;从第一数值个磁盘中选取各第一数据块,从剩余的各磁盘中选取各第二数据块,得到各一轮选取数据块,并根据磁盘总数和各一轮选取数据块构建第一纠删范德蒙矩阵;获取预设矩阵行数,对预设矩阵行数除以三向下取整得到第二数值,利用预设矩阵行数与二倍的第二数值进行差值计算,得到第三数值;利用各磁盘中除各一轮选取数据块之外的各剩余第一数据块和各剩余第二数据块,构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行至第第三数值行;对各一轮选取数据块进行二轮选取,得到各二轮选取数据块,利用各剩余第一数据块、各剩余第二数据块和各二轮选取数据块构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第第三数值行的下一行至第四数值行;其中,第四数值为第三数值与第二数值的加和;利用各剩余第一数据块、各剩余第二数据块以及各一轮选取数据块中除各二轮选取数据块之外的各数据块,构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第第四数值行的下一行至第预设矩阵行数行;当存在数据块丢失时,利用第一纠删范德蒙矩阵和/或第二纠删范德蒙矩阵进行数据纠删。
49.由上述技术方案可知,通过将各磁盘中的数据集分别划分为两个数据块,通过数据块有效选取操作进行纠删范德蒙矩阵的构建,使得在利用构建得到的纠删范德蒙矩阵进行数据纠删时,根据当前数据丢失情况仅需对磁盘中的部分数据块进行调用,较大地降低了数据纠删时的数据调用量,减少了数据调用耗时,提高了数据纠删效率。
50.相应的,本发明还提供了与上述数据存储纠删方法相对应的数据存储纠删装置、设备和计算机可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
51.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
52.图1为本发明实施例中数据存储纠删方法的一种实施流程图;
53.图2为本发明实施例中数据存储纠删方法的另一种实施流程图;
54.图3为本发明实施例中一种数据存储纠删装置的结构框图;
55.图4为本发明实施例中一种数据存储纠删设备的结构框图;
56.图5为本实施例提供的一种数据存储纠删设备的具体结构示意图。
具体实施方式
57.为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
58.参见图1,图1为本发明实施例中数据存储纠删方法的一种实施流程图,该方法可以包括以下步骤:
59.s101:将每个磁盘中的数据集划分为两个数据块,得到各第一数据块和各第二数据块。
60.分布式存储系统中包含多个磁盘存储节点,将每个磁盘中的数据集划分为两个数据块,如划分为a数据块和b数据块,得到各第一数据块和各第二数据块,假设共有k个数据块,各第一数据块分别用b1,b2,

,bk表示,各第二数据块分别用a1,a2,

,ak表示。
61.s102:从第一数值个磁盘中选取各第一数据块,从剩余的各磁盘中选取各第二数据块,得到各一轮选取数据块,并根据磁盘总数和各一轮选取数据块构建第一纠删范德蒙矩阵。
62.在将每个磁盘中的数据集划分为两个数据块,得到各第一数据块和各第二数据块之后,从第一数值个磁盘中选取各第一数据块,从剩余的各磁盘中选取各第二数据块,得到各一轮选取数据块,并根据磁盘总数和各一轮选取数据块构建第一纠删范德蒙矩阵。假设磁盘总数为10,第一数值为4,选取到的各第一数据块可以为b1,b2,

,b10中的任意四个,如选取的为b1,b2,b3,b5,则从剩余的各磁盘中选取各第二数据块为a4,a6,a7,a8,a9,a10。
63.s103:获取预设矩阵行数,对预设矩阵行数除以三向下取整得到第二数值,利用预设矩阵行数与二倍的第二数值进行差值计算,得到第三数值。
64.预先设置矩阵行数,如设置为r,对预设矩阵行数除以三向下取整得到第二数值,利用预设矩阵行数与二倍的第二数值进行差值计算,得到第三数值。假设矩阵行数为10,对10除以三向下取整得到3,3即为第二数值,10-2*3=4,第三数值即为4。
65.s104:利用各磁盘中除各一轮选取数据块之外的各剩余第一数据块和各剩余第二数据块,构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行至第三数值行。
66.在对各磁盘中的第一数据块和第二数据块进行一轮选取之后,利用各磁盘中除各一轮选取数据块之外的各剩余第一数据块和各剩余第二数据块,构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行至第三数值行。
67.承接步骤s102和步骤s103中的举例,当选取到的各第一数据块为b1,b2,b3,b5,选取得到各第二数据块为a4,a6,a7,a8,a9,a10时,各磁盘中除各一轮选取数据块之外的各剩余第一数据块为b4,b6,b7,b8,b9,b10,各剩余第二数据块为a1,a2,a3,a5。利用a1,a2,a3,b4,a5,b6,b7,b8,b9,b10构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行至第四行。
68.s105:对各一轮选取数据块进行二轮选取,得到各二轮选取数据块,利用各剩余第一数据块、各剩余第二数据块和各二轮选取数据块构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第三数值行的下一行至第四数值行;其中,第四数值为第三数值与第二数值的加和。
69.在对各磁盘中的第一数据块和第二数据块进行一轮选取之后,对各一轮选取数据块进行二轮选取,得到各二轮选取数据块,利用各剩余第一数据块、各剩余第二数据块和各
二轮选取数据块构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第三数值行的下一行至第四数值行,第四数值即为第三数值与第二数值的加和。
70.承接步骤s102至步骤s104中的举例,在得到各一轮选取数据块b1,b2,b3,a4,b5,a6,a7,a8,a9,a10之后,对各一轮选取数据块进行二轮选取,假设选取的各二轮选取数据块分别为b1,a4,b5,a6。利用a1,a2,a3,b4,a5,b6,b7,b8,b9,b10和b1,a4,b5,a6构建第五行至第七行。
71.s106:利用各剩余第一数据块、各剩余第二数据块以及各一轮选取数据块中除各二轮选取数据块之外的各数据块,构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行。
72.在对各一轮选取数据块进行二轮选取之后,利用各剩余第一数据块、各剩余第二数据块以及各一轮选取数据块中除各二轮选取数据块之外的各数据块,构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行。
73.承接步骤s102至步骤s105中的举例,当各二轮选取数据块分别为b1,a4,b5,a6时,各一轮选取数据块中除各二轮选取数据块之外的各数据块为b2,b3,a7,a8,a9,a10。利用a1,a2,a3,b4,a5,b6,b7,b8,b9,b10和b2,b3,a7,a8,a9,a10构建第八行至第十行。
74.s107:当存在数据块丢失时,利用第一纠删范德蒙矩阵和/或第二纠删范德蒙矩阵进行数据纠删。
75.当确定存在数据块丢失时,利用第一纠删范德蒙矩阵和/或第二纠删范德蒙矩阵进行数据纠删。即根据根据数据块丢失数量,适应性选择是仅选用第二纠删范德蒙矩阵进行数据纠删,还是选用第一纠删范德蒙矩阵和第二纠删范德蒙矩阵一并进行数据纠删。
76.由上述技术方案可知,通过将各磁盘中的数据集分别划分为两个数据块,通过数据块有效选取操作进行纠删范德蒙矩阵的构建,使得在利用构建得到的纠删范德蒙矩阵进行数据纠删时,根据当前数据丢失情况仅需对磁盘中的部分数据块进行调用,较大地降低了数据纠删时的数据调用量,减少了数据调用耗时,提高了数据纠删效率。
77.需要说明的是,基于上述实施例,本发明实施例还提供了相应的改进方案。在后续实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在下文的改进实施例中不再一一赘述。
78.参见图2,图2为本发明实施例中数据存储纠删方法的另一种实施流程图,该方法可以包括以下步骤:
79.s201:将每个磁盘中的数据集划分为两个数据块,得到各第一数据块和各第二数据块。
80.s202:对磁盘总数除以二向下取整得到第一数值。
81.获取磁盘总数k,对磁盘总数除以二向下取整得到第一数值。当k为偶数时,第一数值即为k/2,当k为偶数时,第一数值即为(k-1)/2。
82.承接上述实施例的举例,假设磁盘总数为10,对10除以二向下取整得到5,此时第一数值为5。
83.s203:从第一数值个磁盘中选取各第一数据块,从剩余的各磁盘中选取各第二数据块,得到各一轮选取数据块,并根据磁盘总数和各一轮选取数据块构建第一纠删范德蒙矩阵。
84.承接步骤s202的举例,当k为偶数时,假设选取的各一数据块分别为b2,b4,b6,b8,

,bk,从剩余的各磁盘中选取各第二数据块,各二数据块分别为为a1,a3,a5,a7,

,ak-1,得到各一轮选取数据块,即为a1,b2,a3,b4,a5,b6,a7,b8,

,ak-1,bk,构建得到的第一纠删范德蒙矩阵为:
[0085][0086]
其中,i代表k*k的单位阵。
[0087]
当k为偶数时,各一轮选取数据块,即为a1,b2,a3,b4,a5,b6,a7,b8,

,bk-1,ak,构建得到的第一纠删范德蒙矩阵为:
[0088][0089]
从而分别得到磁盘总数为偶数时的第一纠删范德蒙矩阵a1和磁盘总数为奇数时的第一纠删范德蒙矩阵a2。
[0090]
通过将第一数值设置为磁盘总数除以二向下取整,保证了用于构建第一纠删范德蒙矩阵的各第一数据块和第二数据块数量几乎相等,即当磁盘总数为偶数时,构建第一纠删范德蒙矩阵的各第一数据块和第二数据块数量相等,当磁盘总数为奇数时,构建第一纠删范德蒙矩阵的各第一数据块和第二数据块数量相差一个。
[0091]
s204:获取预设矩阵行数,对预设矩阵行数除以三向下取整得到第二数值,利用预设矩阵行数与二倍的第二数值进行差值计算,得到第三数值。
[0092]
获取预设矩阵行数,对预设矩阵行数除以三向下取整得到第二数值,设第二数值为t,利用预设矩阵行数与二倍的第二数值进行差值计算,得到第三数值,设第三数值为s,
[0093]
s205:以各剩余第一数据块和各剩余第二数据块为各行参数的底数,构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行至第三数值行。
[0094]
以各剩余第一数据块和各剩余第二数据块为各行参数的底数,构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行至第三数值行。当k为偶数时,第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行至第三数值行即为:
[0095][0096]
当k为奇数时,第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行至第三数值行即为:
[0097][0098]
从而分别得到磁盘总数为偶数或奇数时的第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行至第第三数值行。
[0099]
s206:对第一数值除以二向下取整得到第五数值。
[0100]
在对磁盘总数除以二向下取整得到第一数值之后,对第一数值除以二向下取整得到第五数值。
[0101]
s207:从各一轮选取数据块中选取第五数值个第一数据块,并选取第一数值与第五数值差值个第二数据块,得到各二轮选取数据块。
[0102]
从各一轮选取数据块中选取第五数值个第一数据块,并选取第一数值与第五数值差值个第二数据块,得到各二轮选取数据块。
[0103]
当k为偶数时,各二轮选取数据块分别为a1,b2,...,b
k/2-1
,a
k/2
;当k为奇数时,各二轮选取数据块分别为a1,b2,...,a
(k-1)/2-1
,b
(k-1)/2

[0104]
s208:以各剩余第一数据块和各剩余第二数据块为各行参数的底数构建原有范德蒙矩阵的第三数值行的下一行至第四数值行,得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第三数值行的下一行至第四数值行的第一因子;其中,第四数值为第三数值与第二数值的加和。
[0105]
当k为偶数时,各剩余第一数据块和各剩余第二数据块为b1,a2,b3,a4,b5,a6,b7,a8,

,bk-1,ak,第二纠删范德蒙矩阵中原有范德蒙矩阵的第三数值行的下一行至第四数值行的第一因子为:
[0106][0107]
当k为奇数时,各剩余第一数据块和各剩余第二数据块为b1,a2,b3,a4,b5,a6,b7,a8,

,ak-1,bk,第二纠删范德蒙矩阵中原有范德蒙矩阵的第三数值行的下一行至第四数值行的第一因子为:
[0108][0109]
从而分别得到磁盘总数为偶数或奇数时,第二纠删范德蒙矩阵中原有范德蒙矩阵的第三数值行的下一行至第四数值行的第一因子。
[0110]
s209:以各二轮选取数据块为各行参数的底数构建原有范德蒙矩阵的第一行至第二数值行,得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第三数值行的下一行至第四数值行的第二因子。
[0111]
当k为偶数时,第二纠删范德蒙矩阵中原有范德蒙矩阵的第三数值行的下一行至第四数值行的第二因子为:
[0112][0113]
当k为奇数时,第二纠删范德蒙矩阵中原有范德蒙矩阵的第三数值行的下一行至第四数值行的第二因子为:
[0114][0115]
从而分别得到磁盘总数为偶数或奇数时,第二纠删范德蒙矩阵中原有范德蒙矩阵的第三数值行的下一行至第四数值行的第二因子。
[0116]
s210:分别对每行中的第一因子和第二因子进行异或计算得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第三数值行的下一行至第四数值行;其中,每行中第一因子包含的参数的指数与第二因子包含的参数的指数的差值为第三数值。
[0117]
当k为偶数时,分别对每行中的第一因子和第二因子进行异或计算得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第三数值行的下一行至第四数值行:
[0118][0119]
当k为奇数时,分别对每行中的第一因子和第二因子进行异或计算得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第三数值行的下一行至第四数值行:
[0120][0121]
从而分别得到磁盘总数为偶数或奇数时,第二纠删范德蒙矩阵中原有范德蒙矩阵的第三数值行的下一行至第四数值行。
[0122]
s211:以各剩余第一数据块和各剩余第二数据块为各行参数的底数构建原有范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行,得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行的第三因子。
[0123]
当k为偶数时,以各剩余第一数据块和各剩余第二数据块为各行参数的底数构建原有范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行,得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行的第三因子:
[0124][0125]
当k为奇数时,以各剩余第一数据块和各剩余第二数据块为各行参数的底数构建原有范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行,得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行的第三因子:
[0126][0127]
从而分别得到磁盘总数为偶数或奇数时,第二纠删范德蒙矩阵中原有范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行的第三因子。
[0128]
s212:以各一轮选取数据块中除各二轮选取数据块之外的各数据块为各行参数的底数构建原有范德蒙矩阵的第一行至第二数值行,得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行的第四因子。
[0129]
当k为偶数时,以各一轮选取数据块中除各二轮选取数据块之外的各数据块为各行参数的底数构建原有范德蒙矩阵的第一行至第二数值行,得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行的第四因子:
[0130]
[0131]
当k为奇数时,以各一轮选取数据块中除各二轮选取数据块之外的各数据块为各行参数的底数构建原有范德蒙矩阵的第一行至第二数值行,得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行的第四因子:
[0132][0133]
从而分别得到磁盘总数为偶数或奇数时,第二纠删范德蒙矩阵中原有范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行的第四因子。
[0134]
s213:分别对每行中的第三因子和第四因子进行异或计算得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行;其中,每行中第三因子包含的参数的指数与第四因子包含的参数的指数的差值为第四数值。
[0135]
当k为偶数时,分别对每行中的第三因子和第四因子进行异或计算得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行:
[0136][0137]
当k为奇数时,分别对每行中的第三因子和第四因子进行异或计算得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行:
[0138][0139]
从而分别得到磁盘总数为偶数或奇数时,第二纠删范德蒙矩阵中原有范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行。
[0140]
当k为偶数时,第二纠删范德蒙矩阵为:
[0141][0142]
当k为奇数时,第二纠删范德蒙矩阵为:
[0143][0144]
从而分别得到磁盘总数为偶数或奇数时的第二纠删范德蒙矩阵。
[0145]
通过对第一数值除以二向下取整得到第五数值,从各一轮选取数据块中选取第五数值个第一数据块,并选取第一数值与第五数值差值个第二数据块,保证了用于构建第二纠删范德蒙矩阵的第三数值行的下一行至第四数值行的第一数据块数量以及第二数据块数量与用于构建第二纠删范德蒙矩阵的第四数值行的下一行至第预设矩阵行数行的第一数据块数量以及第二数据块数量更相近。
[0146]
s214:当存在数据块丢失的磁盘个数不超过第二数值时,利用第二纠删范德蒙矩阵进行数据纠删操作。
[0147]
当存在数据块丢失的磁盘个数不超过第二数值时,利用第二纠删范德蒙矩阵进行数据纠删操作。
[0148]
当损坏的磁盘个数不超过个的时候,这时候就需要调用b1或b2中的第k+1行到行的数据,这样就可以恢复这个磁盘中位于b1或b2中的部分。然后将修复好的b部分数据代入其中的第k+s+t+1到第r行,这样我们就得到了一个关于a部分数据的范德蒙德矩阵,根据rs纠删的恢复办法,就可以恢复损坏的数据块中关于a矩阵部分丢失的数据,至此,就恢复了全部丢失的数据。
[0149]
如果不超过个磁盘中的数据块丢失的话,若根据rs纠删的做法,需要用剩余k-l个数据和l个备份的冗余数据(范德蒙德矩阵的第1行到第l行)来恢复,那么两个数据条带a1,a2,

,ak和b1,b2,

,bk一共需要2*k个数据进行恢复。但使用本发明实施例的数据纠删方法,只需要1.5*(k-l)+2*l个数据块来恢复,因为所以需要的数据块不会超过5/3*k《2*k的。
[0150]
在本发明的一种具体实施方式中,步骤s214可以包括以下步骤:
[0151]
当丢失的数据块为同一磁盘中的第一数据块和第二数据块时,利用第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行和第第三数值行的下一行进行数据纠删,或者利用第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行和第第五数值行的下一行进行数据纠删。
[0152]
当只损坏一个数据块的时候,例如a1,b1损坏,先调用b1或b2中的第k+1行的数据,即f1(b1,a2,...,b
k-1
,ak)或b1,a2,...,a
k-1
,bk。这时候可以先恢复数据b1,然后将数据b1,a2,

,b
k-1
,ak或b1,a2,

,a
k-1
,bk代入b1或b2的第k+s+1行,即或然后就能得到f1(a1,b2,

,b
k/2-1
,a
k/2
)或f1(a1,b2,

,a
(k-1)/2-1
,b
(k-1)/2
)。再调用数据b2,

,b
k/2-1
,a
k/2
或b2,

,a
(k-1)/2-1
,b
(k-1)/2
就能求出a1。
[0153]
rs纠删的主要数据开销体现在调用未被破坏的原数据上面,根据现有的rs纠删的做法,如果两个数据条带a1,a2,

,ak和b1,b2,

,bk中的任意一个数据丢失,那我们要使用剩余k-1个数据和1个备份的冗余数据(即范德蒙德矩阵的第1行)去恢复,那么两个条带一共需要2*k个数据进行恢复。但使用本发明实施例的数据纠删方法,只需要调用约75%的数据块就可以恢复ai和bi,即1.5*(k-1)+2个数据块就能恢复,较大地降低了数据纠删时的数据调用量,减少了数据调用耗时,提高了数据纠删效率。
[0154]
当损坏的磁盘个数超过个的时候,我们用剩余的数据块仍然能恢复损坏的r个磁盘中的数据块。不妨设损坏的数据块都在原数据中,即a1,a2,

,ak和b1,b2,

,bk中损坏了r个磁盘中的数据块。记他们为a1,a2,

,ar和b1,b2,

,br。我们知道不管是调用矩阵a1或者矩阵a2,根据rs纠删的原理,我们都能还原出数据a1,b2,...,a
k-1
,b或a1,b2,...,b
k-1
,ak。待数据还原好之后,将其带入矩阵b1或b2的后k+s+1行到k+r行的后半部分的函数f1(a1,b2,...,b
k/2-1
,a
k/2
),f2(a1,b2,

,b
k/2-1
,a
k/2
),

,f
t
(a1,b2,

,b
k/2-1
,a
k/2
),f1(b
k/2+1
,a
k/2+2
,...,a
k-1
,bk),f2(b
k/2+1
,a
k/2+2
,...,a
k-1
,bk),

,f
t
(b
k/2+1
,a
k/2+2
,...,a
k-1
,bk)或f1(a1,
b2,...,a
(k-1)/2-1
,b
(k-1)/2
),f2(a1,b2,...,a
(k-1)/2-1
,b
(k-1)/2
),

,f
t
(a1,b2,...,a
(k-1)/2-1
,b
(k-1)/2
),f1(a
(k+1)/2
,b
(k+1)/2+1
,...,b
k-1
,ak),f2(a
(k+1)/2
,b
(k+1)/2+1
,...,b
k-1
,ak),

,f
t
(a
(k+1)/2
,b
(k+1)/2+1
,...,b
k-1
,ak)。约去后k+s+1行到k+r行的后半部分函数,那么b1和b2就会变成和这时候就可以根据rs纠删,恢复原有数据b1,a2,...,b
k-1
,ak或b1,a2,...,a
k-1
,bk。至此,便恢复了所有损坏的r个磁盘中的数据块。
[0155]
即使超过个数据块丢失,仍然能用任意的k个数据块恢复全部的数据,所以,在最坏情况下仍然能做到跟rs纠删一样的解码速度和数据开销。并且,针对实际工作环境,99.75%为单独码块错误(即单独磁盘故障)的情况。所以本发明实施例所提供的数据存储纠删方法能够大大降低实际使用场景中的有效数据开销。
[0156]
相应于上面的方法实施例,本发明还提供了一种数据存储纠删装置,下文描述的数据存储纠删装置与上文描述的数据存储纠删方法可相互对应参照。
[0157]
参见图3,图3为本发明实施例中一种数据存储纠删装置的结构框图,该装置可以包括:
[0158]
数据块划分模块31,用于将每个磁盘中的数据集划分为两个数据块,得到各第一数据块和各第二数据块;
[0159]
矩阵构建模块32,用于从第一数值个磁盘中选取各第一数据块,从剩余的各磁盘中选取各第二数据块,得到各一轮选取数据块,并根据磁盘总数和各一轮选取数据块构建第一纠删范德蒙矩阵;
[0160]
数值计算模块33,用于获取预设矩阵行数,对预设矩阵行数除以三向下取整得到第二数值,利用预设矩阵行数与二倍的第二数值进行差值计算,得到第三数值;
[0161]
第一矩阵行构建模块34,用于利用各磁盘中除各一轮选取数据块之外的各剩余第一数据块和各剩余第二数据块,构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行至第第三数值行;
[0162]
第二矩阵行构建模块35,用于对各一轮选取数据块进行二轮选取,得到各二轮选取数据块,利用各剩余第一数据块、各剩余第二数据块和各二轮选取数据块构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第第三数值行的下一行至第四数值行;其中,第四数值为第三数值与第二数值的加和;
[0163]
第三矩阵行构建模块36,用于利用各剩余第一数据块、各剩余第二数据块以及各一轮选取数据块中除各二轮选取数据块之外的各数据块,构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第第四数值行的下一行至第预设矩阵行数行;
[0164]
数据纠删模块37,用于当存在数据块丢失时,利用第一纠删范德蒙矩阵和/或第二纠删范德蒙矩阵进行数据纠删操作。
[0165]
由上述技术方案可知,通过将各磁盘中的数据集分别划分为两个数据块,通过数
据块有效选取操作进行纠删范德蒙矩阵的构建,使得在利用构建得到的纠删范德蒙矩阵进行数据纠删时,根据当前数据丢失情况仅需对磁盘中的部分数据块进行调用,较大地降低了数据纠删时的数据调用量,减少了数据调用耗时,提高了数据纠删效率。
[0166]
在本发明的一种具体实施方式中,第一矩阵行构建模块34具体为以各剩余第一数据块和各剩余第二数据块为各行参数的底数,构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行至第第三数值行的模块。
[0167]
在本发明的一种具体实施方式中,矩阵构建模块32具体为对磁盘总数除以二向下取整得到第一数值,从第一数值个磁盘中选取各第一数据块的模块;
[0168]
第二矩阵行构建模块35具体为对第一数值除以二向下取整得到第五数值,从各一轮选取数据块中选取第五数值个第一数据块,并选取第一数值与第五数值差值个第二数据块,得到各二轮选取数据块的模块。
[0169]
在本发明的一种具体实施方式中,第二矩阵行构建模块35包括:
[0170]
第一因子获得子模块,用于以各剩余第一数据块和各剩余第二数据块为各行参数的底数构建原有范德蒙矩阵的第第三数值行的下一行至第第四数值行,得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第第三数值行的下一行至第第四数值行的第一因子;
[0171]
第二因子获得子模块,用于以各二轮选取数据块为各行参数的底数构建原有范德蒙矩阵的第一行至第第二数值行,得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第第三数值行的下一行至第第四数值行的第二因子;
[0172]
第一异或计算子模块,用于分别对每行中的第一因子和第二因子进行异或计算得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第第三数值行的下一行至第第四数值行;其中,每行中第一因子包含的参数的指数与第二因子包含的参数的指数的差值为第三数值。
[0173]
在本发明的一种具体实施方式中,第三矩阵行构建模块36包括:
[0174]
第三因子获得子模块,用于以各剩余第一数据块和各剩余第二数据块为各行参数的底数构建原有范德蒙矩阵的第第四数值行的下一行至第预设矩阵行数行,得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第第四数值行的下一行至第预设矩阵行数行的第三因子;
[0175]
第四因子获得子模块,用于以各一轮选取数据块中除各二轮选取数据块之外的各数据块为各行参数的底数构建原有范德蒙矩阵的第一行至第第二数值行,得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第第四数值行的下一行至第预设矩阵行数行的第四因子;
[0176]
第二异或计算子模块,用于分别对每行中的第三因子和第四因子进行异或计算得到第二纠删范德蒙矩阵中原有范德蒙矩阵的第第四数值行的下一行至第预设矩阵行数行;其中,每行中第三因子包含的参数的指数与第四因子包含的参数的指数的差值为第四数值。
[0177]
在本发明的一种具体实施方式中,数据纠删模块37具体为当存在数据块丢失的磁盘个数不超过第二数值时,利用第二纠删范德蒙矩阵进行数据纠删操作的模块。
[0178]
在本发明的一种具体实施方式中,数据纠删模块37具体为当丢失的数据块为同一磁盘中的第一数据块和第二数据块时,利用第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行和第第三数值行的下一行进行数据纠删,或者利用第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行和第第五数值行的下一行进行数据纠删的模块。
[0179]
相应于上面的方法实施例,参见图4,图4为本发明所提供的数据存储纠删设备的
示意图,该设备可以包括:
[0180]
存储器332,用于存储计算机程序;
[0181]
处理器322,用于执行计算机程序时实现上述方法实施例的数据存储纠删方法的步骤。
[0182]
具体的,请参考图5,图5为本实施例提供的一种数据存储纠删设备的具体结构示意图,该数据存储纠删设备可因配置或性能不同而产生比较大的差异,可以包括处理器(central processing units,cpu)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,处理器322可以设置为与存储器332通信,在数据存储纠删设备301上执行存储器332中的一系列指令操作。
[0183]
数据存储纠删设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
[0184]
上文所描述的数据存储纠删方法中的步骤可以由数据存储纠删设备的结构实现。
[0185]
相应于上面的方法实施例,本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下步骤:
[0186]
将每个磁盘中的数据集划分为两个数据块,得到各第一数据块和各第二数据块;从第一数值个磁盘中选取各第一数据块,从剩余的各磁盘中选取各第二数据块,得到各一轮选取数据块,并根据磁盘总数和各一轮选取数据块构建第一纠删范德蒙矩阵;获取预设矩阵行数,对预设矩阵行数除以三向下取整得到第二数值,利用预设矩阵行数与二倍的第二数值进行差值计算,得到第三数值;利用各磁盘中除各一轮选取数据块之外的各剩余第一数据块和各剩余第二数据块,构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第一行至第第三数值行;对各一轮选取数据块进行二轮选取,得到各二轮选取数据块,利用各剩余第一数据块、各剩余第二数据块和各二轮选取数据块构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第第三数值行的下一行至第四数值行;其中,第四数值为第三数值与第二数值的加和;利用各剩余第一数据块、各剩余第二数据块以及各一轮选取数据块中除各二轮选取数据块之外的各数据块,构建第二纠删范德蒙矩阵中原有范德蒙矩阵的第第四数值行的下一行至第预设矩阵行数行;当存在数据块丢失时,利用第一纠删范德蒙矩阵和/或第二纠删范德蒙矩阵进行数据纠删。
[0187]
该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0188]
对于本发明提供的计算机可读存储介质的介绍请参照上述方法实施例,本发明在此不做赘述。
[0189]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置、设备及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0190]
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1