Hyper-V虚拟机故障导致数据文件丢失的数据恢复全过程
简介:
由于MD3200存储中虚拟机的数据文件丢失,导致整个Hyper-V服务瘫痪,虚拟机无法使用,故障环境为Windows Server 2012服务器,系统中部署了Hyper-V虚拟机环境,虚拟机的硬盘文件和配置文件放在朝阳区某托管中心托管的DELL MD3200存储中(注:硬盘600G*4,4T*1)。MD3200存储是由4块600G硬盘组成的阵列,用作存储虚拟机的数据文件。单块4T硬盘用作虚拟机数据文件的备份。
故障:
由于MD3200存储中虚拟机的数据文件丢失,导致整个Hyper-V服务瘫痪,虚拟机无法使用。以如下流程进行数据检测:
1、对MD3200存储服务器进行物理检测,发现存储并未出现物理故障,涉事硬盘均正常工作
2、检查操作系统:工作正常中,未发现出错进程,排除因操作系统BUG导致的数据丢失。
3、分析丢失数据硬盘的文件系统:打开正常,不符合病毒破坏的表现特征,同时经杀毒软件检测无病毒。再仔细分析硬盘的文件系统,发现此文件系统的元文件创建时间为11月28日,表明文件系统的创建时间为11月28日,与数据丢失的时间相吻合。通常这种故障表明:文件系统被人为重写了,即分区被格式化了。
4、检查系统日志:发现系统日志11月28号之前以及当天的系统日志已被清空,审核日志和服务日志却并未清空。通常情况下,此操作应该由人为导致。而格式化分区的操作只记录在系统日志中,这与上述人为破坏的表现相符。
5、尝试恢复系统日志:仔细分析硬盘底层数据,发现硬盘底层中需要恢复的系统日志已被新的日志记录覆盖,无法恢复。
6、分析操作系统中的所有分区:发现只有MD3200存储中的两个分区的文件系统被重新写入文件系统了。通常情况下,对两个分区的格式化需要有两个独立的过程,因此这种针对性的操作应该由人为导致。
解决方案
1、备份用户数据
由于数据全部都放Dell M3200存储中,因此只需要恢复Dell M3200存储中的数据即可。将Dell M3200存储中所有的硬盘标上编号,然后后从存储中拔下来交给硬件部门检测硬盘是否存在物理故障。经检测没问题后对每块硬盘做全盘镜像,使用专用工具(Winhex)将硬盘中所有扇区镜像到一块备份硬盘中。
如下图1.:使用专业工具备份所有硬盘数据

2、重组磁盘阵列
镜像完所RAID 5的相关信息,如:条带大小,条带走向等信息。根据这些信息即可重组有硬盘后,分析每块硬盘上的数据。分析后发现4块600G硬盘做了一个RAID5,另一块4T硬盘是做为数据备份使用。仔细分析4块600G硬盘中的数据结构,可以得出这个此RAID。
如下图2.:使用专业工具重组RAID

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

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

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

6:修复文件系统
将重建好的目录结构和现有文件系统中的目录结构进行替换,然后使用专业工具修改部分校验值。再使用专业的工具解释这个目录结构即可看到原有丢失的数据了。
如下图6.:是用专业工具解释出来的目录结构

如下图7

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

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

如下图10.

8、迁移所有数据
在客户验证所有虚拟机没问题后,将所有数据拷贝至客户服务器中。然后利用导入的方式将虚拟机导入到客户的Hyper-V环境中,需要以下面的方式导入虚拟机,导入后没有报错,尝试启动所有虚拟机,所有虚拟机启动都没问题



Hyper-V虚拟机故障导致数据文件丢失的数据恢复全过程的更多相关文章
- Oracle数据库案例整理-Oracle系统执行时故障-断电导致数据文件状态变为RECOVER
1.1 现象描写叙述异常断电.数据库数据文件的状态由ONLINE变为RECOVER. 系统显演示样例如以下信息:SQL>selectfile_name,tablespace_name, ...
- Oracle数据文件丢失,数据库如何打开或恢复
(一)如果没有备份只能是删除这个数据文件了,会导致相应的数据丢失.SQL>startup mount--ARCHIVELOG模式命令SQL>Alter database datafile ...
- Oracle 不小心删除undo数据文件以及磁盘空间不足导致不能登录的解决办法
在一次测试中,由于导入的数据量过大导致事务一直提交失败因为磁盘空间不够用了,一检查发现是undo表空间不够用,于是重新创建了一个表空间,准备把之前的undo表空间删除,删除时却发现一直删不掉,因为它一 ...
- RMAN数据库恢复 之归档模式有(无)备份-丢失数据文件的恢复
1.归档模式有备份,丢失数据文件的恢复归档模式有备份,不管丢失什么数据文件,直接在RMAN下RESTOER--->RECOVER--->OPEN即可. RMAN> STARUP MO ...
- oracle(数据文件)
--创建数据文件 create tablespace--创建表空间同时创建数据文件 create temporary tablespace --创建临时表空间的同时创建临时数据文件 alter tab ...
- 【基础】Oracle 表空间和数据文件
多个表空间的优势:1.能够将数据字典与用户数据分离出来,避免由于字典对象和用户对象保存在同一个数据文件中而产生的I/O冲突2.能够将回退数据与用户数据分离出来,避免由于硬盘损坏而导致永久性的数据丢失3 ...
- oracle 普通数据文件备份与恢复
普通数据文件指:非system表空间.undo_tablespace表空间.临时表空间和只读表空间的数据文件.它们损坏导致用户数据不能访问,不会导致db自身异常.实例崩溃.数据库不恢复就无法启动的情况 ...
- 揭秘!containerd 镜像文件丢失问题,竟是镜像生成惹得祸
导语 作者李志宇,腾讯云后台开发工程师,日常负责集群节点和运行时相关的工作,熟悉 containerd.docker.runc 等运行时组件.近期在为某位客户提供技术支持过程中,遇到了 contain ...
- RMAN数据库恢复之恢复表空间和数据文件
执行表空间或数据文件恢复时,数据库既可以是MOUNT状态,也可以是OPEN状态.1.恢复表空间在执行恢复之前,如果被操作的表空间未处理OFFLINE状态,必须首先通过ALTER TABLESPACE… ...
随机推荐
- 【BZOJ2337】Xor和路径(高斯消元)
[BZOJ2337]Xor和路径(高斯消元) 题面 BZOJ 题解 我应该多学点套路: 对于xor之类的位运算,要想到每一位拆开算贡献 所以,对于每一位拆开来看 好了,既然是按位来算 我们就只需要计算 ...
- [Luogu2852][USACO06DEC]牛奶模式Milk Patterns
Luogu 一句话题意 给出一个串,求至少出现了\(K\)次的子串的最长长度. sol 对这个串求后缀数组. 二分最长长度. 如果有\(K\)个不同后缀他们两两的\(lcp\)都\(>=mid\ ...
- [Luogu3676]小清新数据结构题
题面戳我 题意:给一棵树,树上有点权,每次操作为修改一个点的点权,或者是询问以某个点为根时,每棵子树(以每个点为根,就有n棵子树)点权和的平方和. \(n\le2*10^5\),保证答案在long l ...
- Poj3683:Priest John's Busiest Day
题意 n对夫妻要结婚,第i对夫妻结婚的婚礼持续时间为[Si, Ti],他们会举行一个仪式,仪式时间为Di,这个仪式只能举行在开头或者结尾举行,要么[Si, Si+Di],要么[Ti-Di, Ti],然 ...
- which命令实战及原理详解-PATH实战配置
Which查找命令所在的路径,搜索范围来自全局环境PATH变量对应的路径. 其他方法: find / -type f -name “useradd” whereis -b useradd PATH的路 ...
- 关于Mybatis的java.lang.UnsupportedOperationException异常处理
圈住的那行报java.lang.UnsupportedOperationException这个错,这个错的意思是:不支持的操作异常 异常我就不贴了,直接上解决办法吧. 可能我的异常跟大家的不太一样,报 ...
- Python可视化库-Matplotlib使用总结
在做完数据分析后,有时候需要将分析结果一目了然地展示出来,此时便离不开Python可视化工具,Matplotlib是Python中的一个2D绘图工具,是另外一个绘图工具seaborn的基础包 先总结下 ...
- 8Manage:“消费升级”缘何剑指企业一体化管理变革?
[导读]提到消费升级,大家都会想起美学.个性化.品质等标签,近年来经济发展所伴随的消费需求转型在逐渐凸显,开始从粗狂型到精细化,如:关注产品性价比.服务个性化等内容.企业在消费升级下应该如何应对呢?8 ...
- 创建Maven项目时提示web.xml is missing and <failOnMissingWebXml> is set to true错误解决方案
1. 右键点击Deployment Descriptor 2. 选择Generate Deployment Descriptor Stub P.S.下面顺便提一个小技巧: 创建动态web时先右键项目, ...
- Entity Framework Core 之数据库迁移
前言 最近打算用.NET Core写一份开源的简易CMS系统,来练练手 所以又去深入研究了一下Entity Framework Core 发现其实有些细节园子里还是很少讲到. 特意整理了几个细节. 正 ...