If you are new to Microsoft Azure you will barely guess that. When you shut down your virtual machine, compute hour counter counts just like when it is running and you have to pay for it as well. This “minor” detail is not explained in many official introductory documentation materials I have read. I have realized that only because I am kind of person who likes to re-verify things over and over again and that is why I went to my account’s billing details. I had used my VM just for few days and each day only few hours and after that I saw nearly 200 compute hours in my bill.
Indeed, there are reasonable technical reasons why even powered off machine is billed too. When you create a virtual machine you consume data center resources and they have to remain allocated for you e.g. IP address, CPU cores, storage etc. It does not matter if it is running as this resources still must be reserved and ready for you.
The solution for this problem is to use Azure Powershell to control your virtual machines. The default options of stopping command does also what is called deallocation and then the payment counter stops.
Below I present quick reference of relevant commands.
- You need to “log in” to your Azure account from PowerShell. You do this either with
Import-AzurePublishSettingsFile filename
or withAdd-AzureAccount
commands. Use the former if you would like to use profile settings file downloaded from the portal, and use the latter if you prefer to just type Microsoft account credentials and have the shell store them for you. In both cases credentials are stored inC:\Users\**name**\AppData\Roaming\Windows Azure Powershell
. - Use
Get-AzureSubscription
to list your subscriptions. - Use
Select-AzureSubscription -SubscriptionName **name**
to switch the shell to apply following commands to this subscription. - Use
Get-AzureVM
to list your virtual machines, their names and their states. - Use
Stop-AzureVM -ServiceName **name** -Name **name**
to shut down and deallocate a virtual machine. - Use
Start-AzureVM -ServiceName **name** -Name **name**
to power on a virtual machine.
When you close the shell, and open it again you do not have to log in to your Microsoft Account again, but before you are able to control virtual machines you have to select subscription first.