一种RAID5系统及在RAID5系统失效后继续写数据的方法
技术领域
本申请涉及数据存储技术领域,特别涉及独立冗余磁盘阵列(Redundant Arrayof Independent Disk,RAID)技术,尤其涉及一种RAID5系统及在RAID5系统失效后继续写数据的方法。
背景技术
独立冗余磁盘阵列(Redundant Array of Independent Disk,RAID)技术将多个单独的物理硬盘以特定方式组合成一个逻辑硬盘,从而提高了硬盘的读写性能和数据安全性。根据不同的组合方式可以分为不同的RAID级别。常用RAID级别有:0、1、2、3、4、5、6、01、10等。
RAID 5是以数据的校验位来保证数据的安全,但它不是以单独某一个硬盘来存放数据的校验位,而是将数据段的校验位交替存放于各个硬盘上。RAID5磁盘阵列中的数据存放结构如图1所示。图1中示出了由四个磁盘组成的一个RAID5磁盘阵列,每一个圆柱体表示一个磁盘;P(parity)表示校验位,D(data)表示数据段,校验数据的计算方式为异或(xor)。在图1所示例子中,每三个数据段的异或结果作为这三个数据段的校验位。例如,校验位P1是数据段D1、D2、D3的异或结果,即P1=D1⊕D2⊕D3。这样任何一个硬盘损坏,都可以根据其它硬盘上的校验位以及数据段来重建损坏的数据。
根据以上所述的RAID5技术原理,当该磁盘阵列中出现1块硬盘故障,可以通过重建的方式恢复该坏盘上的数据;但是当出现2块硬盘故障后,RAID5磁盘阵列就失效了,这时候就不能再对该RAID5磁盘阵列剩余的正常磁盘做任何读写操作,特别是不能继续写数据,有可能会导致严重的丢失数据事故。因为即使事后把RAID5磁盘数据恢复,也会因为RAID5故障时间段内业务数据没有及时写到RAID组中而导致这段数据的丢失。特别是对于在线视频监控这类的应用,对于连续视频数据记录的要求很高,因此需要采用一定的技术手段保证在RAID5磁盘阵列出现2块磁盘故障后仍然能够继续写入视频流数据。
发明内容
本申请提供了一种RAID5系统及在RAID5系统失效后继续写数据的方法,能够满足连续写入数据的要求。
本申请实施例提供的一种在RAID5系统失效后继续写数据的方法,包括:
A、通过配置文件记录第一RAID5磁盘组成员盘信息,记录第一RAID磁盘组状态为正常状态,通过第一位图表记录第一RAID5磁盘组有效使用的条带;
B、判断第一RAID5磁盘组是否出现失效的情况,若是,执行步骤C,否则继续执行本步骤;
C、将第一RAID磁盘组的状态变更为失效状态,通过配置文件获知磁盘组还有哪些磁盘是正常的,通过第一位图表获知磁盘组中正常磁盘还有哪些条带空间还没有被使用以及剩余空间的大小;
D、生成用于记录所述正常磁盘的条带使用情况的第二位图表;
E、若收到写新数据的写请求,通过第二位图表查找正常磁盘的剩余空闲的条带位置,在所述空闲条带中写入新数据,并且把该条带位置记录到第二位图表中。
可选地,步骤B包括:如果仅出现1块磁盘故障,开始做数据重建;数据重建过程中又出现1块磁盘故障,则执行步骤C。
可选地,步骤D之后进一步包括:
D1、若收到新的IO请求,通过第一位图表判断该IO请求是读写已有数据还是写新数据,若是读写已有数据,则反馈错误到上层,并返回步骤D1;若写新数据,执行步骤E。
可选地,步骤E所述在所述空闲条带中写入新数据包括:如果该RAID5剩余正常磁盘数量大于3个,将剩余正常磁盘组成第二RAID5磁盘组存放数据,剩余正常磁盘数量小于3个就按照RAID0的方式存放数据。
可选地,若第二RAID5磁盘组失效,按照步骤C至步骤E找到正常磁盘和空闲条带,如果正常磁盘数目大于3,继续组成第三RAID5磁盘组存放数据,剩余磁盘数量小于3个就按照RAID0的方式存放数据。
可选地,步骤E之后进一步包括:按照第一位图表和第二位图表记录的条带位置,分别恢复故障前数据以及故障后写入的数据
本申请实施例还提供了一种RAID5系统,包括:
第一模块,用于通过配置文件记录第一RAID5磁盘组成员盘信息,记录第一RAID磁盘组状态为正常状态,通过第一位图表记录第一RAID5磁盘组有效使用的条带;
第二模块,用于判断第一RAID5磁盘组是否出现失效的情况,若是,使能第三模块;
第三模块,用于将第一RAID磁盘组的状态变更为失效状态,通过配置文件获知磁盘组还有哪些磁盘是正常的,通过第一位图表获知磁盘组中正常磁盘还有哪些条带空间还没有被使用以及剩余空间的大小;
第四模块,用于生成用于记录所述正常磁盘的条带使用情况的第二位图表;
第五模块,用于在生成第二位图表之后,若收到写新数据的写请求,通过第二位图表查找正常磁盘的剩余空闲的条带位置,在所述空闲条带中写入新数据,并且把该条带位置记录到第二位图表中。
可选地,该RAID5系统进一步包括:
第六模块,用于在生成第二位图表之后,若收到新的IO请求,通过第一位图表判断该IO请求是读写已有数据还是写新数据,若是读写已有数据,则反馈错误到上层。
可选地,如果该RAID5剩余正常磁盘数量大于3个,所述第五模块将剩余正常磁盘组成第二RAID5磁盘组存放数据,剩余正常磁盘数量小于3个,第五模块就按照RAID0的方式存放数据。
可选地,该RAID5系统进一步包括:
第七模块,用于按照第一位图表和第二位图表记录的条带位置,分别恢复故障前数据以及故障后写入的数据。
从以上技术方案可以看出,在RAID5磁盘组失效后,找到剩余正常磁盘以及正常磁盘中的空闲条带,在所述空闲条带中写入新数据,从而实现了连续写入数据。较佳地,如果剩余正常磁盘的数目大于3,还可以将剩余磁盘组成新的RAID5磁盘组,以保证数据安全。
附图说明
图1为RAID5磁盘阵列中的数据存放结构示意图;
图2为本申请实施例提供的在RAID5系统失效后继续写视频流数据的方法流程示意图。
具体实施方式
为使本申请技术方案的技术原理、特点以及技术效果更加清楚,以下结合具体实施例对本申请技术方案进行详细阐述。
本申请实施例提供的在RAID5系统失效后继续写数据的方法流程如图2所示,包括如下步骤:
步骤201:创建第一RAID5磁盘组的时候,通过配置文件记录该磁盘组成员盘信息,记录第一RAID磁盘组状态为正常状态,通过第一位图表(bitmap1)记录第一RAID5磁盘组有效使用的条带。
例如,对于每一个条带在第一位图表中有一个比特对应,如果该条带已使用,其对应比特置为1,反之置为0。
步骤202:判断第一RAID5磁盘组是否出现失效的情况,若是,执行步骤203,否则继续执行本步骤。该步骤为可选步骤。
其中,如果仅出现1块磁盘故障,可以正常工作或者开始做数据重建;数据重建过程中又出现1块磁盘故障,则执行步骤203。
步骤203:将第一RAID磁盘组的状态变更为失效状态,通过配置文件获知磁盘组还有哪些磁盘是正常的,通过第一位图表获知磁盘组中正常磁盘还有哪些条带空间还没有被使用以及剩余空间的大小。
步骤204:生成用于记录所述正常磁盘的条带使用情况的第二位图表。
生成第二位图表的方式可以是将当前时刻的第一位图表拷贝一个副本,作为第二位图表。
步骤205:若收到新的IO请求,通过第一位图表判断该IO请求是读写已有数据还是写新数据,若是读写已有数据,则执行步骤206;若写新数据,执行步骤207。
通常情况下,对于监控视频这类应用,在一般工作状态下,只有写新数据的IO,没有读写的IO,因此该步骤可以是可选步骤。
步骤206:反馈错误到上层,并返回步骤205。
步骤207:通过第二位图表查找正常磁盘的剩余空闲的条带位置,在所述空闲条带中写入新数据,并且把该条带位置记录到第二位图表中。然后返回步骤205。
可选地,如果该RAID5剩余正常磁盘数量大于3个,将正常磁盘组成第二RAID5磁盘组,继续按照RAID5冗余方式存放数据,剩余正常磁盘数量小于3个就直接按照RAID0的方式存放数据。
当把故障磁盘修复好之后,按照第一位图表和第二位图表记录的条带位置,分别恢复第一磁盘组失效前以及失效后写入的数据。将第二位图表与第一位图表相减,得到差值位图表,该差值位图表反映了第一RAID磁盘组失效后写入数据的条带,根据差值位图表找到相应条带就可以恢复出第一RAID磁盘组失效后写入的数据。至于失效前的数据,则根据第一位图表找到相应条带,并结合磁盘数据恢复以及RAID5重建的方式进行数据恢复。
可选地,如果在后续写入过程中,第二RAID5组又失效了,可以参照上述流程找到正常磁盘和空闲条带,如果正常磁盘数目大于3,可以继续组成第三RAID5磁盘组存放数据,剩余正常磁盘数量小于3个就直接按照RAID0的方式存放数据。
本申请实施例还提供了一种RAID5系统,包括:
第一模块,用于通过配置文件记录第一RAID5磁盘组成员盘信息,记录第一RAID磁盘组状态为正常状态,通过第一位图表记录第一RAID5磁盘组有效使用的条带;
第二模块,用于判断第一RAID5磁盘组是否出现失效的情况,若是,使能第三模块;
第三模块,用于将第一RAID磁盘组的状态变更为失效状态,通过配置文件获知磁盘组还有哪些磁盘是正常的,通过第一位图表获知磁盘组中正常磁盘还有哪些条带空间还没有被使用以及剩余空间的大小;
第四模块,用于生成用于记录所述正常磁盘的条带使用情况的第二位图表;
第五模块,用于在生成第二位图表之后,若收到写新数据的写请求,通过第二位图表查找正常磁盘的剩余空闲的条带位置,在所述空闲条带中写入新数据,并且把该条带位置记录到第二位图表中。
可选地,该RAID5系统进一步包括:
第六模块,用于在生成第二位图表之后,若收到新的IO请求,通过第一位图表判断该IO请求是读写已有数据还是写新数据,若是读写已有数据,则反馈错误到上层。
可选地,如果该RAID5剩余正常磁盘数量大于3个,所述第五模块将剩余正常磁盘组成第二RAID5磁盘组存放数据,剩余正常磁盘数量小于3个,第五模块就按照RAID0的方式存放数据。
可选地,该RAID5系统进一步包括:
第七模块,用于按照第一位图表和第二位图表记录的条带位置,分别恢复故障前数据以及故障后写入的数据。
本申请方案有效解决了连续写入数据的应用中,因为RAID组故障导致后续业务数据不能及时写入磁盘导致大量业务数据丢失情况。
应当理解,虽然本说明书是按照各个实施方式描述的,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请的保护范围,凡在本申请技术方案的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。