虚拟机“句柄无效”无法开机
2018-11-07
故障现象
某单位的一 台VMware Workstation虚拟机由于服务器出故障,在重新启动之后虚拟机无法启动。再次打开VMware Workstation时,发现虚拟机处理“休眠”状态。
启动虚拟机,提示“句柄无效 无法打开磁盘xxxx或者某一个快照所依赖的磁盘”,无法开机。
图1 挂起的虚拟机
故障排查
打开虚拟机所在的文件夹,看到有多个VMDK(虚拟机硬盘文件)、vmsn(虚拟机快照文件)。
正常挂起的虚拟机会有一个扩展名为.vmss的文件,该文件是“VMware已挂起虚拟机的状态”文件,如图1所示,这是一个挂起的虚拟机的文件截图。
图2 检查虚拟机磁盘文件
但是,即使这个扩展名为.vmss的文件被删除,虚拟机不能从挂起状态恢复,打开虚拟机电源的时候,虚拟机会重新启动,只是会丢失挂起时的状态。而现在虚拟机不能开机,提示“句柄错误……”,这是虚拟机出了问题,需要恢复或修复。
故障解决
经过多次尝试,通过使用DiskGenius克隆虚拟机硬盘、重建虚拟机的方式解决了该问题,下面介绍修复虚拟机的步骤和过程。
1.编辑虚拟机配置文件,检查并记录硬盘文件名称(本示例为“Windows Server 2003 Enterprise Edition-000003.vmdk”),硬盘类型为“SCSI”,硬盘大小为20GB(如图2)。
2.在该服务器上安装并运行DiskGenius
软件。当前服务器共有3块硬盘,大小依次是300GB、1TB、1TB。 在“硬 盘”对话框中选择“打开虚拟硬盘文件”。
3.浏览打开虚拟机文件夹,选 择“Windows Server 2003 Enterprise Edition-000003.vmdk”(因为该虚拟机创建过快照,会有多个VMDK文件,一定要选择正确的文件,这在图2中已经检查过)。
如果能正确加载虚拟机硬盘,并且能浏览、查看到硬盘的文件及文件夹,表示数据没有太大问题,虚拟机可以恢复,此时打开的虚拟机硬盘大小为20GB,能看到文件内容。
4.在“硬盘”菜单中选择“新建虚拟硬盘文件→新建VMware虚拟硬盘文件”(如图3)。VMware虚拟硬盘”对话框中,选择新建VMware虚拟硬盘的保存路径及虚拟硬盘文件名,通常情况下新建一个文件夹,稍后会在此文件夹新建虚拟机,要保证保存虚拟硬盘文件夹有足够的空间。在“容量”文本框中输入新建虚拟硬盘的文件大小,创建的虚拟硬盘大小要大于或等于源虚拟机硬盘的大小。
在本示例中,源虚拟硬盘大小为20GB(如图3中所示),新建虚拟硬盘大小为25GB。在“适配器类型”中选择“SCSI”,这与源虚拟机硬盘类型相同(如图4)。
图3 新建VMware虚拟硬盘文件
图4 创建新虚拟硬盘
5.在“工具”菜单选择“克隆硬盘”。在“选择源硬盘”对话框中选择大小为20GB的源虚拟机硬盘,注意不要选错。在“选择目标硬盘”对话框中选择新建的大小为25GB的空闲硬盘,注意不要选错。在“克隆硬盘”对话框中选择“按文件系统结构原样复制”,单击“开始”按钮。
6.DiskGenius提示目标硬盘各分区上的所有文件将会被覆盖,提示要将“VD0 :Windows Server 2003……(20GB)”复制到“VD1:……(25GB)”吗?在此会有要复制的源和目标硬盘的信息和大小,再次确认检查无误之后单击“确定”按钮。
在提示“是否为目标磁盘建立一个新的磁盘签名”时单击“否”。
7.DiskGenius开始克隆硬盘,直到克隆完成。单击“完成”按钮,退出DiskGenius。
8.打 开VMware Workstation,新建虚拟机。在“欢迎使用新建虚拟机向导”对话框中选择“自定义”。在“选择一个客户机操作系统”对话框中选择“Windows Server 2003企业版”,这与原来的虚拟机操作系统相同。
9.在“命名虚拟机”对话框中,单击“浏览”按钮选择图4使用DiskGenius创建虚拟硬盘的文件夹,然后设置虚拟机名称。此时会提示“指定的位置似乎包含一个现有的虚拟机……”,单击“继续”按钮。在“选择磁盘”对话框中选择“使用一个已存在的虚拟磁盘”。
10.浏览选择图4中创建的虚拟磁盘文件,此时会提示“将现有的虚拟磁盘类型转换为新的格式吗”单击“保持现有格式”按钮。
在“准备创建虚拟机”对话框中,检查新建虚拟机的配置,检查无误之后单击“完成”按钮。
11.创建虚拟机完成后打开虚拟机电源。虚拟机启动并进入系统,检查数据及应用是否正常,至此虚拟机修复完成,使用新创建的虚拟机代替原来的虚拟机即可。