如何在Vmware Workstation出错退出后恢复连接在后台运行的虚拟机

在使用Vmware Workstation虚拟机的时候,偶尔Vmware Workstation窗口控制台程序会出现0x000000c5错误,然后被windows操作系统关闭而退出的情况(比如有时候就是在任务栏进行任务切换的过程中,在调用ntdll.dll的时候出现c5错误,很多情况下这个Access Violation错误是和内存分配方面的问题有关系),这时候打开任务管理器一看,会发现已经启动的所有虚拟机进程 (vmware-vmx.exe)还悉数在内存中运行着,而且虚拟机功能一切正常……且慢,暂时不要高兴,可是现在如何再从新连接这些已经在后台运行的虚拟机呢,不然就没办法正常的操作和使用虚拟系统。

这时最简单的办法就是再从新启动刚才被系统关闭的Vmware Workstation窗口控制台程序,可是再去点启动虚拟机的时候,Workstation会通知你“another instance of this VM is running”(内存中已经有一个VM实例在运行了),并且返回一个Internal error,看来此路不通。

于是google之,发现Vmware自带的VM Tray托盘工具有连接在后台运行的虚拟机的功能,于是赶紧启动Tray试试,果然启动托盘后显示出当前有3个虚拟机进程在运行,右键菜单中选“Open All Background VMs”(打开所有后台运行的虚拟机),哎~~怎么还是和刚才的情况一样,还是出现Internal error,Workstation窗口控制台还是无法连接运行中的VM,难道只有在任务管理器中Kill虚拟机进程这一种办法了吗?这样虚拟机的运行数据就会全部丢失了,还是尽量不用为好。

再仔细Google,功夫不负有心人~~还是在Vmware官方网站的论坛中找到了相关的帖子(这里:http://communities.vmware.com/thread/170830?start=0&tstart=0),Vmware技术支持给出的说明是暂时还没有直接连接后台运行的虚拟机的方法,但是给出了一个不用硬关机的解决方法,如下:

利用vmware自带的一个命令行工具vmrun(是专门用于和虚拟机进行交互的命令行工具,也可以连接远程虚拟机,可以启动、关闭或者suspend挂起 任何一台VM,当然还有其他很多功能,详细的可以在命令行输入vmrun /?查看),其文件路径位于Vmware workstation的安装目录下。在现在的情况下,只要使用vmrun的suspend功能就可以了,语法为:vmrun suspend “需要挂起的虚拟机vmx配置文件的完整路径“(比 如C:\vm\myvm.vmx),这样就可以把内存中在后台运行的虚拟机暂时挂起。然后再从新启动Workstation窗口控制台,会看到这些虚拟机 都处于挂起suspend状态,再选Resume VM恢复虚拟机运行,这样虚拟机就可以保留Suspend时候的完整运行状态(虚拟机内存和硬盘中的数据都不会丢失),是一个比较圆满的从新连接后台虚拟机的解决方法。(以上均在windows XP SP3宿主系统和Vmware Workstation 6.5 中测试通过)

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注