一次虚拟机文件锁定无法开机的故障处理

在清单中,虚拟机名称无法显示,显示为/vmfs/volumes/balabala/vm.vmx(inaccessable),打不开电源。

然后右键选项也没东西,操作不了。

现象

  • 打开虚拟机电源失败。
  • 打开虚拟机电源一直进行中。
  • 虚拟机报告 vCenter Server 和 ESXi/ESX 主机控制台的电源状态存在冲突。
  • 数据存储中虚拟机目录下有.vmx~和.vmx.lck锁定文件而且.vmx无法注册到虚拟机。

找到锁定并将其移除

虚拟机可以在主机之间移动,正因如此,虚拟机当前在其中注册的主机可能不是保持文件锁定的主机。必须由拥有锁定的 ESX/ESXi 主机来释放锁定。
那就把虚拟机的进程干掉,释放文件上的锁定。
对于 ESXi 5.x 和更高版本,可以在本地或远程使用 esxcli 命令行实用程序来列出当前正在主机上运行的虚拟机列表。

使用以下命令列出所有正在运行的虚拟机,包括虚拟机的域 ID、Cartel ID、显示名称和 .vmx 配置文件路径:

# esxcli vm process list

您会看到类似以下内容的输出:

VirtualMachineName
World ID:1268395
Process ID:0
VMX Cartel ID:1264298
UUID:ab cd ef ...
Display Name:VirtualMachineName
Config File:/path/VirtualMachineName.vmx

这里列出了两个域。第一个域编号(在此示例中为 1268395)为 vCPU 0 的虚拟机监控器 (VMM)。第二个域编号(在此示例中为 1264298)为虚拟机 Cartel ID。

如果相关虚拟机仍在 ESXi 5.x 及更高版本主机上运行,请终止该虚拟机。这会释放文件上的锁定。要终止虚拟机,请运行以下命令:

# esxcli vm process kill --type=soft --world-id=1268395


以上为官方KB的方法,确实找到了虚拟机进程,但是上面的命令没干掉它!
执行--type=hard也没干掉!
最后使用了--type=force干掉了,然后把数据存储中的.vmx~和.vmx.lck文件删掉(注意不是.vmx,别删错了!),重新注册到清单下就能开机啦!
# esxcli vm process kill --type=force --world-id=1268395

转载请注明原作者,如果你觉得文章对你有帮助或启发,也可以来请我喝咖啡

点赞

  1. daxi说道:

    学无止境,认真拜读!

发表评论

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