虚拟机文件丢失,通过xx-flat.vmdk和xx-delta.vmdk恢复方法
环境:使用VMware vSphere搭建的虚拟机
由于虚拟机的名字与其所对应的虚拟机文件名不一致(注:因为更改过虚拟机名,但是虚拟机文件名没变,所以不一致)而误删除了虚拟机的文件,虚拟机一下子变成了这个样子:这可是我们公司的一台服务器, 这下可闹大了,浏览数据文件,只剩下两个文件: 这可咋办,只有百度谷歌各种查了, 最后总算是查到了可以补救的办法。
其中:
xx-000002-delta.vmdk是快照磁盘数据文件
xx-flat.vmdk是磁盘数据文件
解释一下这两个文件,可以帮助我们解决问题:
-flat.vmdk文件,这是个默认的大型虚拟磁盘数据文件,创建于你添加虚拟硬盘驱动到虚拟机时,而不是RDM。当使用厚磁盘时,这个文件的大小相当于你创建虚拟硬盘驱动时所指定的大小。
-delta.vmdk文件,这些虚拟磁盘数据文件只用于创建虚拟机快照时。当创建了快照,对原始flat.vmdk的所有写入都停止,并变成只读;然后这些对虚拟磁盘的更改将写入delta文件。这些文件的初始大小是16MB,然后随着对虚拟机虚拟硬盘的更改需要而以16MB的速度增长。因为这些文件是虚拟磁盘所作更改的位图,一个单一delta.vmdk文件不能超过原始flat.vmdk文件的大小。每为虚拟机创建一个快照就会生成一个delta文件,并且它们的文件名以数字递增(如myvm-000001-delta.vmdk和myvm-000002-delta.vmdk)。当快照融合到原始–flat.vmdk文件后再删除时,这些文件将自动删除。
综上所述,可以确定我们的数据都还在,这个实在是太幸运了,下边就开始我们的恢复之旅吧,其实很简单的
解决方法:
分两步走, 首先恢复原始的数据磁盘:-flat.vmdk,先让虚拟机启动起来,等这一项恢复成功,虚拟机即可起来了,但是数据不全,因为他是快照以前的数据,需要再接着恢复快照数据文件,数据就全了。
A.使用xx-flat.vmdk文件恢复虚拟机:
1. 新建一虚拟机,不要创建硬盘
2. 用ssh的方式登录host,查找xx-flat.vmdk文件所在位置及目录,
3. 在新虚拟机目录下创建新xxx-flat.vmdk 文件,大小要和xx-flat.vmdk文件一样大,
用ls -la查看原xx-flat.vmdk文件大小,
用vmkfstools -c 文件大小 -a lsilogic xxx-flat.vmdk 来创建新磁盘文件
4. 用原文件xx-flat.vmdk覆盖新建的xxx-flat.vmdk(注意一定是-flat.vmdk),使用mv命令
5. 将这个磁盘文件添加到新建的虚拟机中;
6. 完成后开启虚拟机就可以了
B.使用xx-000002-delta.vmdk文件恢复快照:
1.此时系统已经起来,我们再执行一个快照。
2. 用源文件xx-000002-delta.vmdk,覆盖掉新建的快照数据文件
3.恢复虚拟机快照,快照正常恢复,进入系统,数据全部都在,一个不少,哈哈,大功告成