The name “Ultra Disk” is an appropriate name for Microsoft’s newest and fastest storage offering. Ultra disk delivers higher throughput, more IOPS, and lower latency than any other storage offering inside Azure. And, don’t think of “higher” and “lower” as incremental differences. The Ultra Disk performance characteristics are an order of magnitude better than even Premium SSD storage.
Some data-intensive workloads haven’t been able to move to the cloud because the work they perform is sensitive to disk latency and throughput, and cloud storage just doesn’t come close to the performance characteristics of on-premises hardware optimized for speed. These are the types of workloads Microsoft has in mind for Ultra Disk.
The secret behind Ultra Disk performance is the direct connection between a VM and its storage. Unlike other storage solutions in Azure, Ultra Disk avoids the overhead of REST APIs and load balancers by allowing reads and writes to go directly from operating systems kernels into storage servers where data lives.
Let’s look at how to setup an Ultra Disk.
Ultra Disks are managed disks you can attach to virtual machines in Azure, so to get started with Ultra Disk we’ll create a virtual machine.
Ultra Disk requires you to use the latest v3 generation of Azure VMs. In the screenshot above, you’ll notice I went with the D8s v3 SKU. Currently, Ultra Disks are only available in specific regions, including the East US 2 region I’m using, and then only in specific availability zones. Of course, the service will continue to expend availability.
As with any VM, you’ll be able to select an OS disk type (shown below).
Notice the OS disk is a Premium SSD. We can only use Ultra Disks as attached data drives. Under the “Data disks” section in the above screen shot, we can click on the “Create and attach a new disk” link to arrive at the following screen.
Now, we can select the “Account type” for the data disk as “Ultra Disk”. Then, we select the Ultra Disk size, which can range from 4GB to 64TB. The drive will always use 4KB sectors.
Next, we can select the number of IOPS we need. In the screenshot, I’ve only asked for 10,000 IOPS, but for larger disk sizes Ultra Disk supports a maximum of 160,000 IOPS. Keep in mind that Premium SSD storage in Azure maxes out at 20,000 IOPS, while standard SSD storage maxes out at 6,000.
Finally, we can specify the throughput we need. I’m using 1,000 MB/s while the Ultra Disk maximum is 2,000 MB/s. Again, for comparison, the max throughput for premium SSD and standard SSD is 900 MB/s and 750MB/s.
As you can see, the configuration for Ultra Disk is simple and primarily focused on performance characteristics. What you might find surprising is that the performance attributes of IOPS and throughput are adjustable at run time. There is no need to detach the drive or restart the VM when changing performance numbers. Instead, the changes will take place with no disruption in service, although the changes might take an hour to take effect.
Why would you want to change performance numbers? Because you might want to move to high-performance numbers when there is a demand on the disk and move back to lower numbers when the demand fades. You’ll want to adjust to the current situation because, like everything in the cloud, you’ll pay for the amount of power you have provisioned.
Pricing is always subject to change, but not surprisingly the Ultra Disk pricing depends on the size of the disk and the performance characteristics. Currently, you’ll pay (all numbers in USD):
If I run the disk I’ve configured at the numbers I’ve shown for a full 24 hours, I’d be paying about $2 for the size of the disk, $16 for the IOPS, and $33 for the throughput, for a total of $51.
There are a few caveats with Ultra Disk. Current there is no integration with Azure Backup, no support for disk snapshots, and no support for Azure disk encryption. However, Ultra Disk is the fastest service for reading and writing data in all of Azure.