CN103678048B - 独立磁盘冗余阵列修复方法、装置和存储设备 - Google Patents
独立磁盘冗余阵列修复方法、装置和存储设备 Download PDFInfo
- Publication number
- CN103678048B CN103678048B CN201310632579.9A CN201310632579A CN103678048B CN 103678048 B CN103678048 B CN 103678048B CN 201310632579 A CN201310632579 A CN 201310632579A CN 103678048 B CN103678048 B CN 103678048B
- Authority
- CN
- China
- Prior art keywords
- fault
- stripe cell
- data
- raid
- band
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明实施例提供了一种独立磁盘冗余阵列修复方法、装置和存储设备,涉及数据存储领域。所述方法包括:当RAID组同一条带中存在故障的条带单元数量不满足使用RAID冗余算法进行修复的要求时,对至少一个存在故障的条带单元进行无效修复,直至未修复的存在故障的条带单元数量满足RAID冗余算法修复的要求;利用RAID冗余算法,修复余下的存在故障的条带单元。本发明通过对同一条带中的故障条带单元进行修复,解决了现有技术中无法对该条带中后续出现故障的条带单元进行修复,造成故障区域扩大、数据丢失量增加的问题,达到了可以保证后续其他磁盘出现故障时能够被及时恢复,有效防止故障域扩大的效果。
Description
技术领域
本发明涉及数据存储领域,特别涉及一种独立磁盘冗余阵列修复方法、装置和存储设备。
背景技术
RAID(RedundantArrayofIndependentDisks,独立磁盘冗余阵列)组由多个硬盘组成,当向RAID组存入文件时,可以利用条带化(striping)技术将文件分成等同的多个数据块(Block),将这些数据块依次存入多个硬盘中,其中一个数据块所占硬盘的区域记为一个条带单元(segment),在RAID组中在不同硬盘上距离起始位置相同的条带单元组成一个条带(strip)。
通常来讲,如果RAID组中同一个条带中的一个条带单元中出现故障,则可以读出其他条带单元中的数据,利用RAID冗余计算出该出现故障的条带单元中的数据,利用计算出的数据对该条带单元进行写修复。但如果一个条带中出现多个故障的条带单元,由于无法用RAID冗余计算出正确的数据,因此无法对这些故障的条带单元进行写修复。比如,对于RAID5或RAID3来讲,当一个条带中存在两个或两个以上出现故障的条带单元时,则无法通过RAID冗余算法对这些出现故障的条带单元进行写修复;对于RAID6来讲,当一个条带中存在三个或三个以上出现故障的条带单元时,则无法通过RAID冗余算法对这些出现故障的条带单元进行写修复。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:当一个条带中出现预定个数存在故障的条带单元之后,在后续使用过程中,如果该条带中其他条带单元再出现故障,则无法对这些条带单元进行修复,造成故障区域扩大、数据丢失量增加。
发明内容
为了解决现有技术中当RAID组中一个条带中出现多个存在故障的条带单元时,无法对该条带中后续出现故障的条带单元进行修复,造成故障区域扩大、数据丢失量增加的问题,本发明实施例提供了一种独立磁盘冗余阵列修复方法、装置和存储设备。所述技术方案如下:
第一方面,提供了一种独立磁盘冗余阵列修复方法,所述方法包括:
当独立磁盘冗余阵列RAID组中同一条带中的多个条带单元存在故障时,判断所述条带中存在故障的所述条带单元数量是否满足使用所述RAID冗余算法进行修复的要求;
如果不满足,则对至少一个存在故障的所述条带单元进行无效修复,直至未修复的存在故障的所述条带单元数量满足RAID冗余算法修复的要求;
使用所述条带中为正常条带单元的数据,以及经过无效修复后各所述条带单元中的无效数据,利用所述RAID冗余算法,修复余下的存在故障的条带单元。
在第一方面的第一种可能的实施方式中,所述对至少一个存在故障的所述条带单元进行无效修复,包括:
当存在故障的所述条带单元能进行写修复时,则在存在故障的所述条带单元中写入无效数据;
所述利用所述RAID冗余算法,修复余下的存在故障的条带单元,包括:
当存在故障的所述条带单元能进行写修复时,则将利用所述RAID冗余算法计算出来的数据写入存在故障的所述条带单元中。
结合第一方面或者第一方面的第一种可能的实施方式,在第二种可能的实施方式中,所述对至少一个存在故障的所述条带单元进行无效修复,包括:
在备份的数据区写入无效数据,并将存在故障的所述条带单元与备份的所述数据区进行映射;
所述利用所述RAID冗余算法,修复余下的存在故障的条带单元,包括:
将利用所述RAID冗余算法计算出来的数据写入备份的数据区,并将存在故障的所述条带单元与备份的所述数据区进行映射。
结合第一方面、第一方面的第一种可能的实施方式或者第一方面的第二种可能的实施方式,在第三种可能的实施方式中,当所述RAID组为RAID5或RAID3时,所述判断所述条带中存在故障的所述条带单元数量是否满足使用所述RAID冗余算法进行修复的要求,包括:
判断所述条带中存在故障的所述条带单元数量是否大于1;
若判断结果为所述条带中存在故障的所述条带单元数据大于1,则判定所述条带中存在故障的所述条带单元数量不满足使用RAID冗余算法进行修复的要求;
若判断结果为所述条带中存在故障的所述条带单元数据不大于1,则判定所述条带中存在故障的所述条带单元数量满足使用所述RAID冗余算法进行修复的要求。
结合第一方面、第一方面的第一种可能的实施方式、第一方面的第二种可能的实施方式或者第一方面的第三种可能的实施方式,在第四种可能的实施方式中,当所述RAID组为RAID6时,所述判断所述条带中存在故障的所述条带单元数量是否满足使用所述RAID冗余算法进行修复的要求,包括:
判断所述条带中存在故障的所述条带单元数量是否大于2;
若判断结果为所述条带中存在故障的所述条带单元数据大于2,则判定所述条带中存在故障的所述条带单元数量不满足使用所述RAID冗余算法进行修复的要求;
若判断结果为所述条带中存在故障的所述条带单元数据不大于2,则判定所述条带中存在故障的所述条带单元数量满足使用所述RAID冗余算法进行修复的要求。
结合第一方面、第一方面的第一种可能的实施方式、第一方面的第二种可能的实施方式、第一方面的第三种可能的实施方式或者第一方面的第四种可能的实施方式,在第五种可能的实施方式中,所述方法还包括:
记录与存在故障的所述条带单元对应的故障标记。
结合第一方面、第一方面的第一种可能的实施方式、第一方面的第二种可能的实施方式、第一方面的第三种可能的实施方式、第一方面的第四种可能的实施方式或者第一方面的第五种可能的实施方式,在第六种可能的实施方式中,
所述记录与存在故障的所述条带单元对应的故障标记,包括:
将与存在故障的所述条带单元对应的故障标记作为数据完整性区域DIF校验数据,将所述DIF校验数据写入存在故障的所述条带单元中;
或,
将存在故障的所述条带单元所在位置以及与存在故障的所述条带单元对应的故障标记写入内存中预设的映射表中,以便所述内存根据所述映射表中条带单元所在位置以及故障标记确定出存在故障的条带单元。
第二方面,提供了一种独立磁盘冗余阵列修复装置,所述装置包括:
判断模块,用于当独立磁盘冗余阵列RAID组中同一条带中的多个条带单元存在故障时,判断所述条带中存在故障的所述条带单元数量是否满足使用RAID冗余算法进行修复的要求;
第一修复模块,用于在所述判断模块判断所述条带中存在故障的所述条带单元数量不满足使用所述RAID冗余算法进行修复的要求时,则对至少一个存在故障的所述条带单元进行无效修复,直至未修复的存在故障的所述条带单元数量满足RAID冗余算法修复的要求;
第二修复模块,用于使用所述条带中为正常条带单元的数据,以及经过无效修复后各所述条带单元中的无效数据,利用所述RAID冗余算法,修复余下的存在故障的条带单元。
在第二方面的第一种可能的实施方式中,所述第一修复模块,包括:
第一写入单元,用于当存在故障的所述条带单元能进行写修复时,则在存在故障的所述条带单元中写入无效数据;
所述第二修复模块,包括:
第二写入单元,用于当存在故障的所述条带单元能进行写修复时,则将利用所述RAID冗余算法计算出来的数据写入存在故障的所述条带单元中。
结合第二方面或者第二方面的第一种可能的实施方式,在第二种可能的实施方式中,所述第一修复模块,包括:
第三写入单元,用于在备份的数据区写入无效数据,并将存在故障的所述条带单元与备份的所述数据区进行映射;
所述第二修复模块,包括:
第四写入单元,用于将利用所述RAID冗余算法计算出来的数据写入备份的数据区,并将存在故障的所述条带单元与备份的所述数据区进行映射。
结合第二方面、第二方面的第一种可能的实施方式或者第二方面的第二种可能的实施方式,在第三种可能的实施方式中,当所述RAID组为RAID5或RAID3时,所述判断模块,包括:
第一判断单元,用于判断所述条带中存在故障的所述条带单元数量是否大于1;
第一判定单元,用于在所述第一判断单元的判断结果为所述条带中存在故障的所述条带单元数据大于1时,判定所述条带中存在故障的所述条带单元数量不满足使用所述RAID冗余算法进行修复的要求;
第二判定单元,用于在所述第一判断单元的判断结果为所述条带中存在故障的所述条带单元数据不大于1时,判定所述条带中存在故障的所述条带单元数量满足使用所述RAID冗余算法进行修复的要求。
结合第二方面、第二方面的第一种可能的实施方式、第二方面的第二种可能的实施方式或者第二方面的第三种可能的实施方式,在第四种可能的实施方式中,当所述RAID组为RAID6时,所述判断模块,包括:
第二判断单元,用于判断所述条带中存在故障的所述条带单元数量是否大于2;
第三判定单元,用于在所述第二判断单元的判断结果为所述条带中存在故障的所述条带单元数据大于2时,判定所述条带中存在故障的所述条带单元数量不满足使用所述RAID冗余算法进行修复的要求;
第四判定单元,用于在所述第二判断单元的判断结果为所述条带中存在故障的所述条带单元数据不大于2时,判定所述条带中存在故障的所述条带单元数量满足使用所述RAID冗余算法进行修复的要求。
结合第二方面、第二方面的第一种可能的实施方式、第二方面的第二种可能的实施方式、第二方面的第三种可能的实施方式第二方面的第四种可能的实施方式,在第五种可能的实施方式中,所述装置还包括:
记录模块,用于记录与存在故障的所述条带单元对应的故障标记。
结合第二方面、第二方面的第一种可能的实施方式、第二方面的第二种可能的实施方式、第二方面的第三种可能的实施方式、第二方面的第四种可能的实施方式或者第二方面的第一种可能的实施方式,在第六种可能的实施方式中,所述记录模块,包括:
第五写入单元,用于将与存在故障的所述条带单元对应的故障标记作为数据完整性区域DIF校验数据,将所述DIF校验数据写入存在故障的所述条带单元中;
或,
第六写入单元,用于将存在故障的所述条带单元所在位置以及与存在故障的所述条带单元对应的故障标记写入内存中预设的映射表中,以便所述内存根据所述映射表中条带单元所在位置以及故障标记确定出存在故障的条带单元。
第三方面,提供了一种存储设备,所述存储设备包括:控制器和RAID组,所述RAID组为RAID3、RAID5或RAID6。
控制器,用于当独立磁盘冗余阵列RAID组中同一条带中的多个条带单元存在故障时,判断所述条带中存在故障的所述条带单元数量是否满足使用所述RAID冗余算法进行修复的要求;
所述控制器,还在所述判断模块判断所述条带中存在故障的所述条带单元数量不满足使用所述RAID冗余算法进行修复的要求时,则对至少一个存在故障的所述条带单元进行无效修复,直至未修复的存在故障的所述条带单元数量满足RAID冗余算法修复的要求;
所述控制器,还用于使用所述条带中为正常条带单元的数据,以及经过无效修复后各所述条带单元中的无效数据,利用所述RAID冗余算法,修复余下的存在故障的条带单元。
在第三方面的第一种可能的实施方式中,所述控制器,还用于当存在故障的所述条带单元能进行写修复时,则在存在故障的所述条带单元中写入无效数据;
所述控制器,还用于当存在故障的所述条带单元能进行写修复时,则将利用所述RAID冗余算法计算出来的数据写入存在故障的所述条带单元中。
结合第三方面或者第三方面的第一种可能的实施方式,在第二种可能的实施方式中,所述控制器,还用于在备份的数据区写入无效数据,并将存在故障的所述条带单元与备份的所述数据区进行映射;
所述控制器,还用于将利用所述RAID冗余算法计算出来的数据写入备份的数据区,并将存在故障的所述条带单元与备份的所述数据区进行映射。
结合第三方面、第三方面的第一种可能的实施方式或者第三方面的第二种可能的实施方式,在第三种可能的实施方式中,当所述RAID组为RAID5或RAID3时,所述控制器,还用于判断存在故障的所述条带单元数量是否大于1;
所述控制器,还用于在所述第一判断单元的判断结果为所述条带中存在故障的所述条带单元数据大于1时,判定所述条带中存在故障的所述条带单元数量不满足使用所述RAID冗余算法进行修复的要求;
所述控制器,还用于在所述第一判断单元的判断结果为所述条带中存在故障的所述条带单元数据不大于1时,判定所述条带中存在故障的所述条带单元数量满足使用所述RAID冗余算法进行修复的要求。
结合第三方面、第三方面的第一种可能的实施方式、第三方面的第二种可能的实施方式或者第三方面的第三种可能的实施方式,在第四种可能的实施方式中,当所述RAID组为RAID6时,所述控制器,还用于判断存在故障的所述条带单元数量是否大于2;
所述控制器,还用于在所述第二判断单元的判断结果为所述条带中存在故障的所述条带单元数据大于2时,判定所述条带中存在故障的所述条带单元数量不满足使用所述RAID冗余算法进行修复的要求;
所述控制器,还用于在所述第二判断单元的判断结果为所述条带中存在故障的所述条带单元数据不大于2时,判定所述条带中存在故障的所述条带单元数量满足使用所述RAID冗余算法进行修复的要求。
结合第三方面、第三方面的第一种可能的实施方式、第三方面的第二种可能的实施方式、第三方面的第三种可能的实施方式或者第三方面的第四种可能的实施方式,在第五种可能的实施方式中,所述控制器,还用于记录与存在故障的所述条带单元对应的故障标记。
结合第三方面、第三方面的第一种可能的实施方式、第三方面的第二种可能的实施方式、第三方面的第三种可能的实施方式、第三方面的第四种可能的实施方式或者第三方面的第五种可能的实施方式,在第六种可能的实施方式中,所述控制器,还用于将与存在故障的所述条带单元对应的故障标记作为数据完整性区域DIF校验数据,将所述DIF校验数据写入存在故障的所述条带单元中;
或,
所述控制器,还用于将存在故障的所述条带单元所在位置以及与存在故障的所述条带单元对应的故障标记写入内存中预设的映射表中,以便所述内存根据所述映射表中条带单元所在位置以及故障标记确定出存在故障的条带单元。
第四方面,还提供一种存储设备,该存储设备包括RAID组和控制器,所述RAID组为RAID3、RAID5或RAID6;
所述控制器包括如第二方面或第二方面的各种可能的实施方式中所提供的独立磁盘冗余阵列修复装置。
本发明实施例提供的技术方案带来的有益效果是:
通过当RAID组中同一条带中的多个条带单元存在故障时,对存在故障且无法通过RAID冗余算法进行修复的条带单元,进行无效修复,对存在故障且可通过RAID冗余算法进行修复的条带单元,通过条带中为正常条带单元的数据以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法进行修复;解决了现有技术中当RAID组中一个条带中出现多个存在故障的条带单元时,无法对该条带中后续出现故障的条带单元进行修复,造成故障区域扩大、数据丢失量增加的问题;对于同一个条带中出现故障的条带单元来讲,由于对该条带中不能修复的条带单元进行了无效修复,且根据无效修复时的无效数据以及其他条带单元中的数据,利用RAID算法对剩余可修复的条带单元进行修复,因此在后续的使用过程中,如果在后续使用过程中,该这条带中其他条带单元也出现故障,则可以根据这些已经修复的条带单元中的无效数据对后续出现故障的条带单元进行成功修复,达到了可以保证后续其他磁盘出现故障时能够被及时恢复,有效防止故障域扩大的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例中提供的独立磁盘冗余阵列修复方法的方法流程图;
图2A是本发明另一个实施例中提供的独立磁盘冗余阵列修复方法的方法流程图;
图2B是本发明一个实施例中提供的RAID5中对不可根据RAID冗余算法修复的条带单元进行无效修复的示意图;
图2C是本发明一个实施例中提供的RAID5中对可根据RAID冗余算法修复的条带单元进行修复的示意图;
图2D是本发明一个实施例中提供的对后续出现故障的条带单元进行修复的示意图;
图2E是本发明部分实施例中提供的数据区域的示意图;
图3A是本发明再一个实施例中提供的独立磁盘冗余阵列修复方法的方法流程图;
图3B是本发明一个实施例中提供的同一条带中多个条带单元存在故障的RAID6的示意图;
图4是本发明一个实施例中提供的独立磁盘冗余阵列修复装置的结构示意图;
图5是本发明另一个实施例中提供的独立磁盘冗余阵列修复装置的结构示意图;
图6是本发明一个实施例中提供的存储设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。为了便于描述,文中“故障条带单元”如无特别说明,均指的是出现故障的条带单元。
请参见图1所示,其示出了本发明一个实施例中提供的独立磁盘冗余阵列修复方法的方法流程图,该独立磁盘冗余阵列修复方法可以应用于RAID3、RAID5或RAID6中。该独立磁盘冗余阵列修复方法可以包括:
101,当独立磁盘冗余阵列RAID组中同一条带中的多个条带单元存在故障时,判断该条带中存在故障的条带单元数量是否满足使用RAID冗余算法进行修复的要求;
对于RAID组来讲,RAID组中通常包含多个并列的磁盘,每个磁盘在距离起始地址相同的位置对应的数据块可以看做是一个条带,而每个数据块即为一个条带单元。
通常来讲,对于不同类型的RAID组,允许一个条带中最多存在指定个数的有故障的条带单元,当一个条带中有故障的条带单元等于或小于指定个数时,则可以通过RAID冗余算法进行修复,而当条带中有故障的条带单元大于指定个数时,则无法通过RAID冗余算法进行修复。
对于RAID3或RAID5来讲,该指定个数为1,也即当RAID组中在同一个条带中仅存在一个出现故障的条带单元时,通常可以通过该条带中其他条带单元中的数据对该出现故障的条带单元进行修复,也即通过RAID冗余算法对该出现故障的条带单元进行修复。而如果RAID组中同一个条带中存在两个或多个有故障的条带单元时,则无法直接通过RAID冗余算法对这些有故障的条带单元进行修复。
对于RAID6来讲,该指定个数为2,也即当RAID组中在同一个条带仅存在一个或两个出现故障的条带单元时,通常可以通过与该条带中其他条带单元中的数据对该出现故障的条带单元进行修复,也即通过RAID冗余算法对该出现故障的条带单元进行修复。而如果RAID组中同一个条带中存在三个或三个以上的有故障的条带单元时,则无法直接通过RAID冗余算法对这些有故障到的条带单元进行修复。
102,如果不满足,则对至少一个存在故障的条带单元进行无效修复,直至未修复的存在故障的条带单元数量满足RAID冗余算法修复的要求;
无效修复即通过无效数据对存在故障的条带单元进行修复。
由于存在故障的条带单元无法通过RAID冗余算法进行修复,因此只能通过无效数据对存在故障的条带单元进行修复。这里所讲的无效数据可以为预定的无效数据,比如对同一个条带中所有存在故障的条带单元统一预定为一个相同的无效数据,还比如对同一个条带中所有存在故障的条带单元预定相同或不同的无效数据;无效数据还可以为在进行无效修复时随机生成的数据。需要说明的是,无论哪种情况下的无效数据,对于RAID控制器或系统来讲是知道每个修复后的条带单元中写入的无效数据的。
这里所讲的预定的无效数据可以根据实际情况进行设定,比如先确定该存在故障的条带单元的数据区所占的字节,为这些字节全部设定为0,或者为这些字节全部设定为1,也可以为这些字节中的一部分为设置为0,另一部分设置为1等。举例来讲,当该条带单元的数据区所占的字节为8个字节时,该预定的无效数据可以为00000000,或者可以为11111111,或者可以为00001111,或者可以为01001100。但不论为该条带单元设置的无效数据是多少,当为该条带单元设置好无效数据之后,该条带单元中的数据即为确定的了,虽然这个无效数据可能与出现故障前的数据不同,但内存可以安全读取出这个条带单元中的无效数据。
在某些情况下,同一个条带中出现故障的条带单元的数量比较多,在对其中一个条带单元进行修复之后,剩余的出现故障的条带单元的数量还是大于指定数据,在这种情况下,每修复一个出现故障的条带单元之后,即判断剩余的为修复的出现故障的条带单元的数量是否满足使用RAID冗余算法进行修复的要求,只要不满足,则继续修复下一个出现故障的条带单元,直到未修复的存在故障的条带单元数量满足RAID冗余算法修复的要求。
103,使用条带中为正常条带单元的数据,以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法,修复余下的存在故障的条带单元。
通过步骤102之后,如果判定剩余的存在故障的条带单元数量满足使用RAID冗余算法进行修复的要求,则可以通过RAID冗余算法进行修复。
在一种可能的实现方式中,可以使用该条带中为正常条带单元的数据以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法对余下的存在故障的条带单元进行修复。
需要说明的是,由于RAID冗余算法是通过该条带中已经修复的故障条带单元以及该条带中无故障的条带单元中的数据对剩余的故障条带单元进行修复的,由于该条带中已经修复的故障条带单元被写入了无效数据,因此RAID冗余算法根据这些无效数据计算出来的数据也应该是无效的数据。但通过RAID冗余算法计算出来的无效数据也是可以被内存安全地读取出来的。
综上所述,本发明实施例中提供的独立磁盘冗余阵列修复方法,通过当RAID组中同一条带中的多个条带单元存在故障时,对存在故障且无法通过RAID冗余算法进行修复的条带单元,进行无效修复,对存在故障且可通过RAID冗余算法进行修复的条带单元,通过条带中为正常条带单元的数据以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法进行修复;解决了现有技术中当RAID组中一个条带中出现多个存在故障的条带单元时,无法对该条带中后续出现故障的条带单元进行修复,造成故障区域扩大、数据丢失量增加的问题;对于同一个条带中出现故障的条带单元来讲,由于对该条带中不能修复的条带单元进行了无效修复,且根据无效修复时的无效数据以及其他条带单元中的数据,利用RAID算法对剩余可修复的条带单元进行修复,因此在后续的使用过程中,如果在后续使用过程中,该这条带中其他条带单元也出现故障,则可以根据这些已经修复的条带单元中的无效数据对后续出现故障的条带单元进行成功修复,达到了可以保证后续其他磁盘出现故障时能够被及时恢复,有效防止故障域扩大的效果。
由于RAID3或RAID5中,只要同一个条带中存在2个或2个以上的故障条带单元,就无法对这些故障条带单元进行修复,因此在这种情况下,为了避免故障域的扩大,可以提出以下一种独立磁盘冗余阵列修复方法,具体请参见图2A所示。
请参见图2A所示,其示出了本发明另一个实施例中提供的独立磁盘冗余阵列修复方法的方法流程图,该独立磁盘冗余阵列修复方法可以应用于RAID3或RAID5中。该独立磁盘冗余阵列修复方法可以包括:
201,当独立磁盘冗余阵列RAID组中同一条带中的多个条带单元存在故障时,判断该条带中存在故障的条带单元数量是否大于1;
对于RAID组来讲,RAID组中通常包含多个并列的磁盘,每个磁盘在距离起始地址相同的位置对应的数据块可以看做是一个条带,而每个数据块即为一个条带单元。
通常来讲,对于不同类型的RAID组,允许一个条带中最多存在指定个数的有故障的条带单元,当一个条带中有故障的条带单元等于或小于指定个数时,则可以通过RAID冗余算法进行修复,而当条带中有故障的条带单元大于指定个数时,则无法通过RAID冗余算法进行修复。
当RAID组为RAID3或RAID5时,只要该RAID组中同一个条带中存在至少2个故障条带单元,则无法通过RAID冗余算法对这些故障条带单元全部进行修复。此时,则需要判断存在故障的条带单元数量是否大于1。
请参见图2B所示,其示出了本发明一个实施例中提供的RAID5中对不可根据RAID冗余算法修复的条带单元进行无效修复的示意图,其中该RAID5由四个磁盘(磁盘1、磁盘2、磁盘3和磁盘4)组成,磁盘1和磁盘2在同一个条带1中的条带单元均存在故障,即故障条带单元1和故障条带单元2,磁盘3与故障条带单元1和故障条带单元2对齐的条带单元中写有有效数据1,磁盘4与故障条带单元1和故障条带单元2对齐的条带单元中写有有效数据2。在图2B中,条带1中存在故障的条带单元数量为2个(故障条带单元1和故障条带单元2),其值大于1。
202,若判断结果为该条带中存在故障的条带单元数据大于1,则判定该条带中存在故障的条带单元数量不满足使用RAID冗余算法进行修复的要求;
对于RAID5来讲,当同一个条带中存在故障的条带单元的数量为2个或2个以上时,则可以判定该条带中存在故障的条带单元数量不满足使用RAID冗余算法进行修复的要求。
203,若判断结果为该条带中存在故障的条带单元数据不大于1,则判定该条带中存在故障的条带单元数量满足使用RAID冗余算法进行修复的要求;
对于RAID5来讲,如果同一条带中仅存在一个故障条带单元,则判定该条带中存在故障的条带单元数量满足使用RAID冗余算法进行修复的要求。
204,如果不满足,则对至少一个存在故障的条带单元进行无效修复,直至未修复的存在故障的条带单元数量满足RAID冗余算法修复的要求;
无效修复即通过无效数据对存在故障的条带单元进行修复。
由于存在故障的条带单元无法通过RAID冗余算法进行修复,因此只能通过无效数据对存在故障的条带单元进行修复。这里所讲的无效数据可以为预定的无效数据,比如对同一个条带中所有存在故障的条带单元统一预定为一个相同的无效数据,还比如对同一个条带中所有存在故障的条带单元预定相同或不同的无效数据;无效数据还可以为在进行无效修复时随机生成的数据。需要说明的是,无论哪种情况下的无效数据,对于RAID控制器或系统来讲是知道每个修复后的条带单元中写入的无效数据的。换句话说,当同一条带中无法通过RAID冗余算法修复的故障条带单元的数量大于1个时,则对这些故障条带单元修复时写入的无效数据相同或不完全相同,比如,对于同一条带中无法通过RAID冗余算法进行修复的故障条带单元来讲,可以为这些故障条带单元添加相同的无效数据,也可以针对不同的故障条带单元添加不同的无效数据,但这些无效数据均是预定的无效数据或随机生成的无效数据,即不是根据RAID冗余算法得到的数据。
这里所讲的预定的无效数据可以根据实际情况进行设定,比如先确定该存在故障的条带单元的数据区所占的字节,为这些字节全部设定为0,或者为这些字节全部设定为1,也可以为这些字节中的一部分为设置为0,另一部分设置为1等。举例来讲,当该条带单元的数据区所占的字节为8个字节时,该预定的无效数据可以为00000000,或者可以为11111111,或者可以为00001111,或者可以为01001100。但不论为该条带单元设置的无效数据是多少,当为该条带单元设置好无效数据之后,该条带单元中的数据即为确定的了,虽然这个无效数据可能与出现故障前的数据不同,但内存可以安全读取出这个条带单元中的无效数据。
在某些情况下,同一个条带中出现故障的条带单元的数量比较多,在对其中一个条带单元进行修复之后,剩余的出现故障的条带单元的数量还是大于指定数据,在这种情况下,每修复一个出现故障的条带单元之后,即判断剩余的为修复的出现故障的条带单元的数量是否满足使用RAID冗余算法进行修复的要求,只要不满足,则继续修复下一个出现故障的条带单元,直到未修复的存在故障的条带单元数量满足RAID冗余算法修复的要求。
值得注意的是,由于条带单元出现故障的原因比较多,比如逻辑故障和物理故障(如条带单元中的扇区发生物理损坏),当条带单元出现逻辑故障时可以对该条带进行写修复,而当条带单元出现物理故障时则通常无法对该条带直接进行写修复。因此在对存在故障的条带单元进行无效修复时,通常存在如下两种情况:
在第一种情况下,当存在故障的条带单元能进行写修复时,则在存在故障的条带单元中写入无效数据,或,在备份的数据区写入无效数据,并将存在故障的条带单元与备份的数据区进行映射;
在第二种情况下,当存在故障的条带单元无法进行写修复时,则在备份的数据区写入无效数据,并将存在故障的条带单元与备份的数据区进行映射。
这样,每当需要读取存在故障的条带单元中的数据时,由于该故障条带单元无法进行写修复,而是将无效数据写入了备份的数据区,因此可以根据该故障条带单元和备份的数据区之间的映射关系读取该备份数据区中写入的数据。这种情况可以看作是从该故障条带单元读取数据的特例。
也就是说,在对存在故障的条带单元进行无效修复时,可以先判断存在故障的条带单元是否能进行写修复,如果存在故障的条带单元能进行写修复,则可以在存在故障的条带单元中写入无效数据,或者可以在备份的数据区写入无效数据,并将存在故障的条带单元与备份的数据区进行映射,这两种方法可以择一选用;而如果存在故障的条带单元不能进行写修复,则可以在备份的数据区写入无效数据,并将存在故障的条带单元与备份的数据区进行映射。
举例来讲,仍旧参见图2B所示,其中为故障条带单元1添加了第一无效数据,该第一无效数据为000,对应的磁盘3中该条带的条带单元中的有效数据1为011,磁盘4中该条带的条带单元中的有效数据2为100。
205,使用条带中为正常条带单元的数据,以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法,修复余下的存在故障的一个条带单元;
通过步骤204之后,如果判定剩余的存在故障的条带单元数量满足使用RAID冗余算法进行修复的要求,则可以通过RAID冗余算法进行修复。
在一种可能的实现方式中,可以使用该条带中为非故障条带单元的数据以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法对余下的存在故障的条带单元进行修复。
值得注意的是,由于条带单元出现故障的原因比较多,比如逻辑故障和物理故障(如条带单元中的扇区发生物理损坏),当条带单元出现逻辑故障时可以对该条带进行写修复,而当条带单元出现物理故障时则通常无法对该条带直接进行写修复。因此在使用条带中为正常条带单元的数据,以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法,修复余下的存在故障的条带单元时,可以包括如下两种情况:
在第一种情况下,当存在故障的条带单元能进行写修复时,则将利用RAID冗余算法计算出来的数据写入存在故障的条带单元中,或,将利用RAID冗余算法计算出来的数据写入备份的数据区,并将存在故障的条带单元与备份的数据区进行映射;
在第二种情况下,当存在故障的条带单元无法进行写修复时,则将利用RAID冗余算法计算出来的数据写入备份的数据区,并将存在故障的条带单元与备份的数据区进行映射。
这样,每当需要读取存在故障的条带单元中的数据时,由于该故障条带单元无法进行写修复,而是将无效数据写入了备份的数据区,因此可以根据该故障条带单元和备份的数据区之间的映射关系读取该备份数据区中写入的数据。这种情况可以看作是从该故障条带单元读取数据的特例。
也就是说,在利用RAID冗余算法,修复余下的存在故障的条带单元时,可以先判断存在故障的条带单元是否能进行写修复,如果存在故障的条带单元能进行写修复,则可以将利用RAID冗余算法计算出来的数据写入存在故障的条带单元中,或,可以将利用RAID冗余算法计算出来的数据写入备份的数据区,并将存在故障的条带单元与备份的数据区进行映射,这两种方法可以择一选用;而如果存在故障的条带单元不能进行写修复,则可以将利用RAID冗余算法计算出来的数据写入备份的数据区,并将存在故障的条带单元与备份的数据区进行映射。
需要说明的是,由于RAID冗余算法是通过该条带中已经修复的故障条带单元以及该条带中无故障的条带单元中的数据对剩余的故障条带单元进行修复的,由于该条带中已经修复的故障条带单元被写入了无效数据,因此RAID冗余算法根据这些无效数据计算出来的数据也应该是无效的数据。但通过RAID冗余算法计算出来的无效数据也是可以被内存安全地读取出来的。
请参见图2C所示,其示出了本发明一个实施例中提供的RAID5中对可根据RAID冗余算法修复的条带单元进行修复的示意图。结合图2B,当通过无效数据对磁盘1中的故障条带单元1进行修复之后,可以通过RAID冗余算法对故障条带单元2进行修复,即可以通过磁盘1中故障条带单元1中的第一无效数据、磁盘3中的有效数据1和磁盘4中的有效数据2生成第二无效数据,且根据该第二无效数据对故障条带单元2进行修复。举例来讲,假如故障条带单元1中添加的无效数据是000,磁盘3中与该故障条带单元1对齐的有效数据1为011,磁盘4中与该故障条带单元1对齐的有效数据2为100,而RAID冗余算法计算故障条带单元2中的数据是通过有效数据2减去有效数据1、然后再减去故障条带单元1中的数据得到的,此时计算出来的故障条带单元2中的数据应当为001,由于通过RAID冗余算法计算出来的001是通过故障条带单元1中的数据000得到的,而故障条带单元1中的数据是无效数据,因此计算出来的001也应当是无效数据,然后将该无效数据001添加至故障条带单元2中。此时,故障条带单元1中的第一无效数据为000、故障条带单元2中的第二无效数据为001、有效数据1为011、有效数据2为100,所有的区域都填充上了数据。这里需要说明的是,RAID冗余算法仅是进行了简单的示意性举例,在实际应用中,RAID5中的RAID冗余算法还可以通过其他方式实现,且RAID冗余算法是本领域的普通技术人员都可以实现的,这里就不再详述。
这样,在后续使用的过程中,请参见图2D所示,其示出了本发明一个实施例中提供的对后续出现的故障条带单元进行修复的示意图,并请结合图2C,如果磁盘3中与故障条带单元1和故障条带单元2对齐的区域(也即磁盘3中与故障条带单元1位于同一个条带中的条带单元)也出现故障,此时RAID冗余算法则可以根据故障条带单元1中填充的第一无效数据000、故障条带单元2中填充的第二无效数据001以及磁盘4中数据2的值100将磁盘3中的故障条带单元中的数据1进行还原,得到磁盘3中故障条带单元中的数据1应当为011。
206,记录与存在故障的条带单元对应的故障标记。
由于在对故障条带单元修复时填充的数据均是无效数据,因此这些无效数据被读取出来是不准确的,为了避免内存读取故障条带单元中的无效数据,则可以记录与故障条带单元对应的故障标记,这样内存在读取故障条带单元所在位置的数据时,如果发现存在与该位置对应的故障标记,则不读取对应于该位置中的数据。
在实际应用中,在记录与故障条带单元对应的故障标记时,可以包括如下两种情况:
第一种情况,将与故障条带单元对应的故障标记作为数据完整性区域DIF校验数据,将DIF校验数据写入故障条带单元中;
对于有些支持DIF校验区的RAID组来讲,每一个数据区域中通常包括两部分,分别为数据区和DIF校验区,请参见图2E所示,其示出了本发明部分实施例中提供的数据区域的示意图,可以将故障标记作为DIF校验数据,将DIF校验数据也写入故障条带单元。这样,当内存读取该故障条带单元的数据区域时,可以根据DIF校验区得知该数据区域是故障条带单元,不需要读取该数据区中的数据。
第二种情况,将故障条带单元所在位置以及与故障条带单元对应的故障标记写入内存中预设的映射表中,以便内存根据映射表中故障条带单元所在位置以及故障标记确定出故障条带单元。
通常,对一些不支持DIF校验区的RAID组来讲,通常可以在内存中设置一个用于存放故障条带单元所在位置以及与该故障条带单元对应的故障标记的映射表,这样,当内存需要读取该故障条带单元中的数据时,可以根据映射表得知该位置为存在故障的条带单元,此时则不需要读取该位置中的数据。
综上所述,本发明实施例中提供的独立磁盘冗余阵列修复方法,通过当RAID组中同一条带中的多个条带单元存在故障时,对存在故障且无法通过RAID冗余算法进行修复的条带单元,进行无效修复,对存在故障且可通过RAID冗余算法进行修复的条带单元,通过条带中为正常条带单元的数据以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法进行修复;解决了现有技术中当RAID组中一个条带中出现多个存在故障的条带单元时,无法对该条带中后续出现故障的条带单元进行修复,造成故障区域扩大、数据丢失量增加的问题;对于同一个条带中出现故障的条带单元来讲,由于对该条带中不能修复的条带单元进行了无效修复,且根据无效修复时的无效数据以及其他条带单元中的数据,利用RAID算法对剩余可修复的条带单元进行修复,因此在后续的使用过程中,如果在后续使用过程中,该这条带中其他条带单元也出现故障,则可以根据这些已经修复的条带单元中的无效数据对后续出现故障的条带单元进行成功修复,达到了可以保证后续其他磁盘出现故障时能够被及时恢复,有效防止故障域扩大的效果。
由于RAID6中,只要同一个条带中存在3个或3个以上的故障条带单元,就无法对这些故障条带单元进行修复,因此在这种情况下,为了避免故障域的扩大,可以提出以下一种独立磁盘冗余阵列修复方法,具体请参见图3A所示。
请参见图3A所示,其示出了本发明再一个实施例中提供的独立磁盘冗余阵列修复方法的方法流程图,该独立磁盘冗余阵列修复方法可以应用于RAID6中。该独立磁盘冗余阵列修复方法可以包括:
301,当独立磁盘冗余阵列RAID组中同一条带中的多个条带单元存在故障时,判断该条带中存在故障的条带单元数量是否大于2;
对于RAID组来讲,RAID组中通常包含多个并列的磁盘,每个磁盘在距离起始地址相同的位置对应的数据块可以看做是一个条带,而每个数据块即为一个条带单元。
通常来讲,对于不同类型的RAID组,允许一个条带中最多存在指定个数的有故障的条带单元,当一个条带中有故障的条带单元等于或小于指定个数时,则可以通过RAID冗余算法进行修复,而当条带中有故障的条带单元大于指定个数时,则无法通过RAID冗余算法进行修复。
当RAID组为RAID6时,只要该RAID组中同一个条带中存在至少3个故障条带单元,则无法通过RAID冗余算法对这些故障条带单元全部进行修复。此时,则需要判断存在故障的条带单元数量是否大于2。
请参见图3B所示,其示出了本发明一个实施例中提供的同一条带中存在多个故障条带单元的RAID6的示意图,其中该RAID6由五个磁盘组成,磁盘1、磁盘2和磁盘3在同一个条带1上的条带单元均存在故障,即故障条带单元1、故障条带单元2和故障条带单元3,对应的磁盘4中该条带1上的条带单元中包含有效数据1,磁盘5中该条带1上的条带单元中中包含有效数据2。
302,若判断结果为该条带中存在故障的条带单元数据大于2,则判定该条带中存在故障的条带单元数量不满足使用RAID冗余算法进行修复的要求;
对于RAID6来讲,当同一个条带中存在故障的条带单元的数量为3个或3个以上时,则可以判定该条带中存在故障的条带单元数量不满足使用RAID冗余算法进行修复的要求。
303,若判断结果为该条带中存在故障的条带单元数据不大于2,则判定该条带中存在故障的条带单元数量满足使用RAID冗余算法进行修复的要求;
对于RAID6来讲,如果同一条带中仅存在1个或2个故障条带单元,则判定该条带中存在故障的条带单元数量满足使用RAID冗余算法进行修复的要求。
304,如果不满足,则对至少一个存在故障的条带单元进行无效修复,直至未修复的存在故障的条带单元数量满足RAID冗余算法修复的要求;
无效修复即通过无效数据对存在故障的条带单元进行修复。
由于存在故障的条带单元无法通过RAID冗余算法进行修复,因此只能通过无效数据对存在故障的条带单元进行修复。这里所讲的无效数据可以为预定的无效数据,比如对同一个条带中所有存在故障的条带单元统一预定为一个相同的无效数据,还比如对同一个条带中所有存在故障的条带单元预定相同或不同的无效数据;无效数据还可以为在进行无效修复时随机生成的数据。需要说明的是,无论哪种情况下的无效数据,对于RAID控制器或系统来讲是知道每个修复后的条带单元中写入的无效数据的。换句话说,当同一条带中无法通过RAID冗余算法修复的故障条带单元的数量大于2个时,则对这些故障条带单元修复时写入的无效数据相同或不完全相同,比如,对于同一条带中无法通过RAID冗余算法进行修复的故障条带单元来讲,可以为这些故障条带单元添加相同的无效数据,也可以针对不同的故障条带单元添加不同的无效数据,但这些无效数据均是预定的无效数据或随机生成的无效数据,即不是根据RAID冗余算法得到的数据。
这里所讲的预定的无效数据可以根据实际情况进行设定,比如先确定该存在故障的条带单元的数据区所占的字节,为这些字节全部设定为0,或者为这些字节全部设定为1,也可以为这些字节中的一部分为设置为0,另一部分设置为1等。但不论为该条带单元设置的无效数据是多少,当为该条带单元设置好无效数据之后,该条带单元中的数据即为确定的了,虽然这个无效数据可能与出现故障前的数据不同,但内存可以安全读取出这个条带单元中的无效数据。
在某些情况下,同一个条带中出现故障的条带单元的数量比较多,在对其中一个条带单元进行修复之后,剩余的出现故障的条带单元的数量还是大于指定数据,在这种情况下,每修复一个出现故障的条带单元之后,即判断剩余的为修复的出现故障的条带单元的数量是否满足使用RAID冗余算法进行修复的要求,只要不满足,则继续修复下一个出现故障的条带单元,直到未修复的存在故障的条带单元数量满足RAID冗余算法修复的要求。
值得注意的是,由于条带单元出现故障的原因比较多,比如逻辑故障和物理故障(如条带单元中的扇区发生物理损坏),当条带单元出现逻辑故障时可以对该条带进行写修复,而当条带单元出现物理故障时则通常无法对该条带直接进行写修复。因此在对存在故障的条带单元进行无效修复时,通常存在如下两种情况:
在第一种情况下,当存在故障的条带单元能进行写修复时,则在存在故障的条带单元中写入无效数据,或,在备份的数据区写入无效数据,并将存在故障的条带单元与备份的数据区进行映射;
在第二种情况下,当存在故障的条带单元无法进行写修复时,则在备份的数据区写入无效数据,并将存在故障的条带单元与备份的数据区进行映射。
这样,每当需要读取存在故障的条带单元中的数据时,由于该故障条带单元无法进行写修复,而是将无效数据写入了备份的数据区,因此可以根据该故障条带单元和备份的数据区之间的映射关系读取该备份数据区中写入的数据。这种情况可以看作是从该故障条带单元读取数据的特例。
也就是说,在对存在故障的条带单元进行无效修复时,可以先判断存在故障的条带单元是否能进行写修复,如果存在故障的条带单元能进行写修复,则可以在存在故障的条带单元中写入无效数据,或者可以在备份的数据区写入无效数据,并将存在故障的条带单元与备份的数据区进行映射,这两种方法可以择一选用;而如果存在故障的条带单元不能进行写修复,则可以在备份的数据区写入无效数据,并将存在故障的条带单元与备份的数据区进行映射。
305,使用条带中为正常条带单元的数据,以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法,修复余下的存在故障的2个条带单元;
通过步骤204之后,如果判定剩余的存在故障的条带单元数量满足使用RAID冗余算法进行修复的要求,则可以通过RAID冗余算法进行修复。
在一种可能的实现方式中,可以使用该条带中为非故障条带单元的数据以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法对余下的存在故障的条带单元进行修复。
值得注意的是,由于条带单元出现故障的原因比较多,比如逻辑故障和物理故障(如条带单元中的扇区发生物理损坏),当条带单元出现逻辑故障时可以对该条带进行写修复,而当条带单元出现物理故障时则通常无法对该条带直接进行写修复。因此在使用条带中为正常条带单元的数据,以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法,修复余下的存在故障的条带单元时,可以包括如下两种情况:
在第一种情况下,当存在故障的条带单元能进行写修复时,则将利用RAID冗余算法计算出来的数据写入存在故障的条带单元中,或,将利用RAID冗余算法计算出来的数据写入备份的数据区,并将存在故障的条带单元与备份的数据区进行映射;
在第二种情况下,当存在故障的条带单元无法进行写修复时,则将利用RAID冗余算法计算出来的数据写入备份的数据区,并将存在故障的条带单元与备份的数据区进行映射。
这样,每当需要读取存在故障的条带单元中的数据时,由于该故障条带单元无法进行写修复,而是将无效数据写入了备份的数据区,因此可以根据该故障条带单元和备份的数据区之间的映射关系读取该备份数据区中写入的数据。这种情况可以看作是从该故障条带单元读取数据的特例。
也就是说,在利用RAID冗余算法,修复余下的存在故障的条带单元时,可以先判断存在故障的条带单元是否能进行写修复,如果存在故障的条带单元能进行写修复,则可以将利用RAID冗余算法计算出来的数据写入存在故障的条带单元中,或,可以将利用RAID冗余算法计算出来的数据写入备份的数据区,并将存在故障的条带单元与备份的数据区进行映射,这两种方法可以择一选用;而如果存在故障的条带单元不能进行写修复,则可以将利用RAID冗余算法计算出来的数据写入备份的数据区,并将存在故障的条带单元与备份的数据区进行映射。
需要说明的是,由于RAID冗余算法是通过该条带中已经修复的故障条带单元以及该条带中无故障的条带单元中的数据对剩余的故障条带单元进行修复的,由于该条带中已经修复的故障条带单元被写入了无效数据,因此RAID冗余算法根据这些无效数据计算出来的数据也应该是无效的数据。但通过RAID冗余算法计算出来的无效数据也是可以被内存安全地读取出来的。
当确定同一个条带中的两个故障条带单元可以通过RAID冗余算法进行修复时,则根据已经修复的故障条带单元中的无效数据和该条带中正常条带单元中的数据,利用RAID冗余算法计算出两个数据,并将这两个数据分别添加至这两个故障条带单元中。由于对于同一条带中的故障条带单元来讲,当其他的故障条带单元均通过无效数据进行修复之后,然后根据这些无效数据以及该条带中其他正常条带单元中的有效数据计算出来得到的数据也通常是无效的。
这样,在后续使用的过程中,如果磁盘4中的数据1的区域也出现故障,此时RAID冗余算法则可以根据故障条带单元1、故障条带单元2、故障条带单元3以及磁盘5中的数据进行还原,得到磁盘4中的数据。
306,记录与存在故障的条带单元对应的故障标记。
由于在对故障条带单元修复时填充的数据均是无效数据,因此这些无效数据被读取出来是不准确的,为了避免内存读取故障条带单元中的无效数据,则可以记录与故障条带单元对应的故障标记,这样内存在读取故障条带单元所在的位置的数据时,如果发现存在与该位置对应的故障标记,则不读取对应于该位置中的数据。
在实际应用中,在记录与故障条带单元对应的故障标记时,可以包括如下两种情况:
第一种情况,将与故障条带单元对应的故障标记作为数据完整性区域DIF校验数据,将DIF校验数据写入故障条带单元中;
对于有些支持DIF校验区的RAID组来讲,每一个数据区域中通常包括两部分,分别为数据区和DIF校验区,仍旧参见图2E所示,可以将故障标记作为DIF校验数据,将DIF校验数据也写入故障条带单元。这样,当内存读取该数据区域时,可以根据DIF校验区得知该数据区域是存在故障的条带单元,不需要读取该数据区中的数据。
第二种情况,将故障条带单元所在位置以及与故障条带单元对应的故障标记写入内存中预设的映射表中,以便内存根据映射表中故障条带单元所在位置以及故障标记确定出故障条带单元。
通常,对一些不支持DIF校验区的RAID组来讲,通常可以在内存中设置一个用于存放故障条带单元所在位置以及与该故障条带单元对应的故障标记的映射表,这样,当内存需要读取故障条带单元中的数据时,可以根据映射表得知该位置为存在故障的条带单元,此时则不需要读取该位置中的数据。
综上所述,本发明实施例中提供的独立磁盘冗余阵列修复方法,通过当RAID组中同一条带中的多个条带单元存在故障时,对存在故障且无法通过RAID冗余算法进行修复的条带单元,进行无效修复,对存在故障且可通过RAID冗余算法进行修复的条带单元,通过条带中为正常条带单元的数据以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法进行修复;解决了现有技术中当RAID组中一个条带中出现多个存在故障的条带单元时,无法对该条带中后续出现故障的条带单元进行修复,造成故障区域扩大、数据丢失量增加的问题;对于同一个条带中出现故障的条带单元来讲,由于对该条带中不能修复的条带单元进行了无效修复,且根据无效修复时的无效数据以及其他条带单元中的数据,利用RAID算法对剩余可修复的条带单元进行修复,因此在后续的使用过程中,如果在后续使用过程中,该这条带中其他条带单元也出现故障,则可以根据这些已经修复的条带单元中的无效数据对后续出现故障的条带单元进行成功修复,达到了可以保证后续其他磁盘出现故障时能够被及时恢复,有效防止故障域扩大的效果。
以下为本发明的装置实施例,对于其中未详尽描述的细节,可以参考上述对应的方法实施例。
请参见图4所示,其示出了本发明一个实施例中提供的独立磁盘冗余阵列装置的结构示意图,该独立磁盘冗余阵列装置可以包括但不限于:判断模块402、第一修复模块404和第二修复模块406。
判断模块402,可以用于当独立磁盘冗余阵列RAID组中同一条带中的多个条带单元存在故障时,判断该条带中存在故障的条带单元数量是否满足使用RAID冗余算法进行修复的要求;
第一修复模块404,可以用于在判断模块402判断该条带中存在故障的条带单元数量不满足使用RAID冗余算法进行修复的要求时,则对至少一个存在故障的条带单元进行无效修复,直至未修复的存在故障的条带单元数量满足RAID冗余算法修复的要求;
第二修复模块406,可以用于使用条带中为正常条带单元的数据,以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法,修复经过第一修复模块404修复之后余下的存在故障的条带单元。
综上所述,本发明实施例中提供的独立磁盘冗余阵列修复装置,通过当RAID组中同一条带中的多个条带单元存在故障时,对存在故障且无法通过RAID冗余算法进行修复的条带单元,进行无效修复,对存在故障且可通过RAID冗余算法进行修复的条带单元,通过条带中为正常条带单元的数据以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法进行修复;解决了现有技术中当RAID组中一个条带中出现多个存在故障的条带单元时,无法对该条带中后续出现故障的条带单元进行修复,造成故障区域扩大、数据丢失量增加的问题;对于同一个条带中出现故障的条带单元来讲,由于对该条带中不能修复的条带单元进行了无效修复,且根据无效修复时的无效数据以及其他条带单元中的数据,利用RAID算法对剩余可修复的条带单元进行修复,因此在后续的使用过程中,如果在后续使用过程中,该这条带中其他条带单元也出现故障,则可以根据这些已经修复的条带单元中的无效数据对后续出现故障的条带单元进行成功修复,达到了可以保证后续其他磁盘出现故障时能够被及时恢复,有效防止故障域扩大的效果。
请参见图5所示,其示出了本发明另一个实施例中提供的独立磁盘冗余阵列修复装置的结构示意图,该独立磁盘冗余阵列修复装置可以包括但不限于:判断模块502、第一修复模块504和第二修复模块506。
判断模块502,可以用于当独立磁盘冗余阵列RAID组中同一条带中的多个条带单元存在故障时,判断该条带中存在故障的条带单元数量是否满足使用RAID冗余算法进行修复的要求;
第一修复模块504,可以用于在判断模块502判断该条带中存在故障的条带单元数量不满足使用RAID冗余算法进行修复的要求时,则对至少一个存在故障的条带单元进行无效修复,直至未修复的存在故障的条带单元数量满足RAID冗余算法修复的要求;
第二修复模块506,可以用于使用条带中为正常条带单元的数据,以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法,修复经过第一修复模块504修复之后余下的存在故障的条带单元。
在本实施例中的第一种可能的实现方式中,第一修复模块504可以包括:第一写入单元504a。
第一写入单元504a,可以用于当存在故障的条带单元能进行写修复时,则在存在故障的条带单元中写入无效数据;
第二修复模块506可以包括:第二写入单元506a。
第二写入单元506a,可以用于将利用RAID冗余算法计算出来的数据写入存在故障的条带单元中。
在本实施例中的第二种可能的实现方式中,第一修复模块504可以包括第三写入单元504b。
第三写入单元504b,可以用于在备份的数据区写入无效数据,并将存在故障的条带单元与备份的数据区进行映射;
第二修复模块506可以包括第四写入单元506b。
第四写入单元506b,可以用于将利用RAID冗余算法计算出来的数据写入备份的数据区,并将存在故障的条带单元与备份的数据区进行映射。
在本实施例中的第三种可能的实现方式中,当RAID组为RAID5或RAID3时,判断模块502可以包括:第一判断单元502a、第一判定单元502b和第二判定单元502c。
第一判断单元502a,可以用于判断该条带中存在故障的条带单元数量是否大于1;
第一判定单元502b,可以用于在第一判断单元502a的判断结果为该条带中存在故障的条带单元数据大于1时,判定该条带中存在故障的条带单元数量不满足使用RAID冗余算法进行修复的要求;
第二判定单元502c,可以用于在第一判断单元502a的判断结果为该条带中存在故障的条带单元数据不大于1时,判定该条带中存在故障的条带单元数量满足使用RAID冗余算法进行修复的要求。
在本实施例中的第四种可能的实现方式中,当RAID组为RAID6时,判断模块502可以包括:
第二判断单元502d,可以用于判断该条带中存在故障的条带单元数量是否大于2;
第三判定单元502e,可以用于在第二判断单元502d的判断结果为该条带中存在故障的条带单元数据大于2时,判定该条带中存在故障的条带单元数量不满足使用RAID冗余算法进行修复的要求;
第四判定单元502f,可以用于在第二判断单元502d的判断结果为该条带中存在故障的条带单元数据不大于2时,判定该条带中存在故障的条带单元数量满足使用RAID冗余算法进行修复的要求。
在本实施例中的第五种可能的实现方式中,该独立磁盘冗余阵列修复还可以包括:记录模块508。
记录模块508,可以用于记录与存在故障的条带单元对应的故障标记。
在本实施例中的第六种可能的实现方式中,记录模块508可以包括:第五写入单元508a和第六写入单元508b。
第五写入单元508a,可以用于将与存在故障的条带单元对应的故障标记作为数据完整性区域DIF校验数据,将DIF校验数据写入存在故障的条带单元中;
或,
第六写入单元508b,可以用于将存在故障的条带单元所在位置以及与存在故障的条带单元对应的故障标记写入内存中预设的映射表中,以便内存根据映射表中条带单元所在位置以及故障标记确定出存在故障的条带单元。
综上所述,本发明实施例中提供的独立磁盘冗余阵列修复装置,通过当RAID组中同一条带中的多个条带单元存在故障时,对存在故障且无法通过RAID冗余算法进行修复的条带单元,进行无效修复,对存在故障且可通过RAID冗余算法进行修复的条带单元,通过条带中为正常条带单元的数据以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法进行修复;解决了现有技术中当RAID组中一个条带中出现多个存在故障的条带单元时,无法对该条带中后续出现故障的条带单元进行修复,造成故障区域扩大、数据丢失量增加的问题;对于同一个条带中出现故障的条带单元来讲,由于对该条带中不能修复的条带单元进行了无效修复,且根据无效修复时的无效数据以及其他条带单元中的数据,利用RAID算法对剩余可修复的条带单元进行修复,因此在后续的使用过程中,如果在后续使用过程中,该这条带中其他条带单元也出现故障,则可以根据这些已经修复的条带单元中的无效数据对后续出现故障的条带单元进行成功修复,达到了可以保证后续其他磁盘出现故障时能够被及时恢复,有效防止故障域扩大的效果。
需要说明的是:上述实施例提供的独立磁盘冗余阵列修复装置在对故障条带单元进行修复时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将控制器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的独立磁盘冗余阵列修复装置与独立磁盘冗余阵列修复装置方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参见图6所示,其示出了本发明一个实施例中提供的存储设备的结构示意图,该存储设备可以包括但不限于:控制器602和RAID组604,其中控制器602和RAID组604可以通过有线方式连接,RAID组604可以为RAID3、RAID5或RAID6,当RAID组604为RAID3或RAID5时,则RAID组604中至少包含三个磁盘,当RAID组604为RAID6时,则RAID组604中至少包含四个磁盘。
控制器602,可以用于当独立磁盘冗余阵列RAID组中同一条带中的多个条带单元存在故障时,判断该条带中存在故障的条带单元数量是否满足使用RAID冗余算法进行修复的要求;
控制器602,还可以用于在判断该条带中存在故障的条带单元数量不满足使用RAID冗余算法进行修复的要求时,则对至少一个存在故障的条带单元进行无效修复,直至未修复的存在故障的条带单元数量满足RAID冗余算法修复的要求;
控制器602,还可以用于使用条带中为正常条带单元的数据,以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法,修复经过第一修复模块修复之后余下的存在故障的条带单元。
在本发明的第一种可能的实现方式中,
控制器602,还可以用于当存在故障的条带单元能进行写修复时,则在存在故障的条带单元中写入无效数据;
控制器602,还可以用于当存在故障的条带单元能进行写修复时,则将利用RAID冗余算法计算出来的数据写入存在故障的条带单元中。
在本发明的第二种可能的实现方式中,
控制器602,还可以用于在备份的数据区写入无效数据,并将存在故障的条带单元与备份的数据区进行映射;
控制器602,还可以用于将利用RAID冗余算法计算出来的数据写入备份的数据区,并将存在故障的条带单元与备份的数据区进行映射。
在本发明的第三种可能的实现方式中,
当RAID组为RAID5或RAID3时,控制器602,还可以用于判断该条带中存在故障的条带单元数量是否大于1;
控制器602,还可以用于在判断结果为该条带中存在故障的条带单元数据大于1时,判定该条带中存在故障的条带单元数量不满足使用RAID冗余算法进行修复的要求;
控制器602,还可以用于在判断结果为该条带中存在故障的条带单元数据不大于1时,判定该条带中存在故障的条带单元数量满足使用RAID冗余算法进行修复的要求。
在本发明的第四种可能的实现方式中,
当RAID组为RAID6时,控制器602,还可以用于判断该条带中存在故障的条带单元数量是否大于2;
控制器602,还可以用于在判断结果为该条带中存在故障的条带单元数据大于2时,判定该条带中存在故障的条带单元数量不满足使用RAID冗余算法进行修复的要求;
控制器602,还可以用于在判断结果为该条带中存在故障的条带单元数据不大于2时,判定该条带中存在故障的条带单元数量满足使用RAID冗余算法进行修复的要求。
在本发明的第五种可能的实现方式中,
控制器602,还可以用于记录与存在故障的条带单元对应的故障标记。
在本发明的第六种可能的实现方式中,
控制器602,还可以用于将与存在故障的条带单元对应的故障标记作为数据完整性区域DIF校验数据,将DIF校验数据写入存在故障的条带单元中;
或,
控制器602,还可以用于将存在故障的条带单元所在位置以及与存在故障的条带单元对应的故障标记写入内存中预设的映射表中,以便内存根据映射表中条带单元所在位置以及故障标记确定出存在故障的条带单元。
综上所述,本发明实施例中提供的独立磁盘冗余阵列修复装置,通过当RAID组中同一条带中的多个条带单元存在故障时,对存在故障且无法通过RAID冗余算法进行修复的条带单元,进行无效修复,对存在故障且可通过RAID冗余算法进行修复的条带单元,通过条带中为正常条带单元的数据以及经过无效修复后各条带单元中的无效数据,利用RAID冗余算法进行修复;解决了现有技术中当RAID组中一个条带中出现多个存在故障的条带单元时,无法对该条带中后续出现故障的条带单元进行修复,造成故障区域扩大、数据丢失量增加的问题;对于同一个条带中出现故障的条带单元来讲,由于对该条带中不能修复的条带单元进行了无效修复,且根据无效修复时的无效数据以及其他条带单元中的数据,利用RAID算法对剩余可修复的条带单元进行修复,因此在后续的使用过程中,如果在后续使用过程中,该这条带中其他条带单元也出现故障,则可以根据这些已经修复的条带单元中的无效数据对后续出现故障的条带单元进行成功修复,达到了可以保证后续其他磁盘出现故障时能够被及时恢复,有效防止故障域扩大的效果。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (11)
1.一种独立磁盘冗余阵列修复方法,其特征在于,所述方法包括:
当独立磁盘冗余阵列RAID组中同一条带中的多个条带单元存在故障时,判断所述条带中存在故障的所述条带单元数量是否满足使用RAID冗余算法进行修复的要求;
如果不满足,则对至少一个存在故障的所述条带单元进行无效修复,直至所述条带中未修复的存在故障的所述条带单元数量满足所述RAID冗余算法修复的要求;
使用所述条带中为正常条带单元的数据,以及经过无效修复后各所述条带单元中的无效数据,利用所述RAID冗余算法,修复余下的存在故障的条带单元;
所述方法还包括:
记录与存在故障的所述条带单元对应的故障标记,具有故障标记的条带单元中的数据禁止内存读取;
其中,所述记录与存在故障的所述条带单元对应的故障标记,包括:
将与存在故障的所述条带单元对应的故障标记作为数据完整性区域DIF校验数据,将所述DIF校验数据写入存在故障的所述条带单元中。
2.根据权利要求1所述的方法,其特征在于,所述对至少一个存在故障的所述条带单元进行无效修复,包括:
当存在故障的所述条带单元能进行写修复时,则在存在故障的所述条带单元中写入无效数据;
所述利用所述RAID冗余算法,修复余下的存在故障的条带单元,包括:
当存在故障的所述条带单元能进行写修复时,则将利用所述RAID冗余算法计算出来的数据写入存在故障的所述条带单元中。
3.根据权利要求1所述的方法,其特征在于,所述对至少一个存在故障的所述条带单元进行无效修复,包括:
在备份的数据区写入无效数据,并将存在故障的所述条带单元与备份的所述数据区进行映射;
所述利用所述RAID冗余算法,修复余下的存在故障的条带单元,包括:
将利用所述RAID冗余算法计算出来的数据写入备份的数据区,并将存在故障的所述条带单元与备份的所述数据区进行映射。
4.根据权利要求2或3所述的方法,其特征在于,当所述RAID组为RAID5或RAID3时,所述判断所述条带中存在故障的所述条带单元数量是否满足使用所述RAID冗余算法进行修复的要求,包括:
判断所述条带中存在故障的所述条带单元数量是否大于1;
若判断结果为所述条带中存在故障的所述条带单元数据大于1,则判定所述条带中存在故障的所述条带单元数量不满足使用所述RAID冗余算法进行修复的要求;
若判断结果为所述条带中存在故障的所述条带单元数据不大于1,则判定所述条带中存在故障的所述条带单元数量满足使用所述RAID冗余算法进行修复的要求。
5.根据权利要求2或3所述的方法,其特征在于,当所述RAID组为RAID6时,所述判断所述条带中存在故障的所述条带单元数量是否满足使用所述RAID冗余算法进行修复的要求,包括:
判断所述条带中存在故障的所述条带单元数量是否大于2;
若判断结果为所述条带中存在故障的所述条带单元数据大于2,则判定所述条带中存在故障的所述条带单元数量不满足使用所述RAID冗余算法进行修复的要求;
若判断结果为所述条带中存在故障的所述条带单元数据不大于2,则判定所述条带中存在故障的所述条带单元数量满足使用所述RAID冗余算法进行修复的要求。
6.一种独立磁盘冗余阵列修复装置,其特征在于,所述装置包括:
判断模块,用于当独立磁盘冗余阵列RAID组中同一条带中的多个条带单元存在故障时,判断所述条带中存在故障的所述条带单元数量是否满足使用RAID冗余算法进行修复的要求;
第一修复模块,用于在所述判断模块判断存在故障的所述条带单元数量不满足使用所述RAID冗余算法进行修复的要求时,则对至少一个存在故障的所述条带单元进行无效修复,直至未修复的存在故障的所述条带单元数量满足所述RAID冗余算法修复的要求;
第二修复模块,用于使用所述条带中为正常条带单元的数据,以及经过无效修复后各所述条带单元中的无效数据,利用所述RAID冗余算法,修复经过第一修复模块修复之后余下的存在故障的条带单元;
所述装置还包括:
记录模块,用于记录与存在故障的所述条带单元对应的故障标记,具有故障标记的条带单元中的数据禁止内存读取;
其中,所述记录模块,包括:
第五写入单元,用于将与存在故障的所述条带单元对应的故障标记作为数据完整性区域DIF校验数据,将所述DIF校验数据写入存在故障的所述条带单元中。
7.根据权利要求6所述的装置,其特征在于,所述第一修复模块,包括:
第一写入单元,用于当存在故障的所述条带单元能进行写修复时,则在存在故障的所述条带单元中写入无效数据;
所述第二修复模块,包括:
第二写入单元,用于当存在故障的所述条带单元能进行写修复时,则将利用所述RAID冗余算法计算出来的数据写入存在故障的所述条带单元中。
8.根据权利要求6所述的装置,其特征在于,所述第一修复模块,包括:
第三写入单元,用于在备份的数据区写入无效数据,并将存在故障的所述条带单元与备份的所述数据区进行映射;
所述第二修复模块,包括:
第四写入单元,用于将利用所述RAID冗余算法计算出来的数据写入备份的数据区,并将存在故障的所述条带单元与备份的所述数据区进行映射。
9.根据权利要求7或8所述的装置,其特征在于,当所述RAID组为RAID5或RAID3时,所述判断模块,包括:
第一判断单元,用于判断所述条带中存在故障的所述条带单元数量是否大于1;
第一判定单元,用于在所述第一判断单元的判断结果为所述条带中存在故障的所述条带单元数据大于1时,判定所述条带中存在故障的所述条带单元数量不满足使用所述RAID冗余算法进行修复的要求;
第二判定单元,用于在所述第一判断单元的判断结果为所述条带中存在故障的所述条带单元数据不大于1时,判定所述条带中存在故障的所述条带单元数量满足使用所述RAID冗余算法进行修复的要求。
10.根据权利要求7或8所述的装置,其特征在于,当所述RAID组为RAID6时,所述判断模块,包括:
第二判断单元,用于判断所述条带中存在故障的所述条带单元数量是否大于2;
第三判定单元,用于在所述第二判断单元的判断结果为所述条带中存在故障的所述条带单元数据大于2时,判定所述条带中存在故障的所述条带单元数量不满足使用所述RAID冗余算法进行修复的要求;
第四判定单元,用于在所述第二判断单元的判断结果为所述条带中存在故障的所述条带单元数据不大于2时,判所述条带中定存在故障的所述条带单元数量满足使用所述RAID冗余算法进行修复的要求。
11.一种存储设备,其特征在于,所述存储设备包括:RAID组和控制器,
所述RAID组为RAID3、RAID5或RAID6;
所述控制器包括如权利要求6至10中任一所述的独立磁盘冗余阵列修复装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310632579.9A CN103678048B (zh) | 2013-11-29 | 2013-11-29 | 独立磁盘冗余阵列修复方法、装置和存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310632579.9A CN103678048B (zh) | 2013-11-29 | 2013-11-29 | 独立磁盘冗余阵列修复方法、装置和存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103678048A CN103678048A (zh) | 2014-03-26 |
CN103678048B true CN103678048B (zh) | 2015-11-25 |
Family
ID=50315693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310632579.9A Active CN103678048B (zh) | 2013-11-29 | 2013-11-29 | 独立磁盘冗余阵列修复方法、装置和存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103678048B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107220148B (zh) * | 2016-03-21 | 2020-12-04 | 伊姆西Ip控股有限责任公司 | 针对独立磁盘冗余阵列的重建方法和设备 |
KR102580123B1 (ko) * | 2016-05-03 | 2023-09-20 | 삼성전자주식회사 | Raid 스토리지 장치 및 그것의 관리 방법 |
CN106959912B (zh) * | 2017-03-07 | 2020-03-24 | 杭州宏杉科技股份有限公司 | 磁盘检测方法及装置 |
CN109358980B (zh) * | 2018-09-25 | 2022-03-01 | 华东交通大学 | 一种对数据更新和单磁盘错误修复友好的raid6编码方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101276302A (zh) * | 2007-03-29 | 2008-10-01 | 中国科学院计算技术研究所 | 一种磁盘阵列系统中磁盘故障处理和数据重构方法 |
CN102023902A (zh) * | 2010-12-28 | 2011-04-20 | 创新科存储技术有限公司 | 一种磁盘阵列重建方法 |
CN102981921A (zh) * | 2012-12-17 | 2013-03-20 | 浙江宇视科技有限公司 | 一种Raid5阵列读IO失败的修复方法和装置 |
-
2013
- 2013-11-29 CN CN201310632579.9A patent/CN103678048B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101276302A (zh) * | 2007-03-29 | 2008-10-01 | 中国科学院计算技术研究所 | 一种磁盘阵列系统中磁盘故障处理和数据重构方法 |
CN102023902A (zh) * | 2010-12-28 | 2011-04-20 | 创新科存储技术有限公司 | 一种磁盘阵列重建方法 |
CN102981921A (zh) * | 2012-12-17 | 2013-03-20 | 浙江宇视科技有限公司 | 一种Raid5阵列读IO失败的修复方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103678048A (zh) | 2014-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103678048B (zh) | 独立磁盘冗余阵列修复方法、装置和存储设备 | |
CN103034458B (zh) | 固态硬盘中实现独立磁盘冗余阵列的方法及装置 | |
CN102708019B (zh) | 一种硬盘数据恢复方法、装置及系统 | |
CN103309775B (zh) | 一种高可靠磁盘阵列的容错方法 | |
CN103578565B (zh) | 一种NAND Flash存储芯片的校验方法及装置 | |
CN103455386A (zh) | 一种修复出错数据的方法和设备 | |
CN101604267B (zh) | 独立磁盘冗余阵列系统 | |
CN103513942B (zh) | 独立冗余磁盘阵列的重构方法及装置 | |
US10509697B2 (en) | Data storage device and operating method therefor | |
CN110399247B (zh) | 一种数据恢复方法、装置、设备及计算机可读存储介质 | |
CN105468479B (zh) | 一种磁盘阵列raid坏块处理方法及装置 | |
CN104347122A (zh) | 一种消息式内存模组的访存方法和装置 | |
CN101587453A (zh) | 数据备份处理方法、数据存储节点设备及数据存储装置 | |
CN103534688A (zh) | 数据恢复方法、存储设备和存储系统 | |
CN103530206B (zh) | 一种数据恢复的方法和设备 | |
CN101923441A (zh) | 混合磁盘冗余阵列的写请求处理方法、控制器和存储系统 | |
US20170017550A1 (en) | Storage system | |
CN111190775A (zh) | 一种osd更换方法、系统、设备及计算机可读存储介质 | |
CN107992268B (zh) | 一种坏块标记的方法及相关装置 | |
CN102324251B (zh) | 用以指示存储器中的编程失败的信号线 | |
WO2015045122A1 (ja) | ストレージ装置、ストレージシステム、およびデータ管理方法 | |
EP2613258A1 (en) | Automatic remapping in redundant array of independent disks and related raid | |
CN104881244A (zh) | 存储系统及其数据保护方法 | |
US20130151886A1 (en) | Computing device and method for switching physical links of a sas expander of the computing device | |
CN105575439A (zh) | 一种存储单元失效纠错的方法及存储器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |