背景技术
独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)是一种把多块独立的磁盘按不同的方式组合起来,从而形成一个磁盘组,以提供比单个磁盘更高的存储性能和数据处理能力的技术。
根据磁盘组合方式的不同,可将RAID分为不同的级别,如RAID 0、RAID 1、RAID 2、RAID 3、RAID 4、RAID 5等。
当RAID中的某一磁盘出现错误的次数较多时,可用热备盘来顶替该出现错误的磁盘,并根据其它磁盘来对热备盘进行重建,即将出现错误的磁盘中的数据重建到热备盘中,以下以RAID 5为例,来说明重建过程。
图1为现有RAID 5的一种组成结构示意图。如图1所示,假设共包括5块磁盘,按照从左到右的顺序分别为disk 1~disk 5,每个磁盘上均包括8个条带单元,按照从上到下的顺序分别为条带单元1~条带单元8,各磁盘中处于相同位置的条带单元组成一个条带,如各磁盘中的条带单元1组成一个条带;另外,各磁盘上交叉地存储有实际数据以及校验数据,图1中的黑色条带单元即表示用于存储校验数据的条带单元,其它条带单元即表示用于存储实际数据的条带单元;假设disk 3出现了错误,那么可用热备盘来顶替disk 3,并可根据disk 1、disk 2、disk 4和disk 5中的数据来对热备盘中的各条带单元依次进行重建,即先根据与热备盘中的条带单元1处于同一条带内的各条带单元中的数据来对热备盘中的条带单元1进行重建,之后根据与热备盘中的条带单元2处于同一条带内的各条带单元中的数据来对热备盘中的条带单元2进行重建,依次类推。
但是,上述重建方式在实际应用中会存在一定的问题,即:当对热备盘中的任一条带单元,假设为条带单元2进行重建时,如果处于同一条带内的其它任一条带单元出现错误,如出现重建读介质错误,则会导致条带单元2的重建失败,从而导致disk 3上的数据丢失。
发明内容
有鉴于此,本发明的主要目的在于提供一种磁盘重建方法,能够提高重建成功率。
本发明的另一目的在于提供一种磁盘重建装置,能够提高重建成功率。
为达到上述目的,本发明的技术方案是这样实现的:
一种磁盘重建方法,包括:
当独立冗余磁盘阵列RAID中的任一磁盘出现错误的次数达到预定阀值时,用热备盘顶替该出现错误的磁盘,并将该出现错误的磁盘设置为ACTIVE_SPARE状态;
依次对热备盘中的各条带单元进行重建,其中,在对每个条带单元X进行重建时,如果与条带单元X处于同一条带内的任一条带单元出现重建读介质错误,则将处于ACTIVE_SPARE状态的磁盘中的对应条带单元中的数据写入到条带单元X中,所述对应是指所处位置相同。
一种磁盘重建装置,包括:
第一处理模块,用于当独立冗余磁盘阵列RAID中的任一磁盘出现错误的次数达到预定阀值时,用热备盘顶替该出现错误的磁盘,并将该出现错误的磁盘设置为ACTIVE_SPARE状态;
第二处理模块,用于依次对热备盘中的各条带单元进行重建,其中,在对每个条带单元X进行重建时,如果与条带单元X处于同一条带内的任一条带单元出现重建读介质错误,则将处于ACTIVE_SPARE状态的磁盘中的对应条带单元中的数据写入到条带单元X中,所述对应是指所处位置相同。
可见,采用本发明的技术方案,在对任一条带单元进行重建时,如果与其处于同一条带内的其它任一条带单元出现重建读介质错误,则可将处于ACTIVE_SPARE状态的磁盘中的对应条带单元中的数据写入到要重建的条带单元中,从而提高了重建成功率,进而提高了RAID的冗余度。
具体实施方式
针对现有技术中存在的问题,本发明中提出一种改进后的磁盘重建方案,能够提高重建成功率,进而提高了RAID的冗余度。
为使本发明的技术方案更加清楚、明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
图2为本发明磁盘重建方法实施例的流程图。如图2所示,包括以下步骤:
步骤21:当RAID中的任一磁盘出现错误的次数达到预定阀值时,用热备盘顶替该出现错误的磁盘,并将该出现错误的磁盘设置为ACTIVE_SPARE状态。
如果某一磁盘出现错误的次数过多,如达到预定阀值,则可认为该磁盘有风险,并用热备盘顶替该有风险的磁盘,同时,将该有风险的磁盘设置为ACTIVE_SPARE状态。
所述阀值的具体取值可根据实际需要而定。
步骤22:依次对热备盘中的各条带单元进行重建,其中,在对每个条带单元X进行重建时,如果与条带单元X处于同一条带内的任一条带单元出现重建读介质错误,则将处于ACTIVE_SPARE状态的磁盘中的对应条带单元中的数据写入到条带单元X中,所述对应是指所处位置相同。
本步骤中,参照图1所示的热备盘,按照从上到下的顺序依次对各条带单元进行重建,即可先根据与热备盘中的条带单元1处于同一条带内的各条带单元中的数据来对热备盘中的条带单元1进行重建,之后可根据与热备盘中的条带单元2处于同一条带内的各条带单元中的数据来对热备盘中的条带单元2进行重建,依次类推。
其中,在对每个条带单元X(为便于表述,用条带单元X来代表要重建的任一条带单元)进行重建时,如果与条带单元X处于同一条带内的任一条带单元出现重建读介质错误,则可将处于ACTIVE_SPARE状态的磁盘中的对应条带单元中的数据写入到条带单元X中。
比如,条带单元X为热备盘中的条带单元1,那么则可将处于ACTIVE_SPARE状态的磁盘中按照从上到下的顺序处于第1位的条带单元中的数据写入到条带单元X中。
对于处于ACTIVE_SPARE状态的磁盘来说,虽然其出现了错误,但并不表示其中的数据完全不可用,在需要时,可利用其中的数据来重建热备盘。
另外,为进一步提高RAID的冗余度,本发明所述方案中还提出:
1)在对条带单元X进行重建时,如果与条带单元X处于同一条带内的任一条带单元出现主机端读介质错误,则根据条带单元X所在的条带内除条带单元X和出现错误的条带单元以外的各条带单元中的数据以及处于ACTIVE_SPARE状态的磁盘中的对应条带单元中的数据计算出所需数据,返回给主机端;
2)当主机端向除热备盘和处于ACTIVE_SPARE状态的磁盘以外的任一磁盘中的任一条带单元Y中写入数据时,如果发生写介质错误,则确定热备盘中与条带单元Y处于同一条带内的条带单元是否已经重建完毕;
如果是,则读出条带单元Y所在的条带内除条带单元Y以外的各条带单元中的数据,并根据读出的数据以及要写入到条带单元Y中的数据计算出校验值,将计算出的校验值写入到相应的条带单元中;
如果否,则读出条带单元Y所在的条带内除条带单元Y和热备盘中的条带单元以外的各条带单元中的数据以及处于ACTIVE_SPARE状态的磁盘中的对应条带单元中的数据,并根据读出的数据以及要写入到条带单元Y中的数据计算出校验值,将计算出的校验值写入到相应的条带单元中;
后续,可根据校验值重建出要写入到条带单元Y中的数据;如何计算所需数据、如何计算校验值以及如何确定将计算出的校验值写入哪个条带单元等均为现有技术。
可以看出,上述过程中,处于ACTIVE_SPARE状态的磁盘并未被完全舍弃,在对热备盘进行重建的过程中,还可能会被多次用到,当热备盘重建完毕后,即可舍弃处于ACTIVE_SPARE状态的磁盘。
上述过程可整体举例说明如下:
图3为本发明用热备盘顶替出现错误的磁盘后的示意图。
结合图1,假设disk 3出现错误的次数达到了预定阀值,那么可用热备盘来顶替disk 3,并首先对热备盘中的条带单元1进行重建,如果在重建过程中disk2中的条带单元1出现重建读介质错误,则可将处于ACTIVE_SPARE状态的磁盘中的条带单元1中的数据写入到热备盘的条带单元1中;如果在重建过程中disk 2中的条带单元1出现主机端读介质错误,则可根据disk 1中的条带单元1中的数据、disk 4中的条带单元1中的数据、disk 5中的条带单元1中的数据,以及处于ACTIVE_SPARE状态的磁盘中的条带单元1中的数据计算出所需数据,返回给主机端。
如果主机端向disk 2中的条带单元2写入数据时发生写介质错误,那么,可首先确定热备盘中的条带单元2是否已经重建完毕,如果是,则读出disk 1中的条带单元2中的数据、热备盘中的条带单元2中的数据、disk 4中的条带单元2中的数据,以及disk 5中的条带单元2中的数据,并根据读出的数据以及要写入到条带单元Y中的数据计算出校验值,将计算出的校验值写入到相应的条带单元中;如果否,则读出disk 1中的条带单元2中的数据、disk 4中的条带单元2中的数据、disk 5中的条带单元2的数据,以及处于ACTIVE_SPARE状态的磁盘中的条带单元2中的数据,并根据读出的数据以及要写入到条带单元Y中的数据计算出校验值,将计算出的校验值写入到相应的条带单元中。
至此,即完成了关于本发明方法实施例的介绍。
基于上述介绍,图4为本发明磁盘重建装置实施例的组成结构示意图。如图4所示,包括:
第一处理模块41,用于当RAID中的任一磁盘出现错误的次数达到预定阀值时,用热备盘顶替该出现错误的磁盘,并将该出现错误的磁盘设置为ACTIVE_SPARE状态;
第二处理模块42,用于依次对热备盘中的各条带单元进行重建,其中,在对每个条带单元X进行重建时,如果与条带单元X处于同一条带内的任一条带单元出现重建读介质错误,则将处于ACTIVE_SPARE状态的磁盘中的对应条带单元中的数据写入到条带单元X中,所述对应是指所处位置相同。
其中,第二处理模块42可进一步用于,在对条带单元X进行重建时,如果与条带单元X处于同一条带内的任一条带单元出现主机端读介质错误,则根据条带单元X所在的条带内除条带单元X和出现错误的条带单元以外的各条带单元中的数据以及处于ACTIVE_SPARE状态的磁盘中的对应条带单元中的数据计算出所需数据,返回给主机端。
第二处理模块42还可进一步用于,当主机端向除热备盘和处于ACTIVE_SPARE状态的磁盘以外的任一磁盘中的任一条带单元Y中写入数据时,如果发生写介质错误,则确定热备盘中与条带单元Y处于同一条带内的条带单元是否已经重建完毕;如果是,则读出条带单元Y所在的条带内除条带单元Y以外的各条带单元中的数据,并根据读出的数据以及要写入到条带单元Y中的数据计算出校验值,将计算出的校验值写入到相应的条带单元中;如果否,则读出条带单元Y所在的条带内除条带单元Y和热备盘中的条带单元以外的各条带单元中的数据以及处于ACTIVE_SPARE状态的磁盘中的对应条带单元中的数据,并根据读出的数据以及要写入到条带单元Y中的数据计算出校验值,将计算出的校验值写入到相应的条带单元中。
图4所示装置实施例的具体工作流程请参照上述方法实施例中的相应说明,此处不再赘述。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。