一种磁盘阵列的容错处理方法

文档序号:9432412阅读:402来源:国知局
一种磁盘阵列的容错处理方法
【技术领域】
[0001]本发明涉及磁盘阵列技术领域,具体涉及一种磁盘阵列的容错处理方法。
【背景技术】
[0002]独立磁盘冗余阵列,简称磁盘阵列,其将多个独立的磁盘结合成一个阵列,提供很好的冗余性和比单个磁盘更高的存储性能。在存储领域中,通过磁盘阵列自身的冗余性将数据直接或间接存储在多个单独的磁盘上,以达到当一个或多个磁盘故障时数据不丢失的目的,即实现了数据容错。
[0003]其中,当因为某些原因比如磁盘阵列中的磁盘故障等导致磁盘阵列失去冗余性时,该磁盘阵列会处于降级状态。以磁盘阵列中的磁盘故障导致磁盘阵列失去冗余性而使该磁盘阵列处于降级状态为例,则在现有技术中,为恢复该因磁盘故障而处于降级状态的磁盘阵列的冗余性,常用的方式为增加热备盘重建的方式,具体为:用热备盘替换故障的磁盘。但是,在该重建过程中,如果又发生了磁盘重建读错误,其中,重建读错误为重建过程中,重建I/O导致磁盘发生的读错误,则,停止重建,此时该磁盘阵列只能停留在降级状态,无法回到冗余状态。一旦该磁盘阵列中的其他磁盘再发生故障时,整个磁盘阵列就会失败,即关闭I/O通道,这不仅导致该磁盘阵列停止提供业务,还会导致该磁盘阵列之前存储的数据丢失。
[0004]另外,当对处于降级状态的磁盘阵列进行业务读时,如果发生业务读错误,其中,业务读错误为:业务读写过程中,业务I/o导致磁盘发生的读错误,则,此时该磁盘阵列失败,即关闭I/o通道,这导致该磁盘阵列停止提供业务,并导致之前存储的数据丢失。

【发明内容】

[0005]本发明的目的在于提供一种磁盘阵列的容错处理方法,避免处于降级状态的磁盘阵列由于发生重建读错误或者业务读错误而引起的问题。
[0006]为实现上述目的,本发明采用了以下技术方案:包括
由上述技术方案可知,本发明所述的磁盘阵列容错方法,可以准确地判断出发生读写错误的存储空间是否真的物理损坏了,而且当读写错误并不是因为磁盘本身的损坏造成时,还会通过后续正常的写入和读取操作进行修复,不需要增加专门的修复步骤,上层应用几乎不感知这个操作过程从而解决了现有技术中的磁盘阵列系统只记录坏块信息而不修复坏块的问题,有效降低了数据的损失和磁盘的剔除频率,磁盘的使用寿命得到真正的延长,提高了磁盘阵列系统的可靠性。
【具体实施方式】
[0007]本实施例的磁盘阵列的容错处理方法,包括以下步骤:
S1:当发生数据写入错误时,确定发生写入错误的数据所在磁盘的存储空间,将发生写入错误的存储空间进行坏块标记,并在下一次读取操作时,不再读取进行了坏块标记的存储空间;
52:当发生数据读取错误时,判断磁盘阵列系统是否完整,如果完整则通过校验计算出当前位置数据,然后将计算出的数据写回所在磁盘的相应位置,否则,将发生数据读取错误的磁盘的存储空间进行坏块标记;
53:当磁盘阵列中的磁盘发生故障时,在磁盘阵列中增加热备盘,以替换该发生故障的磁盘,并以条带为单位对增加了热备盘的磁盘阵列进行重建,在被重建的当前条带发生重建读错误时,将该当前条带的标识记录到非易失性内存中,并跳过当前条带,从下一个条带继续重建,直至完成磁盘阵列的重建;针对非易失性内存中记录的每一条带标识,通过写方式修复与该条带标识对应的条带的重建读错误,并在完成修复后从非易失性内存中删除该条带标识;
S4:当进行下一次写入操作时,先判断磁盘阵列的条带是否正常,如果正常则对磁盘进行正常写入操作;否则判断条带是否满足写入算法要求,如果满足要求则记录被写的坏块标记,并同样进行写入操作,反之则进行错误处理;当完成写入操作后,如果进行了坏块标记的存储空间写入成功,判断该存储空间是否记录了坏块标记,如果是则进行后续读取操作,如果进行坏块标记的存储空间也读取成功,则清除对该存储空间的坏块标记,反之则保留坏块标记。
[0008]在步骤(3)中,通过写方式修复与该条带标识对应的条带的重建读错误包括:通过向与该条带标识对应的整个条带写数据来修复与该条带标识对应的条带的重建读错误;或者,确定与该条带标识对应的条带所存储数据的重要程度,如果确定出该数据的重要程度小于设定阈值,则通过以下操作修复该条带的重建读错误:向该条带所占用的除热备盘之外的其他磁盘写满设定数据,并向该条带所占用的热备盘写入根据其他磁盘中的设定数据所计算出的数据。
[0009]以上所述的实施例仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案作出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。
【主权项】
1.一种磁盘阵列的容错处理方法,其特征在于,包括以下步骤: (1)当发生数据写入错误时,确定发生写入错误的数据所在磁盘的存储空间,将发生写入错误的存储空间进行坏块标记,并在下一次读取操作时,不再读取所述进行了坏块标记的存储空间; (2)当发生数据读取错误时,判断所述磁盘阵列系统是否完整,如果完整则通过校验计算出当前位置数据,然后将计算出的数据写回所在磁盘的相应位置,否则,将发生数据读取错误的磁盘的存储空间进行坏块标记; (3)当磁盘阵列中的磁盘发生故障时,在所述磁盘阵列中增加热备盘,以替换该发生故障的磁盘,并以条带为单位对增加了热备盘的磁盘阵列进行重建,在被重建的当前条带发生重建读错误时,将该当前条带的标识记录到非易失性内存中,并跳过当前条带,从下一个条带继续重建,直至完成磁盘阵列的重建; (4)当进行下一次写入操作时,先判断所述磁盘阵列的条带是否正常,如果正常则对所述磁盘进行正常写入操作;否则判断所述条带是否满足写入算法要求,如果满足要求则记录被写的坏块标记,并同样进行所述写入操作,反之则进行错误处理;当完成写入操作后,如果所述进行了坏块标记的存储空间写入成功,判断该存储空间是否记录了坏块标记,如果是则进行后续读取操作,如果所述进行坏块标记的存储空间也读取成功,则清除对该存储空间的坏块标记,反之则保留坏块标记。2.根据权利要求1所述的磁盘阵列的容错处理方法,其特征在于:所述步骤(3)中,针对非易失性内存中记录的每一条带标识,通过写方式修复与该条带标识对应的条带的重建读错误,并在完成修复后从所述非易失性内存中删除该条带标识。3.根据权利要求2所述的磁盘阵列的容错处理方法,其特征在于,所述通过写方式修复与该条带标识对应的条带的重建读错误包括:通过向与该条带标识对应的整个条带写数据来修复与该条带标识对应的条带的重建读错误;或者,确定与该条带标识对应的条带所存储数据的重要程度,如果确定出该数据的重要程度小于设定阈值,则通过以下操作修复该条带的重建读错误:向该条带所占用的除热备盘之外的其他磁盘写满设定数据,并向该条带所占用的热备盘写入根据所述其他磁盘中的设定数据所计算出的数据。
【专利摘要】本发明涉及一种磁盘阵列的容错处理方法,包括如下步骤:当发生数据写入错误时,确定发生写入错误的数据所在磁盘的存储空间,将该存储空间进行坏块标记;当发生数据读取错误时,判断磁盘阵列是否完整,如果完整则通过校验计算出当前位置数据,然后将该数据写回所在磁盘的相应位置,否则,进行坏块标记;当磁盘阵列中的磁盘发生故障时,对磁盘阵列进行重建,当进行下一次写入操作时,对进行坏块标记的存储空间进行写入操作,如果该存储空间写入成功,且后续读取也成功,则清除对该存储空间的坏块标记,反之则保留坏块标记。本发明解决了现有技术中的磁盘阵列系统只记录读写错误的坏块信息而不修复坏块且受限于自身的容错范围的技术问题。
【IPC分类】G06F11/16, G06F11/07
【公开号】CN105183590
【申请号】CN201510547173
【发明人】宋旭东
【申请人】安徽欧迈特数字技术有限责任公司
【公开日】2015年12月23日
【申请日】2015年8月31日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1