Q: How can I increase the disk performance on my Azure IaaS virtual machine?

A: A new Azure IaaS virtual machine has an operating system disk and a temporary disk; however, it's possible to add additional data disks, which can have different caching options configured. The number of data disks that can be added depends on the size of the virtual machine, as documented in the article "Virtual Machine and Cloud Service Sizes for Azure." As an example, an A4 size can have up to 16 data disks added. Each data disk has a limit of 500 IOPS. Therefore, if you want higher levels of IOPS, you should add multiple data disks to a virtual machine and then use a stripe set (RAID 0) within the virtual machine, which will then combine the data disks and therefore the IOPS. This is very similar to the way you add multiple physical disks to a server and use striping to combine the multiple spindles and therefore improve disk performance. If you added 16 data disks and combined them using RAID 0 via Disk Manager you would have a single volume capable of 8,000 IOPS.

You don't need to use any kind of resiliency such as RAID 1 (mirroring) or RAID 5 (parity) because the underlying data disk is already reliably stored on the Azure fabric, which replicates each block of data three times (and then another three times at another data center if you have the storage configured as geo-redundant). In addition, having multiple data disks doesn't actually cost you any more than having one data disk because you only pay for the data stored and not the size of the virtual hard disk files; the amount of data would be the same if written to one disk or written to more than sixteen disks.

Note that each storage account (which contains the disks) has a maximum of 20,000 IOPS, which means you need to be careful how many disks you place in a storage account because you might hit that 20,000 IOPS limit.