EXSI虚拟机卡死
在 ESXi 主机上关闭虚拟机电源时,会遇到以下症状:
- 无法关闭 ESXi 托管的虚拟机的电源
- 虚拟机无响应,且无法停止或终止
使用 SSH 以 root 身份登录到 ESXi
普通关机
获取所有已注册虚拟机的列表,由其 VMID 和显示名称标识
vim-cmd vmsvc/getallvms
~ # vim-cmd vmsvc/getallvms
Vmid Name File Guest OS Version Annotation
1424 sap-router [datastore1 (4)] sap-router/win2k8x64.vmx winLonghorn64Guest vmx-07
1440 RAS-3.250 [datastore1 (4)] RAS/win2k8x64.vmx winLonghorn64Guest vmx-07
获取虚拟机当前的状态
vim-cmd vmsvc/power.getstate VMID
~ # vim-cmd vmsvc/power.getstate 1440
Retrieved runtime info
Powered on
检查受影响的虚拟机上是否有挂起的任务阻止了机器开机
vim-cmd vmsvc/get.tasklist VMID
~ # vim-cmd vmsvc/get.tasklist 1440
(ManagedObjectReference) [
'vim.Task:haTask-2-vim.VirtualMachine.createSnapshot-182550283',
'vim.Task:haTask-2-vim.VirtualMachine.consolidateDisks-182550274'
]
查看任务的更多信息
vim-cmd vimsvc/task_info task_id
# vim-cmd vimsvc/task_info haTask-2-vim.VirtualMachine.createSnapshot-182550283
·········
任务挂起,需要取消,使用如下命令
vim-cmd vimsvc/task_cancel task_id
使用命令关闭虚拟机
vim-cmd vmsvc/power.shutdown VMID
# 无法关闭时使用以下命令
vim-cmd vmsvc/power.off VMID
至此一般能成功关机,如果无法关机则参考以下:强制关机
强制关机
5.5以上版本
以下命令适合5.5以上版本
- 确认虚拟机运行在哪个esxi主机上,使用SSH登陆到该主机(这个应该是esxi运维最基本的操作了,不会自行百度)
- 通过命令找到虚拟机运行的worldID(和进程ID相似,一台虚拟机有一个唯一的ID)
[root@localhost:~] esxcli vm process list
RH236_3.1
World ID: 68762
Process ID: 0
VMX Cartel ID: 68761
UUID: 56 4d 70 ad 43 f1 5e 25-8a 12 a0 e2 18 2e 38 ec
Display Name: RH236_3.1
Config File: /vmfs/volumes/5cce4874-40c5c88e-a836-003048fc4ffe/RH236_3.1/RH236_3.1.vmx
Server 2016 Vcenter
World ID: 68982
Process ID: 0
VMX Cartel ID: 68981
UUID: 56 4d d5 80 19 b2 b9 a1-ea 0b cd 89 a6 05 e9 48
Display Name: Server 2016 Vcenter
Config File: /vmfs/volumes/5cce65ea-ab8c59fa-82c7-003048fc4ffe/Server 2016 Vcenter/Server 2016 Vcenter.vmx
记下world id ,执行强制关机命令
esxcli vm process kill --type= [soft,hard,force] --world-id= WorldNumber
esxcli vm process kill -t [ soft,hard,force] -w WorldNumber
例如:
esxcli vm process kill --type=force --world-id=68762
esxcli vm process kill -t force -w 68762
-t,--type 执行类型
soft: 执行正常关机,调用vmearetool执行关机
hard: 执行立即关机
force:强制断电关机
-w,--world-id
这里指定虚拟机的World ID号了
5.5以下版本
- 运行以下命令获取正在运行的虚拟机的列表(虚拟机由 World ID、UUID、显示名称和 .vmx 配置文件的路径标识):
- 运行以下命令关闭此列表中某个虚拟机的电源:
esxcli vms vm list
esxcli vms vm kill --type= [soft,hard,force] --world-id= WorldNumber
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)