Azure Disks, there’s a LOT of them. Many of my customers have VMs deployed with various different storage options, the question always comes up, cost & value. I wanted to post a blog to shine some light on my experience of me talking to customers, some tips and tricks.
This blog compares Azure storage to AWS storage, and also has some examples which could potentially save you money, if not most likely get you thinking about a different approach to Azure storage.
Let me preface this and say that these are my estimates only, taken from the official online sources at the time of publication. As AWS publishes their prices as US dollars, I did the conversion to Australian dollars for the comparison. I have calculated the Australian AWS price using today’s exchange rate $1 US to $1.39 Australian.
Currently Azure Standard SSD disks are in preview – prices are cheaper as a result.
No other public cloud has a concept of an SLA on a single instance VM – except Microsoft. For Microsoft to achieve the SLA for a single instance VM of 99.9%, you need to use VM with premium storage, which comes with a premium price tag, however it’s financially backed with the SLA. Remember this is purely an SLA and has no reflection on if other single instance VMs would be technically less reliable or not.
If we focus on general single instance Azure VMs, this puts Microsoft in the same league as AWS that have no SLA on a single instance VMs…… So, now we’re comparing apples with apples… With a single instance Azure VM that use HDD disks on top of an Azure storage account, things are slightly different – AWS don’t do this – if you provision a VM with a 512 GB un-managed disk for example, and you only use 10% of this disk from within the OS, you only pay the 10% price, just the pure cost of data consumption.
Matching up the disks
From what I see, these would be the best match for each disk across AWS & Azure. Azure Un-Managed disks require you to manage a storage account instead.
|AWS||Closest match in Azure|
|N/A | AWS don’t have the concept of storage accounts||Standard HDD (Un-Managed Disks)|
|N/A | AWS don’t have the concept of storage accounts||Premium SSD (Un-Managed Disks)|
|Throughput Optimized HDD (st1) Volumes||Standard HDD (Managed Disks)|
|General Purpose SSD (gp2) Volumes||Standard SSD (Managed Disks)|
|Provisioned IOPS SSD (io1) Volumes||Premium SSD (Managed Disks)|
Standard SSD Disks
Azure Standard SSDs are offered as a cost-effective Managed Disk solution only optimised for dev-test and entry-level production applications requiring consistent latency. Note, that currently the pricing above reflect public preview pricing 50% discount.
Standard SSD disks are built on the same Azure Disks platform which has consistently delivered high availability and durability for disks. Azure Disks are designed for 99.999% availability. Like all Managed Disks, Standard SSD disks will also offer Local Redundant Storage (LRS). With LRS the platform maintains multiple replicas of data for every disk and has consistently delivered enterprise-grade durability for IaaS disks, with an industry-leading ZERO percent Annualised Failure Rate.
Standard SSDs can:
- Deliver lower latency compared to Standard HDDs.
- Be used for web servers, low IOPS enterprise application servers, and Dev/Test workloads.
- Improve reliability and scalability for your applications.
- Offer the same industry-leading durability and availability you expect from Azure Disk Storage.
- Be upgraded to Premium SSDs for more demanding and latency-sensitive workloads.
- Learn more about Standard SSDs in our blog post.
Standard SSD Disks are offered as a type of Managed Disks. Unmanaged Disks and Page Blobs are not supported on Standard SSD. The following Disk sizes will be offered at preview.
Other disk storage for Azure VMs
As this blog post isn’t intended to cover Standard SSDs only, this is just where the attention is due to the date of publication of this blog – Standard SSDs are new. Details of other Azure VM disks can be found here.
Azure VM Disk (.vhd) white space
To prevent the wasted space with most disks having large unused ranges with the fixed-format, Azure stores .vhd files in a sparse format, so you receive the benefits of both the fixed and dynamic disks at the same time. The terms dynamic, expandable, and sparse are often used interchangeably when referring to dynamically expandable virtual disks. For VHD technology, these terms are identical.
Expandable – Also known as “dynamic”, “dynamically expandable”, and “sparse“, the VHD image file uses only as much space on the backing store as needed to store the actual data the virtual disk currently contains. When creating this type of virtual disk, the VHD API does not test for free space on the physical disk based on the maximum size requested, therefore it is possible to successfully create a dynamic virtual disk with a maximum size larger than the available physical disk free space.
Azure Disks are designed for 99.999% availability. Azure Disks have consistently delivered enterprise-grade durability, with an industry-leading ZERO% Annualized Failure Rate.
SLA for a single instance VM
Azure is the only public cloud that offers an SLA for a single instance VM of 99.9%. An SLA is nothing more then Microsoft financially backing the service should it go offline for a period of time. From here, the definition of an SLA is nothing more than a commitment between a service provider and a client. It has no reflection on the back-end technical availability of the service.
Let’s look at an example, if you take two single instance VMs of the same size, one VM has premium SSD storage (higher cost), the other VM has standard SSD storage (lower cost), the only difference is Microsoft is financially backing the the VM with premium storage. Of course you also get the faster IOPS and bandwidth with the premium skew. But both VMs are governed by the exact same update domain and fault domain – as per the below.
While the update domain now is less of a concern than previous years, there’s still a fault domain to be aware of.
An update domain is a logical group of underlying hardware that can undergo maintenance or be rebooted at the same time. Azure periodically performs updates to improve the reliability, performance, and security of the host infrastructure for virtual machines. These updates range from patching software components in the hosting environment (like operating system, hypervisor, and various agents deployed on the host), upgrading networking components, to hardware decommissioning. The majority of these updates are performed without any impact to the hosted virtual machines. This is what’s called Memory preserving maintenance.
A fault domain is a logical group of underlying hardware that share a common power source and network switch, similar to a rack within an on-premises datacenter – the single point of failure is confined to the rack itself. In saying this, Microsoft have been doing datacenters for over 20 years, they know how to run the datacenter at it’s optimal to ensure the hardware is kept healthy and doesn’t fail.
If hardware does fail, Microsoft will bring your VM up online ASAP in another rack automatically.
SLA for Managed Disks
SLA for Storage Accounts
Up to 99.99%, more details here.
If we compare the current SLA for a single instance VM with premium locally redundant storage being 99.9%, with the SLA for a locally redundant storage account, this is the same at 99.9%.
Disk striping in Azure is a great way to save on costs…. Disk striping is the same as RAID-0. When a high scale VM is attached with several storage persistent disks, the disks can be striped together to aggregate their IOPS, bandwidth, and storage capacity.
On Windows, you can use Storage Spaces to stripe disks together. You must configure one column for each disk in a pool. Otherwise, the overall performance of striped volume can be lower than expected, due to uneven distribution of traffic across the disks.
Using Server Manager UI, you can set the total number of columns up to 8 for a striped volume. When attaching more than 8 disks, use PowerShell to create the volume. Using PowerShell, you can set the number of columns equal to the number of disks. For example, if there are 16 disks in a single stripe set; specify 16 columns in the NumberOfColumns parameter of the New-VirtualDisk PowerShell cmdlet. More details here.
The solution example below uses an Azure Standard Storage Account v2 which is free (if no data is stored on there). We make use of this by aggregating many disks into a stripe, present this to the Virtual Machine as one massive 24TB volume, which gives us massive IOPS & Bandwidth. I have paid nothing until I start to save actual data on this volume – I am charged for actual data stored (not provisioned).
Based on the virtual machine size itself, you could attach more or less disks. Also each disk can be any size, I am using 1024 GB disks as an example.
In comparison to AWS, if we use today’s exchange rate $1 US to $1.39 Australian and if we take their closet match Throughput Optimized HDD (st1) disks. A 1024 GB AWS disk costs $64.05, multiply this by 24, just standing up something like this would cost $1537.20 just for the storage alone.
This is what it would look like on AWS:
- Price $1537.20
- 288 MB/s throughput
- 12,000 IOPS
- Azure Pricing Calculator
- AWS Pricing Calculator
- Manage the availability of Windows virtual machines in Azure
- About disks storage for Azure Windows VMs
- Amazon EBS Volume Types
- AWS Storage Services