虚拟化数据恢复环境:

一台服务器上部署的Hyper-V虚拟化平台,虚拟机的硬盘文件和配置文件放在一台某品牌MD3200存储中。该存储中有一组由4块硬盘组建的raid5磁盘阵列,还有一块大容量硬盘存放虚拟机数据文件的备份。


虚拟化故障:

MD3200存储中虚拟机数据文件丢失,导致Hyper-V服务瘫痪,虚拟机无法使用。


虚拟化故障分析:

1、检测MD3200存储是否存在物理故障,经过检测没有发现存储存在任何物理故障,硬盘均正常工作。

2、检查操作系统,未发现出错进程,排除因操作系统问题导致的数据丢失。

3、分析丢失数据硬盘的文件系统,文件系统打开正常,不符合恶意程序破坏的表现。使用多款杀毒软件检测无恶意程序。分析丢失数据硬盘的文件系统,发现文件系统的元文件创建时间(也就是文件系统的创建时间)与数据丢失的时间刚好一样。这种表现通常意味着文件系统被人为重写,即分区被格式化了。

4、检查系统日志,发现数据丢失时间之前以及数据丢失当天的系统日志已被清空,审核日志和服务日志却未清空。这种情况应该是人为操作,格式化分区的操作只记录在系统日志中,这与人为破坏的表现相符。

5、尝试恢复系统日志。分析硬盘底层数据,发现硬盘底层中需要恢复的系统日志已被新的日志记录覆盖,无法恢复。

6、分析操作系统中的所有分区。发现只有存储中两个分区的文件系统被重新写入文件系统。格式化两个分区需要两个独立的过程,这种针对性的操作基本上是人为的。


重现格式化操作:

1、通过在分区上“右键”,选择“格式化”按钮,可以格式化选中的分区。

2、在开始菜单“运行”中输入“cmd”命令进入到命令行模式,然后使用FORMAT命令,可以格式化指定分区。

3、创建一个bat文件,在文件中写入格式化的命令,然后运行bat文件可以格式化指定分区。

4、因为有两个独立的文件系统的数据丢失,故上述的流程可能被执行了多次。应该因人为操作导致。


虚拟化数据恢复方案:

根据前期的故障分析,北亚企安数据恢复工程师团队敲定数据恢复方案:

1、备份数据,对丢失数据的硬盘做全盘备份。

2、分析硬盘底层数据,重组RAID阵列。

3、分析重组的阵列,看能否找到原始文件索引项及对应的数据区。

4、核对查找到的文件索引项是否符合用户丢失的数据,并核对相应的数据区有无破坏。

5、将扫描到的文件索引项碎片拼接成一个完整的目录结构。

6、根据拼接好的目录结构去底层恢复对应的数据,并检查数据的正确性。

7、核对数据没问题后恢复所有数据。


虚拟化数据恢复方案实施:

1、将Dell M3200存储中所有的硬盘编号后取出,由硬件工程师检测硬盘是否存在物理故障。经过检测没有发现有硬盘存在物理故障。以只读方式将每块硬盘做扇区级全盘镜像。镜像完成后将所有磁盘按照编号还原到原存储中,后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始磁盘数据造成二次破坏。

备份硬盘数据:

虚拟化数据恢复—虚拟机数据丢失导致Hyper-V服务瘫痪,虚拟机无法使用的数据恢复_数据恢复

2、基于镜像文件分析所有硬盘上的底层数据。通过分析获取重组RAID5阵列的raid相关信息,如:条带大小,条带走向等。根据获取到的raid信息重组RAID。

重组RAID:

虚拟化数据恢复—虚拟机数据丢失导致Hyper-V服务瘫痪,虚拟机无法使用的数据恢复_虚拟机数据恢复_02

打开硬盘阵列:

虚拟化数据恢复—虚拟机数据丢失导致Hyper-V服务瘫痪,虚拟机无法使用的数据恢复_虚拟化数据恢复_03

3、分析硬盘底层数据,发现硬盘底层中还残留着许多原始文件系统的目录项及文件索引。经过核对发现这些文件索引指向的数据都是用户丢失的文件内容。北亚企安数据恢复工程师编写一个提取文件索引项的小程序,扫描整个硬盘中所有存在的文件索引项,提取所有文件的文件索引项。

4、分析所有扫描到的文件索引项,发现这些索引项都是不连续的,大多以16K或8K对齐的。正常情况下的文件索引项是连续的,大小为固定的1K,每个文件索引项对应一个文件或目录。而扫描出来的这些不连续且不完整的文件索引项无法正常索引到文件的内容。因此需要对扫描出来的文件索引项做加工处理。

在扫描出来的文件索引项中搜索” .VHD”,能找到一个” .VHD”的文件记录,然后将这段文件索引项提取出来。查看这段提取出来的文件索引项中是否有指向下一段文件索引项的记录或者是H20属性,如果有则根据文件索引项中的特征去匹配下一段文件索引项,如果没有则跳过这段文件索引项。

根据上述方法基本能查到大多数的文件索引项片段。而缺失的文件索引项片段则有可能被破坏了。可以考虑从备份盘中去查找缺失的文件索引项片段,因此可以搜索到大部分的文件索引项。

文件索引项截图:

虚拟化数据恢复—虚拟机数据丢失导致Hyper-V服务瘫痪,虚拟机无法使用的数据恢复_虚拟化数据恢复_04

5、根据上述方法尽可能找到所有的文件索引项,然后根据文件索引项的编号将其拼接成整个目录项结构。由于有部分文件索引项被破坏,只能找到大部分文件索引项,但这些文件索引项已经足以拼接成整个目录结构了。

扫描到的文件索引项碎片:

虚拟化数据恢复—虚拟机数据丢失导致Hyper-V服务瘫痪,虚拟机无法使用的数据恢复_虚拟机数据恢复_05

6、将拼接好的目录结构替换现有文件系统中的目录结构,使用工具修改部分校验值,再使用专业工具解释这个目录结构即可看到原有丢失的数据了。

解释出来的目录结构:

虚拟化数据恢复—虚拟机数据丢失导致Hyper-V服务瘫痪,虚拟机无法使用的数据恢复_服务器数据恢复_06

虚拟化数据恢复—虚拟机数据丢失导致Hyper-V服务瘫痪,虚拟机无法使用的数据恢复_数据恢复_07

7、为了确定数据是否正确,将其中一个最新的VHD文件恢复出来,然后将其拷贝到一台支持附加VHD的服务器上,尝试附加此VHD,结果附加成功。检查VHD中最新的数据是否完整,检查完整后将所有数据恢复到一块硬盘中。

恢复出来的所有虚拟机数据文件:

虚拟化数据恢复—虚拟机数据丢失导致Hyper-V服务瘫痪,虚拟机无法使用的数据恢复_服务器数据恢复_08

8、在一台测试服务器上搭建Hyper-V的环境,将恢复出来的虚拟机文件连接到这台服务器。通过导入虚拟机的方式,将恢复出来的数据都迁移到新的Hyper-V环境中。然后让用户方验证所有虚拟机是否完整。

导入虚拟机:

虚拟化数据恢复—虚拟机数据丢失导致Hyper-V服务瘫痪,虚拟机无法使用的数据恢复_虚拟机数据恢复_09

虚拟化数据恢复—虚拟机数据丢失导致Hyper-V服务瘫痪,虚拟机无法使用的数据恢复_虚拟化数据恢复_10

9、在用户方验证所有虚拟机没问题后,将所有数据拷贝至用户方准备好的服务器中。通过导入的方式将虚拟机导入到用户方的Hyper-V环境中,但是在导入的过程中出现错误。

虚拟化数据恢复—虚拟机数据丢失导致Hyper-V服务瘫痪,虚拟机无法使用的数据恢复_虚拟化数据恢复_11

经过查找资料和分析,确定出错原因是导入的方法不正确,需要以下面的方式导入虚拟机。

虚拟化数据恢复—虚拟机数据丢失导致Hyper-V服务瘫痪,虚拟机无法使用的数据恢复_虚拟机数据恢复_12

重新导入后没有报错。

虚拟化数据恢复—虚拟机数据丢失导致Hyper-V服务瘫痪,虚拟机无法使用的数据恢复_虚拟机数据恢复_13

尝试启动所有虚拟机,所有虚拟机启动都没问题。

虚拟化数据恢复—虚拟机数据丢失导致Hyper-V服务瘫痪,虚拟机无法使用的数据恢复_虚拟化数据恢复_14

10、用户方对所有虚拟机中的数据进行检测后,确认恢复出来的数据完整有效,认可数据恢复结果。