HP服务器在收购康柏公司前,用的都是常规RAID-5结构,自从收购康柏后,其RAID-5就沿用了康柏的双循环RAID-5,现在一般把它称为HP双循环

本节我们具体分析一个HP双循环的RAID-5。该RAID-5由5块73GB的SCSI硬盘组成,我们分别把5块硬盘做成镜像文件,命名为HP0.dsk、HP1.dsk、HP2.dsk、HP3.dsk和HP4.dsk,在这里分别称它们为“硬盘0”、“硬盘1”、“硬盘2”、“硬盘3”、“硬盘4”,但这些文件的编号只是随意编排的,并不一定与阵列中各个硬盘的盘序相符。

分析RAID开始扇区

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

HP双循环数据恢复实例分析-数据恢复迷

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

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

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

分析RAID结构

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

HP双循环数据恢复实例分析-数据恢复迷

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

该MBR中有两个分区表项,一个主分区,一个扩展分区,其中主分区是NTFS文件系统,开始于63号扇区,具体参数如图17-193所示。

HP双循环数据恢复实例分析-数据恢复迷

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

“硬盘3”的1088号扇区全都是0,如图17-194所示。

HP双循环数据恢复实例分析-数据恢复迷

图17-194 “硬盘3”的1088号扇区

“硬盘2”的1088号扇区是衔接在NTFS文件系统DBR之后的一个扇区,即NTLDR区域,如图17-195所示。

HP双循环数据恢复实例分析-数据恢复迷

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

“硬盘1”的1088号扇区是一些索引项,显然是索引缓冲区中的数据,如图17-196所示。

HP双循环数据恢复实例分析-数据恢复迷

图17-196 “硬盘1”的1088号扇区

“硬盘0”的1088号扇区只能是校验了,因为一个条带组中必须有一个校验块,而前4块成员盘的1088扇区都是数据块,所以硬盘0的1088扇区必须是校验,如图17-197所示。

HP双循环数据恢复实例分析-数据恢复迷

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

从内容看这个扇区也确实是校验。

通过上面分析5块成员盘中RAID开始位置的第一个扇区,其实已经可以判断出盘序了,有MBR的“硬盘4”是“0号盘”;1088扇区都是0的“硬盘3”是“1号盘”,因为这些0是MBR保留扇区中的内容,同时也能说明该RAID条带大小在64扇区之内;“硬盘2”是“2号盘”,因为它的1088扇区是DBR的下一个扇区,而DBR肯定在硬盘3上。我们通过搜索果然在硬盘3的1119号扇区找到了DBR,如图17-198所示。

HP双循环数据恢复实例分析-数据恢复迷

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

从RAID开始扇区1088计算,1119号扇区相当于是31号扇区,这也就说明了条带大小是32扇区;“硬盘0”的1088扇区是校验,所以它就是4号盘了,剩下的“硬盘1”就是“3号盘”。所以该RAID-5的盘序刚好跟镜像文件的编号相反。

刚才分析的条带大小为32扇区,这只是双循环内部RAID-4的条带大小。还需要分析外部循环RAID-5的条带大小,这个可以从硬盘0入手,因为它的第一个条带就是校验,可以从它的第一个条带往下翻,看从哪个扇区开始是数据。

经过查找,发现“硬盘0”的1600扇区开始出现数据,数据结构为索引块,其内容如图17-199所示。

HP双循环数据恢复实例分析-数据恢复迷

图17-199 “硬盘0”的1600扇区

1600扇区扇区相当于是RAID-5内的512号扇区,也就是说“硬盘0”的外循环校验块大小是512扇区,包含16个内循环小条带。

数据重组

结构分析完成之后就可以组建虚拟RAID了。这个案例我们就用WinHex来组建虚拟RAID,具体设置如图17-200所示。

HP双循环数据恢复实例分析-数据恢复迷

图17-200 用WinHex组建虚拟RAID

虚拟RAID创建成功后就可以看到分区了,如图17-201所示。

HP双循环数据恢复实例分析-数据恢复迷

图17-201 显示出分区

因为镜像文件不是全盘镜像,所以看到的分区不完整。