如何恢复删除了虚拟机的文件?

发布网友 发布时间:2022-04-23 01:52

我来回答

5个回答

懂视网 时间:2022-04-10 08:34

背景概述

   由于服务器突然断电,造成我公司Xen Server服务器中一台VPS(即Xen Server虚拟机)不可用,虚拟磁盘文件丢失。硬件环境是Dell 720服务器配戴一张H710P的RAID卡,由4块希捷2T STAT硬盘组成的RAID 10,上层环境是Xen Server 6.2版本操作系统,虚拟机是Windows Server 2003系统,10G系统盘 + 5G数据盘两个虚拟机磁盘,上层是Web服务器(ASP + SQL 2005的网站架构)。通过电话联系到北亚数据恢复中心进行恢复,同时派两名同事驻场。

 

分析故障原因

  我们的数据盘首先被连接到北亚恢复环境服务器上,然后超过硬盘总容量的空间将数据盘以磁盘底层扇区的方式镜像到备份空间上。

  由于Xen Server服务器中虚拟机的磁盘都是以LVM的结构存放的,(即每个虚拟机的虚拟磁盘都是一个LV,并且虚拟磁盘的模式为精简模式。)LVM的相关信息在Xen Server中都有记载,查看“/etc/lvm/backup/frombtye.com “下LVM的相关信息发现并没有存在损坏的虚拟磁盘信息,因此可以断定LVM的信息已经被更新。接着分析底层看能否找到未被更新的LVM信息,果不其然在底层发现了还未更新的LVM信息。

图1:

技术分享 

  根据未被更新的LVM信息找到了虚拟磁盘的数据区域,但遗憾的是该区域的数据已被破坏。分析后发现造成虚拟机不可用的最终原因是因为虚拟机的虚拟磁盘被破坏,从而导致虚拟机中的操作系统和数据丢失。而导致这种情况的发生很有可能是虚拟机遭遇网络攻击或hack入侵后留下恶意程序造成的。仔细核对这片区域后发现,虽然该区域有很多数据被破坏了,但还是发现了很多数据库的页碎片。因此可以尝试将许多数据库的页碎片拼成一个可用的数据库。

 

处理办法:

1、实施方案一

  按照方案一的思路进行底层分析,根据RAR压缩包的结构可以找到很多压缩包的数据开始位置,而RAR压缩包文件的第一个扇区中会记录此RAR的文件名。因此根据我们提供的备份数据库的压缩包文件名和目前找到的压缩包位置的文件名相匹配,即可找到备份数据库压缩包的开始位置。找到压缩包的位置后仔细分析这片区域的数据,然后将此区域的数据恢复出来重命名为一个RAR格式的压缩文件。然后尝试解压此压缩包,发现解压报错。

图2:

技术分享 

  解压报错的原因是有部分数据被破坏了。接着开始尝试使用RAR的修复工具看能否忽略错误解压部分数据,结果修复完成之后解压的数据库只有网站的部分代码,并没有数据库的备份文件。因此可以判断数据的备份文件在RAR压缩包中是损坏的。

图3:

技术分享

2、实施方案二

  由于方案一并没有将数据库恢复出来,所以又采取了另一方案。根据SQL Server数据库的结构去底层分析数据库的开始位置,在数据库的结构中,第9个页会记录本数据库的数据库名。因此在提供了数据库的名称之后,再分析底层找到此数据库的开始位置。因为在数据库的每个页中都会记录数据库页编号以及文件号,所以可以根据这些特征编写程序去底层扫描符合数据库页的数据。

然后将扫描出来的碎片按顺序重组成一个完整MDF文件,再通过MDF校验程序检测整个MDF文件是否完整。

图4:

 技术分享

3、验证数据

  检测没问题之后再搭建数据库环境,将重组后的数据库附加到搭建好的数据库环境中。然后查询相关表数据是否正常,查询最新数据是否存在。

图5:

技术分享

 4、结论

  由于数据库需要结合网站代码才能更好的验证数据库的完整性。我们又开发商处拿到了网站代码搭建好了环境,然后将恢复好的数据库发送给我们验证,一切正常,通过拼数据库碎片的方式成功将数据库恢复完成,整个数据恢复成功。

 


本文出自 “SUN” 博客,请务必保留此出处http://sun510.blog.51cto.com/90486/1956753

通过拼数据库碎片的方式恢复虚拟机磁盘文件丢失问题

标签:数据恢复 虚拟机

热心网友 时间:2022-04-10 05:42

解决方法一:
1.在虚拟机上添加一个和原来硬盘大小一致、路径一致的虚拟硬盘AA
2.将AA.VMDK文件下载下来
3.用记事本打开这个文件
4.将文件中的虚拟快照文件名AA-flat.vmdk文件修改为目录中xx-flat.vmdk,文件名修改xx.vmdk
5.上传xx.vmdk
6.这时查看硬盘发觉大小识别啦,重新启动OK

解决方法二:
1. 新建一虚拟机,不要创建硬盘
2. 用ssh的方式登录host,查找xx-flat.vmdk文件所在位置及目录,
3. 在新虚拟机目录下创建新xxx.vmdk文件,大小要和xx-flat.vmdk文件一样大,用ls -la查看xx-flat.vmdk文件大小,用vmkfstools -c 文件大小 -a lsilogic xxx.vmdk 来创建新磁盘文件
4. 用原文件xx-flat.vmdk覆盖新建的xxx-flat.vmdk(注意一定是-flat.vmdk),使用mv命令
5. 将这个磁盘文件添加到新建的虚拟机中;
6. 完成后开启虚拟机就可以了

热心网友 时间:2022-04-10 07:00

虚拟机里的文件丢失了可以用数据恢复软件进行恢复,不过选择的软件需要支持虚拟磁盘的数据恢复。在电脑中运行软件后,可以直接加载需要磁盘,然后就可以扫描需要磁盘,然后将丢失的文件找回来,这样就不必运行虚拟机,操作比较简单也比较安全。

热心网友 时间:2022-04-10 08:35

付费内容限时免费查看回答解决方法:

1、备份数据

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

2、分析故障原因

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

(是故障虚拟机的目录项区域)

3、实施过程一

按照方向一的思路进行底层分析,根据VMFS卷的结构以及删除虚拟磁盘的文件系统信息,在底层的自由空间中扫描符合删除虚拟机磁盘的区域,并统计其数量和大小是否符合删除虚拟磁盘的大小。再根据虚拟磁盘中的文件系统的信息将这些扫描到的碎片进行排列组合,结果发现中间有好多碎片缺失,仔细再对这些缺失的碎片进行重新扫描,发现这些碎片确实没有找到。接着将扫描到的碎片按照虚拟磁盘原本的顺序重组,对于没有找到的碎片暂且留空。接下来利用虚拟磁盘快照程序将重组好的父盘和快照盘进行合并,生成一个新的虚拟磁盘。再用专业工具解释虚拟磁盘中的文件系统,因缺失好多数据,文件系统解释过程中报好多错误,提示某些文件损坏。

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

4、实施过程二

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

热心网友 时间:2022-04-10 10:26

下载一个软件叫EasyRecovery。可以还原本地磁盘上刚删除的文件。注意要还原的话,该磁盘不能写入数据,否则就很难了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com