一种恢复条带读错误的方法和装置制造方法

文档序号:6549457阅读:300来源:国知局
一种恢复条带读错误的方法和装置制造方法
【专利摘要】本发明提供一种恢复条带读错误的方法,该方法应用于Raid阵列,该Raid阵列的一条带具有至少两个读错误的条块,该方法包括:步骤A、当非满条带写命令的满条块写命中读错误条块时,判断是否可以采用RCW方式执行该写命令,如果是,转步骤B,否则,本流程结束;步骤B、采用RCW方式写所述读错误条块,在写成功所述读错误条块后,对所述读错误条块增加“写修复”标识;步骤C、判断所述读错误条块所在条带的所有读错误条块是否均具有“写修复”标识,如果是,转步骤D;否则,本流程结束;步骤D、清除该条带所有条块读错误标识。本发明技术实现了在非满条带写过成中修复存在多个读错误条带的方法。
【专利说明】一种恢复条带读错误的方法和装置
【技术领域】
[0001]本发明涉及视频监控【技术领域】,尤其涉及一种恢复条带读错误的方法和装置。
【背景技术】
[0002]现有RAID5阵列重建过程中,如果一个条带的重建命令读数据盘遇到一个读错误,会将重建盘对应的条块也标识存在读错误,因为这块数据无效。之后继续进行下个条带的重建,待所有条带都重建完,重建盘加入阵列成为数据盘。这样可以尽快恢复RAID5阵列绝大多数条带的冗余性。对于传统RAID5阵列重建遇到读错误的情况,这样处理应该是保持阵列冗余性的最优方式。
[0003]对发生这种情况并且重建完成的RAID5阵列,原重建盘标识读错误的条块,磁盘介质本身读写是没有问题的,而是由于数据无效,且为防止读取发生数据一致性问题(存在数据一致性问题表明:条带数据不正确),才标识为读错误。有两个读错误的条带对于RAID5而言,构成了坏条带;下回只有满条带写命令才会将原重建盘上的读错误修复,并清除读错误标识,使这个条带恢复降级或正常(另外一块读错误盘也写修复成功)。如果是非满条带写,无论是RCW写(read reconstruct write,读重构写)还是RMW写(read modifywrite,读修改写),很大概率都会返回失败。比如一个写命令按照RMW方式预读有一块盘存在读错误,按照RCW方式预读还是有一块盘存在读错误,那么这个非满条带写命令只能返回失败。而RMW方式仅针对同步过的条带,对于未同步过的条带只能采用RCW方式预读。因此,如果始终没有满条带写命令下发到这个条带,条带将长期为坏条带。对于随机业务模型应用环境,这个条带几乎永远也不会被修复。
[0004]其实原重建盘的读错误是“假”的,实际读写是没有任何问题的。另外,发生读错误的数据盘也很有可能是可以写修复成功的(之前发生的读错误为逻辑坏道,写可以成功;或者磁盘本身进行了替换扇区,写可以将替换扇区数据写正确)。对于这样的坏条带在非满条带写过程中应该尝试尽力恢复。

【发明内容】

[0005]有鉴于此,本发明提供一种恢复条带读错误的方法和装置。该方法和装置应用于Raid阵列,该Raid阵列的一条带具有至少两个读错误的条块。
[0006]该方法包括:步骤A、当非满条带写命令的满条块写命中读错误条块时,判断是否可以采用RCW方式执行该写命令,如果是,转步骤B,否则,本流程结束;步骤B、采用RCW方式写所述读错误条块,在写成功所述读错误条块后,对所述读错误条块增加“写修复”标识;步骤C、判断所述读错误条块所在条带的所有读错误条块是否均具有“写修复”标识,如果是,转步骤D ;否则,本流程结束;步骤D、清除该条带所有条块读错误标识。
[0007]优选地,所述判断是否可以采用RCW方式执行该写命令具体为:如果采用RCW方式预读的条块不存在除读错误之外的其他故障,则判断可以采用RCW方式执行该写命令。
[0008]优选地,所述读错误条块为数据块或校验块。[0009]优选地,所述Raid阵列为Raid5或者Raid6。
[0010]该恢复条带读错误的装置包括:条块写修复模块,用于当非满条带写命令的满条块写命中读错误条块时,如果可以采用RCW方式执行该写命令,则采用RCW方式写所述读错误条块,并在写成功所述读错误条块后,对所述读错误条块增加“写修复”标识;条带读错误恢复模块,用于在判断所述读错误条块所在条带的所有读错误条块均具有“写修复”标识时,清除该条带所有条块读错误标识。
[0011]优选地,所述条块写修复模块在确认采用RCW方式预读的条块不存在除读错误之外的其他故障时,判断可以采用RCW方式执行该写命令。
[0012]优选地,所述读错误条块为数据块或校验块。
[0013]优选地,所述Raid阵列为Raid5或者Raid6。
[0014]相较于现有技术,本发明对于冗余校验阵列,由多个读错误导致的坏条带,可以通过多次合适的非满条带写命令的满条块写进行块条带的修复。
【专利附图】

【附图说明】
[0015]图1是阵列条带和条块示意图。
[0016]图2是本发明实施例流程图。
[0017]图3是满条带和非满条带写示例图。
[0018]图4 (a)?图4 (d)是本发明实施例举例说明图。
[0019]图5是本发明实施例装置逻辑结构图。
【具体实施方式】
[0020]本发明主要给出了在RAID5、RAID6冗余校验阵列的一个条带存在多个读错误的情况下,在非满条带写过程中一种修复读错误的方法。
[0021]在描述本发明具体实施例之前,先对下述概念进行简单说明:
[0022]阵列的条块和条带:条块是阵列中一块磁盘上的一些连续扇区,是组成阵列的基本单元,多个条块(不同磁盘同一位置)组成阵列的条带。假设一个5+U6块磁盘)的RAID5阵列,条块大小为32KB,则条带大小为5*32KB (另一个条块存储条带的校验数据,不能存放数据,故不计入条带大小),如图1所示。
[0023]RAID5满条带写:一个满条带写命令无需预读,直接校验出P盘数据,写整个条带。
[0024]RAID5RMW:全称read modify write,即读修改写。对于一个RAID5阵列非满条带写命令,RMW算法先读取写命中磁盘数据和P盘(校验盘)数据,使用这些数据校验出P’,再使用最新要写的数据和P’校验出最新的P盘数据,同样对写命中磁盘和P盘下发写命令。RAID5RMW主要针对同步过的条带的小块写(小块的含义是写命令命中条带中的磁盘数相对较小)。
[0025]RAID5RCW:全称read construct write,即读重构写。对于一个RAID5阵列非满条带写命令,RCW算法先读取写命中磁盘之外的其它非P盘数据,然后使用最新要写的数据,和读上来的数据进行异或校验,计算出最新的P盘数据,对写命中磁盘和P盘下发写命令。RCW算法主要针对未同步的条带,或者同步过的条带的大块写(大块的含义是写命令命中条带中的多数磁盘)。[0026]下面结合图2,本发明实施例流程图来详细描述本发明实施例。本发明实施例的恢复条带读错误的方法应用于Raid阵列,且该Raid阵列的一条带具有至少两个读错误的条块。
[0027]S1、当非满条带写命令的满条块写命中读错误条块时,判断是否可以采用RCW方式执行该写命令,如果是,转步骤S2,否则,本流程结束。
[0028]请参图3,针对条块Dl进行的是满条块写,而针对条块D2进行的是非满条块写。这里命中的读错误条块可以是一个读错误条块,也可以是几个条块存在读错误;也可以是同时命中读错误条块和没有任何故障的条块。本发明实施例对此没有限制。
[0029]在判断是否可以采用RCW方式执行该写命令的时候,只要采用RCW方式预读的条块不存在除读错误之外的其他故障,就认为可以采用RCW方式执行该写命令。比如说,现有技术对于非满条带写是采用RCW方式还是采用RMW方式的依据为哪种方式预读的条块少就采用哪种方式,如果预读的条块相同就采用RCW方式。但是在本发明实施例中,待恢复的Raid阵列的条带数据属于不一致的情况,所以需要采用RCW的方式执行写命令。而采用RCW方式执行写命令的时候,预读的条块需要不存在读错误之外的其他错误。如果确定不能采用RCW方式执行写命令,则按照现有技术处理,本实施例流程结束。
[0030]S2、采用RCW方式写所述读错误条块,在写成功所述读错误条块后,对所述读错误条块增加“写修复”标识。
[0031]本步骤和现有技术的区别就在于对写成功的存在读错误的条块,需要增加“写修复”标识。此时之前存在的读错误标识并不清除。
[0032]S3、判断所述读错误条块所在条带的所有读错误条块是否均具有“写修复”标识,如果是,转步骤S4 ;否则,本流程结束。
[0033]S4、清除该条带所有条块读错误标识。
[0034]如果确定存在读错误条带中的所有标识读错误的条块均标记有“写修复”标识,此时才清除所有的读错误标识,使条带恢复正常。这样处理是为了保证数据的一致性。
[0035]如果上述条带还存在有未标识“写修复”但标识“读错误”的条块,则本流程执行结束。此时可以等待下一次非满条带写命令的满条块写命中读错误条块事件的发生,从而重新开始执行上述步骤SI?S4。
[0036]以下通过一个具体的例子来进一步解释本发明实施例。
[0037]该例子用Raid5阵列进行说明。为描述方便,以一个三块盘的RAID5条带为例,请参图4(a)。在RAID创建后该条带为正常状态。
[0038]数据盘D2在使用过程中发生了故障,而后加入重建盘对其进行重建。在重建此条带时,应该读P和Dl的数据进行异或校验,计算出D2数据,然后写重建盘对应条块的数据。但是在读Dl发生了读错误,重建命令将重建盘对应条块也标识了读错误,继续下个条带的重建。待重建完成,重建盘加入阵列变为数据盘,顶替原来的D2数据盘。此时,这个条带有两个条块被标记为读错误,构成了 RAID5存在读错误的坏条带,请参图4(b)。
[0039]此时该读错误坏条带有一个针对Dl的满条块写命令,本发明实施例判断是否可以采用RCW方式执行该写命令。如果可以,则预读D2中的数据。尽管有读错误标识,D2数据可能无效,本发明实施例仍会尝试读取D2数据,读取成功后与Dl要写的最新数据进行异或校验,计算出P盘条块数据,写P盘和Dl数据。如果读取失败,则按现有流程处理,比如采用RMW方式执行该写命令,本发明实施例流程结束。如果Dl数据写成功,本发明实现不会清除其读错误标识,而是增加“写修复”标识,请参图4(c)。此时P盘的数据为Dl和D2上真实数据校验的结果,但D2的数据并不是有效数据,因此P也不是有效数据的校验值。当有读命令下发到这个条带,由于Dl和D2的读错误标识仍然存在,此条带读命令仍会返回失败。
[0040]如果之后此条带又收到一个针对D2的满条块写命令,本发明实现根据条带当前状态(两个读错误,一个已修复),采用RCW方式执行该写命令。如果采用RCW方式执行该写命令失败,则按照现有技术处理:如采用RMW方式处理,本发明实施例流程结束。在采用RCff方式执行该写命令时,先预读Dl数据,读取成功后,与要写入D2的数据进行异或校验,计算出新的P盘数据,写入P和D2。如果D2被写成功,增加其“写修复”标识。此时判断该条带的两个读错误标识均已修复成功,则同时清除Dl和D2的读错误标识,此时条带恢复正

巾O
[0041]此外,需要说明的是,本发明的读错误条块除了数据盘中的条块外,还可以是校验盘中的条块。
[0042]本发明对于冗余校验阵列,由多个读错误导致的坏条带,可以通过多次合适的非满条带写命令的满条块写进行块条带的修复。
[0043]基于同样的构思,本发明还提供一种恢复条带读错误的装置,该装置应用于Raid阵列,该Raid阵列的一条带具有至少两个读错误的条块。该装置包括:条块写修复模块、条带读错误恢复模块,请参图5。
[0044]该条块写修复模块,用于当非满条带写命令的满条块写命中读错误条块时,如果可以采用RCW方式执行该写命令,则采用RCW方式写所述读错误条块,并在写成功所述读错误条块后,对所述读错误条块增加“写修复”标识。
[0045]该条带读错误恢复模块,用于在判断所述读错误条块所在条带的所有读错误条块均具有“写修复”标识时,清除该条带所有条块读错误标识。
[0046]该条块写修复模块在确认采用RCW方式预读的条块不存在除读错误之外的其他故障时,判断可以采用RCW方式执行该写命令。
[0047]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1.一种恢复条带读错误的方法,该方法应用于Raid阵列,该Raid阵列的一条带具有至少两个读错误的条块,其特征在于,该方法包括: 步骤A、当非满条带写命令的满条块写命中读错误条块时,判断是否可以采用RCW方式执行该写命令,如果是,转步骤B,否则,本流程结束; 步骤B、采用RCW方式写所述读错误条块,在写成功所述读错误条块后,对所述读错误条块增加“写修复”标识; 步骤C、判断所述读错误条块所在条带的所有读错误条块是否均具有“写修复”标识,如果是,转步骤D ;否则,本流程结束; 步骤D、清除该条带所有条块读错误标识。
2.如权利要求1所述的方法,其特征在于,所述判断是否可以采用RCW方式执行该写命令具体为: 如果采用RCW方式预读的条块不存在除读错误之外的其他故障,则判断可以采用RCW方式执行该写命令。
3.如权利要求1所述的方法,其特征在于,所述读错误条块为数据块或校验块。
4.如权利要求1所述的方法,其特征在于,所述Raid阵列为Raid5或者Raid6。
5.一种恢复条带读错误的装置,该装置应用于Raid阵列,该Raid阵列的一条带具有至少两个读错误的条块,其特征在于,该装置包括: 条块写修复模块,用于当非满条带写命令的满条块写命中读错误条块时,如果可以采用RCW方式执行该写命令,则采用RCW方式写所述读错误条块,并在写成功所述读错误条块后,对所述读错误条块增加“写修复”标识; 条带读错误恢复模块,用于在判断所述读错误条块所在条带的所有读错误条块均具有“写修复”标识时,清除该条带所有条块读错误标识。
6.如权利要求5所述的装置,其特征在于,所述条块写修复模块在确认采用RCW方式预读的条块不存在除读错误之外的其他故障时,判断可以采用RCW方式执行该写命令。
7.如权利要求5所述的装置,其特征在于,所述读错误条块为数据块或校验块。
8.如权利要求5所述的装置,其特征在于,所述Raid阵列为Raid5或者Raid6。
【文档编号】G06F11/14GK104035840SQ201410260859
【公开日】2014年9月10日 申请日期:2014年6月12日 优先权日:2014年6月12日
【发明者】王丽红, 郭永强, 许勇 申请人:浙江宇视科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1