博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hyper-V数据文件丢失解决方案(有图有真相)
阅读量:5950 次
发布时间:2019-06-19

本文共 2548 字,大约阅读时间需要 8 分钟。

一、Hyper-V虚拟化故障概述

1、虚拟机环境

故障虚拟化环境为ESXI虚拟化服务器,虚拟机环境,虚拟机的硬盘文件和配置文件放在北京某服务器托管公司的DELL MD3200存储中(存储由5块容量为600G的硬盘组成raid磁盘阵列)。该存储中4块硬盘用作存储虚拟机的数据文件。单块硬盘用作虚拟机数据文件的备份。
2、虚拟机故障分析
对MD3200存储服务器进行物理检测:发现存储并未出现物理故障,涉事硬盘均正常工作
检查操作系统:工作正常中,未发现出错进程,排除因操作系统BUG导致的数据丢失。
分析丢失数据硬盘的文件系统:打开正常,不符合病毒破坏的表现特征,同时经杀毒软件检测无病毒。再仔细分析硬盘的文件系统,发现此文件系统的元文件创建时间为4月24日,表明文件系统的创建时间为4月24日,与数据丢失的时间相吻合。通常这种故障表明文件系统被人为重写了,即分区被格式化了。
检查系统日志:发现系统日志11月28号之前以及当天的系统日志已被清空,审核日志和服务日志却并未清空。通常情况下,此操作应该由人为导致。而格式化分区的操作只记录在系统日志中,这与上述人为破坏的表现相符。
尝试恢复系统日志:仔细分析硬盘底层数据,发现硬盘底层中需要恢复的系统日志已被新的日志记录覆盖,无法恢复。
分析操作系统中的所有分区:发现只有MD3200存储中的两个分区的文件系统被重新写入文件系统了。通常情况下,对两个分区的格式化需要有两个独立的过程,因此这种针对性的操作应该由人为导致。
3、导致该故障的常见方式总结
通过在分区上“右键”,选择“格式化”按钮,可以格式化选中的分区。
在开始菜单“运行”中输入“cmd”命令进入到命令行模式,然后使用FORMAT命令,可以格式化指定分区。
创建一个bat文件,在文件中写入格式化的命令,然后运行bat文件可以格式化指定分区。
因为有两个独立的文件系统数据丢失,故上述的流程可能被执行了多次。应该因人为操作导致。

二、制定虚拟机数据恢复方案

1.对丢失数据的硬盘。做全盘备份,以确保数据的安全性。

2.分析每个硬盘的数据,根据分析的结构重组RAID 阵列。
3.分析重组完的阵列,看能否找到原有的文件索引项及对应的数据区。
4.核对查到的文件索引项是否符合用户数据,并核对相应的数据区有无破坏。

  1. 根据扫描到的文件索引项碎片,将其拼接成一个完整的目录结构。
    6.根据拼接好的目录项去底层恢复对应的数据,并检查数据是否正确。
    7.核对数据没问题后恢复所有数据。

三、实施解决方案

1.备份用户数据

由于数据全部都放Dell M3200存储中,因此只需要恢复Dell M3200存储中的数据即可。将Dell M3200存储中所有的硬盘编号标记后从存储中拔下来交给硬件数据恢复团队检测硬盘是否存在物理故障。经检测没问题后对每块硬盘做全盘镜像,使用数据恢复工具将硬盘中所有扇区镜像到一块备份硬盘中。
如下图:使用专业数据恢复工具备份所有硬盘数据
Hyper-V数据文件丢失解决方案
2、重组磁盘阵列
对所有硬盘进行镜像备份后分析每块硬盘上的数据。发现4块600G硬盘做了一个RAID5,另一块600G硬盘做为数据备份使用。通过对硬盘结构进行详细分析得出该RAID 5磁盘阵列的相关信息,如:条带大小,条带走向等信息。根据这些信息即可重组此RAID。
如下图:使用专业工具重组RAID
Hyper-V数据文件丢失解决方案

如下图:是用专业工具打开硬盘阵列的情况

Hyper-V数据文件丢失解决方案

3、扫描旧的文件索引项
仔细分析硬盘底层数据,发现硬盘底层中还残留着许多以前文件系统的目录项及文件索引。经过仔细核对发现这些文件索引指向的数据都是用户丢失的文件内容。但由于整个硬盘太大,人工去搜索文件索引会很慢,因此编写一个提取文件索引项的小程序,对整个硬盘中所有存在的文件索引项做扫描,提取所有文件的文件索引项。
4、分析扫描到文件索引项
对扫描到的所有文件索引项分析,发现其索引项均不连续并且大多以14K或6K对齐。正常情况下的文件索引项是连续且大小固定,每个文件索引项对应一个文件或目录。扫描出来的这些不连续、不完整的文件索引项是无法正常索引到文件的内容,因此需要对扫描出来的文件索引项做加工处理。在扫描出来的文件索引项中搜索” .VHD”,能找到一个” .VHD”的文件记录。然后将这个片连续的文件索引项提取出来。接着再查看这段提取出来的文件索引项中是否有指向下一段文件索引项的记录或者是H20属性。如果有则根据文件索引项中的特征去匹配下一段文件索引项,如果没有则跳过这段文件索引项。根据以上方法基本能查到大多数的文件索引项片段。而缺失的文件索引项片段有可能被破坏了,但是可以从数据备份盘中去查找缺失的文件索引项片段,因此基本可以搜索到大部分的文件索引项。
如下图:是文件索引项截图
Hyper-V数据文件丢失解决方案

5、将文件索引项组成完整的目录结构
根据上述方法找到所有文件索引项,根据文件索引项的编号将其拼接成整个目录项结构。以下是搜索到的部分文件索引项,由于有部分文件索引项被破坏,因此只能找到大部分文件索引项,但这些文件索引项已经足以拼接成整个目录结构了。
如下图:是扫描到的文件索引项碎片
Hyper-V数据文件丢失解决方案

四、修复文件系统

将重建好的目录结构和现有文件系统中的目录结构进行替换,然后使用数据恢复工具修改部分校验值。再使用数据恢复工具解释这个目录结构即可看到原有丢失的数据。

如下图:是用专业工具解释出来的目录结构
Hyper-V数据文件丢失解决方案
Hyper-V数据文件丢失解决方案

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

如下图:是恢复出来的所有虚拟机数据文件
Hyper-V数据文件丢失解决方案

五、验证所有数据

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

如下图:是虚拟机导入的过程
Hyper-V数据文件丢失解决方案
Hyper-V数据文件丢失解决方案

六、迁移所有数据

在客户验证所有虚拟机数据恢复成功后,将所有数据拷贝至客户服务器中。然后利用导入的方式将虚拟机导入到客户的Hyper-V环境中。

Hyper-V数据文件丢失解决方案

转载于:https://blog.51cto.com/sun510/2108226

你可能感兴趣的文章
org.openqa.selenium.StaleElementReferenceException
查看>>
Android Intent传递对象为什么要序列化?
查看>>
数论之 莫比乌斯函数
查看>>
linux下查找某个文件位置的方法
查看>>
python之MySQL学习——数据操作
查看>>
懒加载——实现原理
查看>>
Harmonic Number (II)
查看>>
长连接、短连接、长轮询和WebSocket
查看>>
day30 模拟ssh远程执行命令
查看>>
做错的题目——给Array附加属性
查看>>
Url.Action取消字符转义
查看>>
JQuery选择器大全
查看>>
Gamma阶段第三次scrum meeting
查看>>
python3之装饰器修复技术@wraps
查看>>
[考试]20150606
查看>>
Javascript_备忘录5
查看>>
Can’t create handler inside thread that has not called Looper.prepare()
查看>>
敏捷开发方法综述
查看>>
Hadoop数据操作系统YARN全解析
查看>>
Django 运行报错 ImportError: No module named 'PIL'
查看>>