网页电脑-注册表修复软件

raid恢复
2023年4月3日发(作者:snkrs怎么抽签)

00

000

000

00

WINHEXRAID修复

RAID0分析

关于RAID,大家可能有些陌生。在个人电脑上,RAID用的不多,但是windowsXP支持

跨区卷和带区卷。Windowsserver2003支持跨区卷,带区卷,RAID-5等。对于RAID0的

分析主要在于重组磁盘,重组磁盘就需要确定盘序,块大小,判断磁盘加入阵列的起始位

置等。确定了上述参数后就可以重组阵列达到恢复数据的目的了。但是在具体的操作中,

要如何确定上述参数呢?这个就要对文件系统有深入的了解,特别是NTFS文件系统,因

为RAID基本都是采用NTFS文件系统,很少有采用FAT32文件系统的。看了马林老师的

《数据重现》之后发现,马林老师给出的实验素材真是精心设计过的了。如果自己做一个

RAID就会出现很多和马老师的素材不一样的结果。这里我就从如何组建一个RAID0开始

然后逐步分析。马老师给出的方法具有通用性,但是有些时候会出现找不到符合马老师给

出的素材的情况,那么就不能用马老师讲的方法了。我们就只能在对文件系统有深入的理

解的前提下,分析RAID了。这就要求我们对文件系统有深入的理解,特别是NTFS文件

系统。好的,下面我就从组建一个RAID0开始,分析一下RAID0。希望能给大家带来一些

启示。

这个是我在windowsXP下虚拟出的三块磁盘,每块磁盘的大小都是200M三块磁盘做了一

个RAID0,采用NTFS格式化。上图显示的三块磁盘的0号扇区,这个扇区的主要作用

是一个DOS分区结构。和基本磁盘的MBR有点类似。这个扇区也有一个分区表,但是只

占用了一个分区表项。。大家看下图

00

000

000

00

分区类型是0x42起始于63号扇区,大小是0x9A200600也就是401562个扇区。而磁盘

的总扇区数是409600个扇区。因为在windows系统中采用逻辑磁盘管理也就是LDM。

LDM支持JBOD,RAID0,RAID1和RAID5。要组成这些阵列类型,我们需要把我们的磁

盘转换成动态磁盘,而LDM就是管理动态磁盘的。动态磁盘有两个重要的部分,一个是

LDM分区区域,它占用磁盘的绝大部分,另一个就是动态磁盘的最后1MB,分配给LDM

数据库。LDM数据库包含分区区域的分配情况。所以在把基本磁盘转换成动态磁盘时需要

在磁盘最后有一定的剩余空间。我们上图显示的类似基本磁盘的分区表部分我们管它叫软

分区,分区类型就是0x42而基本磁盘的分区我们就叫硬分区吧。好了,现在我们对组成

RAID的磁盘有了一个基本的了解了,我们来总结一下

1.成员盘都是动态磁盘,windows操作系统有个叫LDM的管理它们。

会在每个成员盘的最后1MB建立一个数据库,记录一些动态盘的信息,而且这个

数据库还有一个作用,当我们的成员盘被卸载了加载到其他机器上去之后,如果那台机

器采用的和原来的机器一样的RAID那么我们的成员盘又可以组建成原来的RAID了,

而数据不会丢失,这就方便了移植。

会在动态磁盘的0号扇区建立一个如上图所示的软分区表。

数据库中包含四个区域,一个叫做LDM私有头,一个内容表区域,一个数据库

记录区和一个事物处理日志区。

5.软分区描述的扇区总数并没有包括最后那1MB的LDM数据库。

好的,我们先看看是不是磁盘的最后1MB是数据库,看看数据库都写了些什么。1MB就

是2048个扇区,我们的磁盘有409600个扇区减去2048。那么我们的数据库的起始扇区就

是407553号扇区了。

00

000

000

00

看到了吗,真的是有东西签名标志544F434C4F434B具体的数据库分析我们就不做了,

太费时了,如果大家有兴趣可以加我共同讨论。这里我只是想让大家知道在RAID0中的各

成员盘的具体结构是怎样的,写入的各部分数据有什么作用。我们回到0号扇区,找到那

个软分区表,分区表显示分区的起始扇区是63号扇区,那么也就是说磁盘加入阵列的起始

扇区是63号扇区。通过搜索发现前面的63个扇区除了0号扇区有一个软分区表6号扇区

有一些东西其他扇区都是零。好的,我们转到63号扇区看看。

1确定盘序:

00

000

000

00

看到了吗,硬盘1的63号扇区是DBR而其他两块盘的63号扇区不是DBR而是数据,

这样我们就能知道硬盘1就是这个RAID0的第一块盘了。至于剩下的两块盘的盘序就通过

其他方法确认了,而且我们在这里知道了硬盘1是RAID0的第一块盘,那么硬盘2和硬盘

3肯定就是相邻的了。我们可以通过寻找硬盘2和硬盘3的MFT来确认他们的盘序和块大

小。这个方法不错。但是很遗憾,我做的这个RAID居然找不到合适的MFT。也就是说通

过比较MFT来判断盘序和块大小的方法就没戏了。那我们怎么办,马老师貌似没有给出方

法了。看来我们的自己寻找解决的方法了。因为此RAID采用的是NTFS文件系统,那么

我们能不能根据对NTFS文件系统的特点,找找看能不能通过其他的一些特征来确定盘序

和块大小呢?我们通过分析DBR得出:

1,每簇扇区数1个;

2,$FT起始簇号401408这里就是401408号扇区了;

3,$MFTMIRR起始簇号602111这里也就是602111号扇区了;

4,分区总扇区数1204223个扇区;

我们就想了,硬盘1已经确定是RAID0的第一块盘了,$MFTMIRR的起始扇区在$MFT

的后面。那么系统就是先向磁盘写入$MFTMIRR然后再写入$MFT了。

好的,我们就根据以MFT为线索,我们把每块成员盘的MFT搜索出来,当然就搜索前面

几个MFT项就行了。这里我就直接给出我搜索出的结果了

硬盘1在20768号扇区搜到了第一个MFT项,这块硬盘一共有3个MFT项分别是

1号2号3号MFT项。

00

000

000

00

硬盘2133823号扇区搜到了第一个MFT项,这块硬盘一个找到了从0号MFT项到36

号MFT项,我们知道$MFT记录的0号MFT项到15号MFT项是NTFS文件系

前面16个重要的元文件16到23号用作保留。而我们这里出现了36号MFT项,

显然这个就是文件的MFT项了。

00

000

000

00

硬盘3200766号扇区找到了第一个MFT项,这块硬盘就一个MFT项,是0号MFT

现在我们应该就能判断了吧,硬盘2号记录的是$MFT这个元文件,而硬盘1和硬盘3记

录的是$MFTMIRR这个元文件,也就是$MFT这个元文件前4个MFT项的备份,这个和

NTFS系统的描述的样。呵呵,看来分析对了。。。

我们说了系统先写入$MFT在写入$MFTMIRR而硬盘2就是$MFT硬盘1和硬盘3是

$MFTMIRR而我们前面已经确定硬盘1是RAID的第一块盘,这里我想我们就能判断出

硬盘2就是RAID0的第二块盘了吧。硬盘3是第三块盘。而且根据各磁盘上的MFT参考

号,我们也能判断出,系统先向硬盘1写入数据,到该写入$MFT元文件的时候,就转到

了硬盘2向硬盘2写入,写入完成之后又转到了硬盘3开始写入$MFTMIRR,因为硬盘3

记录的MFI参考号是0接着又跳转到了硬盘1继续写入没有写完的$MFTMIRR所以硬盘

1的MFT参考号是从1号开始的,这样就形成了一个完整的写入过程了。。盘序分析就出

来了。。。

盘序就是硬盘1硬盘2硬盘3

2确定块大小

方法一:

猜,逐个试,这个方法虽然笨了一点,但是很管用,我们已经确定了盘序,磁盘加入阵

列的起始扇区是63号扇区,而块大小是2的整数次冥,也就是只可能是248163264128

等等,那么就挨个试,如果块大小吻合,那么数据就能恢复成功。这里我在选择块大小是

00

000

000

00

128时,数据完美重现了,恢复完成。

00

000

000

00

00

000

000

00

方法二。

通过NTFS的特点以及根据实际的情况就行选取特征计算出块大小,如果,实际情况是能

出现马林老师素材中的情况就好了,就能通过MFT项来计算出块大小了,但是很遗憾实际

情况没有出现那种情况,具体的操作方法,请大家讨论讨论了,呵呵。。

好了,就写到这里了,本文的主要目的是讲解RAID0的理论原理,动态磁盘,看看RAID0

中系统到底对磁盘进行了哪些写入。这样大家再分析RAID的时候就能做到心中有数了。

如果要做阵列恢复,猜测盘序和块大小是一种不错的方法。。

更多推荐

raid恢复