这是一个HP服务器的RAID-6案例,HP的RAID-6也称为HP ADG,其结构比较特殊,与其他RAID-6的结构都不同。

该RAID-6由7块硬盘组建,但其中一块硬盘出现了物理故障,无法修复,所以我们就用剩下的6块硬盘进行分析和恢复。

将6块成员盘做成文件镜像,命名为0.img到5.img,并称它们为“硬盘0”到“硬盘5”。

分析RAID开始扇区

用WinHex同时打开6个镜像文件,分析它们的第一个扇区,结果发现6块成员盘的第一个扇区都是MBR,这6个MBR中的数据除了磁盘签名不一样,其他完全一样。这里只把“硬盘0”的第一个扇区截图贴出来,其他5块盘就不贴图了。“硬盘0”的第一个扇区如图17-202所示。

HP ADG RAID-6数据恢复实例分析-数据恢复迷

图17-202 “硬盘0”的第一个扇区

这个MBR中有一个分区表项,分区开始位置在63号扇区,分区大小为16 002扇区,也就是接近8MB,分区类型是“12H”,这个类型就是当年康柏定义的一种专用类型,是用于存储康柏配置信息的分区类型。

虽然这个存放配置信息的分区分配了16 002个扇区,但实际上没有用这么多,RAID的开始扇区并没有在16 002扇区之后,而是从1088扇区就开始了,这与HP双循环RAID-5的结构一样。

我们把每块物理盘都跳转到1088号扇区,发现“硬盘0”是一个MBR扇区,如图17-203所示。

HP ADG RAID-6数据恢复实例分析-数据恢复迷

图17-203 “硬盘0”的1088号扇区

该MBR中有一个分区表项,分区类型是NTFS文件系统,开始于63号扇区,具体参数如图17-204所示。

HP ADG RAID-6数据恢复实例分析-数据恢复迷

图17-204 分区表的具体参数

从分区表的参数中可以计算出分区的总扇区数与7块物理盘组建的RAID-6逻辑盘大小刚好相等,说明该MBR就是RAID-6逻辑盘的有效MBR,也说明RAID起始扇区就是物理盘的1088扇区。

分析RAID结构

继续查看其他成员盘的1088号扇区,发现“硬盘1”的1088扇区都是0字节,而“硬盘2”的1088号扇区是NTLDR区域,如图17-205所示。

HP ADG RAID-6数据恢复实例分析-数据恢复迷

图17-205 “硬盘2”的1088号扇区

是NTLDR区域应该是跟在NTFS文件系统的DBR之后,而DBR肯定在“硬盘2”的前一块成员盘第一个条带的最后一个扇区上,我们通过搜索果然在硬盘1的1119号扇区找到了DBR,如图17-206所示。

从RAID开始扇区1088计算,1119号扇区相当于是31号扇区,这也就说明了该RAID-6条带大小是32扇区。

HP ADG RAID-6数据恢复实例分析-数据恢复迷

图17-206 “硬盘1”的1119号扇区

再查看剩下成员盘的1088扇区,“硬盘3”的1088扇区大部分都是0字节,“硬盘4”的1088扇区则很明显是P校验,如图17-207所示。

HP ADG RAID-6数据恢复实例分析-数据恢复迷

图17-207 “硬盘4”的1088号扇区

而“硬盘5”的1088扇区则是Q校验,如图17-208所示。

HP ADG RAID-6数据恢复实例分析-数据恢复迷

图17-208 “硬盘5”的1088号扇区

进一步分析每块成员盘的1088号扇区到1119号扇区之间的内容,发现硬盘0的1089到1119扇区都是0字节,这些是MBR的保留扇区;“硬盘1”的1089到1118扇区也都是0字节,它们同样是MBR保留扇区,硬盘1的1119扇区则是NTFS文件系统的DBR,这在前面已经分析过,所以“硬盘1”在盘序上应该是衔接在硬盘0之后的。

“硬盘2”的1088号扇区是NTLDR区域,所以“硬盘2”是衔接在“硬盘1”之后的。“硬盘2”的1119号扇区是元文件$MFT的起始位置,如图17-209所示。

HP ADG RAID-6数据恢复实例分析-数据恢复迷

图17-209 “硬盘2”的1119号扇区

“硬盘2”的1119号扇区是元文件$MFT自身的文件记录的第一个扇区,其更新序列号为“37 00”,再看硬盘3的1088号扇区,它正好是$MFT文件记录的第二个扇区,如图17-210所示。

HP ADG RAID-6数据恢复实例分析-数据恢复迷

图17-210 硬盘3的1088号扇区

这就可以肯定“硬盘3”是衔接在“硬盘2”之后的。

那么还有一块有故障的成员盘,它的盘序应该在什么位置呢?

从“硬盘3”的1088号扇区往后分析,发现随后都是NTFS元文件的文件记录,从1119扇区开始则是一个保留记录,如图17-211所示。

HP ADG RAID-6数据恢复实例分析-数据恢复迷

图17-211 “硬盘3”的1119号扇区

一般在元文件的文件记录之后都会有几个保留记录,“硬盘3”的1119号扇区是第一个保留记录的第一个扇区,其后还应该有这个记录的第二个扇区及另外的几个保留记录,这些数据则应该存储到下一块成员盘的第一个条带中,现在“硬盘4”和“硬盘5”的第一个条带都是校验信息,所以可以肯定衔接在“硬盘3”之后的硬盘就是缺失的故障盘。

通过上面的分析可以把盘序确定下来了:“硬盘0”是“0号盘”、“硬盘1”是“1号盘”、“硬盘2”是“2号盘”、“硬盘3”是“3号盘”、“硬盘4”是“5号盘”、“硬盘5”是“6号盘”,“4号盘”缺失。

盘序确定之后,我们再分析每块成员盘1119号扇区之后的数据,发现“硬盘0”、“硬盘1”、“硬盘2”和“硬盘3”持续到1599号扇区都是数据,没有任何校验出现;而“硬盘4”和“硬盘5”则持续到1599号扇区都是校验信息,没有正常数据出现。从1600号扇区开始,数据和校验信息才开始在成员盘中发生循环,这又跟HP的双循环RAID-5是一样的,我们把该RAID-6的结构用一幅图描述出来,如图17-212所示。

HP ADG RAID-6数据恢复实例分析-数据恢复迷

图17-212 RAID-6的结构图

图17-212中的“0”、“1”等数字代表数据块;“P0”、“P1”等代表P校验块;“Q0”、“Q1”等代表Q校验块。其中每个条带的大小为512扇区,其中又包含了16个大小为32扇区的小条带,小条带按照RAID-4的形式组织数据。

数据重组

现有的RAID重组工具还不能支持这种特殊的RAID-6结构,所以只能自己动手写个小程序,或者用一些软件提供的脚本功能,都可以重组这个RAID-6的数据。