2024年6月8日发(作者:)

(19)中华人民共和国国家知识产权局

(12)发明专利说明书

(21)申请号 CN2.3

(22)申请日 2009.12.30

(71)申请人 创新科存储技术有限公司;创新科软件技术(深圳)有限公司

地址 100083 北京市海淀区学院路51号首享科技大厦8层

(72)发明人 鲍清平 饶国林

(74)专利代理机构 北京德琦知识产权代理有限公司

代理人 谢安昆

(51)

G06F3/06

G06F11/16

(10)申请公布号 CN 101840311 A

(43)申请公布日 2010.09.22

权利要求说明书 说明书 幅图

(54)发明名称

适用于RAID系统的自动修复方法

以及RAID系统

(57)摘要

本发明公开了一种适用于独立冗余

磁盘阵列(RAID)系统的自动修复方法,在

由多个磁盘组成的RAID系统中,在每个

磁盘槽位接口上提供控制磁盘实现单独

下、上电的电路,该方法包括如下步骤:

A、当所述RAID系统中作为成员盘的第一

磁盘无法响应IO操作时,通过所述电路对

所述第一磁盘进行单独下电处理,再对所

述第一磁盘进行单独上电处理;B、判断

所述第一磁盘是否能够响应IO操作,若

是,则完成对RAID系统的自动修复,否

则,启动热备盘来重建所述RAID系统。

本发明还公开了一种RAID系统。本发明

方案可以在多数情况下避免使用热备盘进

行重建操作,提高了RAID系统性能和可

靠性,并节省了磁盘。

法律状态

法律状态公告日

法律状态信息

法律状态

权 利 要 求 说 明 书

1.一种适用于独立冗余磁盘阵列RAID系统的自动修复方法,其特征在于,在由多

个磁盘组成的RAID系统中,在每个磁盘槽位接口上提供控制磁盘实现单独下、上

电的电路,该方法包括如下步骤:

A、当所述RAID系统中作为成员盘的第一磁盘无法响应IO操作时,通过所述电

路对所述第一磁盘进行单独下电处理,再对所述第一磁盘进行单独上电处理;

B、判断所述第一磁盘是否能够响应IO操作,若是,则完成对RAID系统的自动

修复,否则,启动热备盘来重建所述RAID系统。

2.根据权利要求1所述的方法,其特征在于,所述步骤A包括:

A1、当RAID系统收到IO操作请求时,判断RAID系统中的磁盘是否能够响应IO

操作,若是,则退出本流程,否则当RAID系统中的第一磁盘无法响应IO操作,

则对第一磁盘进行单独下电处理,并启动预先设定的时间间隔定时器;

A2、所述时间间隔定时器超时,则对第一磁盘进行上电处理。

3.根据权利要求1所述的方法,其特征在于,所述通过所述电路对所述第一磁盘进

行单独下电处理,再对所述第一磁盘进行单独上电处理的同时,进一步包括如下步

骤:判断是否对RAID系统的磁盘进行写操作,若是,则记录执行写操作的条带序

号;

以及,步骤B所述判断所述第一磁盘是否能够响应IO操作的结果为是,进一步包

括:根据所记录的执行写操作的条带序号,将执行了写操作的条带上存储的内容恢

复到第一磁盘下电处理之前的状态。

4.根据权利要求3所述的方法,其特征在于,预先设置条带写记录数组,所述条带

写记录数组中的每一个元素对应RAID系统的一个条带;

所述记录执行写操作的条带序号包括:

根据写命令的地址和数据长度,计算该写命令对应到RAID系统的至少一个条带号,

并将所述至少一个条带号记录到所述条带写记录数组的元素中。

5.根据权利要求4所述的方法,其特征在于,所述预先设置条带写记录数组的步骤

包括:将所述条带写记录数组中的元素初值设置为-1。

6.根据权利要求4所述的方法,其特征在于,所述根据所记录的执行写操作的条带

序号,将执行了写操作的条带上存储的内容恢复到第一磁盘无法响应IO操作之前

的状态包括:

读取条带写记录数组中的元素值x,根据所述RAID系统中除第一磁盘之外的其他

磁盘的序号为x的条带上的内容,重构第一磁盘的序号为x的条带上的内容。

7.一种独立冗余磁盘阵列RAID系统,所述RAID系统包含多个磁盘,所述多个磁

盘包括至少一个热备盘以及多个成员盘,其特征在于,所述RAID系统包括:

在每个磁盘槽位接口上提供控制磁盘实现单独下、上电的电路;

第一判断模块,用于判断作为成员盘的磁盘是否能够响应IO操作,若第一磁盘无

法响应IO操作,则通过所述电路对所述第一磁盘进行单独下电处理,再对所述第

一磁盘进行单独上电处理;

第二判断模块,用于判断所述第一磁盘在上电处理之后,是否能够响应IO操作,

若否,激活重建模块;

重建模块,用于在被激活后,启动热备盘并执行对RAID系统的重建。

8.根据权利要求7所述的RAID系统,其特征在于,所述第一判断模块进一步包括

时间间隔定时器;

所述第一判断模块对所述第一磁盘进行单独下电处理时,启动所述时间间隔定时器,

当所述时间间隔定时器超时时,对所述第一磁盘进行单独上电处理。

9.根据权利要求7所述的RAID系统,其特征在于,所述RAID系统进一步包括:

写操作记录模块,用于在对所述第一磁盘进行单独下电处理,到对所述第一磁盘进

行单独上电处理的时间间隔内,判断是否对RAID系统的磁盘进行写操作,若是,

则记录执行写操作的条带序号;以及,

内容恢复模块,用于在第二判断模块判断所述第一磁盘在上电处理之后能够响应

IO操作后,根据所述写操作记录模块所记录的执行写操作的条带序号,将执行了

写操作的条带上存储的内容恢复到第一磁盘下电处理之前的状态。

说 明 书

技术领域

本发明涉及计算机存储技术领域,特别涉及独立冗余磁盘阵列

(Redundant Array of Independent Disks,RAID)技术,尤其涉及一种适用于RAID系

统的自动修复方法以及RAID系统。

背景技术

作为网络存储系统的基础和关键部件,RAID以其快速、海量和高可靠性的特点而

著称。RAID技术出现后,在工业、军事、教育等各个领域的应用需求十分广泛,

对RAID技术的研究也一直是行业热点。

热备盘是指在正常情况下作为备份用的磁盘,不用于数据存储;只有当RAID系统

中发生磁盘损坏导致RAID成员盘失效时,热备盘自动取代失效的RAID成员盘用

于存储数据。热备盘取代RAID成员盘的过程又称为RAID系统重建。热备盘的使

用,提高了RAID系统的数据安全性,从而实现安全冗余。热备盘的类型主要有如

下三种:

1)分布式热备盘(Distributed Spare)

适用范围:部分冗余RAID组;

特点:某RAID组专有;分配时就占用实际的物理磁盘空间;其冗余空间平均分布

在该阵列所有磁盘上;

2)专用热备盘(Dedicated Spare)

适用范围:所有冗余RAID组;

特点:某RAID组专有;仅在使用时才占用实际的物理磁盘空间;其冗余空间分布

在指定的磁盘上;

3)全局热备盘(Global Spare)

适用范围:所有冗余RAID组;

特点:所有RAID组共有;仅在使用时才占用实际的物理磁盘空间;其冗余空间分

布在指定的磁盘上。

通过加入热备盘恢复失效的成员盘上的数据,RAID系统重建能够从头到尾恢复失

效盘的数据,重建完成之后热备盘就会成为正式的成员盘取代原来的失效的成员盘。

这样,通过RAID系统的重建功能,可以提高其可靠性。

现有技术中,当上层的输入输出(IO)请求不能被RAID系统的某个成员盘响应时,

一般都会认为该成员盘已经失效,RAID系统会自动启动重建过程。RAID系统的

重建操作开销大、周期长,影响正常的数据IO的性能,并且一般在重建期间,如

果有另外的磁盘失效,RAID系统会直接崩溃,进而让RAID系统非常脆弱,因此

应当尽量避免启动重建操作。

绝大多数情况下,上层的IO请求不能被RAID系统的某个成员盘响应,并非作为

该成员盘的磁盘真正失效了。据磁盘制作商Seagate公司统计,磁盘不能响应IO

请求时,95%的情况是因为固件、校验之类的软件错误导致的,这些情况可以通过

简单修复操作使磁盘仍然有效;只有5%的情况下,是由于磁盘真正失效。因此,

如果在磁盘并没有真正失效的情况下,就对RAID系统启动重建过程,会极大提高

RAID系统的使用和维护成本。

发明内容

有鉴于此,本发明的目的在于,提出一种适用于RAID系统的自动修复方法以及

RAID系统,可以避免不必要的重建过程,从而降低RAID系统的使用和维护成本。

本发明实施例提出的一种适用于RAID系统的自动修复方法,在由多个磁盘组成的

RAID系统中,在每个磁盘槽位接口上提供控制磁盘实现单独下、上电的电路,该

方法包括如下步骤:

A、当所述RAID系统中作为成员盘的第一磁盘无法响应IO操作时,通过所述电

路对所述第一磁盘进行单独下电处理,再对所述第一磁盘进行单独上电处理;

B、判断所述第一磁盘是否能够响应IO操作,若是,则完成对RAID系统的自动

修复,否则,启动热备盘来重建所述RAID系统。

较佳地,所述步骤A包括:

A1、当RAID系统收到IO操作请求时,判断RAID系统中的磁盘是否能够响应IO

操作,若是,则退出本流程,否则当RAID系统中的第一磁盘无法响应IO操作,

则对第一磁盘进行单独下电处理,并启动预先设定的时间间隔定时器;

A2、所述时间间隔定时器超时,则对第一磁盘进行上电处理。

较佳地,所述通过所述电路对所述第一磁盘进行单独下电处理,再对所述第一磁盘

进行单独上电处理的同时,进一步包括如下步骤:判断是否对RAID系统的磁盘进

行写操作,若是,则记录执行写操作的条带序号;

以及,步骤B所述判断所述第一磁盘是否能够响应IO操作的结果为是,进一步包

括:根据所记录的执行写操作的条带序号,将执行了写操作的条带上存储的内容恢

复到第一磁盘下电处理之前的状态。

预先设置条带写记录数组,所述条带写记录数组中的每一个元素对应RAID系统的

一个条带;

所述记录执行写操作的条带序号包括:

根据写命令的地址和数据长度,计算该写命令对应到RAID系统的至少一个条带号,

并将所述至少一个条带号记录到所述条带写记录数组的元素中。

所述预先设置条带写记录数组的步骤包括:将所述条带写记录数组中的元素初值设

置为-1。

所述根据所记录的执行写操作的条带序号,将执行了写操作的条带上存储的内容恢

复到第一磁盘无法响应IO操作之前的状态包括:

读取条带写记录数组中的元素值x,根据所述RAID系统中除第一磁盘之外的其他

磁盘的序号为x的条带上的内容,重构第一磁盘的序号为x的条带上的内容。

本发明实施例还提出一种RAID系统,所述RAID系统包含多个磁盘,所述多个磁

盘包括至少一个热备盘以及多个成员盘,所述RAID系统还包括:

在每个磁盘槽位接口上提供控制磁盘实现单独下、上电的电路;

第一判断模块,用于判断作为成员盘的磁盘是否能够响应IO操作,若第一磁盘无

法响应IO操作,则通过所述电路对所述第一磁盘进行单独下电处理,再对所述第

一磁盘进行单独上电处理;

第二判断模块,用于判断所述第一磁盘在上电处理之后,是否能够响应IO操作,

若否,激活重建模块;

重建模块,用于在被激活后,启动热备盘并执行对RAID系统的重建。

较佳地,所述第一判断模块进一步包括时间间隔定时器;

所述第一判断模块对所述第一磁盘进行单独下电处理时,启动所述时间间隔定时器,

当所述时间间隔定时器超时时,对所述第一磁盘进行单独上电处理。

较佳地,所述RAID系统进一步包括:

写操作记录模块,用于在对所述第一磁盘进行单独下电处理,到对所述第一磁盘进

行单独上电处理的时间间隔内,判断是否对RAID系统的磁盘进行写操作,若是,

则记录执行写操作的条带序号;以及,

内容恢复模块,用于在第二判断模块判断所述第一磁盘在上电处理之后能够响应

IO操作后,根据所述写操作记录模块所记录的执行写操作的条带序号,将执行了

写操作的条带上存储的内容恢复到第一磁盘下电处理之前的状态。

从以上技术方案可以看出,当磁盘无法响应IO操作时,首先通过下电、上电处理

对该磁盘进行修复,如果上述处理后磁盘能够响应IO操作,则无需进行RAID系

统重建。更进一步地,记录磁盘下电下电、上电过程中进行写操作的条带,在磁盘

能够响应IO操作后,将RAID系统进行写操作的条带恢复到下电之前的状态。

本发明方案针对RAID系统的某个磁盘无法响应上层IO请求而设计。当IO请求无

法响应时,会对相应的磁盘做下电处理,并记录自下电以来RAID系统的哪些条带

发生过写操作,当再次上电时,如果该磁盘能响应IO请求,则重构相应条带其它

磁盘上的数据到该磁盘上。本发明方案避免了不分情况如何,即武断地使用热备盘

进行重建操作,提高了RAID系统性能和可靠性,并节省了磁盘。

附图说明

图1为本发明实施例的条带写记录数组中记录的内容示意图;

图2为本发明实施例的从磁盘无法响应IO请求至上电成功期间,写操作发生时相

应条带记录过程的流程示意图;

图3为本发明实施例的“坏盘”修复过程的流程示意图。

具体实施方式

本发明方案提出的RAID系统自动修复方法为:在RAID系统的每个磁盘槽位接口

上提供了控制磁盘实现单独下、上电的电路;当RAID系统的某个磁盘无法响应

IO操作时,首先试图对其进行下、上电处理来自动修复,如果不能达到目的,则

启动热备盘进行重建操作。

如果能够通过下、上电处理来修复磁盘,在磁盘无法响应IO操作到该磁盘重新上

电的过程中,可能对RAID系统中的某些条带进行了写操作(当然也可能所有条带

都没有任何写操作)。为了避免某些条带进行了写操作的情况,需要在下、上电的

过程中记录下进行了写操作的条带,并对这些条带中的内容进行恢复。

为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明实施例作进

一步的详细阐述。

为了实现本发明实施例方案,定义了一个条带写记录数组:wtd_stripe_nos[],该数

组的每一项元素的初始值设置为-1。该数组的每一项元素用于记录从RAID系统的

某个磁盘无法响应IO请求至上电成功期间,RAID系统上发生过写操作的一个或

连续多个条带号。在上电成功后,根据该数组记录的内容来做相关条带的修复。

图1所示为本发明实施例中条带写记录数组中记录的内容示意图。图1中示出了由

多个成员盘组成的RAID系统,如图1所示,条带写记录数组中的每一个元素对应

RAID系统中的一个或连续的多个条带,为方便描述,以下假设一个元素对应一个

条带。元素值为-1,表示从RAID系统下电到上电期间该元素对应的条带没有进行

写操作;元素值不是-1,则元素值表示了在RAID系统从下电到上电期间发生写操

作的条带号。从图1所示的条带写记录数组可以看出,该RAID系统从磁盘无法响

应IO请求到上电期间,第0至第n个条带被执行了写操作,而其他条带未执行写

操作。

图2为本发明实施例从磁盘无法响应IO请求至上电成功期间,写操作发生时相应

条带记录过程的流程示意图,具体包括如下步骤:

步骤201:设置条带写记录数组wtd_stripe_nos,为该数组的每一项元素设置初始

值为-1。

步骤202:申请全局变量cur_idx,并为其初始化为0。cur_idx表示条带写记录数

组wtd_stripe_nos的当前元素序号。

步骤203:当前IO请求处理失败,转至步骤204。

步骤204:对所述IO请求相应的磁盘进行下电操作。

步骤205:判断该IO请求是否为写操作,若是,执行步骤206,否则转至步骤207。

步骤206:计算该IO请求对应的条带编号x,并把数组wtd_stripe_nos的当前元素

序号cur_idx对应的元素设置为该条带编号值x

步骤207:对所述磁盘进行上电操作,并判断磁盘是否上电成功,若是则结束本流

程,否则执行步骤208。

步骤208:将当前条带号加1,即cur_idx++,处理下一个IO请求,并转至步骤

205。

图3为本发明实施例的“坏盘”修复过程的流程示意图,该流程包括如下步骤:

步骤301:对无法响应IO操作的磁盘进行下电操作,对下电的磁盘进行上电操作,

磁盘上电成功,继续执行步骤302。

步骤302:判断该磁盘是否能响应IO请求,若是则执行步骤303,否则转至步骤

304。

步骤303:设置变量cur_idx为0,然后执行步骤305。

步骤304:该磁盘无法通过下电上电过程修复,启动RAID系统的重建流程,并退

出本流程。

步骤305:读取条带写记录数组当前元素值,即wtd_stripe_nos[cur_idx]=x;

步骤306:判断条带写记录数组当前元素值是否等于-1,即判断是否x==-1,若

是,表明该元素值对应的条带在磁盘无法响应IO请求至上电之间未被修改,无需

对该条带进行恢复,并且根据图2所示的条带记录流程可知,条带写记录数组中的

元素是顺序被记录的,当前元素值为-1,则当前元素值之后的元素值均为-1,所以

在这种情况下应退出本流程;否则执行步骤307。

步骤307:从RAID系统上其它各磁盘读出x号条带上存储的内容,并通过所述内

容来重构“坏盘”上该条带所在区域的内容,这样就实现了将第x号条带存储的内容

恢复到了磁盘下电之前的状态。

步骤308:判断当前条带是否为最后一个条带,即判断cur_idx是否等于预先设定

的最大值,若是,则表明完成了“坏盘”修复,退出本流程,否则执行步骤309。

步骤309:将当前条带号加1,即cur_idx++,然后转至步骤305。

本发明实施例还提出了一种RAID系统,所述RAID系统包含多个磁盘,所述多个

磁盘包括至少一个热备盘以及多个成员盘,所述RAID系统包括:

在每个磁盘槽位接口上提供控制磁盘实现单独下、上电的电路;

第一判断模块,用于判断作为成员盘的磁盘是否能够响应IO操作,若第一磁盘无

法响应IO操作,则通过所述电路对所述第一磁盘进行单独下电处理,再对所述第

一磁盘进行单独上电处理;

第二判断模块,用于判断所述第一磁盘在上电处理之后,是否能够响应IO操作,

若否,激活重建模块;

重建模块,用于在被激活后,启动热备盘并执行对RAID系统的重建。

较佳地,所述第一判断模块进一步包括时间间隔定时器;

所述第一判断模块对所述第一磁盘进行单独下电处理时,启动所述时间间隔定时器,

当所述时间间隔定时器超时时,对所述第一磁盘进行单独上电处理。

较佳地,所述RAID系统进一步包括:

写操作记录模块,用于在对所述第一磁盘进行单独下电处理,到对所述第一磁盘进

行单独上电处理的时间间隔内,判断是否对RAID系统的磁盘进行写操作,若是,

则记录执行写操作的条带序号;以及,

内容恢复模块,用于在第二判断模块判断所述第一磁盘在上电处理之后能够响应

IO操作后,根据所述写操作记录模块所记录的执行写操作的条带序号,将执行了

写操作的条带上存储的内容恢复到第一磁盘下电处理之前的状态。

本发明方案具有如下技术效果:

1、在大多数情况下,通过本发明方案就能修复磁盘,而无需进行RAID系统重建,

不仅避免了磁盘的无谓浪费,而且相对于RAID系统重建,RAID系统的磁盘下、

上电操作简单,控制方便得多。

2、当RAID系统的某个磁盘无法响应IO操作时,立即对其进行下、上电操作,整

个过程是很短暂的,这期间只有为数不多的条带会发生写操作。记录这些条带,并

修复它们上面相应的区域,对系统的消耗很小。

3、绝大多数情况下,都不是因为磁盘真正失效而使其无法响应IO操作。本发明

方案避免了这些绝大多数情况下武断地对磁盘进行重建操作,并进而避免了重建操

作对RAID系统IO性能和可靠性的影响。

4、本方法逻辑和实现简单,但作用巨大。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神

和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之

内。