该案例由3块73GB的SCSI硬盘组成,用户也说不清用的是哪一种级别的RAID,所以我们首先需要分析这3块盘组建的是哪一种RAID。
我们将3块物理盘从0号扇区开始做成3个文件镜像,命名为“0.img”、“1.img”和“2.img”,这3个文件是RAID中3块成员盘的部分镜像,我们这里称文件“0.img”为“硬盘0”、文件“1.img”为“硬盘1”、文件“2.img”为“硬盘2”,但这些文件的编号只是随意编排的,并不一定与RAID中各个成员盘的盘序相符。
先分析每块硬盘的第一个扇区,“硬盘0”的第一个扇区内容如图17-58所示。
“硬盘0”的第一个扇区是MBR,分区表中有一个类型为0x07的分区表项,其具体参数如图17-59所示。
分区表中显示分区开始于63号扇区,大小为12 673 521个扇区。
该MBR中只使用了这一项分区表项,其他3项都是空的,而这一项分区表项所管理的分区大小为12 673 521扇区,大约是个6GB的大小,并且分区已被激活,说明它是个系统分区,是RAID控制器划分出来的独立分区,并不是RAID逻辑盘上的一个逻辑卷,所以我们无法从分区大小上判断这个RAID的级别。
“硬盘1”的第一个扇区内容如图17-60所示。
从图17-60中可以看到“硬盘1”第一个扇区是一个空扇区。
“硬盘2”的第一个扇区内容如图17-61所示。
从图17-61中可以看到“硬盘2”的第一个扇区也全部为0。
通过3块成员盘第一个扇区内的数据来看,它们肯定是不符合异或运算的,所以可以排除RAID-3、RAID-4、RAID-5这几个级别,另外因为成员盘数目只有3块,所以也可以排除RAID-10、RAID-5E、RAID-5EE、RAID-6这几个级别,那么剩下的可能性就是JBOD、RAID-0和RAID-1E了。
继续分析每块成员盘后面的扇区,在“硬盘1”的16号扇区又发现了MBR,与“硬盘0”的第一个扇区完全一样,如图17-62所示。
“硬盘0”和“硬盘2”的16号扇区则全部为0,从这一点可以排除JBOD和RAID-0的可能性,因为这两种级别的RAID没有冗余数据,也就是没有重复数据的可能性。
那么该RAID的级别就只能是RAID-1E了,不过这只是推断,还需要在下面的分析中进行验证。
在第1步中我们推断该RAID的级别很可能是RAID-1E,那么我们就假设它是RAID-1E,然后从后面的分析中加以验证。
3块成员盘组成RAID-1E后数据的分布情况如图17-63所示。
从图17-63看,RAID-1E的数据分布有这样的规律:在各个物理盘中,以两个条带组为一个单元,在一个单元中,上一个条带组内是连续排列的数据,下一个条带组则是上一个条带组的错位镜像,即将上一个条带组中每个成员盘内的数据向右移动一块盘的位置,写入下一个条带组的各个成员盘中,最后一个成员盘的数据则写入第一个成员盘中。
在第1步的分析中,我们发现“硬盘0”的第一个扇区是MBR,这可以说明“硬盘0”就是0号盘,相当于图17-63中“物理盘0”第一个条带的数据块“D0”的第一个扇区。
又因为我们在“硬盘1”的16号扇区发现了MBR,这就是对图17-63中“物理盘0”的数据块“D0”的镜像,也就相当于图17-63中“物理盘1”第二个条带的数据块“D0”。通过这一点我们可以得出两个结论:第一,“硬盘1”就是1号盘;第二,该RAID条带大小是16个扇区。
通过以上的分析,该RAID结构基本清楚了:RAID级别为RAID-1E,盘序为“硬盘0”是0号盘、“硬盘1”是1号盘、“硬盘2”是2号盘,RAID条带大小是16个扇区。
我们可以进一步验证上面的推论。
从RAID逻辑盘上看,63号扇区是DBR,按照条带大小为16个扇区,那么这个DBR就应该在数据块“D3”的最后一个扇区,反映到物理盘上,就是“硬盘0”的47号扇区和“硬盘1”的63号扇区。下面我们用WinHex查看这两个扇区。
“硬盘0”的47号扇区的内容如图17-64所示。
“硬盘0”的47号扇区确实是一个NTFS文件系统的DBR。接下来再看“硬盘1”的63号扇区,如图17-65所示。
“硬盘1”的63号扇区也是一个NTFS文件系统的DBR,都与我们推断的结论相符,所以最终我们可以确定,该RAID的结构为:RAID级别为RAID-1E,盘序为“硬盘0”是0号盘、“硬盘1”是1号盘、“硬盘2”是2号盘,RAID条带大小是16个扇区。
对RAID-1E进行数据重组,目前还没有现成的软件可以使用,也就是说现有的RAID恢复工具都不能直接支持RAID-1E的级别,所以只能自己动手写个小程序,或者用WinHex的脚本功能,都可以重组RAID-1E的数据。
重组的基本思路:将图17-63中各个物理盘的0号条带组、2号条带组、4号条带组等所有编号为偶数的条带组按照盘序衔接到一起,就拼凑成为了完整的RAID-1E逻辑盘。