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