一种raid数据自修复的方法

文档序号:6381506阅读:156来源:国知局
专利名称:一种raid数据自修复的方法
技术领域
本发明涉及计算机系统及存储领域,具体涉及一种RAID5数据自修复的方法。
背景技术
对于具有冗余校验信息的RAID系统,容错功能已成为磁盘阵列最受青睐的特性,为了加强容错的功能以及使系统在磁盘故障的情况下能迅速的重建数据,以维持系统的性能,一般的磁盘阵列系统都可使用热备份的功能,所谓热备份是在建立磁盘阵列系统的时候,将其中一磁盘指定为后备磁盘,此一磁盘在平常并不操作,但若阵列中某一磁盘发生故障时,磁盘阵列即以后备磁盘取代故障磁盘,并自动将故障磁盘的数据重建在热备磁盘之上。有的磁盘阵列(比如RAID5)只允许有一块盘失效,当有第二块盘失效的时候,整个磁盘阵列就失效了。 有些磁盘阵列的掉盘是由于少量坏扇区引起的。由于少量坏扇区而引起的磁盘失效,大大降低了系统的可靠性。几乎所有的硬盘都会有坏扇区,从损坏形式上来说,坏扇区可分为两类软损坏扇区和物理损坏扇区。软损坏扇区往往是病毒或某些软件造成的,不是真正的坏扇区,可以通过再次格式化来修复。另一种是物理损坏引起的坏扇区,数据将永远无法写入到这种扇区中。这两种形式引起的坏扇区都可以通过数据转移来避归。

发明内容
本发明的目的提供一种RAID数据自修复的方法,该方法是把数据区分成多个数据单元,对每个数据单元的数据都设置有一个局部预留区域;一旦某个扇区损坏,就把坏扇区的数据转移到预留区域,另外再磁盘的尾端还设置全局预留区域,一旦局部预留区域再出现坏扇区而发生错误是,将数据及时转移到全局预留区域,以此防止数据的丢失。本发明的目的是按以下方式实现的,具体步骤如下
(1)坏扇区数据转移的故障决策,包括以下两个方面
1)通过扇区读写报错,做为数据转移的一个故障决策;
2)周期性扫描硬盘发现介质或者数据错误,做为数据转移的一个故障决策;
(2)数据布局
在创建RAID的时候,首先要把数据区域分成多个部分,对每个部分都设置一个预留区域,当数据发生读写错误的时候,先将数据转移到对应的局部预留区域;在磁盘的尾部再设置全局预留区域,如果转移到对应的局部预留区域再发生错误,就把数据转移到全局预留区域;当转移到全局预留区域还是错误,就认为该盘失效,数据的分配以及预留区域的大小是磁盘空间而定;
为了记录数据转移信息,对每个数据部分要建立一个扇区映射表,表格的每一项包含原来扇区号和新转移的扇区号,这个表格放到磁盘预留空间,使用的时候放到内存;
另外,磁盘内还设置有计数组,记录每个磁盘的每个预留区域扇区数据的转移信息;对于4TB的磁盘容量,使用34位即可表示扇区数,考虑以后磁盘容量扩展,以及标志位,用64位表示一个偏移记录,对于一次转移来说,因为要表示原扇区位置和预留扇区位置,所以,需要128位来表示,其中,第一位是标志位,来表示是否有过转移;
当有扇区发生读写错误的时候,记录是哪个扇区出现的错误,并增加该盘的坏扇区统计计数,在扇区映射表格里填上原始扇区号和新映射的扇区号,把数据写到预留空间,预留空间是按照时间先后顺序排序写入的,当某一块盘的坏扇区数目过多的时候,就宣告这块盘失效,把这块盘踢出阵列;
为了防止扇区映射表格丢失,需要将表格备份,通过冗余提高可靠性,把备份的表格记录副本放在每个数据部分的开头位置,同步扇区映射表格副本,但是同步会影响数据转移时的性能;或采用异步备份副本,虽然异步备份可能丢失一部分记录信息,但是大部分记录会保存下来,对于丢失的部分,可以比较原本对副本进行修复,当一份记录发生错误或者丢失,就去读另一个副本,当副本也发生错误或丢失,则宣告该磁盘失效;
综上所述,一个数据单元包括两份扇区映射表信息,一个数据区,一个局部预留区
域;
(3)读写错误分析 具体步骤如下
1)读写操作先在映射表中查询此扇区是否已经记录为坏扇区;
2)如果此扇区在映射表中有坏扇区记录,就到预留扇区上读写数据,并判断是否出错;否则读写该扇区的数据;
3)如果读写预留扇区或者原始扇区出现错误,则判断是否可修复,判断根据RAID算法,如果一个条带错误过多,则无法修复,如果能修复,就进行数据转移;如果无法修复,就设定该盘失效;
(4)周期扫描
本方法引入一个周期线程,用于扫描磁盘及时发现错误,为了不影响磁盘使用性能,该线程只在设备空闲的时候进行扫描;
磁盘中设置预留区域,对于大容量的磁盘,设置预留区域不会带来太大空间的损失,反而能增加磁盘的可靠性。本发明的有益效果是对数据进行分段预留,不仅能提升转移的性能,减少了寻址的距离;还能对数据进行分层次转移,方便管理;预留区域分散,防止坏扇区集中产生于某个区域,或者是预留区域发生了损坏,若单一预留区域,发生损坏就无法转移,分段预留,即使一个活多个预留区损坏,还能继续转移到全局预留区域。


图I是故障决策不意 图2是磁盘数据布局示意 图3是扇区映射表;
图4是扇区映射单元结构示意 图5是读写出错分析流程图。
具体实施方式
参照说明书附图对本发明的方法作以下详细地说明。本发明的方法是把数据区分成多个数据单元,对每个数据单元的数据都设置有一个局部预留区域;一旦某个扇区损坏,就把坏扇区的数据转移到预留区域,另外再磁盘的尾端还设置全局预留区域,一旦局部预留区域再出现坏扇区而发生错误是,将数据及时转移到全局预留区域,以此防止数据的丢失,如图I所示坏扇区故障决策则主要有以下两个方面
1)通过扇区读写报错,做为数据转移一个故障决策;
2)周期性扫描硬盘发现介质或者数据错误,做为数据转移的一个故障决策。数据布局在创建RAID的时候,首先要把数据区域分成多个部分,对每个部分都设置一个预留区域,如图2所示。当数据发生读写错误的时候,先转移到对应的局部预留区域;在磁盘的尾部还有个全局区域,如果转移到对应的局部预留区域再发生错误,就把数据转移到全局预留区域;当转移到全局预留区域还是错误,就认为该盘失效。具体把数据分成几个部分,以及预留区域的大小都可以设置。业内有的做法是只对整体数据只有一个预留区域,本发明对数据进行分段预留,这样做的优点如下可以提升转移的性能,减少了寻址的距离;可以对数据进行分层次转移,方便管理;预留区域分散,防止坏扇区集中产生于某个区域,或者是预留区域发生了损坏,如果只有一个预留区域,发生损坏就无法转移,而本发明则可以继续转移到全局预留区域。为了记录数据转移信息,对每个数据部分要建立一个扇区映射表,如图3,表格的每一项包含原来扇区号和新转移的扇区号,这个表格可以放到磁盘预留空间,使用的时候放到内存。另外,还有个计数数组记录有每个磁盘的每个预留区域多少个扇区进行了转移。对于4TB的磁盘容量,使用34位即可表示扇区数,考虑以后磁盘容量扩展,以及标志位,用64位表示一个偏移记录,对于一次转移来说,因为要表示原扇区位置和预留扇区位置,所以,需要128位来表示。其中,第一位是标志位,来表示是否有过转移,如图4所示。。当有扇区发生读写错误的时候,记录是哪个扇区出现的错误,并增加该盘的坏扇区统计计数。在扇区映射表格里填上原始扇区号和新映射的扇区号,把数据写到预留空间。预留空间是按照时间先后顺序排序写入的。当某一块盘的坏扇区数目过多的时候,就宣告这块盘失效,把这块盘踢出阵列。为了防止扇区映射表格丢失,需要将表格备份,通过冗余提高可靠性。可以把备份的表格记录副本放在每个数据部分的开头位置。可以同步扇区映射表格副本,但是同步会影响数据转移时的性能;也可以异步备份副本,虽然异步备份可能丢失一部分记录信息,但是大部分记录会保存下来,对于丢失的部分,可以比较原本对副本进行修复。当一份记录发生错误或者丢失,就去读另一个副本,当副本也发生错误或丢失,则宣告该磁盘失效。综上所述,该结构的一个数据单元包括两份扇区映射表信息,一个数据区,一个局部预留区域。读写错误分析
整个流程如图5所示,具体步骤如下1)读写操作先在映射表中查询此扇区是否已经记录为坏扇区;
2)如果此扇区在映射表中有记录,就到预留扇区上读写数据,并判断是否出错;否则读写该扇区的数据;
3)如果读写预留扇区或者原始扇区出现错误,则判断是否可修复(根据RAID算法,如果一个条带错误过多,则无法修复),如果能修复,就进行数据转移;如果无法修复,就设定该盘失效。周期扫描
本发明的方法引入一个周期线程,用于扫描磁盘,及时发现错误。为 了不影响使用性能,该线程只在设备空闲的时候进行扫描。本发明的方法是对出现扇区的错误进行处理,可以避免因为少量的扇区而让整个磁盘阵列失效,当坏扇区过多的时候,才宣告失效,大大增加了整个磁盘阵列的可靠性。除说明书所述的技术特征外,均为本专业技术人员的已知技术。
权利要求
1. 一种RAID数据自修复的方法,其特征在于该方法是把数据区分成多个数据单元,对每个数据单元的数据都设置有一个局部预留区域;一旦某个扇区损坏,就把坏扇区的数据转移到预留区域,另外再磁盘的尾端还设置全局预留区域,一旦局部预留区域再出现坏扇区而发生错误是,将数据及时转移到全局预留区域,以此防止数据的丢失,具体步骤如下 (1)坏扇区数据转移的故障决策,包括以下两个方面 .1)通过扇区读写报错,做为数据转移的一个故障决策; .2)周期性扫描硬盘发现介质或者数据错误,做为数据转移的一个故障决策; (2)数据布局 在创建RAID的时候,首先要把数据区域分成多个部分,对每个部分都设置一个预留区域,当数据发生读写错误的时候,先将数据转移到对应的局部预留区域;在磁盘的尾部再 设置全局预留区域,如果转移到对应的局部预留区域再发生错误,就把数据转移到全局预留区域;当转移到全局预留区域还是错误,就认为该盘失效,数据的分配以及预留区域的大小是磁盘空间而定; 为了记录数据转移信息,对每个数据部分要建立一个扇区映射表,表格的每一项包含原来扇区号和新转移的扇区号,这个表格放到磁盘预留空间,使用的时候放到内存; 另外,磁盘内还设置有计数组,记录每个磁盘的每个预留区域扇区数据的转移信息;对于4TB的磁盘容量,使用34位即可表示扇区数,考虑以后磁盘容量扩展,以及标志位,用64位表示一个偏移记录,对于一次转移来说,因为要表示原扇区位置和预留扇区位置,所以,需要128位来表示,其中,第一位是标志位,来表示是否有过转移; 当有扇区发生读写错误的时候,记录是哪个扇区出现的错误,并增加该盘的坏扇区统计计数,在扇区映射表格里填上原始扇区号和新映射的扇区号,把数据写到预留空间,预留空间是按照时间先后顺序排序写入的,当某一块盘的坏扇区数目过多的时候,就宣告这块盘失效,把这块盘踢出阵列; 为了防止扇区映射表格丢失,需要将表格备份,通过冗余提高可靠性,把备份的表格记录副本放在每个数据部分的开头位置,同步扇区映射表格副本,但是同步会影响数据转移时的性能;或采用异步备份副本,虽然异步备份可能丢失一部分记录信息,但是大部分记录会保存下来,对于丢失的部分,可以比较原本对副本进行修复,当一份记录发生错误或者丢失,就去读另一个副本,当副本也发生错误或丢失,则宣告该磁盘失效; 综上所述,一个数据单元包括两份扇区映射表信息,一个数据区,一个局部预留区域; (3)读写错误分析 具体步骤如下 .1)读写操作先在映射表中查询此扇区是否已经记录为坏扇区; .2)如果此扇区在映射表中有坏扇区记录,就到预留扇区上读写数据,并判断是否出错;否则读写该扇区的数据; .3)如果读写预留扇区或者原始扇区出现错误,则判断是否可修复,判断根据RAID算法,如果一个条带错误过多,则无法修复,如果能修复,就进行数据转移;如果无法修复,就设定该盘失效; (4)周期扫描本方法引入一个周期线程,用于扫描磁盘及时发现错误,为了不影响磁盘使用性能,该线程只在设备空闲的时候进行扫描。
2.根据权利要求I所述的方法,其特征在于磁盘中设置预留区域,对于大容量的磁盘,设置预留区域不会带来太大空间的损失,反而能增加磁盘的可靠性。
全文摘要
本发明提供一种RAID数据自修复的方法,对数据进行分段预留,不仅能提升转移的性能,减少了寻址的距离;还能对数据进行分层次转移,方便管理;预留区域分散,防止坏扇区集中产生于某个区域,或者是预留区域发生了损坏,若单一预留区域,发生损坏就无法转移,分段预留,即使一个活多个预留区损坏,还能继续转移到全局预留区域。
文档编号G06F11/16GK102968361SQ20121046501
公开日2013年3月13日 申请日期2012年11月19日 优先权日2012年11月19日
发明者文中领, 古世磊 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1