在各种数据恢复案例中,RAID-5数据恢复案例是比较常见的恢复案例之一。每年,效率源都会接到大量的RAID-5磁盘阵列数据恢复案例。
图|磁盘数据恢复,图源:pixabay
因此,今天王老师将从RAID-5的基础概念,恢复思路和案例实操三个方面,为大家讲解如何使用winhex手动分析RAID-5磁盘阵列。
RAID-5基础概念
在RAID数据恢复中,会经常用到一些概念,为了便于对后面内容的学习,有必要先把这些概念理解清楚。
【循环方向】
所谓“循环方向”,是指 RAID 中校验块的走向,一种是左循环,一种是右循环。
【同异步】
所谓“异步”与“同步”,是指数据块的写入方式。
➢异步:在RAID5中,数据块的写入有两种方式,一种是当写满一个条带组需要转入下一个条带组写入时,直接回到0号盘进行写入。也就是每个条带组内都是由低号盘开始写入,写满一个块后转向高号盘继续写入,这种方式不考虑校验块的位置,称为异步。
➢同步:则是在写满一个条带组,需要将数据写入下一个条带组时,先判断下一个条带组的校验块位于哪个磁盘,然后将数据写入校验块所在磁盘的下一个磁盘,写满一个数据块后转向高号盘,直至该条带内编号最大的数据块写满后,再回到同条带组内的0号盘写入,直至本条带组内的校验块所在磁盘的前一个磁盘。也就是说,一个条带组内的第一个数据块总是跟在本条带组内的校验块之后。
——循环方向及同异步图示(Px代表校验块):
左循环异步
左循环同步
右循环异步
右循环同步
【起始扇区(偏移)】
有一些服务器或者磁盘阵列柜会将RAID信息存储在磁盘的某些地方,一般是阵列内每块磁盘最前面的一些扇区或者位于磁盘最后的一些扇区内。当RAID信息存储在每块磁盘前面的扇区时,在分析与重组RAID的时候就需要人为的去掉这些信息,确认RAID内部数据真正的起始扇区,否则就会得到错误的结果。
【盘序】
多块物理盘在创建RAID时,配置程序会为这些物理盘安排一个先后顺序,RAID创建完成之后,这个顺序就被确定下来,不会再改变,这就是RAID的盘序。有一点请注意,RAID的盘序并不一定跟物理盘插在服务器上的硬盘槽位顺序相符。
【条带(块大小)】
在RAID创建过程中,配置程序把每块物理盘分割为一个一个的单元,每个单元的大小为2的N次方扇区,N取整数,是一个可变量,这个单元就是 RAID的条带(Stripe),它是RAID处理数据的基本单位。在RAID配置时可以让配置程序默认条带大小,也可以手动选择条带大小。条带也被称为“带区”或者“块”,“块大小”也就是指每个条带包含的扇区数。每块物理盘的条带都有一个编号,为了对应关系的明确,把条带编号也定义为从0开始,每块物理盘的第一个条带都称为0号条带,或者0号块,然后顺序往下编排。
【盘数】
构成RAID的物理盘的个数称为“盘数”,也称为“条带数”,在RAID配置程序中经常使用条带数表示RAID中的成员盘个数,如图所示。
【条带组】
在一个RAID中,每块物理盘被划分成一个个的条带,每个条带也都有一个编号,并且整个RAID中所有成员盘的条带大小都一样,那么所有RAID成员盘中编号相同的一组条带就称为“条带组”,如图所示。
条带组
图中是一个RAID-0的结构,其中条带A、B、C、D都是每块成员盘中的0号条带,它们共同构成了“条带组0”,也称为“0号条带组”。
恢复思路
对于一般的RAID5数据恢复,我们需要了解以下参数:盘序、块大小、旋转方式和数据起始扇区等。
所以,对于RAID5的数据恢复也就是通过文件系统、文件格式、磁盘内其它相关数据等来确定这四个参数的过程。
当这四个参数确定后,便可以通过相关的工具将分散在每块磁盘上数据还原为RAID5内实际的数据,从而达到恢复RAID5内数据的目的。
手动通过工具找到MBR与DBR,并判断硬盘内的数据是否同步→通过MBR的位置判断起始扇区位置→通过DBR找到NTFS分区的MFT记录的位置→通过MFT记录判断块大小、盘序、旋转方式→数据重组、DRS6800数据恢复系统恢复RAID5内数据。
案例实操
winhex手动分析(需掌握分区结构、文件系统相关知识):
工具:winhex
分析文件:1.img、2.img、3.img
步骤一:将镜像文件加载成磁盘(三个镜像都要操作此步骤)并使用同步功能。
将镜像加载成磁盘
步骤二:找起始,即找MBR。(这个案例里为0,偏移量为0)
只拥有主机中相关服务使用权限,租用运营商服务,具备公网或内网连接地址,具备远程管理(运营商服务控制台、FTP管理、DMS系统等)。
通过分析,我们可以看出1.img和2.img都是MBR,所以其中必有一个校验07-->因此推测是NTFS,3F-->可以知道DBR应该在63号扇区。
此时我们先跳转到63号扇区。发现不是DBR,可以初步断定块大小小于64。
于是,我们尝试跳转到31号扇区,发现1.img和3.img都是DBR,其中必有一个校验,而且块大小应该就是32个扇区,这个我们在后面进行验证。
寻找MBR
步骤三:计算块大小,即找到MFT记录,然后相邻2C偏移处MFT编号差值。(两种方法,第一种找DBR,找到$MFT开始位置;第二种直接搜索FILE查找。)
MFT位置
107079号簇,簇大小1,因此$MFT的位置应该在63+107079=107142处。因为是3盘RAID5阵列,所以数据平均分配到两个盘。即$MFT大致位置在107142/2=53571处。
在此处搜索FILE会大大提高搜索效率。
MFT编号的差值为10
通过MFT编号的差值我们可以得到块大小,这里相减得到十六进制10,也就是十进制的16。因为一个MFT记录是2个扇区(1kb),所以要乘以2,得到块大小是32 —— 和我们上面判断得到的块大小一致。
步骤四:盘序。(按照MFT记录大小排序)
继续往下跳转32个扇区,直到完成表格。通过MFT编号的大小,我们可以得到顺序2->3 3->1 1->2。
通过分析,我们可以知道1.img是1号盘,所以盘序是1.img—2.img—3img (具体算P在哪个块有公式,这里就不赘述)
步骤五:判断得出该阵列是右循环同步。
通过P值的分布,我们可以知道是右循环;通过数据的分析,可以知道数据是跟在P后的,所以是同步。
该阵列是右循环同步[backward parity (Adaptec)-左循环异步、backward dynamic (AMI)-左循环同步、forward parity-右循环异步、forward dynamic-右循环同步 ]
组合后发现分区能正常显示:
正常显示分区
当然随意打开某文件夹里的bg文件也可以正常查看:
文件查看
至此,通过winhex手动分析重组阵列完成。
注意事项
①本次分析是通过winhex基于分区结构和NTFS文件系统MTF记录进行分析,在有些情况下,也可以基于阵列内部存储文件的分布进行分析,相对难度较大;
②阵列分析重组成功后,尽量选取多个大于块大小的文件进行查看(图片最好), 验证是否重组成功;
③RAID5阵列如果出现硬盘故障,最多允许一块硬盘故障,如果故障硬盘大于一块将对数据造成严重损坏。
如果您有其它相关问题及意见,可以留言告诉我们。欢迎拨打热线电话:028-85211099 / 400-631-1393或扫码添加效哥微信,申请免费试用相关数据库取证产品-DBF6300数据库取证分析系统。