States and billing status of Azure Virtual Machines
Applies to: ✔️ Linux VMs ✔️ Windows VMs ✔️ Flexible scale sets ✔️ Uniform scale sets
Azure Virtual Machines (VM) instances go through different states. There are provisioning and power states. This article describes these states and highlights when customers are billed for instance usage.
Get states using Instance View
The instance view API provides VM running-state information. For more information, see Virtual Machines - Instance View.
The VM provisioning state is available, in slightly different forms, from within the VM properties provisioningState
and the InstanceView. In the VM InstanceView, there's an element within the status
array in the form of ProvisioningState/<state>[/<errorCode>]
.
To retrieve the power state of all the VMs in your subscription, use the Virtual Machines - List All API with parameter statusOnly
set to true
.
Note
Virtual Machines - List All API with parameter statusOnly
set to true
retrieves the power states of all VMs in a subscription. However, in some rare situations, the power state may not available due to intermittent issues in the retrieval process. In such situations, we recommend retrying using the same API or using Azure Resource Health to check the power state of your VMs.
Power states and billing
The power state represents the last known state of the VM.
The following table provides a description of each instance state and indicates whether that state is billed for instance usage.
Power state | Description | Billing |
---|---|---|
Creating | Virtual machine is allocating resources. | Not Billed* |
Starting | Virtual machine is powering up. | Billed |
Running | Virtual machine is fully up. This state is the standard working state. | Billed |
Stopping | This state is transitional between running and stopped. | Billed |
Stopped | The virtual machine is allocated on a host but not running. Also called PoweredOff state or Stopped (Allocated). This state can be result of invoking the PowerOff API operation or invoking shutdown from within the guest OS. The Stopped state might also be observed briefly during VM creation or while starting a VM from Deallocated state. |
Billed |
Deallocating | This state is transitional between Running and Deallocated. | Not billed* |
Deallocated | The virtual machine has released the lease on the underlying hardware and is powered off. This state is also referred to as Stopped (Deallocated). | Not billed* |
* Some Azure resources, such as Disks and Networking continue to incur charges.
Example of PowerState in JSON:
{
"code": "PowerState/running",
"level": "Info",
"displayStatus": "VM running"
}
Provisioning states
The provisioning state is the status of a user-initiated, control-plane operation on the VM. These states are separate from the power state of a VM.
Provisioning state | Description |
---|---|
Creating | Virtual machine is being created. |
Updating | Virtual machine is updating to the latest model. Some non-model changes to a virtual machine such as start and restart fall under the updating state. |
Failed | Last operation on the virtual machine resource was unsuccessful. |
Succeeded | Last operation on the virtual machine resource was successful. |
Deleting | Virtual machine is being deleted. |
Migrating | Seen when migrating from Azure Service Manager to Azure Resource Manager. |
OS Provisioning states
OS Provisioning states only apply to virtual machines created with a generalized OS image. Specialized images and disks attached as OS disk don't display these states. The OS provisioning state isn't shown separately. It's a substate of the Provisioning State in the VM InstanceView. For example, ProvisioningState/creating/osProvisioningComplete
.
OS Provisioning state | Description |
---|---|
OSProvisioningInProgress | The VM is running and the initialization (setup) of the Guest OS is in progress. |
OSProvisioningComplete | This state is a short-lived state. The virtual machine quickly transitions from this state to Success. If extensions are still being installed, you continue to see this state until installation is complete. |
Succeeded | The user-initiated actions have completed. |
Failed | Represents a failed operation. For more information and possible solutions, see the error code. |
Troubleshooting VM states
To troubleshoot specific VM state issues, see Troubleshoot Windows VM deployments and Troubleshoot Linux VM deployments.
For other troubleshooting help visit Azure Virtual Machines troubleshooting documentation.
Next steps
- Review the Azure Cost Management and Billing documentation
- Use the Azure Pricing calculator to plan your deployments.