专利名称:一种处理raid5坏扇区的方法
技术领域:
本发明涉及计算机系统及存储领域,具体涉及一种RAID5坏扇区处理的方法。
背景技术:
对于具有冗余校验信息的RAID5系统,容错功能已成为磁盘阵列最受青睐的特性,为了加强容错的功能以及使系统在磁盘故障的情况下能迅速的重建数据,以维持系统的性能,一般的磁盘阵列系统都可使用热备份的功能,所谓热备份是在建立磁盘阵列系统的时候,将其中一磁盘指定为后备磁盘,此一磁盘在平常并不操作,但若阵列中某一磁盘发生故障时,磁盘阵列即以后备磁盘取代故障磁盘,并自动将故障磁盘的数据重建在后备磁盘之上。RAID5系统是只允许有一块盘失效,当有第二块盘失效的时候,整个磁盘阵列就失效了。但是,有的磁盘失效是有少量磁盘坏扇区引起的,因为少量坏扇区而放弃的话,这个损失有些大。因为几乎所有的硬盘都有一些坏扇区,坏扇区是计算机硬盘中无法写入数据的地方。对于单盘的坏扇区处理是有Bad Sector Remapping机制,所谓Bad Sector Remapping,就是将坏扇区中的数据写到另一个位置,将来所有对原先坏扇区的访问今后都会重新定向到新的位置。但是磁盘用做BSR的空间并不多。另外,如果一个条带有一块坏扇区,是可以做BSR的,但是如果一个条带中有两块盘存在坏扇区的话,是不能做BSR的,磁阵可能就会因为存在的几个坏扇区而失效。如果其它的扇区是正常的话,这个损失是不正常的。这些少量的坏扇区完全可以跳过不用。本发明是在条带上有一个或者多个坏扇区的话,就把这个条带的数据重新写到一个预留区域。同时也放弃只有单个盘有坏扇区时的BSR机制,一个或者多个坏扇区都按照重新的映射去处理。对于大容量的磁盘,预留这些区域不会带来太大空间的损失,反而能增加可靠性。为了加快出现失效盘的修复,当某一块磁盘的坏扇区数量先达到一定警戒数目的时候,把这块盘的一些数据先备份到热备盘上去,大大加强了磁盘阵列的可靠性。
发明内容
本发明的目的是提供一种处理RAID5坏扇区的方法。本发明的目的是按以下方式实现的,是在写数据过程中,把出现坏扇区的条带转移到一个预留区域,避免因为磁盘存在的少量坏扇区而影响了磁盘阵列的使用,当某一块磁盘的坏扇区数量先达到一定警戒数目的时候,把这块盘的一些数据先备份到热备盘上去,以此加强磁盘阵列的可靠性,步骤如下
1)首先要建立一个扇区映射表格,表格的每一项包含原来扇区号和新映射的扇区号,这个表格可以放到磁盘预留空间,使用的时候放到内存中即可,另外,还需有个计数器 remap记录有多少个条带完成了映射;
2)当有扇区写错误的时候,计数器remap记录是哪个磁盘出现的坏扇区,并增加该盘的坏扇区统计计数,不管该条带之前是否有已经写过的数据,都要让这个条带重新写,做好标记,写到预留空间,在扇区映射表格里填上原来扇区号和新映射的扇区号,预留空间是按照时间先后顺序排序写入的,每写一次预留空间就把计数器remap记录位置加1,当计数器 remap记录到达一定数目的时候就报警,提示用户做相应的处理;
3)当有多个这样的连续的条带出现坏扇区的时候,就说明这一片大的区域都是受到损坏,那么其后的一片区域就放弃不用,再有写的时候,就跳过这个区域,但是,如果紧挨着这个区域的条带还是有坏扇区的话,就再扩大这个区域,扩大的范围要比第一次的大,跳过这个重新扩大的区域,如果紧挨着这个区域的条带没有坏扇区的话,就正常写入数据,如果紧挨着这个区域的条带还有坏扇区的话,就不再扩大,这个时候产生报警,不再进行写入,然后,查看是哪个盘的坏扇区数目过多,替换坏扇区数目过多的磁盘;
4)如果新映射的位置也有坏扇区的话,就再重新找个位置映射,如果还有坏扇区的话, 就提示更换磁盘;
5)当某一块盘的坏扇区数目过多的时候,就宣告这块盘失效,把这块盘踢出阵列,在添加热备盘进行修复时,对于完成映射的原扇区和新扇区要做特殊处理,其它的正常扇区直接计算写入即可,对于只是因为被踢出的这一块磁盘出现坏扇区引起映射的条带,恢复原来的扇区,对于新扇区不恢复,并删除在映射表格的记录,而对于是因为有其它磁盘存在坏扇区引起的映射的条带,不恢复原来的扇区,只恢复新映射之后的扇区就即可;
6)为了加快修复,在某一块磁盘的坏扇区数量先达到一定警戒数目,但还没到宣告失效的数目,把这块盘的一些数据先备份到热备盘上去,因为这块盘的坏扇区数目最多,最后宣告失效的概率最大,如果是这块盘最后失效,添加对应的热备盘,写过的数据就不用恢复了,减少了修复的时间,如果是另一块盘最后达到宣告失效的数值,当热备盘足够时,就找另一个热备盘进行修复,保留原来写入数据的热备盘,虽然那块盘没有宣告失效,但已经过了警戒线,依然有失效的可能,所以,保留与之对应的热备盘,为之后的可靠性做了保障,当然,用户也会在那块盘的坏扇区数目过了警戒线但还没到宣告失效的时候,提前换出;
7)当对一个条带读或者再次写操作的时候,如果报错,查找在表格中是否有这个条带存在,如果有的话,直接读取或者再次写入,如果没有的话,说明该错误是上次写入之后才发生的损坏,这个情况下就看是几块盘存在坏扇区了,如果只是一块盘存在坏扇区,那么这个坏扇区的数据是要通过计算得到的,添加热备盘进行替换恢复即可,如果是多个磁盘存在坏扇区,这部分的数据就会丢失,这个时候停止写数据,记录条带以及扇区的位置,对其它位置的数据保存,让少量位置数据的损坏和丢失,不影响其它位置的数据的正确性。本发明的有益效果是这个方法对坏扇区做了多方面的处理,在一个条带中有多块盘存在坏扇区的时候有很好的作用,可以避免因为少量的扇区而让整个磁盘阵列失效。 当坏扇区过多的时候,才宣告失效,并能在失效之前做一些准备工作,大大增加了整个磁盘阵列的可靠性。
附图1磁盘数据布局示意图; 附图2存在坏扇区的写流程图; 附图3存在坏扇区的读流程图。
具体实施例方式参照说明书附图对本发明的方法作以下详细地说明。处理步骤如下首先要建立一个扇区映射表格,表格的每一项包含原来扇区号和新映射的扇区号,这个表格可以放到磁盘预留空间,使用的时候放到内存就可以了。另外, 还有个计数器remap记录有多少个条带完成了映射。当有扇区写错误的时候,记录是哪个磁盘出现的坏扇区,并增加该盘的坏扇区统计计数。不管该条带之前是否有已经写过的数据,都要让这个条带重新写,做好标记,写到预留空间,在扇区映射表格里填上原来扇区号和新映射的扇区号。预留空间是按照时间先后顺序排序写入的。每写一次预留空间就把remap位置加1,当remap到达一定数目的时候就报警,提示用户做相应的处理。当有多个这样的连续的条带出现坏扇区的时候,就说明这一片大的区域都是受到损坏,那么其后的一片区域就放弃不用,再有写的时候,就跳过这个区域,但如果紧挨着这个区域的条带还是有坏扇区的话,就再扩大这个区域,扩大的范围要比第一次的大,跳过这个重新扩大的区域,如果紧挨着这个区域的条带没有坏扇区的话,就正常写入数据。如果紧挨着这个区域的条带还有坏扇区的话,就不再扩大,这个时候产生报警,不再进行写入。然后,查看是哪个盘的坏扇区数目过多,替换坏扇区数目过多的磁盘。如果新映射的位置也有坏扇区的话,就再重新找个位置映射,如果还有坏扇区的话,就提示更换磁盘。当某一块盘的坏扇区数目过多的时候,就宣告这块盘失效,把这块盘踢出阵列,在添加热备盘进行修复时,对于完成映射的原扇区和新扇区要做特殊处理,其它的正常扇区直接计算写入就可以。对于只是因为被踢出的这一块磁盘出现坏扇区引起映射的条带,恢复原来的扇区,对于新扇区不恢复,并删除在映射表格的记录。而对于是因为有其它磁盘存在坏扇区引起的映射的条带,不恢复原来的扇区,只恢复新映射之后的扇区就可以了。为了加快修复,在某一块磁盘的坏扇区数量先达到一定警戒数目的时候(还没到宣告失效的数目),把这块盘的一些数据先备份到热备盘上去。因为这块盘的坏扇区数目最多,最后宣告失效的概率最大,如果是这块盘最后失效,添加对应的热备盘,写过的数据就不用恢复了,减少了修复的时间。如果是另一块盘最后达到宣告失效的数值,当热备盘足够时,就找另一个热备盘进行修复,保留原来写入数据的热备盘。虽然那块盘没有宣告失效, 但已经过了警戒线,依然有失效的可能,所以,保留与之对应的热备盘,为之后的可靠性做了保障。当然,用户也可以在那块盘的坏扇区数目过了警戒线但还没到宣告失效的时候,提前换出。当对一个条带读或者再次写操作的时候,如果报错,查找在表格中是否有这个条带存在,如果有的话,直接读取,或者再次写入。如果没有的话,说明该错误是上次写入之后才发生的损坏,这个情况下就看是几块盘存在坏扇区了,如果只是一块盘存在坏扇区,那么这个坏扇区的数据是可以通过计算得到的,添加热备盘进行替换恢复就可以了。如果是多个磁盘存在坏扇区,这部分的数据就会丢失,这个时候停止写数据,记录条带以及扇区的位置,对其它位置的数据保存,让少量位置数据的损坏和丢失,不影响其它位置的数据的正确性。这个方法对坏扇区做了多方面的处理,在一个条带中有多块盘存在坏扇区的时候有很好的作用,可以避免因为少量的扇区而让整个磁盘阵列失效。当坏扇区过多的时候,才宣告失效,并能在失效之前做一些准备工作,大大增加了整个磁盘阵列的可靠性。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
权利要求
1. 一种处理RAID5坏扇区的方法,其特征在于是在写数据过程中,把出现坏扇区的条带转移到一个预留区域,避免因为磁盘存在的少量坏扇区而影响了磁盘阵列的使用,当某一块磁盘的坏扇区数量先达到一定警戒数目的时候,把这块盘的一些数据先备份到热备盘上去,以此加强磁盘阵列的可靠性,步骤如下1)首先要建立一个扇区映射表格,表格的每一项包含原来扇区号和新映射的扇区号,这个表格可以放到磁盘预留空间,使用的时候放到内存中即可,另外,还需有个计数器 remap记录有多少个条带完成了映射;2)当有扇区写错误的时候,计数器remap记录是哪个磁盘出现的坏扇区,并增加该盘的坏扇区统计计数,不管该条带之前是否有已经写过的数据,都要让这个条带重新写,做好标记,写到预留空间,在扇区映射表格里填上原来扇区号和新映射的扇区号,预留空间是按照时间先后顺序排序写入的,每写一次预留空间就把计数器remap记录位置加1,当计数器 remap记录到达一定数目的时候就报警,提示用户做相应的处理;3)当有多个这样的连续的条带出现坏扇区的时候,就说明这一片大的区域都是受到损坏,那么其后的一片区域就放弃不用,再有写的时候,就跳过这个区域,但是,如果紧挨着这个区域的条带还是有坏扇区的话,就再扩大这个区域,扩大的范围要比第一次的大,跳过这个重新扩大的区域,如果紧挨着这个区域的条带没有坏扇区的话,就正常写入数据,如果紧挨着这个区域的条带还有坏扇区的话,就不再扩大,这个时候产生报警,不再进行写入,然后,查看是哪个盘的坏扇区数目过多,替换坏扇区数目过多的磁盘;4)如果新映射的位置也有坏扇区的话,就再重新找个位置映射,如果还有坏扇区的话, 就提示更换磁盘;5)当某一块盘的坏扇区数目过多的时候,就宣告这块盘失效,把这块盘踢出阵列,在添加热备盘进行修复时,对于完成映射的原扇区和新扇区要做特殊处理,其它的正常扇区直接计算写入即可,对于只是因为被踢出的这一块磁盘出现坏扇区引起映射的条带,恢复原来的扇区,对于新扇区不恢复,并删除在映射表格的记录,而对于是因为有其它磁盘存在坏扇区引起的映射的条带,不恢复原来的扇区,只恢复新映射之后的扇区就即可;6)为了加快修复,在某一块磁盘的坏扇区数量先达到一定警戒数目,但还没到宣告失效的数目,把这块盘的一些数据先备份到热备盘上去,因为这块盘的坏扇区数目最多,最后宣告失效的概率最大,如果是这块盘最后失效,添加对应的热备盘,写过的数据就不用恢复了,减少了修复的时间,如果是另一块盘最后达到宣告失效的数值,当热备盘足够时,就找另一个热备盘进行修复,保留原来写入数据的热备盘,虽然那块盘没有宣告失效,但已经过了警戒线,依然有失效的可能,所以,保留与之对应的热备盘,为之后的可靠性做了保障,当然,用户也会在那块盘的坏扇区数目过了警戒线但还没到宣告失效的时候,提前换出;7)当对一个条带读或者再次写操作的时候,如果报错,查找在表格中是否有这个条带存在,如果有的话,直接读取或者再次写入,如果没有的话,说明该错误是上次写入之后才发生的损坏,这个情况下就看是几块盘存在坏扇区了,如果只是一块盘存在坏扇区,那么这个坏扇区的数据是要通过计算得到的,添加热备盘进行替换恢复即可,如果是多个磁盘存在坏扇区,这部分的数据就会丢失,这个时候停止写数据,记录条带以及扇区的位置,对其它位置的数据保存,让少量位置数据的损坏和丢失,不影响其它位置的数据的正确性。
全文摘要
本发明提供一种处理RAID5坏扇区的方法,是在写数据过程中,把出现坏扇区的条带转移到一个预留区域,避免因为磁盘存在的少量坏扇区而影响了磁盘阵列的使用,当某一块磁盘的坏扇区数量先达到一定警戒数目的时候,把这块盘的一些数据先备份到热备盘上去,以此加强磁盘阵列的可靠性。
文档编号G06F3/06GK102508620SQ20111039250
公开日2012年6月20日 申请日期2011年12月1日 优先权日2011年12月1日
发明者古世磊, 施培任 申请人:浪潮电子信息产业股份有限公司