适用于raid系统的自动修复方法以及raid系统的制作方法

文档序号:6585462阅读:243来源:国知局
专利名称:适用于raid系统的自动修复方法以及raid系统的制作方法
技术领域
本发明涉及计算机存储技术领域,特别涉及独立冗余磁盘阵列(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系统的重建功能,可以提高其可靠性。现有技术中,当上层的输入输出(10)请求不能被RAID系统的某个成员盘响应时, 一般都会认为该成员盘已经失效,RAID系统会自动启动重建过程。RAID系统的重建操作开 销大、周期长,影响正常的数据10的性能,并且一般在重建期间,如果有另外的磁盘失效, RAID系统会直接崩溃,进而让RAID系统非常脆弱,因此应当尽量避免启动重建操作。绝大多数情况下,上层的10请求不能被RAID系统的某个成员盘响应,并非作为该 成员盘的磁盘真正失效了。据磁盘制作商Seagate公司统计,磁盘不能响应10请求时,95% 的情况是因为固件、校验之类的软件错误导致的,这些情况可以通过简单修复操作使磁盘 仍然有效;只有5%的情况下,是由于磁盘真正失效。因此,如果在磁盘并没有真正失效的情况下,就对RAID系统启动重建过程,会极大提高RAID系统的使用和维护成本。

发明内容
有鉴于此,本发明的目的在于,提出一种适用于RAID系统的自动修复方法以及 RAID系统,可以避免不必要的重建过程,从而降低RAID系统的使用和维护成本。本发明实施例提出的一种适用于RAID系统的自动修复方法,在由多个磁盘组成 的RAID系统中,在每个磁盘槽位接口上提供控制磁盘实现单独下、上电的电路,该方法包 括如下步骤A、当所述RAID系统中作为成员盘的第一磁盘无法响应10操作时,通过所述电路 对所述第一磁盘进行单独下电处理,再对所述第一磁盘进行单独上电处理;B、判断所述第一磁盘是否能够响应10操作,若是,则完成对RAID系统的自动修 复,否则,启动热备盘来重建所述RAID系统。较佳地,所述步骤A包括A1、当RAID系统收到10操作请求时,判断RAID系统中的磁盘是否能够响应10操 作,若是,则退出本流程,否则当RAID系统中的第一磁盘无法响应10操作,则对第一磁盘进 行单独下电处理,并启动预先设定的时间间隔定时器;A2、所述时间间隔定时器超时,则对第一磁盘进行上电处理。较佳地,所述通过所述电路对所述第一磁盘进行单独下电处理,再对所述第一磁 盘进行单独上电处理的同时,进一步包括如下步骤判断是否对RAID系统的磁盘进行写操 作,若是,则记录执行写操作的条带序号;以及,步骤B所述判断所述第一磁盘是否能够响应10操作的结果为是,进一步包 括根据所记录的执行写操作的条带序号,将执行了写操作的条带上存储的内容恢复到第 一磁盘下电处理之前的状态。预先设置条带写记录数组,所述条带写记录数组中的每一个元素对应RAID系统 的一个条带;所述记录执行写操作的条带序号包括根据写命令的地址和数据长度,计算该写命令对应到RAID系统的至少一个条带 号,并将所述至少一个条带号记录到所述条带写记录数组的元素中。所述预先设置条带写记录数组的步骤包括将所述条带写记录数组中的元素初值 设置为-1。所述根据所记录的执行写操作的条带序号,将执行了写操作的条带上存储的内容 恢复到第一磁盘无法响应10操作之前的状态包括读取条带写记录数组中的元素值X,根据所述RAID系统中除第一磁盘之外的其他 磁盘的序号为x的条带上的内容,重构第一磁盘的序号为x的条带上的内容。本发明实施例还提出一种RAID系统,所述RAID系统包含多个磁盘,所述多个磁盘 包括至少一个热备盘以及多个成员盘,所述RAID系统还包括在每个磁盘槽位接口上提供控制磁盘实现单独下、上电的电路;第一判断模块,用于判断作为成员盘的磁盘是否能够响应10操作,若第一磁盘无 法响应10操作,则通过所述电路对所述第一磁盘进行单独下电处理,再对所述第一磁盘进行单独上电处理;第二判断模块,用于判断所述第一磁盘在上电处理之后,是否能够响应10操作, 若否,激活重建模块;重建模块,用于在被激活后,启动热备盘并执行对RAID系统的重建。较佳地,所述第一判断模块进一步包括时间间隔定时器;所述第一判断模块对所述第一磁盘进行单独下电处理时,启动所述时间间隔定时 器,当所述时间间隔定时器超时时,对所述第一磁盘进行单独上电处理。较佳地,所述RAID系统进一步包括写操作记录模块,用于在对所述第一磁盘进行单独下电处理,到对所述第一磁盘 进行单独上电处理的时间间隔内,判断是否对RAID系统的磁盘进行写操作,若是,则记录 执行写操作的条带序号;以及,内容恢复模块,用于在第二判断模块判断所述第一磁盘在上电处理之后能够响应 10操作后,根据所述写操作记录模块所记录的执行写操作的条带序号,将执行了写操作的 条带上存储的内容恢复到第一磁盘下电处理之前的状态。从以上技术方案可以看出,当磁盘无法响应10操作时,首先通过下电、上电处理 对该磁盘进行修复,如果上述处理后磁盘能够响应10操作,则无需进行RAID系统重建。更 进一步地,记录磁盘下电下电、上电过程中进行写操作的条带,在磁盘能够响应10操作后, 将RAID系统进行写操作的条带恢复到下电之前的状态。本发明方案针对RAID系统的某个磁盘无法响应上层10请求而设计。当10请求无 法响应时,会对相应的磁盘做下电处理,并记录自下电以来RAID系统的哪些条带发生过写 操作,当再次上电时,如果该磁盘能响应10请求,则重构相应条带其它磁盘上的数据到该 磁盘上。本发明方案避免了不分情况如何,即武断地使用热备盘进行重建操作,提高了 RAID 系统性能和可靠性,并节省了磁盘。


图1为本发明实施例的条带写记录数组中记录的内容示意图;图2为本发明实施例的从磁盘无法响应10请求至上电成功期间,写操作发生时相 应条带记录过程的流程示意图;图3为本发明实施例的“坏盘”修复过程的流程示意图。
具体实施例方式本发明方案提出的RAID系统自动修复方法为在RAID系统的每个磁盘槽位接口 上提供了控制磁盘实现单独下、上电的电路;当RAID系统的某个磁盘无法响应10操作时, 首先试图对其进行下、上电处理来自动修复,如果不能达到目的,则启动热备盘进行重建操 作。如果能够通过下、上电处理来修复磁盘,在磁盘无法响应10操作到该磁盘重新上 电的过程中,可能对RAID系统中的某些条带进行了写操作(当然也可能所有条带都没有任 何写操作)。为了避免某些条带进行了写操作的情况,需要在下、上电的过程中记录下进行 了写操作的条带,并对这些条带中的内容进行恢复。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明实施例作 进一步的详细阐述。为了实现本发明实施例方案,定义了 一个条带写记录数组Wtd_Stripe_n0S [],该 数组的每一项元素的初始值设置为-1。该数组的每一项元素用于记录从RAID系统的某个 磁盘无法响应10请求至上电成功期间,RAID系统上发生过写操作的一个或连续多个条带 号。在上电成功后,根据该数组记录的内容来做相关条带的修复。图1所示为本发明实施例中条带写记录数组中记录的内容示意图。图1中示出 了由多个成员盘组成的RAID系统,如图1所示,条带写记录数组中的每一个元素对应RAID 系统中的一个或连续的多个条带,为方便描述,以下假设一个元素对应一个条带。元素 值为-1,表示从RAID系统下电到上电期间该元素对应的条带没有进行写操作;元素值不 是-1,则元素值表示了在RAID系统从下电到上电期间发生写操作的条带号。从图1所示的 条带写记录数组可以看出,该RAID系统从磁盘无法响应10请求到上电期间,第0至第n个 条带被执行了写操作,而其他条带未执行写操作。图2为本发明实施例从磁盘无法响应10请求至上电成功期间,写操作发生时相应 条带记录过程的流程示意图,具体包括如下步骤步骤201 设置条带写记录数组Wtd_Stripe_n0S,为该数组的每一项元素设置初 始值为-1。步骤202 申请全局变量cur_idx,并为其初始化为0。cur_idx表示条带写记录数 组wtd_stripe_nos的当前元素序号。步骤203 当前10请求处理失败,转至步骤204。步骤204 对所述10请求相应的磁盘进行下电操作。步骤205 判断该10请求是否为写操作,若是,执行步骤206,否则转至步骤207。步骤206 计算该10请求对应的条带编号X,并把数组Wtd_Stripe_n0S的当前元 素序号cur_idX对应的元素设置为该条带编号值x步骤207 对所述磁盘进行上电操作,并判断磁盘是否上电成功,若是则结束本流 程,否则执行步骤208。步骤208 将当前条带号加1,即CUr_idx++,处理下一个10请求,并转至步骤205。图3为本发明实施例的“坏盘”修复过程的流程示意图,该流程包括如下步骤步骤301 对无法响应10操作的磁盘进行下电操作,对下电的磁盘进行上电操作, 磁盘上电成功,继续执行步骤302。步骤302 判断该磁盘是否能响应10请求,若是则执行步骤303,否则转至步骤304。步骤303 设置变量curjdx为0,然后执行步骤305。步骤304 该磁盘无法通过下电上电过程修复,启动RAID系统的重建流程,并退出 本流程。步骤305 读取条带写记录数组当前元素值,即Wtd_Stripe_n0S [curjdx] = x ;步骤306 判断条带写记录数组当前元素值是否等于-1,即判断是否x = = -1,若 是,表明该元素值对应的条带在磁盘无法响应10请求至上电之间未被修改,无需对该条带 进行恢复,并且根据图2所示的条带记录流程可知,条带写记录数组中的元素是顺序被记 录的,当前元素值为-1,则当前元素值之后的元素值均为-1,所以在这种情况下应退出本流程;否则执行步骤307。步骤307 从RAID系统上其它各磁盘读出x号条带上存储的内容,并通过所述内 容来重构“坏盘”上该条带所在区域的内容,这样就实现了将第x号条带存储的内容恢复到了磁盘下电之前的状态。步骤308 判断当前条带是否为最后一个条带,即判断curjdx是否等于预先设定 的最大值,若是,则表明完成了 “坏盘”修复,退出本流程,否则执行步骤309。步骤309 将当前条带号加1,即cur_idx++,然后转至步骤305。本发明实施例还提出了一种RAID系统,所述RAID系统包含多个磁盘,所述多个磁 盘包括至少一个热备盘以及多个成员盘,所述RAID系统包括在每个磁盘槽位接口上提供控制磁盘实现单独下、上电的电路;第一判断模块,用于判断作为成员盘的磁盘是否能够响应10操作,若第一磁盘无 法响应10操作,则通过所述电路对所述第一磁盘进行单独下电处理,再对所述第一磁盘进 行单独上电处理;第二判断模块,用于判断所述第一磁盘在上电处理之后,是否能够响应10操作, 若否,激活重建模块;重建模块,用于在被激活后,启动热备盘并执行对RAID系统的重建。较佳地,所述第一判断模块进一步包括时间间隔定时器;所述第一判断模块对所述第一磁盘进行单独下电处理时,启动所述时间间隔定时 器,当所述时间间隔定时器超时时,对所述第一磁盘进行单独上电处理。较佳地,所述RAID系统进一步包括写操作记录模块,用于在对所述第一磁盘进行单独下电处理,到对所述第一磁盘 进行单独上电处理的时间间隔内,判断是否对RAID系统的磁盘进行写操作,若是,则记录 执行写操作的条带序号;以及,内容恢复模块,用于在第二判断模块判断所述第一磁盘在上电处理之后能够响应 10操作后,根据所述写操作记录模块所记录的执行写操作的条带序号,将执行了写操作的 条带上存储的内容恢复到第一磁盘下电处理之前的状态。本发明方案具有如下技术效果1、在大多数情况下,通过本发明方案就能修复磁盘,而无需进行RAID系统重建, 不仅避免了磁盘的无谓浪费,而且相对于RAID系统重建,RAID系统的磁盘下、上电操作简 单,控制方便得多。2、当RAID系统的某个磁盘无法响应10操作时,立即对其进行下、上电操作,整个 过程是很短暂的,这期间只有为数不多的条带会发生写操作。记录这些条带,并修复它们上 面相应的区域,对系统的消耗很小。3、绝大多数情况下,都不是因为磁盘真正失效而使其无法响应10操作。本发明方 案避免了这些绝大多数情况下武断地对磁盘进行重建操作,并进而避免了重建操作对RAID 系统10性能和可靠性的影响。4、本方法逻辑和实现简单,但作用巨大。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
一种适用于独立冗余磁盘阵列RAID系统的自动修复方法,其特征在于,在由多个磁盘组成的RAID系统中,在每个磁盘槽位接口上提供控制磁盘实现单独下、上电的电路,该方法包括如下步骤A、当所述RAID系统中作为成员盘的第一磁盘无法响应IO操作时,通过所述电路对所述第一磁盘进行单独下电处理,再对所述第一磁盘进行单独上电处理;B、判断所述第一磁盘是否能够响应IO操作,若是,则完成对RAID系统的自动修复,否则,启动热备盘来重建所述RAID系统。
2.根据权利要求1所述的方法,其特征在于,所述步骤A包括Al、当RAID系统收到IO操作请求时,判断RAID系统中的磁盘是否能够响应IO操作, 若是,则退出本流程,否则当RAID系统中的第一磁盘无法响应IO操作,则对第一磁盘进行 单独下电处理,并启动预先设定的时间间隔定时器;A2、所述时间间隔定时器超时,则对第一磁盘进行上电处理。
3.根据权利要求1所述的方法,其特征在于,所述通过所述电路对所述第一磁盘进行 单独下电处理,再对所述第一磁盘进行单独上电处理的同时,进一步包括如下步骤判断是 否对RAID系统的磁盘进行写操作,若是,则记录执行写操作的条带序号;以及,步骤B所述判断所述第一磁盘是否能够响应IO操作的结果为是,进一步包括根 据所记录的执行写操作的条带序号,将执行了写操作的条带上存储的内容恢复到第一磁盘 下电处理之前的状态。
4.根据权利要求3所述的方法,其特征在于,预先设置条带写记录数组,所述条带写记 录数组中的每一个元素对应RAID系统的一个条带;所述记录执行写操作的条带序号包括根据写命令的地址和数据长度,计算该写命令对应到RAID系统的至少一个条带号,并 将所述至少一个条带号记录到所述条带写记录数组的元素中。
5.根据权利要求4所述的方法,其特征在于,所述预先设置条带写记录数组的步骤包 括将所述条带写记录数组中的元素初值设置为-1。
6.根据权利要求4所述的方法,其特征在于,所述根据所记录的执行写操作的条带序 号,将执行了写操作的条带上存储的内容恢复到第一磁盘无法响应IO操作之前的状态包 括读取条带写记录数组中的元素值X,根据所述RAID系统中除第一磁盘之外的其他磁盘 的序号为χ的条带上的内容,重构第一磁盘的序号为Χ的条带上的内容。
7.一种独立冗余磁盘阵列RAID系统,所述RAID系统包含多个磁盘,所述多个磁盘包括 至少一个热备盘以及多个成员盘,其特征在于,所述RAID系统包括在每个磁盘槽位接口上提供控制磁盘实现单独下、上电的电路;第一判断模块,用于判断作为成员盘的磁盘是否能够响应IO操作,若第一磁盘无法响 应IO操作,则通过所述电路对所述第一磁盘进行单独下电处理,再对所述第一磁盘进行单 独上电处理;第二判断模块,用于判断所述第一磁盘在上电处理之后,是否能够响应IO操作,若否, 激活重建模块;重建模块,用于在被激活后,启动热备盘并执行对RAID系统的重建。
8.根据权利要求7所述的RAID系统,其特征在于,所述第一判断模块进一步包括时间 间隔定时器;所述第一判断模块对所述第一磁盘进行单独下电处理时,启动所述时间间隔定时器, 当所述时间间隔定时器超时时,对所述第一磁盘进行单独上电处理。
9.根据权利要求7所述的RAID系统,其特征在于,所述RAID系统进一步包括写操作记录模块,用于在对所述第一磁盘进行单独下电处理,到对所述第一磁盘进行 单独上电处理的时间间隔内,判断是否对RAID系统的磁盘进行写操作,若是,则记录执行 写操作的条带序号;以及,内容恢复模块,用于在第二判断模块判断所述第一磁盘在上电处理之后能够响应IO 操作后,根据所述写操作记录模块所记录的执行写操作的条带序号,将执行了写操作的条 带上存储的内容恢复到第一磁盘下电处理之前的状态。
全文摘要
本发明公开了一种适用于独立冗余磁盘阵列(RAID)系统的自动修复方法,在由多个磁盘组成的RAID系统中,在每个磁盘槽位接口上提供控制磁盘实现单独下、上电的电路,该方法包括如下步骤A、当所述RAID系统中作为成员盘的第一磁盘无法响应IO操作时,通过所述电路对所述第一磁盘进行单独下电处理,再对所述第一磁盘进行单独上电处理;B、判断所述第一磁盘是否能够响应IO操作,若是,则完成对RAID系统的自动修复,否则,启动热备盘来重建所述RAID系统。本发明还公开了一种RAID系统。本发明方案可以在多数情况下避免使用热备盘进行重建操作,提高了RAID系统性能和可靠性,并节省了磁盘。
文档编号G06F11/16GK101840311SQ20091024415
公开日2010年9月22日 申请日期2009年12月30日 优先权日2009年12月30日
发明者饶国林, 鲍清平 申请人:创新科存储技术有限公司;创新科软件技术(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1