一、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存储中所有的硬盘编号标记后从存储中拔下来交给硬件数据恢复团队检测硬盘是否存在物理故障。经检测没问题后对每块硬盘做全盘镜像,使用数据恢复工具将硬盘中所有扇区镜像到一块备份硬盘中。
如下图:使用专业数据恢复工具备份所有硬盘数据


2、重组磁盘阵列

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

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


3、扫描旧的文件索引项

仔细分析硬盘底层数据,发现硬盘底层中还残留着许多以前文件系统的目录项及文件索引。经过仔细核对发现这些文件索引指向的数据都是用户丢失的文件内容。但由于整个硬盘太大,人工去搜索文件索引会很慢,因此编写一个提取文件索引项的小程序,对整个硬盘中所有存在的文件索引项做扫描,提取所有文件的文件索引项。

4、分析扫描到文件索引项

对扫描到的所有文件索引项分析,发现其索引项均不连续并且大多以14K或6K对齐。正常情况下的文件索引项是连续且大小固定,每个文件索引项对应一个文件或目录。扫描出来的这些不连续、不完整的文件索引项是无法正常索引到文件的内容,因此需要对扫描出来的文件索引项做加工处理。在扫描出来的文件索引项中搜索” .VHD”,能找到一个” .VHD”的文件记录。然后将这个片连续的文件索引项提取出来。接着再查看这段提取出来的文件索引项中是否有指向下一段文件索引项的记录或者是H20属性。如果有则根据文件索引项中的特征去匹配下一段文件索引项,如果没有则跳过这段文件索引项。根据以上方法基本能查到大多数的文件索引项片段。而缺失的文件索引项片段有可能被破坏了,但是可以从数据备份盘中去查找缺失的文件索引项片段,因此基本可以搜索到大部分的文件索引项。
如下图:是文件索引项截图


5、将文件索引项组成完整的目录结构

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

四、修复文件系统

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

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

五、验证所有数据

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

六、迁移所有数据

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

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

Hyper-V数据文件丢失解决方案(有图有真相)相关推荐

  1. oracle 表空间的数据文件丢失或损坏的恢复

    表空间的数据文件丢失或损坏的恢复 select ts#,file#,name from v$datafile; 查看表空间和编号 删除一个表空间文件 此时关闭数据库 再开启时发现系统提醒缺少文件 使用 ...

  2. undo数据文件丢失的恢复

    undo数据文件丢失的恢复试验 从自己的错误中学到知识是聪明,从别人的错误中学到知识是智慧 坛子里看到一个帖子,讨论的是undo表空间对应的数据文件丢失之后的恢复问题,为了加深印象,自己模拟一下: 1 ...

  3. 控制文件和数据文件丢失,有全备份恢复数据库的方法

    控制文件和数据文件丢失,有全备份恢复数据库的方法 控制文件丢失,即使有全备份也难恢复数据库,因为备份信息是存在于控制文件的. 刚看论坛精华帖,Feng讲的dbms_backup_restore包还是很 ...

  4. oracle 恢复学习 案例1 一个数据文件丢失 完全恢复数据库

    案例1 数据文件user01丢失 恢复背景: 数据库打开处于归档模式,首先备份数据文件user01.dbf,然后删除user01.dbf 关闭数据库 启动数据库 SQL> startup ORA ...

  5. oracle转trs,ORACLE常规恢复之应用数据文件丢失

    数据文件在instance运行时丢失后,DB在做system checkpoint时,就会立刻导致实例terminal 增量checkpoint如果要此数据文件的头时,也会导致实例terminal 数 ...

  6. 数据文件丢失找那个数据恢复公司靠谱呢

    在我们的手机还有很多移动设备当中,3gp格式的文件可是很常见的.3GP是一种3G流媒体的视频编码格式,使用户能够发送大量的数据到移动电话网络,从而明确传输大型文件,如音频,视频和数据网络的手机.3GP ...

  7. Hive Lateral View explode字段值为空时,导致数据异常丢失解决方案

    1.问题描述 日常工作中,我们经常会用Lateral View 结合explode把非结构化数据转化成结构化数据,但是该方法对应explode的内容是有非null限制的,否则就有可能造成数据缺失. 现 ...

  8. dll文件丢失解决方案

    前言 在windows系统升级或者重装后出现msvcp110.dll,msvcp100.dll等dll文件缺失的情况很常见,这样会导致很多程序运行时报错游戏打不开,接下来就把解决方案列举一下 dll文 ...

  9. FBX文件导入Unity3d贴图文件丢失解决方案

    在将fbx文件导入进Unity3d时,出现空白无贴图. 具体解决方案如下: 在导入模型文件时,将贴图和模型分开导入,先将贴图导入进对应的文件夹,再将模型导入,导入后的模型就会自动对应贴图. fbx模型 ...

最新文章

  1. Overlapping Rectangles 离散+线段树 +扫描线
  2. python基础语法 第0关print-徐州鼓楼高校邦数据科学通识课【Python基础语法】答案...
  3. php访问mysql工具类
  4. Android Treble架构解析
  5. 通用权限管理系统组件 (GPM - General Permissions Manager) 给信息管理系统加一个初始化的功能,调用存储过程...
  6. CentOS7.2安装Python3.6.3
  7. java pinyin4j 首字母_通讯录之按汉字首字母排序 --java--pinyin4J
  8. 解压tar.xz文件
  9. linux 写地址 hex,你怎么理解Hex文件? (扩展地址记录)
  10. java mybatis狂神说sql_Mybatis框架下SQL注入审计分析
  11. java将分布式打包_java版 电子商务Springcloud分布式微服务多用户商城系统-Springboot项目打包...
  12. 《高质量程序设计指南:C++/C语言》 林锐
  13. Lookup 组件用法全解
  14. 《手把手陪您学Python》24——集合
  15. 计算机计算公式单组数据求乘法,excel怎么算乘法
  16. 激励的最佳状态,是让员工在最需要激励的时候,获得最大的心理满足
  17. Java生成随机数字和字母组合10位数
  18. 基于深度学习的大脑性别差异分析
  19. 毕业设计-基于微信小程序的智慧校园系统
  20. 10.区块链系列之hardhat部署抵押赎回Fund合约

热门文章

  1. Android 第七课 4种基本布局之FrameLayout和百分比布局
  2. uitest_您在Swift中的第一个UITest
  3. PaperWeekly 第28期 | 图像语义分割之特征整合和结构预测
  4. linux LyX中文编辑环境安装配置指南-TeX可视化工具
  5. Asp.net mvc 知多少(一)
  6. 完美完全卸载Oracle 11g数据库
  7. [它山之石] 一件事情,假设你不能说清楚,十有八九你就做不好
  8. [转]Linux中如何自动启动服务
  9. decode 大于比较 小于_6 燃气输配系统6.3 压力不大于1.6Mpa的室外燃气管道城镇燃气设计规范 GB500282006(2020修订版)...
  10. 打印图片的属性和实现另存图片功能以及使用numpy