近接手一个服务器4块盘的RAID5,其中一块盘物理上识别不了,于是用其余3块盘组合恢复数据,发现恢复出来的数据不正常,于是想办法修复那块物理故障的硬盘,幸好修好了这块物理故障的硬盘,把镜像做好了.于是按照下面的步骤来:
1、采用故障硬盘的镜像参与RAID5组合,分3次缺不同的硬盘组合数据;
2、导出原先觉得有问题的数据,尝试打开,看看文件是否正常。
结果是:无论缺哪一块盘,组合出来的数据都是异常的,打开都有问题。用“护航舰”检测4块盘的冗余情况,都出现不符合raid5冗余信息的数据。按照以往的经验,可能就直接宣布恢复失败。忽然想起我很久以前恢复过的一个案例,跟这个案例类似。于是按照不缺盘的方式组合,结果出人意料:恢复出来的数据都能打开!
从这个案例来讲,一开始的思路就是掉入Raid5 缺盘排除异常硬盘的组合就一定能判断出哪块盘不新鲜的陷阱。我们来分析一下:
1、4块盘的Raid5,如果4块盘都是好的,用4块盘组合数据肯定没问题,缺任意一块盘组合数据也是没问题的;
2、4块盘的Raid5,如果其中有一块盘数据不新鲜,那么我们通过缺盘组合验证数据,就能判断出哪块盘数据不新鲜;
3、如果挨个缺盘组合,数据都不对,那么我们往往会放弃下一步恢复(这种情况会出现在一开始接手的时候有一块盘出现物理问题,我们先尝试用其余的硬盘来组合恢复数据,如果数据不对,我们就认为肯定有一块盘数据不新鲜,而且数据不新鲜的硬盘就在这正常的硬盘中,当我们把原来坏掉的硬盘修复好以后,我们采取的思路就是用这个原来的坏盘参与组合,缺原来好盘中的一个,而不是采用所有的硬盘来组合,正是我们忽略了这一步)
在4个盘组成的Raid5的阵列中,为什么我们缺任何一块盘组合数据都不对呢?而用所有的硬盘组合数据就对呢?也许在数据恢复行业里,有人碰到过这个问题,可能也没想明白是什么回事。我经过了一番思考得出以下结论:
由于RAID卡的XOR运算模块不起作用或者出现异常,导致往磁盘阵列中写数据时,数据块写入成功,但是冗余(校验)块没有写入成功或者XOR运算出错得到一个错误的结果写入校验块位置,这样我们用工具运算4块盘的XOR结果时得到一个错误的结果,我们就认为其中有坏盘。因为数据块写入正常,而校验块错误,所以我们不能用缺盘的方式来组合,一定要用所有的硬盘来组合才能恢复出正常的数据。