如果从 vSphere Web Client 或 Host Client 关闭虚拟机电源不起作用,我们可以尝试用命令行对虚拟机进行关机。
-
无法关闭 ESXi 主机上的虚拟机电源。
-
虚拟机无响应,无法强制关闭或停止。
-
主机无法访问虚拟机或解锁文件。
-
关闭虚拟机后,vCenter Server 会将虚拟机显示为正在运行。
-
没有迹象表明虚拟机已关闭。
-
Edit Settings 选项对虚拟机不可用。
-
尝试对 VM 执行作时,会输出以下一个或多个错误:
-
Soap error 999. The operation is not allowed in current state The attempted operation cannot be performed in the current state (Powered Off) The request refers to an object that no longer exists or has never existed
二、方法适用的环境
VMware vSphere ESXi 6.5 VMware vSphere ESXi 6.7 VMware vSphere ESXi 7.0 VMware vSphere ESXi 8.0
三、Esxi命令行操作方法
3.1、确认虚拟机归属
在 vCenter Web Client 中查看该虚拟机归属哪台Esxi母机。
3.2、SSH远程连接ESxi母机
Esxi开启ssh服务,并通过以下命令ssh连接到esxi母机
ssh root@x.x.x.x
3.3、使用Esxi命令行操作步骤
3.3.1、获取所有已注册虚拟机的列表
获取虚拟机列表命令,vim-cmd vmsvc/getallvms
[root@localhost:~] vim-cmd vmsvc/getallvms Vmid Name File Guest OS Version Annotation 10 qzl-172 [datastore-10-2] qzl-172/qzl-172.vmx otherLinux64Guest vmx-13 12 qzl-108 [datastore-10-2] qzl-108/qzl-108.vmx otherLinux64Guest vmx-13 14 qzl-119 [datastore-10-2] qzl-119/qzl-119.vmx centos7_64Guest vmx-13 16 qzl-138 [datastore-10-2] qzl-138/qzl-138.vmx otherLinux64Guest vmx-13 18 HW-UMA1500-V [datastore-10-2] HW-UMA1500-V/HW-UMA1500-V.vmx centos64Guest vmx-08 19 win10 [datastore-10-2] win10/win10.vmx windows9_64Guest vmx-21
3.3.2、根据Vmid查询某个虚拟主机的状态
查询虚拟机主机状态,vim-cmd vmsvc/power.getstate Vmid
[root@localhost:~] vim-cmd vmsvc/power.getstate 19 Retrieved runtime info Powered on
3.3.3、查询虚拟机是否有任务
查询虚拟机是否有操作操作任务,vim-cmd vmsvc/get.tasklist VMID
[root@localhost:~] vim-cmd vmsvc/get.tasklist 19 (ManagedObjectReference) [ 'vim.Task:haTask-19-vim.VirtualMachine.powerOn-568700' ]
3.3.4、查询虚拟机任务详情
查询任务详情,vim-cmd vimsvc/task_info task_id
[root@localhost:~] vim-cmd vimsvc/task_info haTask-25-vim.VirtualMachine.reconfigure-1056115 (vim.TaskInfo) { key = "haTask-25-vim.VirtualMachine.reconfigure-1056115", task = 'vim.Task:haTask-25-vim.VirtualMachine.reconfigure-1056115', description = (vmodl.LocalizableMessage) null, name = "vim.VirtualMachine.reconfigure", descriptionId = "VirtualMachine.reconfigure", entity = 'vim.VirtualMachine:25', entityName = "qzl-194", locked = <unset>, state = "running", cancelled = false, cancelable = false, error = (vmodl.MethodFault) null, result = <unset>, progress = 10, progressDetails = <unset>, reason = (vim.TaskReasonUser) { userName = "vpxuser" }, queueTime = "2025-05-21T11:06:02.632285Z", startTime = "2025-05-21T11:06:02.632818Z", completeTime = <unset>, eventChainId = 1056115, changeTag = <unset>, parentTaskKey = <unset>, rootTaskKey = <unset>, activationId = <unset> }
3.3.5、取消任务
主要看任务是否可以取消的标识,vim-cmd vimsvc/task_cancel task_id
[root@localhost:~] vim-cmd vimsvc/task_cancel haTask-25-vim.VirtualMachine.reconfigure-1056115 (vmodl.fault.NotSupported) { faultCause = (vmodl.MethodFault) null, faultMessage = <unset> msg = "Received SOAP response fault from [<<io_obj p:0x00000053b9591bb0, h:5, <TCP '127.0.0.1 : 61975'>, <TCP '127.0.0.1 : 8307'>>, /sdk>]: cancel The operation is not supported on the object." } 注意:并非所有任务都可以取消。具体要看任务详情中cancelable = false参数。
3.3.6、关机
正常关机,vim-cmd vmsvc/power.shutdown VMID
[root@localhost:~] vim-cmd vmsvc/power.shutdown 25 如果虚拟机无法关闭,请运行以下命令,暴力关机: vim-cmd vmsvc/power.off VMID
3.4、使用Esxi esxcli命令步骤
3.4.1、获取虚拟机的World ID和显示名称
注意只有处于运行状态的虚拟机才会显示,关机的虚拟机不会显示。
虚拟机的World ID是会变的,每次重启后,ID号都是不一样的。
esxcli vm process list tlgp-189 World ID: 2104607 Process ID: 0 VMX Cartel ID: 2104588 UUID: 56 4d 5b 67 a7 75 42 f4-81 49 ad 71 49 24 dc 18 Display Name: tlgp-189 Config File: /vmfs/volumes/6108aa18-e4c2738c-9844-688f8400005f/tlgp-189/tlgp-189.vmx win10 World ID: 2426650 Process ID: 0 VMX Cartel ID: 2426647 UUID: 42 3a 25 70 65 d1 df b5-3f 62 5e 9a b7 1e 57 96 Display Name: win10 Config File: /vmfs/volumes/6108aa18-e4c2738c-9844-688f8400005f/win10/win10.vmx
3.4.2、关机
[root@localhost:~] esxcli vm process kill -t=soft -w=2426650 参考:-------- esxcli vm process kill -t=soft -w=WorldID esxcli vm process kill -t=hard -w=WorldID esxcli vm process kill -t=force -w=WorldID 解说:这些命令提供了虚拟机强制停止的不同级别的: soft 是最安全的,优雅关机 hard 是立即关闭 force 是最后的手段,无条件关机 如果 VM 在运行“esxcli vm process kill”命令后仍无法停止,请将所有其他 VM 从 ESXi 主机中撤出,然后重新启动 ESXi 本身
四、官网原文
https://knowledge.broadcom.com/external/article?legacyId=1004340
声明:欢迎大家光临本站,学习IT运维技术,转载本站内容,请注明内容出处”来源刘国华教育“。如若本站内容侵犯了原著者的合法权益,请联系我们进行处理。