Powering off a virtual machine on an ESXi host
Symptoms
You are experiencing these issues:
- You cannot power off an ESXi hosted virtual machine.
- A virtual machine is not responsive and cannot be stopped or killed.
Purpose
This article describes how to correctly stop virtual machines in an ESXi environment.
Note: This article applies to ESXi only and does not apply to ESX. For ESX hosts, see Powering off an unresponsive virtual machine on an ESX host (1004340).
Note: If you are attempting to troubleshoot the cause of an unresponsive virtual machine, it is usually preferable to collect performance metrics and then either suspend or crash the virtual machine to collect additional troubleshooting information. For more information, see Troubleshooting a virtual machine that has stopped responding: VMM and Guest CPU usage comparison (1017926) or Troubleshooting a virtual machine that has stopped responding (1007819).
Note: This article applies to ESXi only and does not apply to ESX. For ESX hosts, see Powering off an unresponsive virtual machine on an ESX host (1004340).
Note: If you are attempting to troubleshoot the cause of an unresponsive virtual machine, it is usually preferable to collect performance metrics and then either suspend or crash the virtual machine to collect additional troubleshooting information. For more information, see Troubleshooting a virtual machine that has stopped responding: VMM and Guest CPU usage comparison (1017926) or Troubleshooting a virtual machine that has stopped responding (1007819).
Resolution
Warning:
Follow the sections and steps in this article in order. Do not skip a
section or step, as each step may have an impact on the virtual machine.
Powering off the virtual machine using the vSphere Client
Attempt to power off the virtual machine gracefully using the client:- Connect the vSphere Client or VI Client to VMware vCenter Server or VirtualCenter Server.
- Right-click the virtual machine and click Power off. If the power operation fails with "Another task is already in progress", wait for the task to complete or see Powering off a virtual machine fails with the error: Cannot power Off: Another task is already in progress (1027040) or vCenter operation times out with the error: Operation failed since another task is in progress (1004790).
- If the virtual machine remains running, attempt the same operation from the host directly.
- Connect the vSphere Client or VI Client directly to the ESXi host running the virtual machine.
- Right-click on the virtual machine and select Power off.
Installing the vSphere Command-Line Interface tool
The vSphere Command-Line Interface (vCLI) is used for some of the procedures in this article. Ensure that it is installed before you proceed.- For ESXi 3.5 hosts, see Remote CLI Installation and Execution in the Remote Command-Line Interface Installation and Reference Guide.
- For ESXi 4.0 hosts, see vSphere CLI Installation, Execution, and Command Overviews in the vSphere Command-Line Interface Installation and Reference Guide.
- For ESXi 4.1 hosts, see the vSphere Command-Line Interface Installation and Scripting Guide.
- For ESXi 5.0 hosts, see the vSphere Command-Line Interface Documentation.
Determining the virtual machine's location
Determine the host on which the virtual machine is running. This information is available in the virtual machine's Summary tab in VI Client. Subsequent commands will be performed on, or remotely reference, the ESXi host where the virtual machine is running.Using the ESXi 5.0 esxcli command to power off a virtual machine
Theesxcli command can be used locally or remotely to power off a virtual machine running on ESXi 5.0. For more information, see the esxcli vm Commands section of the vSphere Command-Line Interface Reference.- Open a console session where the
esxclitool is available, either in the ESXi Shell, the vSphere Management Assistant (vMA), or the location where the vSphere Command-Line Interface (vCLI) is installed. - Get a list of running virtual machines, identified by World ID, UUID, Display Name, and path to the
.vmxconfiguration file, using this command:esxcli vm process list - Power off one of the virtual machines from the list using this command:
esxcli vm process kill --type=[soft,hard,force] --world-id=WorldNumber
Note: Three power-off methods are available. Soft is the most graceful, hard performs an immediate shutdown, and force should be used as a last resort. - Repeat step 2 and validate that the virtual machine is no longer running.
Using the ESXi command-line utility vim-cmd to power off the virtual machine
- On the ESXi console, enter Tech Support mode and log in as root. For more information, see Tech Support Mode for Emergency Support (1003677).
- Get a list of all registered virtual machines, identified by their VMID, Display Name, and path to the
.vmxconfiguration file, using this command:vim-cmd vmsvc/getallvms - To get the current state of a virtual machine:
vim-cmd vmsvc/power.getstate VMID - Shutdown the virtual machine using the VMID found in Step 2 and run:
vim-cmd vmsvc/power.shutdown VMID
Note: If the virtual machine fails to shut down, use this command:
vim-cmd vmsvc/power.off VMID
Sending signals on ESXi to power off the virtual machine
A virtual machine can be halted from the command line by sending signals to the process.
Warning:
This procedure is potentially hazardous to the ESXi host. If you do not
identify the appropriate process ID (PID) and kill the wrong process,
it may have unexpected results. If you are not comfortable with the
following procedure, file a support request with VMware Technical
Support and note this Knowledge Base article ID (1014165) in the problem
description. For more information, see How to Submit a Support Request.
In ESXi 3.5-5.0, you can use the kill command to send a signal to, and terminate, a running virtual machine process.- On the ESXi console, enter Tech Support mode and log in as root. For more information, see Tech Support Mode for Emergency Support (1003677).
- To determine if the virtual machine process is running on the ESXi host, run this command:
ps | grep vmx
The output appears similar to:7662 7662 vmx /bin/vmx
7667 7662 vmx /bin/vmx
7668 7662 mks:VirtualMachineName /bin/vmx
7669 7662 vcpu-0:VirtualMachineName /bin/vmx
Several rows are returned, one for eachvmxprocess. Identify the parentvmxprocess for the target virtual machine. The first column contains the PID, and the second contains the parent's PID. Ensure you terminate only the parent process. The parent Process ID (PID) for each process is listed in the second column, identified in this example in bold. Take note of this number for use in the following steps.
Caution: Ensure that you identify the line specific only to the virtual machine you are attempting to repair. If you continue this process for a virtual machine other than the one in question, you can cause downtime for the other virtual machine. - If the
vmxprocess is listed, terminate the process using this command:kill ProcessID - Wait 30 seconds and repeat step 1 to check for the process again.
- If it is not terminated, run this command:
kill -9 ProcessID - Wait 30 seconds and check for the process again.
k command in esxtop to send a signal to, and kill, a running virtual machine process.- On the ESXi console, enter Tech Support mode and log in as root. For more information, see Tech Support Mode for Emergency Support (1003677).
- Run the
esxtoputility using this command:esxtop - Press
cto switch to the CPU resource utilization screen. - Press
fto display the list of fields. - Press
cto add the column for the Leader World ID. - Identify the target virtual machine by its Name and Leader World ID (
LWID). - Press
k. - At the
World to killprompt, type in the Leader World ID from step 6 and press Enter. - Wait 30 seconds and validate that the process is not longer listed.
Additional Information
If a virtual machine cannot be powered off using any of these methods, it usually indicates a problem with the underlying infrastructure, such as the ESXi host or its backing hardware.If a problem is suspected with the ESXi host that is preventing the shutdown of virtual machines, vMotion all unaffected virtual machines off the host, and force the host to halt with a purple diagnostic screen. For more information, see Using hardware NMI facilities to troubleshoot unresponsive hosts (1014767)