【虚拟机数据恢复】误删除VMware虚拟机vmdk文件的数据恢复案例

虚拟机数据恢复环境:
Dell PS系列服务器(用于VMware虚拟主机);
VMware ESXi5.5版本;
虚拟机操作系统:Windows Server 2008;
数据库:SQL Server 2008数据库服务器(管理宏桥和索菲两套应用数据库);
虚拟机磁盘:200G数据盘(精简模式)+ 160G快照数据盘。

虚拟机故障:
意外断电导致某台虚拟机不能正常启动,配置文件中除了磁盘文件以外其他配置文件全部丢失。此时xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还在。找VMware工程师诊断后,尝试新建一个虚拟机来解决故障,但发现ESXi存储空间不足。因此就将故障虚拟机下的xxx-flat.vmdk磁盘文件删除了,这时ESXi存储就有200多G的剩余空间了,VMware工程师重新创建了一个40G的虚拟机,并分配了固定大小的虚拟磁盘。

虚拟机数据恢复过程:


1、备份数据。

在VMware vSphere Client上将挂载的RD220i存储中VMFS卷以正常方式卸载掉,然后将RD220i存储上的VMFS卷通过网线的方式连接到备份服务器上,使用工具将整个VMFS卷以扇区的方式镜像到已准备好的备份空间上,之后的分析和数据恢复操作均在备份的数据上进行。

2、分析故障原因。

仔细分析VMFS卷的底层数据,发现ESXi主机的突然断电导致故障虚拟机目录下的目录项出现破坏,但是这种破坏不会影响虚拟机的重要数据,只是破坏了文件的目录项而已,可以通过人工进行修复。而人为删除某个文件的话,则目录项对应的数据区索引会被清掉,也不会影响删除文件的实际数据。这种情况可根据删除虚拟磁盘文件中的文件系统以及虚拟磁盘中的文件类型在VMFS卷自由空间中进行碎片匹配和合并,最终恢复删除的虚拟磁盘文件。但是在上述的两种情况之下又新建了一台虚拟机,并且分配了虚拟磁盘。经过仔细分析发现分配的40G虚拟磁盘已经全部清零了(在创建虚拟磁盘的时候会选择创建磁盘的类型),也就是说这个新建的虚拟机所占用的磁盘空间全部被清零。 如果新虚拟磁盘占用了删除虚拟机磁盘所释放的空间,那么此部分空间将无法恢复的。
图一:(故障虚拟机的目录项区域)

3、虚拟机数据恢复实施方案一:

a、底层分析。根据VMFS卷的结构以及删除虚拟磁盘的文件系统信息,在底层的自由空间中扫描符合删除虚拟机磁盘的区域,并统计其数量和大小是否符合删除虚拟磁盘的大小。

b、根据虚拟磁盘中的文件系统的信息将扫描到的碎片进行排列组合,结果发现中间有好多碎片缺失,再对这些缺失的碎片进行重新扫描,发现这些碎片确实没有找到。

c、将扫描到的碎片按照虚拟磁盘原本的顺序重组,对于没有找到的碎片暂且留空。

d、利用虚拟磁盘快照程序将重组好的父盘和快照盘进行合并,生成一个新的虚拟磁盘。

e、用专业工具解释虚拟磁盘中的文件系统,因缺失好多数据,文件系统解释过程中有很多报错,提示某些文件损坏。

图二(解释完的文件系统):


    
f、在解析完文件系统后发现没有找到原始的数据库文件,而宏桥备份和索菲备份这两个目录的目录结构正常。但是在尝试将备份导入数据库中时,数据库导入程序提示报错。

图三(宏桥备份和索菲备份的部分目录结构):


 
导入.BAK文件报错信息如下:

 
4、虚拟机数据恢复实施方案二:


a、由于方案一中没有将原始的数据库文件恢复出来,并且其中好多备份文件都无法正常使用。因此采用第二套方案来恢复尚未恢复的数据库文件。

b、根据SQL Server数据库的结构去自由空间中找到数据库的开始位置。在数据库的结构中,数据库的第9个页会记录本数据库的数据库名。因此根据这个特征可以核对此数据库的头部页是否是正在查找的。并且数据库的每个页中都会记录数据库页编号以及文件号,所以根据这些特征编写数据库扫描程序,

然后利用程序去底层扫描所有符合数据库页的数据碎片。

c、将扫描出来的碎片按顺序重组成一个完整MDF文件,再通过MDF校验程序检测整个MDF文件是否完整。在整个校验过程中,只有cl_system3.dbf和erp42_jck.dbf因有部分碎片没有找到外,其余数据库均校验成功。校验完的MDF文件如下:

 

d、cl_system3.dbf和erp42_jck.dbf因底层有很多碎片没有找到(初步怀疑可能被覆盖),因此校验不通过。如下是cl_system3.dbf文件中某个碎片丢失的区域:

 

5、虚拟机数据恢复实施方案三:

a、由于上述两个方案并没有将所有的数据库文件全部恢复出来,还有cl_system3.dbf和erp42_jck.dbf这2个文件因缺失部分页无法正常使用。因此需要采用备份来恢复这两个数据库文件,但是在检查完这两个文件的备份后发现cl_system3.dbf的3月某一天的数据因备份机制故障没有备份出来,而erp42_jck.dbf的3月份备份则全部没有,只有4月份的全部增量备份:

 

由于erp42_jck.dbf文件中只缺失少量的页,因此可以根据缺失的页号在增量备份中查找,再将找到的页补到erp42_jck.dbf文件中,这样可以恢复一部分丢失的数据库页。补完后还是缺失部分页,无法正常使用。但是通过北亚自主开发的数据库解析程序将erp42_jck.dbf文件中比较重要的几十张表成功导出,并成功导入到新建的数据库中。

验证数据:

在本地服务器中搭建和原始环境一样的数据库环境(SQL Server 2008),由管理员通过Teamviewer远程工具连接到验证服务器,并安装上层宏桥应用软件。验证数据库基本没有发现问题,上层应用可以正常运行,数据记录也都基本没有缺失,数据库成功挂载。本次数据恢复完成。



 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VMware虚拟DOS主机,通常都会面临着与宿主机交换数据的问题,而且对于大多数人来说还是一个比较棘手的问题,因为VMware不提供DOS版的VMware tools。而对于网络上提到的“在DOS中配置网络中,然后通过VMware提供的共享文件夹”的方法,事实上对于大多数人来说,也是不太可能完成的任务。因为在Windows满天飞的今天,大多数人对于DOS都不太熟悉,而之所以使用DOS虚拟机也是因为一些特殊的原因,比如运行一些需要DOS支持的软件。而在DOS中配置网络中也不像在Windows中那么简单,抛开DOS的纯字符界面不提,即使一些从DOS年代过来的老鸟,有很多也会被DOS的config.sys和autoexe.bat两个文件搞得昏头转向,再加上DOS不支持即插即用,安装硬件驱动还得手工配置中断、地址等信息,更增加了难度。   通过摸索我这儿找到了一种方法,虽然还有一些缺点,但容易掌握,适合大多数人。 使用本资源所述软件(适合64bit版本),可以轻松的将MS-dos虚拟硬盘文件(*.vmdk)挂载到宿主机(win8, win7, win xp系统)操作系统上,成为宿主机(windows系统)下的一块硬盘,即可读、又可写!读写完毕后卸载虚拟硬盘即可,轻松写意!只要不删除或移动MS-DOS系统文件,对MS-DOS虚拟机没有任何损害,轻松实现文件共享和数据交换! 注意:本软件在挂载虚拟硬盘文件(*.vmdk)时,默认为只读格式,如果需要写入文件,一定在挂载文件时将“只读”的单选框的勾选去掉哦! 搞定!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值