一种独立磁盘冗余阵列的数据恢复方法和装置的制作方法

文档序号:6353079阅读:205来源:国知局
专利名称:一种独立磁盘冗余阵列的数据恢复方法和装置的制作方法
技术领域
本发明涉及存储技术领域,尤其涉及一种独立磁盘冗余阵列(RedundantArray of Independent Disks, RAID)的数据恢复方法和装置。
背景技术
在存储技术领域中,如何提高独立磁盘阵列(也可简称为磁盘阵列(DiskArray) 的可靠性一直是研究的重点和焦点。目前,不同RAID的特性不同,例如RAID5的读写性能 高于RAID6,但在可靠性方面却低于RAID6(RAID5只能够支持单盘失效,RAID6能够支持双 盘失效)。因此,为了提高可靠性,能够同时利用RAID5的高读写性能以及RAID6的高可靠 性,在现有的技术方案中,一种可行的方案是在WORM (Write-Once/Read Many,一次写入多 次读取)场景下,首先创建RAID5来存储写入的数据,然后在数据稳定后,再通过RAID组的 动态级别迁移技术从RAID5迁移到RAID6 (如图1所示),即,在写入数据的前期使用RAID5, 而在数据的保护期间使用RAID6,在磁盘发生故障时,使用RAID6的保护机制对发生故障的 磁盘中的数据进行恢复。其中,RAID组的动态级别迁移技术指的是在原有RAID磁盘组的基础上,进行数 据的重新组织整理,最终形成新的RAID级别,实现在容量、可靠性以及性能之间的动态调 整。具体地,动态级别迁移的过程是以RAID组(即RAID磁盘组)中的LUN(Logic Unit Number,逻辑单元号)为单位进行的,首先从RAID5磁盘组中读出数据,利用这些数据计算 生成RAID6需要的PQ校验位,再将算出的PQ校验位写入到原RAID组的成员盘中,这个过 程中需要对原RAID组中的数据进行迁移。从而,上述方案通过采用动态级别迁移技术可以有效地利用不同RAID级别(例 如RAID5和RAID6)的特点,在WORM场景下,在存储写入的数据的前期使用读写性能比较 好的RAID5,并在数据写入完毕后进行数据的重新整理,将所在的RAID组由RAID5迁移至可 靠性更好的RAID6,最终达到了提高迁移后的RAID组的可靠性的目的。RAID6虽然读写性 能低于RAID5,但是,由于WORM场景具有一旦数据写入完成、数据的更新就比较少的特点, 因此写性能略低不会影响系统的正常业务。但是,上述采用动态级别迁移技术来提高RAID的可靠性的方案至少存在如下技 术问题在RAID组的动态级别迁移过程中,需要进行的数据迁移存在比较大的风险,因为 一旦数据开始迁移则不允许失败,如果在迁移的过程中出现失败(例如在数据迁移的过程 中出现磁盘故障导致失败),则会导致同一个RAID组内有不同配置的LUN,以及可能会造成 用户的数据丢失。

发明内容
本发明实施例提供一种独立磁盘冗余阵列的数据恢复方法和装置,可至少解决现有技术中存在比较大的风险的问题。一方面,提供了一种独立磁盘冗余阵列(RAID)的数据恢复方法,RAID包括多个磁 盘,RAID中的数据划分为多个条带,每个条带的分条单元分布在RAID的不同磁盘上,该方 法包括将保护磁盘与RAID进行关联;使用RAID中的数据生成保护数据,并将保护数据写 入保护磁盘;当RAID中的至少一块磁盘发生故障时,使用保护磁盘中的保护数据以及RAID 中未发生故障的磁盘中的数据,对发生故障的磁盘中的数据进行恢复。另一方面,提供了一种独立磁盘冗余阵列(RAID)的数据恢复装置,RAID包括多个 磁盘,RAID中的数据划分为多个条带,多个条带的分条单元分别分布在多个磁盘上,该装置 包括关联模块,用于将保护磁盘与RAID进行关联;生成写入模块,用于使用RAID中的数 据生成保护数据,并将保护数据写入保护磁盘;恢复模块,用于当RAID中的至少一块磁盘 发生故障时,使用保护磁盘中的保护数据以及RAID中未发生故障的磁盘中的数据,对发生 故障的磁盘中的数据进行恢复。本发明实施例通过将RAID以外的磁盘作为保护磁盘与RAID进行关联,并将保护 数据存储在该保护磁盘中,在RAID中的一块或多块磁盘发生故障时,可以使用保护磁盘中 的保护数据对发生故障的磁盘中的数据进行恢复,从而实现了对RAID中的数据的保护,提 高了 RAID的可靠性。与现有技术相比,本发明实施例将保护数据写入到RAID以外的磁盘 中,不会影响原RAID的读写性能、级别及配置信息等,并且无需对原RAID中的数据进行迁 移活动,从而在不改变RAID的基础上,提高了 RAID的可靠性,避免了现有技术中由于数据 迁移带来的较大的风险。


为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中 所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明一部分 实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些 附图获得其他的附图。图1是根据现有技术的从RAID5磁盘组迁移到RAID6磁盘组的示意图2是根据本发明实施例的RAID的结构示意图3是根据本发明实施例一-的RAID的数据恢复方法的流程图4是根据本发明实施例一-的将RAID与保护磁盘进行关联的示意图5是根据本发明实施例二-的生成保护数据的流程图6是根据本发明实施例二-的RAID5中条带的数据分布示意图7是根据本发明实施例二-的保护磁盘中的保护数据的存储结构示意图
图8是根据本发明实施例二-的失效数据的恢复示意图9是根据本发明实施例一-的RAID的数据恢复装置的结构示意图10是根据本发明实施例—二的RAID的数据恢复装置的结构示意图11是根据本发明实施例_三的RAID的数据恢复装置的结构示意图。
具体实施例方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施方式,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式
仅仅用于解释本发 明,并不用于限定本发明。在RAID (也称为RAID组或RAID磁盘组)的应用系统中,一个硬盘框中包括多个 磁盘(或硬盘、固态硬盘等其他存储介质),且该硬盘框由控制系统进行控制。用户可以通 过管理装置(例如管理软件、管理客户端等)下发各种指令到控制系统,并由控制系统根据 该指令来执行相应操作,例如使用硬盘框中的若干个磁盘创建各种级别的RAID、以及对 创建的RAID进行访问等。为了方便理解,首先介绍一下RAID的结构。如图2所示,四个竖条代表了 RAID 包括的4个磁盘,可以分别编号为第0-3块磁盘;RAID中的数据被划分为多个LUN(也可 以称为逻辑卷(Volume)),每个LUN又可以进一步划分为多个条带(Mripe),即在磁盘相 同偏移处横向逻辑分割形成条带;一个条带所占用的单块磁盘上的区域称作一个分条单元 Segment),每个条带的分条单元分布在RAID的不同磁盘上。实施例一图3是根据本发明实施例一的RAID的数据恢复方法的流程图,该方法可以在上述 应用系统中实现,并可以由该应用系统中的管理装置和控制系统来执行。如图3所示,该方 法包括以下步骤步骤S302,将保护磁盘与RAID进行关联;例如,根据用户输入的所要保护的RAID的标识以及保护磁盘的标识,建立该保护 磁盘与该RAID之间的关联关系。在实际应用系统中,用户可以在管理装置提供的界面中输 入所要保护的RAID的信息,再输入要作为保护磁盘的空闲磁盘的信息,然后通过下发相应 指令通知控制系统将该RAID与该保护磁盘进行关联,例如建立该RAID与该保护磁盘的对 应关系。在关联的过程中,并不会改变该RAID的配置信息、级别等,因而也不影响该所要保 护的RAID的读写性能。如图4所示,RAID中创建了三个LUN,分别为LUN A、LUN B和LUNC,用户通过管理 装置的界面选定保护磁盘之后,将根据这三个LUN中的各个条带的数据生成保护数据,并 写入保护磁盘中的对应位置。图4中仅示出了保护磁盘为一个的情况,可以理解,在实际应 用中根据实际需要保护磁盘也可以是多个。步骤S304,使用RAID中的数据生成保护数据,并将保护数据写入保护磁盘;例如,可以使用RAID中各个磁盘的数据并按照预定的算法生成保护数据,例如 RAID5中的P校验数据的算法、RAID6中的Q校验数据的算法等。另外,在将生成的保护数 据写入保护磁盘时,为了方便管理,可以按照RAID的各个条带在所述RAID中的位置,将与 所述各个条带相对应的保护数据依次写入到所述保护磁盘中。步骤S306,当RAID中的至少一块磁盘发生故障时,使用保护磁盘中的保护数据以 及RAID中未发生故障的磁盘中的数据,对发生故障的磁盘中的数据进行恢复。本发明实施例通过将RAID以外的磁盘作为保护磁盘与RAID进行关联,并将保护 数据存储在该保护磁盘中,在RAID出现异常如其中的一块或多块磁盘发生故障时,可以使 用该保护磁盘中的保护数据对发生故障的磁盘中的数据进行恢复,从而实现了对RAID中 的数据的保护,提高了 RAID的可靠性。与现有技术相比,本发明实施例将保护数据写入到 RAID以外的磁盘中,在提高了 RAID的可靠性的基础上,不会影响原RAID的读写性能以及配置信息等,并且无需对原RAID中的数据进行迁移活动,从而避免了现有技术中由于数据迁 移带来的较大的风险。另外,由于关联的保护磁盘不会影响原RAID的读写性能以及配置信息等,这样 RAID的级别不会发生改变RAID,原RAID的读写性能也不受影响,使得RAID既保持了原有 读写性能不下降,又提高了可靠性,实现了在可靠性和性能之间的动态平衡。由于RAID的 级别不变,因此,也避免了现有技术级别迁移后,若用户要想重新使用迁移前的状态还需再 次进行动态级别迁移的问题。并且,现有技术在动态级别迁移的过程中,需要将利用RAID5组中的数据算出的 PQ校验位写入到原RAID组的成员盘中,这样,由于向原RAID组的成员盘中增加了数据(即 算出的PQ校验位),因此需要预先计算好具有新RAID级别(RAID6)的RAID组的容量,当新 RAID级别(RAID6)的RAID组的容量小于或等于原RAID磁盘组的容量限值时,迁移才可能 成功。从而,上述现有的技术方案受限于RAID磁盘组的容量限值,而且会存在由于磁盘空 间不足而导致动态级别迁移失败的情况。而本发明实施例由于保护数据写入到RAID以外 的保护磁盘中而非写入到RAID中,从而本发明实施例不会受限于原RAID的容量限值,同样 也不会发生由于原RAID的容量不足而失败的情况。实施例二下面以RAID的级别为RAID5为例,详细说明如图3所示的数据恢复方法的具体处 理流程,包括以下步骤步骤1 如图4所示,将所要保护的RAID5与作为保护磁盘的空闲磁盘进行关联; 该步骤对应于图3中的步骤S302。步骤2 依次获取RAID5的各个条带的数据,并根据获取的各个条带的数据,计算 各个条带所对应的保护数据;其中,对于每个条带,可以按照RAID6的Q校验算法计算该条带所对应的保护数据 Q,具体参见如下公式(1)
权利要求
1.一种独立磁盘冗余阵列RAID的数据恢复方法,所述RAID包括多个磁盘,所述RAID 中的数据划分为多个条带,每个条带的分条单元分布在所述RAID的不同磁盘上,其特征在 于,所述方法包括将保护磁盘与所述RAID进行关联;使用所述RAID中的数据生成保护数据,并将所述保护数据写入所述保护磁盘; 当所述RAID中的至少一块磁盘发生故障时,使用所述保护磁盘中的所述保护数据以 及所述RAID中未发生故障的磁盘中的数据,对所述发生故障的磁盘中的数据进行恢复。
2.如权利要求1所述的方法,其特征在于,所述将保护磁盘与所述RAID进行关联包括根据用户输入的所要保护的所述RAID的标识以及所述保护磁盘的标识,建立所述保 护磁盘与所述RAID之间的关联关系。
3.如权利要求1所述的方法,其特征在于,所述使用所述RAID中的数据生成保护数据, 并将所述保护数据写入所述保护磁盘包括依次获取所述RAID的各个条带的数据;根据获取的所述各个条带的数据,计算所述各个条带所对应的保护数据; 按照所述各个条带在所述RAID中的位置,将与所述各个条带相对应的保护数据依次 写入到所述保护磁盘中。
4.如权利要求3所述的方法,其特征在于,当所述RAID中的至少一块磁盘发生故障时, 使用所述保护磁盘中的所述保护数据以及所述RAID中未发生故障的磁盘中的数据,对所 述发生故障的磁盘中的数据进行恢复包括依次获取所述各个条带的数据、以及所述保护磁盘中与所述各个条带对应的保护数据;根据获取到的数据,计算所述各个条带中所述发生故障的磁盘上的分条单元对应的恢 复数据。
5.如权利要求4所述的方法,其特征在于,当所述RAID的级别为RAID5、RAID3或RAID4 时,根据获取的所述各个条带的数据,计算所述各个条带所对应的保护数据包括对于每个条带,按照以下公式计算该条带所对应的保护数据Q Q 二 !OxDoeS^Di 〗2)^: ... 〕11)^。,其中,D。,D1,...,Dn 分别表示该条带的数据中第O号,第1号,...,第η号磁盘上的分条单元的数据, 表示异或算 法,X表示有限域上的数据变换算法,η表示所述RAID包括的磁盘的个数-1,η为自然数。
6.如权利要求5所述的方法,其特征在于,在所述发生故障的磁盘有两个的情况下,根 据获取到的数据,计算所述各个条带中所述两个磁盘上的分条单元对应的恢复数据包括对于每个条带,按照以下公式分别计算该条带中所述两个磁盘上的分条单元对应的恢 复数据Dx=P-P1-DyDy=(Q-Q')/( 2y-2x) —(P-P')/(2y-x-‘)P'= D0 十…十 Dx4 十 DxJ-JDy^DyJ-JDn‘Q'= 20 xD。十…十2"1 XDi^eax+1XDjm 十…十Sy-'xDy 〗”1 xDy+1 十…十2n xDn其中,χ和y表示发生故障的所述两个磁盘的编号,Dx表示该条带中第χ号磁盘上的分 条单元对应的恢复数据,Dy表示该条带中第y号磁盘上的分条单元对应的恢复数据,0 ^ χ < y < η,χ和y均为自然数,P表示该条带中的P校验数据,Q表示所述保护磁盘中与该条 带对应的保护数据。
7.如权利要求4所述的方法,其特征在于,还包括当所述RAID的级别为RAIDlO时, 根据获取的所述各个条带的数据,计算所述各个条带所对应的保护数据包括在所述保护磁盘为1块的情况下,对于每个条带,按照以下公式计算该条带所对应的 保护数据P P = D0eDieD2@... Dn,其中,Dtl,D1,...,Dn分别表示该条带的数据中第0号,第1号,...,第η号磁盘上的分条单元的数据,第0号,第1号,...,第η号磁盘为所述RAIDlO 中的源盘, 表示异或算法,X表示有限域上的数据变换算法,η表示[(所述RAIDlO包括 的磁盘的个数)/2]-1,η为自然数;在所述保护磁盘为2块的情况下,对于每个条带,按照以下公式计算该条带所对应的 保护数据n^m ^on τ, ’其中,P表示该条带所对应的第一保护 xD2 Θ...Θ2 xDn磁盘的保护数据,Q表示该条带所对应的第二保护磁盘的保护数据,Dtl,D1,...,Dn分别表示 该条带的数据中第O号,第1号,...,第η号磁盘上的分条单元的数据,第O号,第1号,..., 第η号磁盘为所述RAIDlO中的源盘, 表示异或算法,X表示有限域上的数据变换算法,η 表示[(所述RAIDlO包括的磁盘的个数)/2]-1,η为自然数。
8.如权利要求7所述的方法,其特征在于,根据获取到的数据,计算所述各个条带中所 述两个磁盘上的分条单元对应的恢复数据包括在所述保护磁盘为1块、且所述RAIDlO中的第χ号磁盘及其备份磁盘均发生故障的情 况下,对于每个条带,按照以下公式计算该条带中所述第χ号磁盘上的分条单元对应的恢 复数据Dx 应的保护数据;在所述保护磁盘为2块、且所述RAIDlO中的第χ号磁盘及其备份磁盘和第y号磁盘及 其备份磁盘均发生故障的情况下,对于每个条带,按照以下公式计算该条带中所述第χ号 磁盘上的分条单元对应的恢复数据Dx和所述第y号磁盘上的分条单元对应的恢复数据Dy Dx=P-P1-DyDy=(Q-Q’)/( 2y-2x)-(P-P')/(2y-x"1)P ‘ = D0 十…十 D^1 十 Dx+1 十...十 Dy]十 Dy+1 十...十 Dn‘Q, = 20 χD0 十…十 2Χ] χDx.!十 2X+1 χDx+1 十…十2y“ χDy.,十2y+1 χDy+1 十…十2η χD11其中,0 < χ < y < η,χ和y均为自然数,P表示所述第一保护磁盘中与该条带所对应 的保护数据,Q表示所述第二保护磁盘中与该条带所对应的保护数据。
9.如权利要求1至8中任一项所述的方法,其特征在于,还包括解除所述保护磁盘与Dx=P-P'P' = Dn .·.十IX,十D“,十…十D,其中,P表示保护磁盘中与该条带对所述RAID的关联。
10.一种独立磁盘冗余阵列RAID的数据恢复装置,所述RAID包括多个磁盘,所述RAID 中的数据划分为多个条带,所述多个条带的分条单元分别分布在所述多个磁盘上,其特征 在于,包括关联模块,用于将保护磁盘与所述RAID进行关联;生成写入模块,用于使用所述RAID中的数据生成保护数据,并将所述保护数据写入所 述保护磁盘;恢复模块,用于当所述RAID中的至少一块磁盘发生故障时,使用所述保护磁盘中的所 述保护数据以及所述RAID中未发生故障的磁盘中的数据,对所述发生故障的磁盘中的数 据进行恢复。
11.如权利要求10所述的装置,其特征在于,所述生成写入模块包括第一获取模块,用于依次获取所述RAID的各个条带的数据;生成模块,用于根据所述第一获取模块获取的所述各个条带的数据,计算所述各个条 带所对应的保护数据;第一写入模块,用于按照所述各个条带在所述RAID中的位置,将所述生成模块计算的 与所述各个条带相对应的保护数据依次写入到所述保护磁盘中。
12.如权利要求11所述的装置,其特征在于,所述恢复模块包括第二获取模块,用于依次获取所述各个条带的数据、以及所述保护磁盘中与所述各个 条带对应的保护数据;计算模块,用于根据所述第二获取模块获取到的数据,计算所述各个条带中所述发生 故障的磁盘上的分条单元对应的恢复数据。
全文摘要
本发明实施例提供了一种独立磁盘冗余阵列(RAID)的数据恢复方法和装置,属于存储技术领域。其中,RAID包括多个磁盘,RAID中的数据划分为多个条带,每个条带的分条单元分布在RAID的不同磁盘上,上述的数据恢复方法包括将保护磁盘与RAID进行关联;使用RAID中的数据生成保护数据,并将保护数据写入保护磁盘;当RAID中的至少一块磁盘发生故障时,使用保护磁盘中的保护数据以及RAID中未发生故障的磁盘中的数据,对发生故障的磁盘中的数据进行恢复。本发明实施例在不改变RAID的基础上,提高了RAID的可靠性,避免了现有技术中由于数据迁移带来的较大的风险。
文档编号G06F11/14GK102081559SQ20111000616
公开日2011年6月1日 申请日期2011年1月11日 优先权日2011年1月11日
发明者胡伟, 薛迎春 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1