判断RAID数据新鲜度的必要性

对于有冗余数据或者校验信息的RAID级别,当有成员盘离线后,RAID还能够继续使用,如RAID-1、RAID-10、RAID-1E、RAID-5、RAID-5EE、RAID-6等级别的RAID都能够实现在部分成员盘离线的情况下,数据完好无损并且RAID正常运行。

以RAID-5为例,假设一个RAID-5包含4块成员盘,某天其中一块成员盘“硬盘0”离线,但因为RAID-5依然能够正常使用,用户并没有发现有成员盘离线。

在“硬盘0”离线的状态下该RAID-5又使用了1个月,另一块成员盘“硬盘2”又突然离线了,这时RAID-5才真正崩溃而不能使用了。

这个RAID-5虽然有两块成员盘离线,但这两块成员盘不一定有物理故障,在实践中对很多离线的RAID成员盘进行检测,结果发现很多时候它们并没有任何物理故障。

对于这个RAID-5进行数据恢复时,即使4块成员盘都没有物理故障,也不能用这4块成员盘进行恢复,因为“硬盘0”早在一个月前就已离线,其中的数据跟其他3块成员盘有很大差距,我们称“硬盘0”为数据“不新鲜”的成员盘。如果把“硬盘0”加入都其他3块成员盘中一起恢复数据,那么恢复出来的数据必定不完整。

正确的做法是先从4块成员盘中挑出并剔除不新鲜的“硬盘0”,只用其他3块成员盘进行数据恢复,这样恢复出来的数据才完整。

判断RAID数据新鲜度的方法

判断RAID数据是否新鲜就是要判断RAID成员盘中是否有数据不新鲜的硬盘。在上面提到的例子中,“硬盘0”就属于数据不新鲜的成员盘。那么如何才能知道RAID成员盘中是否有这样的硬盘呢?

在RAID已经崩溃后,从服务器的指示灯上是无法判断出哪块成员盘先离线的,用户也往往无法提供这样的信息,所以我们只能依靠其他方法进行判断。这里提供一种用工具RAID Reconstructor进行判断的方法。

在RAID Reconstructor中有一项异或测试功能,可以检测RAID-5各成员盘之间是否符合异或运算。如果能够通过异或测试,说明RAID-5数据是新鲜的;如果不能通过异或测试,则说明RAID-5成员盘中可能有不新鲜的硬盘。

RAID Reconstructor的异或测试功能在“Tools”菜单栏中,如图16-17所示。

判断RAID数据新鲜度的必要性及方法-数据恢复迷

图16-17 “XOR Test”(异或测试)命令

用RAID Reconstructor打开RAID-5的全部成员盘,然后选择“XOR Test”,出现如图16-18所示的界面。

判断RAID数据新鲜度的必要性及方法-数据恢复迷

图16-18 XOR Test界面

单击“Start”按钮就可以开始测试了,测试完成之后的结果如图16-19所示。

判断RAID数据新鲜度的必要性及方法-数据恢复迷

图16-19 XOR Test的结果

异或测试结果会用三种颜色显示出来,绿色表示测试通过,红色表示测试失败,白色表示不确定。例如,全部成员盘在某个扇区的数据全部是0,就无法确定它们是否符合异或。

不过也会有特殊情况,如出现故障后的RAID-5被用户错误地做了同步操作,那么这个做过同步的RAID-5一定能通过异或测试,但并不是说其成员盘的数据就都是新鲜的。