在linux系统中安装了vmware的workstation。配置了几个虚拟机,通常虚拟机文件默认位置为当前用户的家目录下的vmware目录中。
如果不小心删除了整体的vmware目录,应该怎么办。
首先,我们要冷静。
然后我们要确定虚拟机是否还在运行。(在内存中运行着)
再然后我们要把虚拟机文件从运行文件中读取出来
最后,我们要重做虚拟机vmdk,然后启动。
通常情况下windows的虚拟机可能更好的恢复,但是linux系统由于会检测硬件变化,所以恢复起来没那么容易。
本文讲解一下如何恢复windows虚拟机。
首先,你要确定你的虚拟机文件的确被删除了。确定方法。
1、ps命令查看下你的虚拟机文件存放的位置(虚拟机必须还在运行中),命令为ps -ef|grep vmware
这时候我们能看到还在运行中的虚拟机。我们这里面有两个,主要看。vmx结尾的即可
路径分别为/mnt/vmware/Svn/Svn.vmx及/library/vmware/Svn/Svn.vmx
2、确定我们要恢复的虚拟机,通常每个虚拟机都会取不同的名字,不像当前截图中那样就一个名字。
确定我们要恢复的虚拟机名字后。例如我们要恢复/mnt这个目录下的虚拟机。他的进程ID为36908
我们进入/proc/36908/fd目录,找到delete项,命令为ll -a|grep delete
这些deleted项就是我们需要恢复的内容,其中有用的内容为vmdk结尾的文件。
新建目录/restore,命令 mkdir /restore
然后逐条将这些vmdk恢复到这个目录中,恢复方法很简单,我们只要拷贝vmdk文件前面对应的数字即可。
例如我要恢复Svn-s001.vmdk,我只要cp 109 /restore/Svn-S001.vmdk
然后依次将所有的vmdk恢复完毕。
检查/restore目录是否有全部的vmdk文件,如果数量和大小都没有问题,那么恭喜你,你已经成功了一半
3、重构vmdk和虚拟机
有了vmdk文件还不够,我们还要将它导入到虚拟机中并启动起来,这样才算真正的恢复了一个虚拟机。
如果你的条件满足的话,我建议你将这些文件下载下来,在本地进行恢复操作。
打开本地vmware workstation控制台。
新建虚拟机,其他无所谓,硬盘一定要和原来的硬盘大小一致。
如果你不记得原来的硬盘大小,这可能会有一些麻烦。不过有一个简单的方法,但是不通用。
那就是计算vmdk文件的数量。
像我要恢复的这个。
一共有26个vmdk文件,每个文件4G大小(默认的最大文件),那么这个虚拟机按照我分配空间的原则,26*4=104.取整就是100G。
新建一个100G的虚拟机,创建时候的位置一定要记好。
另外创建的虚拟机的位置和名字一定要和原来的匹配。
例如你导出的虚拟机文件为Svn-s***.vmdk,那么你重建的虚拟机的名字就应该是Svn就是-s前面的。
就是这样。创建好之后,我们不要启动虚拟机,一定不要启动。。
找到新创建的虚拟机文件夹,删除Svn-s*.vmdk,如果你的计算没错,一定也是26个。
将你备份出来的vmdk文件拷贝到这个目录中。
启动虚拟机。。
恭喜你,你在等待一段时间后,应该可以看到启动界面。
关于如何恢复linux的虚拟机,我们会在以后的文章中描述。