多磁盘容错系统及生成校验块、恢复数据块的方法

文档序号:6575295阅读:107来源:国知局
专利名称:多磁盘容错系统及生成校验块、恢复数据块的方法
技术领域
本发明实施例涉及数据存储技术领域,特别涉及一种多磁盘容错系统及 生成校验块、恢复数据块的方法。
背景技术
随着网络的发展和计算机技术的普及应用,人们对存储系统的性能要求
越来越高。廉价冗余磁盘P车歹ll (Redundant Array of Independent Disks, 以下简称RAID)采用分条和冗余的方法提高了存储系统的容量、速度和可 靠性,已成为高性能数据存储的首选结构,磁盘阵列技术的基本思想有两个 方面利用数据条紋化提高性能以及利用数据冗余提高可靠性。迄今为止, 大多数系统被设计成容忍单磁盘故障,对单磁盘故障的设计原理是,磁盘发 送故障较少,在一个磁盘故障发生后,另一个故障发生前有足够的时间从故 障中恢复。
随着磁盘技术的发展和用户对更高性能的存储系统的需求使得单磁盘故 障容错越来越不足,首先是^兹盘阵列规模的不断增大,越来越多的-兹盘被分 组到一个阵列,相应的一个阵列中发生多个磁盘故障的可能性增加了;第二 是磁盘容量的增加比数据存取速度的增加快,重建一个磁盘的所需的时间增 加,因此加长了重建一个i兹盘过程中阵列产生随后的i兹盘故障的时间窗口 ; 第三是介质存储密度的增加导致磁盘可靠性减小;第四是由于实际应用中磁 盘故障的相关性,由于外部环境和义兹盘内部因素的影响,导致-兹盘故障是相 关的,这也会导致短时间内发生多个磁盘故障的概率大大增加。
一个磁盘阵列中从多磁盘故障恢复的常规技术大致可以分为双校验、双 镜像及RAID51型及其改进机型模式。在双镜像模式中,数据被镜像两次,使 得有该数据的三个拷贝,每次写请求需要产生三个磁盘写操作来更新每个拷贝,同时也需要使用未保护阵列的三倍存储空间。
RAID51型模式防止单磁盘故障破坏数据,并且镜像RAID 5阵列来保护 多达三个任意磁盘故障,对于一个写请求,产生两个磁盘读操作和四个磁盘 写操作。双校验模式将RAID5型模式扩展为双校验,该模式下每个写请求产 生至少三个-兹盘读操作和三个磁盘写操作。
RAID6是双校验型模式的双磁盘容错方法,与其他级别的RAID相比,增 加了两个独立的错误校验区块,即校验块P和校验块Q,对于每个分条 (scripe)包括两个4交-验单元P才交验单元和Q才交验单元,其中P采用奇偶 校验码,Q采用Reed-Solomon等其它校验码。当出现单,兹盘故障时,P+Q RAID 转变为N+l奇偶校验的RAID5。当出现双石兹盘故障时,P+QRAID转变为无容 错能力的RAIDO。
发明人在实现本发明的过程中发现,现有技术中RAID6在进行数据处理 时需要进行伽罗瓦域(Glaois Field)变换,该变换过程需要进行复杂的乘 加运算,使得计算复杂度高。

发明内容
本发明实施例的目的是提供一种多磁盘容错系统及生成校验块、恢复数 据块的方法,能够降低多》兹盘容错系统中校验块生成的计算复杂度,提高数 据处理速度。
为实现上述目的,本发明实施例提供了一种多磁盘容错系统,包括通过 系统总线连接的磁盘阵列和计算模块;
所述磁盘阵列由p个i兹盘组成,其中p为大于或等于3的自然数,所述 磁盘阵列的容错磁盘数为q,其中q为小于p/2且不小于2的自然数;
所述^f兹盘阵列中的数据按照—+ ^>^的矩阵^1形式进行排列,其中m为 小于或等于p-q的素数;所述矩阵M中第0行为虚拟的值为0的虚拟数据 块,第1行至第m-l行为数据块,第m行至第m+q-l行为校验块;其中校验块&—1+, 所在校验分组中的各个数据块的行号为m-l/ ,列号为"+ yt, *的 取值范围为/到m-l+Z,其中/为校验块在校验区域中的行号,BK《,n为校 验块对应的列号,(^n^p-l;所述校验块中的数据为校验块所属校验分组 的所有数据块中数据的异或值;
所述计算模块用于根据校验分组中的数据块计算生成所述校验分组 中的校验块,并在磁盘损毁时根据所述校验块恢复所述数据块。
本发明实施例还提供了 一种在上述多;兹盘容错系统中生成校验块的方 法,包括
获取需要生成的校验块所属校验分组中所有数据块的数据; 根据所述校验分组中所有数据块的数据获得所述需要生成的校验块 中的校验数据;
将上述获得的所述校验数据写入到所述磁盘阵列中的相应校验块中。 本发明实施例还提供了 一种在上述多磁盘容错系统中恢复数据块的方 法,包括
获取待恢复数据块所属校验分组中其他数据块的数据以及校验块的 数据;
行计算获得所述待恢复数据块的数据;
将所述计算获得的数据块的值写入到所述待恢复数据块中。 本发明实施例提供了 一种多磁盘容错系统、在多磁盘容错系统中生成校 验块的方法以及在多磁盘容错系统中恢复数据块的方法,在多磁盘容错系统 中生成校验块以及恢复数据块的过程中,不需要进行复杂的乘加运算,能够 有效降低多磁盘容错系统在数据处理过程中的计算复杂度,提高数据处理速 度。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实 施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下 面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在 不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的多磁盘容错系统实施例的结构示意图2为本发明实施例中计算模块的结构示意图一;
图3为本发明实施例中计算模块的结构示意图二;
图4为本发明实施例提供的多磁盘容错系统具体结构示意图
图5为本发明实施例提供的多磁盘容错系统的数据布局示意图6为本发明实施例提供的多^f兹盘容错系统中数据块与校验块关系示意
图7为本发明实施例提供的多》兹盘容错系统中生成校验块的方法流程示
意图8为图7所示实施例中一个具体实施例的流程示意图9为本发明实施例中多^f兹盘容^"系统中恢复数据块的方法的流程示意
图IO为图9所示实施例中一个具体实施例的流程示意图11为本发明实施例中双磁盘容错系统在重建单个故障磁盘的流程示
意图12为本发明实施例中多磁盘容错系统中恢复多个磁盘的方法流程示
意图13为图12所示实施例中数据恢复路径的示意图。
具体实施例方式
图1为本发明实施例提供的多磁盘容错系统实施例的结构示意图,如1所示,多磁盘容错系统包括通过系统总线11连接的磁盘阵列12和计算模
块13,其中
石兹盘阵列12由p个^f兹盘组成,其中p为大于或等于3的自然^t,所述石兹 盘阵列的容错磁盘数为q,其中q为小于p/2且不小于2的自然数;所述石兹 盘阵列中的数据按照—+ W></7的矩阵M形式进行排列,其中m为小于或等于 P-q的素数;所述矩阵M中第0行为虚拟的值为0的虚拟数据块,第1行至 第m-l行为数据块,第m行至第m+q-l行为校验块;其中校验块C",一々所
在校验分组中的各个数据块的行号为m-l/,列号为"+ yt, yt的取值范围为 /到,其中/为校验块在校验区域中的行号,1 ^/^《,n为校验块对应的 列号,(^ws^-l;所述校验块的数据为校验块所属校验分组中所有数据块 的数据的异或值;
计算模块13,用于根据校验分组中的数据块计算生成所述校验分组中 的校验块,并在磁盘损毁时根据所述校验块恢复所述数据块。
本实施例中提供的多磁盘容错系统,在任意整数P (尸23 )个磁盘中, 能够实现q ( 2Sq^p/2」)个磁盘的容错,并且其中每个磁盘m +《-r(m为
小于p-q的素数)行物理单元为一个数据集,第0行为全为0的虚拟物理 单元,第1行到m-l行存储数据块,之后的q行存储校验块,其中的校验 块的数据为校验块所属校验分组中所有数据块中数据的异或值。本实施例 提供的多磁盘容错系统能够使得在生成校验块以及恢复数据块时不需要 进行复杂的乘加运算,而仅仅进行异或计算即可,能够有效降低多磁盘容 错系统在数据处理过程中的计算复杂度。
图2为本发明实施例中计算模块的结构示意图一,如图2所示,计算模 块13包括
第一获取单元131,用于获取校验块所属校验分组中所有数据块的数
据;
第一计算单元132,用于根据所述第一获取单元获取的校验块所属校验分组中所有数据块的数据进行异或计算以获取所述校验块的数据;
第一输出单元133,用于将第一计算单元132计算生成的校验块的数
据写入到磁盘阵列中相应的校验块中。
本实施例中是针对生成数据块的情况,将计算模块按早功能进行划
分,校验块的值为校验块所属校验分组中所有数据块中数据的异或值。 图3为本发明实施例中计算模块的结构示意图二,如图3所示,计算模
块13包括第二获取单元134、第二计算单元135和第二输出单元136,其

第二获取单元134,用于获取待恢复数据块所属校验分组中除待恢复 数据块之外其他数据块的数据以及校验块的数据;
第二计算单元135,用于根据第二获取单元134获取的所述数据块的数 据以及所述校验块的数据进行异或计算以获取所述待恢复数据块的数据;
第二输出单元136,用于将所述第二计算单元135计算生成的待恢复 数据块的待恢复写入到所述待恢复数据块中。
图4为本发明实施例提供的多磁盘容错系统具体结构示意图,如图4所 示,多磁盘容错系统包括磁盘阵列21、主处理器22、 XOR协处理器23、緩存 才莫块24和系统总线25,上述的石兹盘阵列21、主处理器22、 XOR协处理器23 和緩存模块24由系统总线25连接,本具体实施例中磁盘阵列由p个(户2 3 ) 磁盘组成,磁盘阵列的容错磁盘数为q ( 2sq^Lp/2」),磁盘阵列中数据的具 体存储格式可参见图1所述实施例。上述实施例中的主处理器22用于完成 磁盘阵列系统的地址转换、系统管理、緩存管理等操作,XOR协处理器23 主要完成数据块的异或计算,XOR协处理器可相当于上述实施例中的计算模 块;緩存模块24用于緩存数据。
图5为本发明实施例提供的多磁盘容错系统的数据布局示意图,如图5 所示,以7 (p=7)个磁盘为例,每一列代表一个磁盘,共有7个磁盘,分别 是DO、 Dl、 D2、 D3、 D4、 D5、 D6,实现2 (q=2 )个》兹盘的容《昔,本实施例中m值取5,在一个数据集中共有7行数据块,其中第0行为虚拟的全为0的数 据块,不占用磁盘的实际存储空间,第1行至第4行为数据块,存放的是有 效数据,第5、 6行为校验块,为相应数据块的异或校验值,对数据块提供冗 余保护,可以看出本发明实施例中校验块不是使用单独的磁盘存放,而是均 匀分布在所有^兹盘上。
图6为本发明实施例提供的多磁盘容错系统中数据块与校验块关系示意 图,如图6所示,仍以7个磁盘为例,其中1-5行的每个数据块都被两个不 同的校验分组所包含,如磁盘DO上的第1行数据块D (1, 0 )被标示为f4, 表示该数据块既属于第一行校验的4分组,也属于第二行校验的f分组,4 分组的校验块4位于磁盘D3上,f分组的校验块f位于磁盘D5上,除虚拟 行(即校验分组的第0行)外其他所有数据块所属的分组校验块都位于不同 的磁盘、不同的校验行上,即除第0行虚拟数据块外,不存在一个数据块属 于同 一个^f兹盘上的两个校验分组,也不存在同 一个数据块属于同一校验行上 的两个4交-验分组。
在一个校验分组f中,校验块f的值等于所有标示有f的数据块的异或 值,即f = f4 fl f7ef6 f3。若(^,,为第i行第j列的物理数据块,本实施
例中对于第一行校验块C (5, 0),其中111=5, /=1, k的取值范围为l到 5,其所属校验分组的数据块的行号为/nU,列号为"+ h经计算可得数 据块C(4,1)、 C(3,2)、 C(2,3)、 C(l, 4)和C(O, 5)为该校验分组的数据块,
同理可计算第一行其他校验块所属校验分组数据块的情况,各检验块的值 为其所属校验分组中各个数据块的异或值,具体可见如下的公式
A、对于第一行校验块
C (5, 0) =C (4, 1) @ C (3, 2) e C (2, 3) @ C (1, 4) @ C (0, 5)
C (5, 1) =C (4, 2) @ C (3, 3) @ C (2, 4) C (1, 5) C (0, 6)
C(5, 2)=C(4, 3) eC(3, 4) C(2, 5) C(l, 6) @C(0, 0)
C (5, 3) =C (4, 4) @ C (3, 5) @ C (2, 6) @ C (1, 0) @ C (0, 1)C (5, 4) =C (4, 5) e C (3, 6) @ C (2, 0) C (1, 1) @ C (0, 2) C (5, 5) =C (4, 6) C (3, 0) C (2, 1) @ C (1, 2) @ C (0, 3) C(5, 6)=C(4, 0) @C(3, 1)④C(2, 2) C(l, 3) @C(0, 4) 对于第二行校验块C(6, 0),其中m=5, /=2, k的取值范围为2到6,
其所属校验分组的数据块的行号为m-l/,列号为"+ l经计算可得数据 块C(1,2)、 C(4,3)、 C(2,4)、 C(0,5)和C(3, 6)为该校验分组的数据块,
同理可计算第二行其他校验块所属校验分组数据块的情况,各检验块的值 为其所属校验分组中各个数据块的异或值,具体可见如下的公式
B、对于第二行校验块
C(6, O):C(l, 2) @C(4, 3) @C(2, 4) @C(0, 5) @C(3, 6) C (6, 1) =C (1, 3) C (4, 4) @ C (2, 5) @ C (0, 6) C (3, 0) C (6, 2) =C (1, 4) C (4, 5) @ C (2, 6) @ C (0, 0) C (3' 1) C (6, 3) =C (1, 5) C (4, 6) C (2, 0) @ C (0, 1) C (3, 2) C(6, 4)=C(1, 6) C(4, 0) C(2, 1) C(O, 2) C(3, 3) C (6, 5) =C (1, 0) C (4, 1) C (2, 2) @ C (0, 3) C (3, 4) C (6, 6) =C (1, 1) C (4, 2) @ C (2, 3) C (0, 4) C (3, 5) 图7为本发明实施例提供的多磁盘容错系统中生成校验块的方法流程示 意图,如图7所示,包括如下步骤
步骤101、获取需要生成的校验块所属校验分组中各个数据块的数据, 本实施例中的生成校验块的方法是基于图l所述的多磁盘容错系统,在该 多磁盘系统中,校验块C"々所在校验分组中的各个数据块的行号和列号
满足如下的条件,数据块的行号为m-h/,列号为"+ it, A:的取值范围为/到 w-l+/,其中/为校验块在校验区域中的行号,B/《9,n为校验块对应的列 号,0《";
具体的在获取到属于上述校验块所在校验分组的所有数据块的数据 后,将其进行异或计算即可得到校验块的值,具体可以按照如下的公式进
行计算在获得校验分组中各个数据块的数据后根据上述公式进行异或计算
即可得到校验块的数据;
步骤102、根据所述校验分组中所有数据块的数据获得所述需要生成 的校验块中的校验数据;
步骤103、将计算获得的上述校验块的数据写入到所述磁盘阵列中的 相应才交-验块中。
本实施例中提供的多磁盘容错系统中生成校验块的方法,通过获取校 验分组中各个数据块的数据,根据所述各个数据块的数据获取校验块的数 据,其中的数据块和校验块由于采用了如图1所示实施例的设置方式,能 够使得在生成校验块时不需要进行复杂的乘加运算,能够有效降低多磁盘 容错系统在数据处理过程中的计算复杂度。
上述实施例中的具体计算过程可以按照图8所示的步骤执行,包括
步骤201,令变量k为校验块在校验区域中的行号/;
步骤202,确定属于该校验分组的下一个数据块的行号和列号;
具体可以通过计算(m —kx/)。/。m确定行号i,m为预定的小于p-q的素数, 通it计算(n + k)%p确定列号j;
步骤203,读取步骤202中确定的数据块C(i, j)中的数据;
步骤204,令k的值增加1;
步骤205,判断k是否小于m-1+/,如果是则执行步骤202,如果不是 则执行步骤206;
步骤206,将校验分组中各个数据块的数据进行异或计算并将计算结 果写入到校验块中;另外在上述步骤203中若已经读取了一个以上的数据 块的数据,则可在从数据块中读取数据后即将已经读取的数据进行异或计 算,并可以在此后的流程中,利用上次计算的异或值与本次读取的数据进
13行异或计算,在本步骤中仅将最后的异或计算结果写入校验块即可
本实施例中提供的多磁盘容错系统中生成校验块的方法,可以使用较少 的异或计算获取磁盘数据校验块,能够有效降低多磁盘容错系统中的计算复 杂度。
图9为本发明实施例中多磁盘容错系统中恢复数据块的方法的流程示意 图,本实施例中恢复数据块的方法是基于图1所示的多磁盘容错系统,如图
9所示,包括如下步骤
步骤301、获取待恢复数据块所属校验分组中其他数据块的数据以及 校验块的数据;
的数据进行计算获得所述待恢复数据块的数据;
步骤303、将所述计算获得的数据块的值写入到所述待恢复数据块中。 本实施例中提供的多磁盘容错系统中恢复数据块的方法,通过获取待恢 复数据块所属校验分组中其他数据块的数据以及校验块的数据,根据上述 数据获取待恢复的数据,其中的数据块和校验块由于采用了如图l所示实 施例的设置方式,能够使得在获取数据块时不需要进行复杂的乘加运算, 能够有效降低多磁盘容错系统在数据处理过程中的计算复杂度。
算获得所述待恢复数据块的数据包括根据所述校验块的数据以及其他数 据块的数据进行异或处理以获取待恢复数据块的数据。
上述实施例中的数据块恢复方法用在双磁盘容错系统中时,可使用校验 区域的第一行的校验块或者第二行的校验块进行校验,例如当待恢复的数据 块为D(i,j),可包括如图IO所示的步骤
步骤401、计算待恢复数据块D(i, j)的校验块的位置信息并获取校验 块的数据;
在存在两行校验块时,可利用第 一行或者第二行上的校验块进行数据恢复,利用该数据块在校验区域第一行(即第m行)上的校验块P(m,w) 时,其中的列号w可由如下的计算式获得w = (j-(m-i))%p,其中p为容 错磁盘数,利用该数据块在校验区域第二行(即第m+l行)上的校验块 P(m+l,y)时,其中的歹'J号y可由如下公式获得y = (j —(axm —i)/2)%p ,其 中a的取值情况如下在m-i为奇数或小于4时a为2,否则a为1。在 获取上述校验块的位置信息后,即可获取其中的数据;本步骤中给出在双 磁盘容错系统中根据数据块的位置信息计算其在校验区域的第 一 行和第 二行的校验块的列号的方法同样适用于由三个以上的磁盘组成的多磁盘 容错系统。
步骤402、读取校验分组中其他数据块的数据;
校验分组中其他数据块的行号和列号也可通过计算获得,对于步骤 401中在第一行上的校验块P(m,w)所属的校验分组,其数据块的行号为 (m-k)%m,列号为(n+k)y。p,其中k从l到m取值;对于步骤401中第二行 上的校验块P(m+l,y)所属的校验分组,其数据块的行号为(m-2k)%m,列号 为(n+k) %p;
步骤403、根据上述数据块所属的校验分组的其他数据块的数据和校 验块的数据得到待恢复的数据块的数据,并将该数据写入待恢复的数据块 中。
所述得到待恢复的数据块的数据可以根据将与所述数据块所属的校 验分组的其他数据块的数据和校验块的数据进行异或计算得到。
上述实施例中提供了在多磁盘容错系统中对待恢复数据块进行恢复的方 法,能够获得较优的数据块更新代价,在实现q个磁盘的容错系统中,更新一 个数据块只需要q+l次磁盘写操作即可,能够提高多磁盘容错系统的写性能。
图11为本发明实施例中双^磁盘容错系统在重建单个故障^磁盘的流程示 意图,本实施例是以双磁盘容错系统中发生单个磁盘故障为例,介绍恢复单 个-兹盘的方法,如图11所示,包括如下步骤步骤501,初始时设定变量i为0;
步骤502,变量i自力。1,并利用上述实施例中提到的单个损毁数据块的 恢复方法恢复损毁^磁盘上的数据块D(i, j),即通过获取损毁数据块的所属校 验分组的校验块的数据以及校验分组中其他数据块的数据,并将获取的数据
进行异或计算获得损毁数据块的数据;
步骤503,将步骤502中恢复的数据写入到数据块D(i, j);
步骤504,判断i的值是否小于m, m为设定的小于p-q的素数,其中p 为磁盘阵列中的磁盘个数,q为容错磁盘数目,在i的值小于m时执行步骤 502,在i值大于或等于m时执行步骤505;
步骤505,恢复损毁i兹盘上的校验块,在双磁盘容错系统中每个磁盘包 括两个校验块,因此本步骤中首先获取校验块P (m, j)所属的校验分组的 各个数据块的数据并进行异或计算,将异或计算的结果写入到校验块P (m, j)中;获取校验块P (m+l, j)所属的校验分组的各个数据块的数据并进行 异或计算,将异或计算的结果写入到校验块P (m+l, j)中。
图12为本发明实施例中多磁盘容错系统中恢复多个磁盘的方法流程示 意图,如图12所示,包括如下步骤
步骤601、确定一条恢复^各径的起始点;
例如以双磁盘容错系统为例,令两个故障磁盘的序号为a和b,即两个故 障磁盘在磁盘阵列中的列号为a和b,且a〉b,则确定一条恢复路径有两种情 况,第一种情况当两个故障》兹盘相邻时,即a-(b+l)y。p,此时存在两条恢复 路径, 一条是以校验块P(m, (a+l"/。p)恢复的b磁盘上的数据块为起始点的, 另一条是以校验块P(m+1, (b-Mp)恢复a磁盘上的数据块为起始点的。第二 种情况当两个故障》兹盘不相邻时,即a^b + l,此时存在4条恢复路径第一 条是以校验块P(m, (b+lV/。p)恢复的a磁盘上的数据块为起始点,第二条是以 校验块P(m, (a+l)。/。p)恢复的b磁盘上的数据块为起始点,第三条是以校验块 P(m+1, (b-lV/。p)恢复的a磁盘上的数据块为起始点,第四条是以校验块P(m+1, (a-1)y。p)恢复的b磁盘上的数据块为起始点。
步骤602、恢复上述恢复路径上的数据块或者校验块; 具体可以为在确定一条恢复路径的开始点后,交替使用不同校验行 上的校验块来恢复数据块。例如在双磁盘容错系统中某个故障磁盘b上的 数据块D (i, b)是利用第 一校验行上的校验块恢复的,则该恢复路径上的下 一个恢复的数据块为另一个故障磁盘a上的数据块D(j,a),其中D(j,a) 与D(i,b)所属的校验分组的校验块在第二校验行上。类似地,如果某个故 障磁盘b上的数据块D (i, b)是利用第二校验行上的校验块恢复的,则该恢 复路径上的下一个恢复的数据块为另一个故障磁盘a上的数据块D(j, a), 其中D(j,a)与D(i,b)所属的校验分组的校验块在第一校验行上。其中在 a〉b的情况下,j的值可由j二(i-(a-b))。/。m确定,此时D(j,a)与D(i,b)所属的 校验分组的校验块在第一校验行上;或者由j = (i-2x(a-b))。/。m确定,此时 D(j,a)与D(i,b))所属的校验分组的校验块在第二校验行上,其中m为预设的 小于磁盘阵列中磁盘数目p和容错磁盘数q的差的任一素数。具体的单个 数据块的恢复过程可以见图9所示的多磁盘容错系统中数据块恢复的方法 的实施例,才L险块的恢复可参见图7所示的实施例。
步骤60 3 、判断上述步骤中恢复的是损毁磁盘上的数据块还是校验块, 如果是校验块则终止恢复路径,并执行步骤604,如果是数据块则执行步 骤602;
步骤604、判断损毁磁盘上的所有数据块是否都恢复,如果是则执行 步骤605,如果不是则执行步骤601,重新确定一条恢复路径;
步骤605、判断损毁磁盘上的校验块是否都恢复,如果都恢复则结束 本流程,否则,执行步骤606;
步骤606、恢复损毁磁盘上未恢复的校验块。
以下以一个具体实施例说明上述的步骤601、 骤602中确定恢复3各径 并恢复该路径上的数据块和校验快的过程,以由7个磁盘组成的磁盘阵列中两个相邻》兹盘D3和D4 (即磁盘阵列中列号为3和4的磁盘)发生故障为例, 如图13所示,故障磁盘的数据块恢复存在两条并行路径。其中一条恢复路径 的起始点是利用从故障磁盘右侧的磁盘D5上的第一校验行的校验块 C (5, 5) (6)恢复D3上的数据块C (0, 3) (f 6),然后根据数据块C (0, 3) (f 6) 利用第二校验行的校验块C(6,5) (f)恢复D々故障磁盘的C(3, 4) (f3), 根据数据块C(3,4) (f3)利用第一校验行的校验块C(5,2) (3)恢复故障 磁盘D3的C(4, 3) (a3),根据数据块C(4,3) (a3)利用第二校验行的校 验块C(5,2) (a)恢复故障磁盘D4的C(2,4) ( a2 ),根据数据块C(2,4) (a2 )利用第一校验行的校验块C (5, 1) ( 2 )恢复故障磁盘D3的C (2, 3) (e2 ),根据数据块C (2, 3) ( e2 )所属的校验分组生成故障磁盘D4的第 二校验行上的校验块C(6,4) (e),该路径终止。上述恢复路径中可以简 单表示为
C(O, 3) /<5 4 C(3,— C(《3)a3 4 C(2,力a2 — C(3,3)e2 ■> C(6,4)e 另一条恢复路径的开始点是利用磁盘D2的第二校验行的校验块 C(6,2) (c)恢复的故障磁盘D4的数据块C(1,4) (cl),然后根据数据块 C(1,4) (cl)利用第一校验行的校验块C(5, O)( 1)恢复故障磁盘D3的C(2, 3) (gl),根据数据块C(2,3) (gl)利用第一校验行的校验块C(6,6) (g) 恢复故障磁盘D4的C(0,4) (g7),根据数据块C(0,4) (g7)利用第一校 验行的校验块C (5, 6) ( 7 )恢复故障磁盘D3的C (1, 3) ( b7 ),根据数据 块C(1,3) (b7)利用第二校验行的校验块C(6,1) (b)恢复故障磁盘D4 的C(4,4) (b4),根据数据块C(4,4) ( b4 )所属的校验分组生成故障i兹 盘D3的第一校验行上的校验块C(5,3) (4),该路径终止。上述恢复路径
中可以简单表示为
<formula>formula see original document page 18</formula>
从上述两条恢复路径可以看出,路经的开始点是利用故障磁盘的向右
的第 一校验行的校验块或向左的第二校验行的校验块开始的,然后交替使用第一校验行和第二校验行的校验块来恢复故障磁盘数据块,直到恢复的 是校验块为止,上述的两条路径可同时进行,从而能够提高恢复速度。对于 不相邻的双石兹盘故障数据恢复的方法同相邻的双》兹盘故障一样,不同的是 存在四条并行的恢复路径而已。本发明上述实施例中多是以双^磁盘容错为例进行说明,同时对于3个以上的多石兹盘容错系统也可以使用本发明实施例提供的数据块恢复方法,其中 在确定恢复路径时,各恢复路径上的交叉恢复数据块的顺序和方法有所差别。另外本发明实施例中的一个》兹盘可以看作是存储区域网络(Storage Area Network,以下简称SAN)中的一个存储节点,即将本发明实施例中的多磁 盘容^"的系统和方法应用到SAN:^支术中,数据的编码和解码的方法与上述实 施例相同。另外对于分布式存储系统容错,将本发明实施例中的单个磁盘作 为分布式存储系统中的一个网络节点,则可将本发明上述实施例中应用到分 布式存储系统中,其数据的编码和解码方法与上述实施例相同。本发明上述实施例提供的多磁盘容错系统、多磁盘容错系统中生成校验 块的方法、多磁盘容错系统中数据块恢复的方法和多磁盘容错系统中多个磁 盘恢复的方法,能够使用少量的异或计算来产生磁盘数据校验块,有效降低 多磁盘容错系统的计算复杂度,并获取的最优的数据块更新代价,在实现q 个磁盘的容错系统中,更新一个数据块只需要q+l次磁盘写操作,提高了多 磁盘容错系统的写性能。另外本发明实施例还可以获得各个磁盘负载均衡的 特性,无论计算校验块还是恢复数据块,各个磁盘的负载都是均衡的,从而 能够提高多磁盘容错系统的整体性能。最后应说明的是以上实施例仅用以说明本发明的技术方案而非对其进 行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技 术人员应当理解其依然可以对本发明的技术方案进行修改或者等同替换, 而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的 4青神和范围。
权利要求
1、一种多磁盘容错系统,包括通过系统总线连接的磁盘阵列和计算模块,其特征在于所述磁盘阵列由p个磁盘组成,其中p为大于或等于3的自然数,所述磁盘阵列的容错磁盘数为q,其中q为小于p/2且不小于2的自然数;所述磁盘阵列中的数据按照(m+q)×p的矩阵M形式进行排列,其中m为小于或等于p-q的素数;所述矩阵M中第0行为虚拟的值为0的虚拟数据块,第1行至第m-1行为数据块,第m行至第m+q-1行为校验块;其中校验块Cm-1+l,n所在校验分组中的各个数据块的行号为m-k·l,列号为n+k,k的取值范围为l到m-1+l,其中l为校验块在校验区域中的行号,1≤l≤q,n为校验块对应的列号,0≤n≤p-1;所述校验块中的数据为校验块所属校验分组中所有数据块的数据的异或值;所述计算模块用于根据校验分组中的数据块计算生成所述校验分组中的校验块,并在磁盘损毁时根据所述校验块恢复所述数据块。
2、 根据权利要求1所述的多磁盘容错系统,其特征在于,所述计算 模块包括第一获取单元,用于获取校验块所属校验分组中所有数据块的数据; 第一计算单元,用于根据所述第一获取单元获取的校验块所属校验分组中所有数据块的数据进行异或计算以获取所述校验块的数据;第一输出单元,用于将第一计算单元计算生成的校验块的数据写入到义兹盘阵列中相应的校验块中。
3、 根据权利要求1所述的多磁盘容错系统,其特征在于,所述计算 模块包括第二获取单元,用于获取待恢复数据块所属校验分组中除待恢复数据 块之外的其他数据块的数据以及校验块的数据;第二计算单元,用于根据第二获取单元获取的所述数据块的数据以及所述校验块的数据进行异或计算以获取所述待恢复数据块的数据;第二输出单元,用于将所述第二计算单元计算生成的待恢复数据块的 数据写入到所述待恢复数据块中。
4、 一种在如权利要求1所述的多磁盘容错系统中生成校验块的方法, 其特征在于,包括获取需要生成的校验块所属校验分组中所有数据块的数据; 根据所述校验分组中所有数据块的数据获得所述需要生成的校验块 中的校验数据;将上述获得的所述校验数据写入到所述磁盘阵列中的相应校验块中。
5、 根据权利要求4所述的多磁盘容错系统中生成校验块的方法,其 特征在于,所述根据校验分组中所有数据块的数据获得所述需要生成的校 验块中的校验数据包括根据校验分组中所有数据块的数据根据公式Cm—1+,, = (m—《(《获得所述需要生成的校验块中的校验数据Cm—1+/, 。
6、 一种在如权利要求1所述的多磁盘容错系统中恢复数据块的方法, 其特征在于,包括获取待恢复数据块所属校验分组中其他数据块的数据以及校验块的 数据;根据所述获取的校验分组中其他数据块的数据以及校验块的数据进 行计算获得所述待恢复数据块的数据;将所述计算获得的数据块的值写入到所述待恢复数据块中。
7、 根据权利要求6所述的多磁盘容错系统中恢复数据块的方法,其特征 在于,行计算获得 述待恢复数据块的数据包括复数据块的数据。
8、根据权利要求6所述的多磁盘容错系统中恢复数据块的方法,其特征在于,所述获取待恢复数据块所属校验分组中校验块的数据包括根据如下公式确定待恢复数据块在第m行的校验块的列号w以获取校验块的数据<formula>formula see original document page 4</formula>其中i为所述待恢复的数据块所在行的行 号,j为所述待恢复的数据块所在列的列号。
9、根据权利要求6所述的多磁盘容错系统中恢复数据块的方法,其特 征在于,所述获取待恢复数据块所属校验分组中校验块的数据包括根据如下公式确定待恢复数据块在第m+l行的校验块的列号y以获取 校验块的数据<formula>formula see original document page 4</formula>其中i为所述待恢复的数据块所 在行的行号,j为所述待恢复的数据块所在列的列号,在m-i为奇数或小于 2时,a为2,否则为1。
全文摘要
本发明实施例提供了一种多磁盘容错系统及生成校验块、恢复数据块的方法,其中多磁盘容错系统,包括通过系统总线连接的磁盘阵列和计算模块,磁盘阵列由p个磁盘组成,磁盘阵列的容错磁盘数为q;磁盘阵列中的数据按照(m+q)×p的矩阵M形式进行排列,其中m为小于或等于p-q的素数;矩阵M中第0行为虚拟的值为0的虚拟数据块,第1行至第m-1行为数据块,第m行至第m+q-1行为校验块。本发明实施例还提供了一种在多磁盘容错系统中生成校验块的方法,本发明实施例还提供了在多磁盘容错系统中恢复数据块的方法。能够在多磁盘容错系统中生成校验块以及恢复数据块的过程中,降低计算复杂度。
文档编号G06F11/10GK101625652SQ200910090420
公开日2010年1月13日 申请日期2009年8月4日 优先权日2009年8月4日
发明者姚建业, 王玉林 申请人:成都市华为赛门铁克科技有限公司;电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1