Share via

If you’re not using your Infrastructure turn if off! Saving costs on Azure

One of the most common questions I get is How does Azure charge for my VM?

Azure charges an hourly price based on the VM’s size and operating system. For partial hours, Azure charges only for the minutes of use. So if your virtual machine ran for less than an hour, you will be charged for the number of minutes your virtual machine is running, rounded up to the nearest minute, not hour. If you create the VM with a VM image containing certain pre-installed software, additional hourly software charges may apply but you will be clearly informed of these when you provision the VM. Azure does however charges separately for storage for the VM’s operating system and data disks. Temporary disk storage is free.

You are charged when the VM status is Running or Stopped, but you are not charged when the VM status is Stopped (De-allocated). So the key thing is if your not using stop it you will still pay for storage associated as the VHD (the Image sits on Azure Storage so you pay minimal costs for de-allocated VMs) see the FAQ at

Getting Started with Virtual Machines

Using Resource Groups

Top Tip: When creating new VMS if you should ideally organise your related resources into resource groups. Resource Groups helps us to logically group the Azure resources together and monitor and manage them. As An Example a resource group per machine or class. i.e. Deep Learning Resource Group, Which holds the VM and Associated services once the class is complete,  you can delete the entire resource group with a few clicks, which should help manage costs and resources again you may simply want to de-allocate these and restart the services for the next Semester.

Documentation on VMs

Overview of Azure

For getting started the following On demand Webinar may be of use How to Get Started on Azure -

Documentation on Azure

Azure is a huge service which is growing a tremendous rate last we added over 500 services we have now began to consolidate all our documentation under a single location see /en-us/azure/

To put a VM in the Stopped (De-allocated) state, do one of the following:

For SDK and cmd line tools to script and automation

For specific details on Linux VMs scripts see /en-us/azure/virtual-machines/virtual-machines-linux-tutorial-manage-vm?toc=/azure/virtual-machines/linux/toc.json

For Azure CLI tips on Connecting to an Azure subscription from the Azure Command-Line Interface (Azure CLI) For basic Azure CLI commands in Resource Manager (ARM), please also check this article: Use the Azure CLI for Mac, Linux, and Windows with Azure Resource Manager

Scripts and Resources

Microsoft Technet and the IT Pro/DevOps community also provided a number Using pre-created scripts see

Manually Shut down or delete the VM from the Azure portal. Again you manage these via but I presume you would like things automated  

For more details, see Virtual Machines Pricing.

So as I stated above is that you will still pay for storage associated as the VHD (the Image sits on Azure Storage so you pay minimal costs for de-allocated VMs) see the FAQ at

Key Tips

If the status says “Stopped (De-allocated)”, you aren’t being billed.

If it says “Stopped Allocated”, you’re still being billed for allocated virtual cores (not the software licence itself).


Top Tip : To ensure you aren’t being billed, always stop virtual machines from the management portal. You can also stop the virtual machine via Powershell by calling ShutdownRoleOperation with “PostShutdownAction” equal to “StoppedDeallocated”.

Removing a VM and all associated VHDs

This workflow deletes an Azure VM in a given subscription, together with associated disks and specified VM images.  First check to see if the given VM exists. If it exists, then delete the vm together with all disks from the VM's disk repository

Clean-up Services, VM's & VHD's deployed under a Cloud Service Using this script you can delete all the VM's, linked VHD's and other deployments under the specific cloud service.

Stop All VMs in Specified Azure Resource Group this PowerShell Workflow script, intended to run in an Azure Automation runbook, stops all the Azure VMs in a specific Azure Resource Group. This sample runbooks stops all of the virtual machines in the specified Azure Resource Group.

Remove one or more Azure resource groups and contained resources This runbook connects to Azure and removes resource groups with names that have substrings that match the name filter. All of the resources in each resource group are also removed. An option is to run in preview mode to verify before actual removal.