一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种校验块生成方法及一种数据恢复方法与流程

2022-07-02 07:12:42 来源:中国专利 TAG:


1.本说明书一个或多个实施例涉及计算机应用技术领域,尤其涉及一种校验块生成方法及一种数据恢复方法。


背景技术:

2.纠删码(erasure code,ec)是一种编码容错技术,通过将数据分成k个数据块,并将k个数据块通过一定的编码计算方式生成m个校验块,k个数据块和m个校验块共同组成ec条带(ec stripe)。在单个条带中,任意丢失块的个数不超过条带容错能力范围t(1≤t≤m)的情况下,均可以通过ec条带中任意k m-t可用块(available),恢复出丢失的数据块。
3.分布式系统中为了提高数据可靠性,通常通过纠删码的方式实现数据冗余。而现有的校验块生成方法使得分布式系统在不增加校验块数量的情况下容错能力不足。


技术实现要素:

4.有鉴于此,本说明书一个或多个实施例提供一种校验块生成方法及一种数据恢复方法。
5.根据本说明书一个或多个实施例的第一方面,提出了一种校验块生成方法,所述方法包括:
6.将待生成校验块数据分为若干个数据块,并将所述若干个数据块分为z-1个校验组;每个校验组包括k个数据块和r个校验块,不同校验组包含的数据块不同,k、r为任意正整数,z为大于2的任意整数;
7.根据所述若干个数据块生成第z组校验组;所述第z组校验组中包括k个生成数据块和r个校验块,每个生成数据块由z-1个数据块通过预设的计算方式计算得到,所述z-1个数据块中任意两个数据块所属校验组不同,计算不同生成数据块所用的数据块不同;
8.针对每个校验组,生成校验块和该组校验组的数据块/生成数据块的关系等式组;其中,该关系等式组中至少包括r个等式,每个等式至少用于表征该组校验组的数据块/生成数据块和z个属于不同校验组的校验块的关系;
9.根据关系等式组计算得到校验块。
10.根据本说明书一个或多个实施例的第二方面,提供了一种数据恢复方法,所述方法包括:
11.确定待恢复数据块所属数据条带;
12.根据所述数据条带内的校验块和数据块,恢复所述待恢复数据块;所述数据条带内的校验块是根据前述的校验块生成方法所生成的。
13.根据本说明书实施例的第三方面,提供一种校验块生成装置,包括:
14.校验组拆分模块,用于将待生成校验块数据分为若干个数据块,并将所述若干个数据块分为z-1个校验组;每个校验组包括k个数据块和r个校验块,不同校验组包含的数据块不同,k、r为任意正整数,z为大于2的任意整数;
15.第z组校验组生成模块,用于根据所述若干个数据块生成第z组校验组;所述第z组校验组中包括k个生成数据块和r个校验块,每个生成数据块由z-1个数据块通过预设的计算方式计算得到,所述z-1个数据块中任意两个数据块所属校验组不同,计算不同生成数据块所用的数据块不同;
16.关系等式组生成模块,用于针对每个校验组,生成校验块和该组校验组的数据块/生成数据块的关系等式组;其中,该关系等式组中至少包括r个等式,每个等式至少用于表征该组校验组的数据块/生成数据块和z个属于不同校验组的校验块的关系;
17.校验块计算模块,用于根据关系等式组计算得到校验块。
18.根据本说明书实施例的第四方面,提供一种数据恢复装置,包括:
19.数据条带确定模块,用于确定待恢复数据块所属数据条带;
20.数据块恢复模块,用于根据所述数据条带内的校验块和数据块,恢复所述待恢复数据块;所述数据条带内的校验块是根据前述的校验块生成方法所生成的。
21.根据本说明书实施例的第五方面,提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现前述的数据恢复方法或校验块生成方法。
22.根据本说明书实施例的第六方面,提供一种计算机设备,所述计算机设备包括:
23.处理器;
24.用于存储处理器可执行指令的存储器;
25.所述处理器通过运行所述可执行指令以实现前述的数据恢复方法或校验块生成方法。
26.根据本说明书实施例的第六方面,提供一种计算机程序,所述计算机程序被执行时实现前述的数据恢复方法或校验块生成方法。
27.本说明书提供了一种校验块生成方法和数据恢复方法,将待生成校验块数据分为若干个数据块,并根据所述若干个数据块生成z-1个校验组;每个校验组包括k个数据块和r个校验块,不同校验组包含的数据块不同,k、r为任意正整数,z为大于2的任意整数;根据所述若干个数据块生成第z组校验组;所述第z组校验组中包括k个生成数据块和r个校验块,每个生成数据块由z-1个数据块通过预设的计算方式计算得到,所述z-1个数据块中任意两个数据块所属校验组不同,计算不同生成数据块所用的数据块不同;针对每个校验组,生成校验块和该组校验组的数据块/生成数据块的关系等式组;其中,该关系等式组中包括r个等式,每个等式至少用于表征该组校验组的数据块/生成数据块和z个属于不同校验组的校验块的关系;根据关系等式组计算得到校验块。
28.这样,在数据冗余比不增加的情况下,使得容错能力变为了z*r 1,提高了容错能力,且保证了降级读性能。
29.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
30.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
31.图1a是本说明书根据一实施例示出的一种相关技术中生成的校验组的示意图。
32.图1b是本说明书根据一实施例示出的另一种相关技术中生成的校验组的示意图。
33.图2是本说明书根据一示例性实施例示出的一种校验块生成方法的流程图。
34.图3是本说明书根据一示例性实施例示出的生成的校验组的示意图。
35.图4是本说明书根据一示例性实施例示出的一种数据恢复方法的流程图。
36.图5是本说明书根据一具体实施例示出的生成的校验组的示意图。
37.图6是本说明书根据一示例性实施例示出的一种校验块生成装置的框图。
38.图7是本说明书根据一示例性实施例示出的一种数据恢复装置的框图。
39.图8是本说明书根据一示例性实施例示出的一种校验块生成装置或数据恢复装置所在计算机设备的一种硬件结构图。
具体实施方式
40.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
41.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
42.分布式系统的存储规模正在变得越来越大;而分布式系统中的设备错误也是一个不容忽视的问题,设备错误可能会导致数据丢失。因此数据的存储成本与可靠性都是分布式系统设计时需要考虑的因素。
43.分布式系统中为了保证数据可靠,需要确保在数据丢失时,可以通过其他数据块恢复得到丢失的数据块。一般来说可以通过直接备份多份数据的方式来确保数据可靠性,但是这种方式所占用的空间较多,存储成本较高。
44.而对于纠删码而言,可以通过几个校验块来保证数据可靠性,占用的存储空间较少,因此相关技术中分布式系统一般是通过纠删码的方式来保证数据可靠性的。通过纠删码生成的校验组,在校验组中任一数据块丢失时,可以通过该校验组内的其他数据块和校验块来恢复得到丢失的数据块。
45.接下来将介绍相关技术中的校验块生成方法。
46.首先需要说明的是,为了提高数据冗余比(纠删码利用纠删码算法将数据进行分段生成k个数据块后进行编码生成r个校验块,达到容错的目的。存储总数据占原始数据的倍数也即(k r)/k为该纠删码的数据冗余比),相关技术中一般会将一整段数据(也称为一个条带的数据)分成多个校验组进行存储。
47.相关技术中的第一种纠删码算法所生成的校验组的示意图如图1a所示,每个方框代表一个数据块/校验块。第一组校验组存储了k个数据块和r个校验块,其中,k个数据块是一整段数据拆分成的k个数据块(即图1a中的d
1,1-d
1,k
),r个校验块(即图1a中的p
1,1-p
1,r
)是
根据k个数据块根据预定的编码计算方式生成的校验块,第二组校验组是第一组校验组的备份。换言之,第一组校验组和第二组校验组中存储的数据具有如公式(1)所示的关系:
48.xi=d
1,i
,1≤i≤k;p
2,j
=p
1,j
,1≤j≤r;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
49.其中,xi表示第二组校验组的数据块,d
1,i
表示第一组校验组的数据块。p
2,j
表示第二组校验组的校验块,p
1,j
表示第一组校验组的校验块。
50.这种方式的主要缺点是:为了保证快速恢复,第二组校验组是第一组校验组的直接备份,这样使得数据冗余比((2*(k r))/k)太高,导致存储利用率太低;且容错能力也很有限,为2r 1。需要说明的是,容错能力值是在可以恢复的情况下,可以任意丢失的数据块的数量,即最坏的情况下可以丢失的最多的数据块的数量。举例来说上述方法中,在r=1时,当d
1,1
、d
1,2
、x1和x2都丢失的情况下,将无法恢复得到所有的数据块。
51.为了降低数据冗余比,相关技术中还提出了一种纠删码算法,该纠删码算法所生成的校验组如图1b所示,每个方框代表一个数据块/校验块。其中,前两组校验组中的数据块是一整段数据拆分成的,且都包含k个数据块;第一组校验组中的校验块包括r个,由第一组的k个数据块根据预定的编码计算方式生成,第二组校验组中的校验块包括r个,由第2组的k个数据块根据预定的编码计算方式生成。第三组中的数据块/校验块通过第一组和第二组对应位置的数据块/校验块异或生成。换言之,第三组数据块/校验块和前两组校验组的关系如公式(2)所示:
52.xi=d
1,i
⊕d2,i
,1≤i≤k
53.p
3,j
=p
1,j

p
2,j
,1≤j≤r
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
54.其中,xi表示第三组校验组的数据块,d
1,i
表示第一组校验组的数据块,d
2,i
表示第一组校验组的数据块,

表示异或关系,p
3,j
表示第三组校验组的校验块,p
2,j
表示第二组校验组的校验块,p
1,j
表示第一组校验组的校验块。
55.这种方式虽然数据冗余比相比于第一种方式数据冗余比下降(r相同的情况下,该方法数据冗余比为(3*(k r))/2k),但是容错能力仅为2r 1,容错能力仍然较低。且有些情况下,这种方法为了保证数据可靠性,提高容错能力,r往往会取的较大,反而会使得数据冗余比较大。
56.需要说明的是,这种方式容错能力之所以为2r 1,举例来说,在r=1的情况下,当d
1,1
、d
1,2
、d
2,1
和d
2,2
都丢失的情况下,将无法恢复得到所有的数据块。因此,r=1的情况下,最多丢失2*1 1个数据块。
57.可见,缺少一种保证数据冗余比不高(不增加r)的基础上保证较高容错能力的纠删码算法。
58.基于此,考虑到相关技术中容错能力较低的原因在于,虽然把数据分成了多组,并且通过最后一组校验组形成了多组数据块之间的关联,但是在同一列(图1a、1b中的列)的前两组数据块都丢失的情况下,即使第三组该列的数据块仍在,也无法恢复出这些数据,可见相关技术中多组之间的关联较弱。可见,上述方案的行与行之间独立的方案,数据可靠性不足。
59.因此,本说明书提供了一种校验块生成方法和数据恢复方法,将待生成校验块数据分为若干个数据块,并根据所述若干个数据块生成z-1个校验组;每个校验组包括k个数据块和r个校验块,不同校验组包含的数据块不同,k、r为任意正整数,z为大于2的任意整
数;根据所述若干个数据块生成第z组校验组;所述第z组校验组中包括k个生成数据块和r个校验块,每个生成数据块由z-1个数据块通过预设的计算方式计算得到,所述z-1个数据块中任意两个数据块所属校验组不同,计算不同生成数据块所用的数据块不同;针对每个校验组,生成校验块和该组校验组的数据块/生成数据块的关系等式组;其中,该关系等式组中包括r个等式,每个等式至少用于表征该组校验组的数据块/生成数据块和z个属于不同校验组的校验块的关系;根据关系等式组计算得到校验块。
60.这样,在数据冗余比不增加的情况下,使得容错能力变为了z*r 1,提高了容错能力,且保证了降级读性能。
61.接下来将对本说明书示出的校验块生成方法进行详细说明。
62.如图2所示,图2是本说明书根据一示例性实施例示出的一种校验块生成方法,包括:
63.步骤201,将待生成校验块数据分为若干个数据块,并将所述若干个数据块分为z-1个校验组。
64.其中,每个校验组包括k个数据块和r个校验块,不同校验组包含的数据块不同,k、r为任意正整数,z为大于2的任意整数。
65.换言之,上述步骤中,先将一整段数据分成若干个数据块,再将若干个数据块均分为多个组。
66.其中,分为多个组是为了降低数据冗余比,具体而言,如果不分为多个组,只有一个校验组,将需要给该组校验组生成至少一个备份校验组(如相关技术中的第一种方法);而在分为多个组的情况下,只需要根据多个校验组生成1个备份校验组(即后文的第z组校验组),降低了数据冗余比。
67.z之所以需要大于2,是因为如果z小于等于2,则将和相关技术中的第一种方法一样,数据冗余比将会较大,而z大于2的情况下,可以根据多个校验组生成一个备份校验组,这样可以降低数据冗余比。k和r的大小可以根据数据的多少,以及容错能力需求进行选择,本说明书对于k、r和z的大小不做限定。
68.再对步骤201进行整体说明后,下面将对步骤201中的名词进行说明。步骤201中的待生成校验块数据即为一整段数据/一条带数据,本说明书中的方法就是为了生成该段数据对应的若干个校验块。还需要说明的是,步骤201中生成的校验组中的r个校验块是尚未计算出来的校验块,也就是这里说的分为z-1个校验组只是将若干个数据块均分为了z-1组,并没有直接计算出校验块是什么,校验块具体是什么需要通过下文的方法计算出来。
69.步骤203,根据所述若干个数据块生成第z组校验组。
70.其中,所述第z组校验组中包括k个生成数据块和r个校验块,每个生成数据块由z-1个数据块通过预设的计算方式计算得到,所述z-1个数据块中任意两个数据块所属校验组不同,计算不同生成数据块所用的数据块不同。
71.换言之,在步骤201确定了前z-1个校验组中的数据块的情况下,还需要确定第z个校验组(即备份校验组),第z个校验组中的生成数据块是根据前z-1个校验组中的数据块生成的,这样可以保证降级读性能。第z个校验组格式和其他校验组格式相同。
72.其中,降级读性能也就是在丢失任意一块数据块的情况下,可以通过较少的数据块就能恢复该数据块,而不需要获取校验组中的k个数据块来恢复。换言之,每个生成数据
块是通过z-1个属于z-1个校验组中的数据块生成的,而计算不同生成数据块所用的数据块不同,这样能够保证每个数据块的降级读性能。
73.由于生成数据块的设置,在任意一个数据块丢失,且k大于z(一般都满足)的情况下,可以通过:该数据块对应计算的生成数据块,和该生成数据块计算过程中所用的其他z-2个数据块,来恢复得到丢失的数据块,这样,只用通过z-1个数据块来恢复丢失的数据块,保证了降级读性能。
74.其中,步骤201和步骤203分成的z个校验组的数据如图3所示,其中,d代表数据块,x代表生成数据块,p代表校验块,为了方便描述,每一列的生成数据块都是由该列的其他数据块生成的。
75.具体的计算生成数据块的方法,可以是求z-1个数据块的异或,将异或结果作为生成数据块的值,当然生成数据块的计算方式不限于上述方式,只要计算方法满足以下特性,都可以作为计算生成数据块的方法:在生成数据块对应的任意1块数据丢失的情况下,都可以通过该列(图3中的1列)的其他数据块和生成数据块以及生成数据块的计算方法恢复出来。
76.其中,在通过异或的方法计算得到生成数据块的情况下,步骤203包括:针对第z组校验组每个待计算的生成校验块,从z-1个校验组中分别取1个数据块,计算取出来的z-1个数据块的异或,将异或结果作为该待计算的生成校验块;1≤x≤k。
77.换言之,第z组校验组的数据块与其他组数据块的关系如公式(3)所示:
78.x
i = d
1,i
ꢀ⊕ꢀd2,i
ꢀ⊕…ꢀ⊕ꢀdz-1,i , 1 ≤ i ≤ k
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
79.其中,xi表示第z组校验组中的第i个生成数据块,d
1,i
、d2,i和d
z-1,i
等分别表示第1组、第2组和第z-1组校验组的数据块。
80.还需要说明的是,步骤203中虽然说的是第z组校验组,但是这里是为了方便描述才描述对各个校验组进行排序,将该生成数据块组成的校验组称为第z组校验组,当然,生成数据块组成的校验组也可以是第1组校验组或第2组校验组,本说明书对各个校验组的顺序不做限定。
81.步骤205,针对每个校验组,生成校验块和该组校验组的数据块/生成数据块的关系等式组。
82.步骤207,根据关系等式组计算得到校验块。
83.其中,该关系等式组中至少包括r个等式,每个等式至少用于表征该组校验组的数据块/生成数据块和z个属于不同校验组的校验块的关系。
84.接下来将对步骤205和步骤207进行统一说明。
85.在步骤201和步骤203中确定了各个校验组,和z个校验组中的待计算的校验块后,则需要通过步骤205和步骤207中的方法来计算得到校验块,从而完成校验组的生成。
86.此外,考虑到相关技术中同一条带的数据对应的多个校验组之间的关联性不强,这造成了相关技术中的方法容错能力较低,为了解决这一问题,考虑到每个校验组中的校验块不能仅通过该组校验组中的数据块来计算,还要通过其他组校验组的数据块来计算,这样才能增强多个校验组之间的关联性。
87.因此,步骤205中,需要生成多个该组数据块和多个属于不同组的校验块之间的关系,这样才能保证多个校验组之间的关联。
88.其中,之所以需要r个等式,是因为校验块的数量为z*r个,而方程的个数大于等于未知数的个数才能求解出未知数,在未知数为z*r个的情况下,至少需要z*r个等式方程才能求解出z*r个校验块,因此需要针对每个校验组列至少r个等式,这样才能求解出所有校验块。
89.其中,之所以每个等式是表征该组校验组的所有数据块/生成数据块和z个属于不同校验组的校验块的关系,因为是需要构造每个校验组中数据块和其他所有校验组之间的关联,需要和z个校验组都有关联,因此选择了通过和z个属于不同校验组的校验块的关系来列等式。
90.接下来将对步骤205中的如何列等式进行详细说明。
91.首先,在有些情况下,列出来的多个等式之间可能会线性相关,这样可能会使得等式无法求解,因此需要给等式中的不同项配置系数,从而使得方程可以被求解。
92.换言之,步骤205包括:获取校验系数组;针对每个校验组,将校验系数组作为系数,生成校验块和该组校验组的数据块/生成数据块的关系等式组。
93.其中,校验系数组是预先生成的,校验系数组加入关系等式组中,关系等式组求解不出来的概率会下降。校验系数组的生成方式可以是根据里德-所罗门纠删码(reed-solomon,rs)的方式生成的,也可以根据柯西矩阵生成,当然也可以是通过其他方法预先生成的,本说明书对于校验系数组的生成方式不做限定。
94.还需要说明的是,为了防止方程求解不出来,校验系数组还需要保证使得等式的运算结果封闭,即在封闭域内计算,那么校验系数组中每个校验系数的取值范围有限。比如,考虑到一个字节包括8位,校验系数组可以为gf(28)中的元素,这种情况下,将校验系数组中的系数作为每一项的系数,可以是通过gf(28)中乘法,将每一项的系数与该项本技术相乘,再列得到的多个项之间的关系等式。
95.进一步地,在上述情况下,具体的生成r个等式的方式,可以是:每个等式包含该组校验组的数据块或生成数据块(是数据块还是生成数据块根据不同校验组来确定)和所有校验块的关系等式组,不同等式的校验系数不同,这样就列出了r个等式。
96.换言之,步骤205具体包括:针对每个校验组,利用校验系数组中不同的校验系数,生成校验块和该组校验组的数据块/生成数据块的关系等式组;每个等式用于表征所有校验块和该组校验组的数据块/生成数据块之间的关系。
97.此外,除了上述列等式的方式之外,还可以针对每个校验组列r个等式,每个等式包括该组校验组中的数据块/生成数据块和z个属于z个校验组中的校验块的关系,不同等式包括的校验块不重复。如图3中所示,为了方便描述,每个等式可以是一行d和一列p之间的关系。
98.换言之,步骤205包括:针对每个校验组,生成r个求解组;每个求解组包括该校验组的全部数据块/生成数据块,和z个属于不同校验组的校验块,不同求解组包括的校验块不同;针对每个求解组,生成校验块和该组校验组的数据块/生成数据块的关系等式;将该校验组对应的所有求解组生成的关系等式组成关系等式组。
99.还需要说明的是,等式的具体形式可以是:一侧是校验块和数据块/生成数据块的关系,另一侧是预定向量,比如可以是0向量,也可以是预定的其他向量。当然等式的形式也可以是其他的,只要能表征数据块和校验块的关系,且在该等式中任意数据块值未知的情
况下,可以通过该等式中其他已知的数据块和校验块求解出该数据块,满足上述关系的等式都可以作为本说明书中的等式。
100.此外,具体的等式可以是根据异或方式生成的,也可以是根据其他的计算关系生成的,只要满足一下关系的等式都可以作为本说明书中的等式:可以通过生成的z*r个等式求解出z*r个校验块。
101.在通过异或方式生成的情况下,步骤205包括:针对每个校验组,生成校验块和该组校验组的数据块/生成数据块的关系等式组;其中,该关系等式组中每个等式为:校验块、该组校验组的数据块/生成数据块的异或关系,与预定向量之间关系的等式。
102.接下来将通过具体的举例来对本说明书中示出的两种等式进行说明。
103.在上述第一种方法中,针对任意校验组,生成了一个求解组,那么针对z个校验组,生成了z个求解组,每个求解组有k z*r个块,如公式(4)所示:
[0104][0105]
其中,d
1,1
~d
1,k
、d
z-1,1
~d
z-1,k
指的是多个校验组中的数据块,x1~xk指的是第z组校验组中的k个生成数据块,p
1,1
~p
z,r
为该条带数据对应的全部校验块
[0106]
每个求解组需要满足r个关系等式,以求解组1为例,求解组1应该满足的关系等式如公式(5)所示:
[0107][0108]
其中,a
1,1
~a
r,k
以及e
1,1
~e
r*z,r*r
为校验系数组中的系数。
[0109]
其他的求解组应该满足的关系等式与公式(5)类似,在此不再赘述。
[0110]
在上述第二种方法中,针对每个校验组,生成了r个求解组,每个求解组有k r个块,以第1组校验组为例,针对第1组校验组生成的r个求解组如下公式(6)所示:
[0111][0112]
换言之,如图3所示,每个求解组都是第一行和某一列的校验块所组成的,不同求解组包括的校验块不同。其他校验组对应的r个求解组类似,r个求解组中每个求解组均是该校验组包括的所有数据块和一列校验块所组成的。
[0113]
每个求解组满足一个关系等式,仍以第1组校验组为例,该组校验组对应的r个求解组满足关系如公式(7)所示:
[0114][0115]
其中,公式各个部分的具体含义如上一方法中所述,在此不再赘述。其他校验组对应的公式也如公式(7)所示,在此不再赘述。
[0116]
接下来还将说明的是,本说明书的方法应用于分布式系统中,为了保证可靠性,一般不会将某一条带对应的所有数据块和校验块存储在同一机器上。此外,考虑到分布式系统中一般包括多个可用区(availability zones,az),1个可用区指的是在同一区域内,电力和网络互相独立的物理区域。同一可用区内实例之间的网络延时更小。这种设置会导致,可能会发生一个可用区内所有数据节点一起宕机的情况,因此为了保证数据可靠性,一般也不会将某一条带对应的所有数据块和校验块都存储于一个可用区内。
[0117]
换言之每个az为独立管理的物理数据中心。在数据以多az方式存储时,用户数据分散到多个单独的数据中心中,从而保证当单个az遇到机房或网络设备故障时,用户的数据仍旧被访问到。
[0118]
在此基础上,考虑将1个校验组存储在一个可用区内,可以避免:在某一可用区中所有数据节点宕机的情况下,导致丢失的数据不可恢复(如果随机存,或者将图3中多个列的数据存在一个可用区内,容易导致数据不可恢复)。
[0119]
换言之,在步骤207执行完成后,所述方法还包括:存储z个校验组;其中,不同校验组存储在不同的可用区中,不同可用区的电力和网络相互独立。
[0120]
需要说明的是,为了存储z个校验组,需要先将z个校验组发送至不同的可用区内,再在可用区内对每个校验组进行存储。
[0121]
最后还需要说明的是,为了保证校验块可以求解出来,所有数据块、校验块和生成校验块都是一样大的。
[0122]
通过上述方法,采用了新的校验组求解方式,可以在不提高数据冗余比的情况下,提高容错能力(容错能力为z*r 1,比相关技术中的方式容错能力更强;且容错能力和z正相关,容错能力会随着z的增加而线性增长,相比于相关技术中的容错能力只和r的大小相关的方案,这种方案更优),降低系统的成本。
[0123]
此外,该方法也不影响降级读性能,由于生成校验块的计算方式和相关技术中相似,在任意一个数据块丢失的情况下,可以通过图3中同列的其他数据块和生成数据块恢复得到该数据块,无需获取k各数据块和校验块,没有影响降级读性能。
[0124]
容错能力越强,意味更低成本;使用更低的冗余比达到与相关技术中的方案相同的容错能力,或满足系统的可靠性需求。以k=12,z=3,r=1为例,相关技术中的方案,只能容忍任意3个块丢失,可靠性不足;进而相关技术中一般不会采用r=1,为了提高容错能力,一般会选取r=2,此时冗余比为:42/24=1.75,可以容任意5个数据块丢失。本说明书提供的方法,针对k=12,z=3,r=1场景,可满足容任意4个数据块丢失,可靠性比传统方案更强;此时冗余比为39/24=1.625;可减少12.5%的空间。
[0125]
此外,本说明书还提供一种数据恢复方法,用于根据上述的校验块生成方法所生成的校验块来恢复丢失的数据块。
[0126]
如图4所示,图4是本说明书根据一示例性实施例示出的一种数据恢复方法的流程图,包括:
[0127]
步骤401,确定待恢复数据块所属数据条带。
[0128]
步骤403,根据所述数据条带内的校验块和数据块,恢复所述待恢复数据块。
[0129]
其中,所述数据条带内的校验块是根据前述的校验块生成方法所生成的。
[0130]
其中,步骤403中恢复数据块,可以是根据若干个校验块和数据块,列出生成校验块的关系等式,来计算待恢复的数据块。
[0131]
在某些情况下,比如待恢复数据块能通过数据块和生成数据块恢复的情况下,也就是图3中的每一列只丢失了一个数据块的情况下,可以通过该列的其他数据块和生成数据块来恢复丢失的数据块。
[0132]
换言之,步骤403包括:在所述待恢复数据块能通过数据块和生成数据块恢复的情况下,获取所述待恢复数据块对应的生成数据块,和生成所述对应的生成数据块所需的其他数据块;通过获取的数据块和生成数据块恢复所述待恢复数据块。
[0133]
这样可以加快恢复速度。
[0134]
接下来将通过一具体实施例来对本说明书示出的校验块生成方法和数据恢复方法进行说明。
[0135]
假设欲将分布式系统中的一个条带的数据分配至3个可用区内(每个可用区存储1个校验组,z=3),且设置每个校验组内校验块的数量为1(r=1),那么对应的该条带的数据形成的3个校验组如图5所示,并将通过如下方法完成校验块p
1,1
~p
3,1
的计算。
[0136]
首先,将该条带的数据拆分成2k个数据块,并将2k个数据块按照数据块的先后顺序平分为2组,作为校验组1和校验组2中的数据块。
[0137]
通过如公式(8)所示的公式,计算得到校验组3的生成数据块:
[0138]
xi=d
1,i
⊕d2,i
,1≤i≤k
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(9)
[0139]
其中,xi代表校验组3中的生成数据块,分别代表校验组1和校验组2中的数据块,即图5中,每一列的生成数据块,都由该列另外两个数据块异或得到。
[0140]
在计算得到各个校验组中包括的数据块和生成数据块后,将生成三个求解组,求解组如公式(10)所示:
[0141]
求解组1:{d
1,1
~d
1,k
、p
1,1
~p
3,1
}
[0142]
求解组2:{d
2,1
~d
2,k
、p
1,1
~p
3,1
}
[0143]
求解组3:{x1~xk、p
1,1
~p
3,1
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(10)上述3个求解组中包括的内容的含义在上文已有说明,在此不再赘述。
[0144]
针对上述3个求解组,列如公式(11)所示的关系等式:
[0145]
求解组1:a
1,1
*d
1,1
⊕a1,2
*d
1,2
⊕…⊕a1,k
*d
1,k
⊕e1,1
*p
1,1
⊕e1,2
*p
2,1
⊕e1,3
*p
3,1
=0
[0146]
求解组2:a
2,1
*d
2,1
⊕a2,2
*d
2,2
⊕…⊕a2,k
*d
2,k
⊕e2,1
*p
1,1
⊕e2,2
*p
2,1
⊕e2,3
*p
3,1
=0
[0147]
求解组3:a
3,1
*x1⊕a3,2
*x2⊕…⊕a3,k
*xk⊕e3,1
*p
1,1
⊕e3,2
*p
2,1
⊕e3,3
*p
3,1
=0
ꢀꢀꢀꢀ
(11)其中,a
1,1
~a
3,k,e1,1
~e
3,3
为gf(28)中元素;*为gf(28)中乘法。a
1,1
~a
3,k,e1,1
~e
3,3
等系数,可通过rs码系数确定。公式(11)中其余各项的含义详见上文说明,在此不再赘述。
[0148]
再通过解公式(11)中的3个方程式,得到校验块p
1,1
~p
3,1
的大小。
[0149]
该方案可以保证任意4个块丢失,数据仍可以恢复。以d
1,1
、d
1,2
、d
2,1
、d
2,2
丢失为例,
下面将说明如何恢复这些数据块。
[0150]
首先判断丢失的数据块能否仅通过其他未丢失的数据块恢复,通过分析可知,d
1,1
、d
1,2
属于同一列,并不能仅通过未丢失的数据块恢复。
[0151]
那么可以根据校验块和生成数据块的生成方法,获取校验系数组,并列如公式(12)所示的4个方式,来求解4个丢失的方程。
[0152]a1,1
*d
1,1
⊕a1,2
*d
1,2
⊕…⊕a1,k
*d
1,k
⊕e1,1
*p
1,1
⊕e1,2
*p
2,1
⊕e1,3
*p
3,1
=0
[0153]a2,1
*d
2,1
⊕a2,2
*d
2,2
⊕…⊕a2,k
*d
2,k
⊕e2,1
*p
1,1
⊕e2,2
*p
2,1
⊕e2,3
*p
3,1
=0
[0154]d1,1
⊕d2,1

x1=0
[0155]d1,2
⊕d2,2

x2=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(12)
[0156]
上述公式中加粗的各项表示为待求解的项,公式(12)中各项的含义详见上文说明,在此不再赘述。通过公式(12)便可以求解出丢失的数据块d
1,1
、d
1,2
、d
2,1
、d
2,2

[0157]
同理,在d
1,1
、d
2,1
、x1、p
3,1
丢失的情况下,可构造出如公式(13)所示的方程组:
[0158]a1,1
*d
1,1
⊕a1,2
*d
1,2
⊕…⊕a1,k
*d
1,k
⊕e1,1
*p
1,1
⊕e1,2
*p
2,1
⊕e1,3
*p
3,1
=0
[0159]a2,1
*d
2,1
⊕a2,2
*d
2,2
⊕…⊕a2,k
*d
2,k
⊕e2,1
*p
1,1
⊕e2,2
*p
2,1
⊕e2,3
*p
3,1
=0
[0160]a3,1
*x1⊕a3,2
*x2⊕…⊕a3,k
*xk⊕e3,1
*p
1,1
⊕e3,2
*p
2,1
⊕e3,3
*p
3,1
=0
[0161]d1,1
⊕d2,1

x1=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(13)
[0162]
上述公式中加粗的各项表示为待求解的项,公式(13)中各项的含义详见上文说明,在此不再赘述。通过公式(13)便可以求解出丢失的数据块d
1,1
、d
2,1
、x1、p
3,1

[0163]
与前述方法的实施例相对应,本说明书还提供了装置及其所应用的终端的实施例。
[0164]
如图6所示,图6是本说明书根据一示例性实施例示出的一种校验块生成装置的框图,所述装置包括:
[0165]
校验组拆分模块610,用于将待生成校验块数据分为若干个数据块,并将所述若干个数据块分为z-1个校验组;每个校验组包括k个数据块和r个校验块,不同校验组包含的数据块不同,k、r为任意正整数,z为大于2的任意整数。
[0166]
第z组校验组生成模块620,用于根据所述若干个数据块生成第z组校验组;所述第z组校验组中包括k个生成数据块和r个校验块,每个生成数据块由z-1个数据块通过预设的计算方式计算得到,所述z-1个数据块中任意两个数据块所属校验组不同,计算不同生成数据块所用的数据块不同。
[0167]
关系等式组生成模块630,用于针对每个校验组,生成校验块和该组校验组的数据块/生成数据块的关系等式组;其中,该关系等式组中至少包括r个等式,每个等式至少用于表征该组校验组的数据块/生成数据块和z个属于不同校验组的校验块的关系。
[0168]
校验块计算模块640,用于根据关系等式组计算得到校验块。
[0169]
在一可选实施例中,所述装置还包括:校验组存储模块650(图中未示出),用于存储z个校验组;其中,不同校验组存储在不同的可用区中,不同可用区的电力和网络相互独立。
[0170]
在一可选实施例中,关系等式组生成模块630,具体用于:获取校验系数组;针对每个校验组,将校验系数组作为系数,生成校验块和该组校验组的数据块/生成数据块的关系等式组。
[0171]
在一可选实施例中,关系等式组生成模块630,具体用于:针对每个校验组,利用校验系数组中不同的校验系数,生成校验块和该组校验组的数据块/生成数据块的关系等式组;每个等式用于表征所有校验块和该组校验组的数据块/生成数据块之间的关系。
[0172]
在一可选实施例中,关系等式组生成模块630,具体用于:针对每个校验组,生成r个求解组;每个求解组包括该校验组的全部数据块/生成数据块,和z个属于不同校验组的校验块,不同求解组包括的校验块不同;针对每个求解组,生成校验块和该组校验组的数据块/生成数据块的关系等式;将该校验组对应的所有求解组生成的关系等式组成关系等式组。
[0173]
在一可选实施例中,第z组校验组生成模块620具体用于:针对第z组校验组每个待计算的生成校验块,从z-1个校验组中分别取1个数据块,计算取出来的z-1个数据块的异或,将异或结果作为该待计算的生成校验块;1≤x≤k。
[0174]
在一可选实施例中,关系等式组生成模块630,针对每个校验组,生成校验块和该组校验组的数据块/生成数据块的关系等式组;其中,该关系等式组中每个等式为:校验块和该组校验组的数据块/生成数据块的异或关系,与预定向量之间关系的等式。
[0175]
如图7所示,图7是本说明书根据以示例性实施例示出的一种数据恢复装置的框图,包括:
[0176]
数据条带确定模块710,用于确定待恢复数据块所属数据条带。
[0177]
数据块恢复模块720,用于根据所述数据条带内的校验块和数据块,恢复所述待恢复数据块;所述数据条带内的校验块是根据前述的校验块生成方法所生成的。
[0178]
在一可选实施例中,数据块恢复模块720,具体用于在所述待恢复数据块能通过数据块和生成数据块恢复的情况下,获取所述待恢复数据块对应的生成数据块,和生成所述对应的生成数据块所需的其他数据块;通过获取的数据块和生成数据块恢复所述待恢复数据块。
[0179]
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0180]
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0181]
如图8所示,图8示出了实施例校验块生成装置或数据恢复装置所在计算机设备的一种硬件结构图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、用于存储处理器可执行指令的存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
[0182]
处理器1010可以采用通用的cpu(central processing unit,处理器)、微处理器、应用专用集成电路(application specific integrated circuit,asic)、或者一个或多个集成电路等方式实现,用于通过运行所述可执行指令以实现前述的校验块生成方法或数据恢复方法。
[0183]
存储器1020可以采用rom(read only memory,只读存储器)、ram(random access memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
[0184]
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
[0185]
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。
[0186]
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
[0187]
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
[0188]
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的校验块生成方法或数据恢复方法。
[0189]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0190]
本说明书实施例还提供一种计算机程序,该计算机程序被执行时实现前述的校验块生成方法或数据恢复方法。
[0191]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0192]
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献