Table of Contents
If your virtual machine (VM) isn’t operational, it will be in one of two states: Stopped or Stopped (deallocated). Essentially, if a resource is ‘allocated‘, you are still incurring charges for it.
When an Azure VM is shutdown using the operating system it enters a Stopped state. In this state, the server is not running but the compute resource is still being held by Azure so you continue to get charged for that compute.
Azure’s Stopped State
When logged into the operating system of an Azure VM, you can execute a command to shut down the server. Doing so will disconnect you from the OS and halt all processes, while preserving the allocated hardware resources, such as the currently assigned IP addresses.
When you locate the VM in the Azure console and it displays the state as ‘Stopped‘, it’s important to understand that hourly charges are still incurred for this instance.
Azure’s Deallocated State
The other way to stop your virtual machine is through Azure itself, whether that’s through the console, Powershell, or the Azure CLI. When you stop a VM through Azure, rather than through the OS, it goes into a Stopped (deallocated) state.
This means that any non-static public IPs will be released, but you’ll also stop paying for the VM’s compute costs. This is a great way to save money on your Azure costs when you don’t need those VMs running.
Which State to Choose?
The only situation where you should opt for the stopped state over the deallocated state for an Azure VM is if you intend to stop the server briefly and wish to retain the dynamic IP address for testing purposes. If this doesn’t precisely match your needs, or if you’re indifferent, then deallocating is the better choice to avoid incurring charges for the VM.
Not a reader? Watch this related video tutorial: