Using Azure ultra disks

Azure ultra disks offer high throughput, high IOPS, and consistent low latency disk storage for Azure IaaS virtual machines (VMs). This new offering provides top of the line performance at the same availability levels as our existing disks offerings. One major benefit of ultra disks is the ability to dynamically change the performance of the SSD along with your workloads without the need to restart your VMs. Ultra disks are suited for data-intensive workloads such as SAP HANA, top tier databases, and transaction-heavy workloads.

GA scope and limitations

For now, ultra disks have additional limitations, they are as follows:

  • Are supported in the following regions, with a varying number of availability zones per region:
    • East US 2
    • East US
    • West US 2
    • SouthEast Asia
    • North Europe
    • West Europe
    • UK South
  • Can only be used with availability zones (availability sets and single VM deployments outside of zones will not have the ability to attach an ultra disk)
  • Are only supported on the following VM series:
  • Not every VM size is available in every supported region with ultra disks.
  • Are only available as data disks and only support 4k physical sector size
  • Can only be created as empty disks
  • Do not yet support disk snapshots, VM images, availability sets, and Azure disk encryption
  • Do not yet support integration with Azure Backup or Azure Site Recovery
  • The current maximum limit for IOPS on GA VMs is 80,000.

Determine VM size and region availability

To leverage ultra disks, you need to determine which availability zone you are in. Not every region supports every VM sizes with ultra disks. To determine if your region, zone, and VM size supports ultra disks, run either of the following commands, make sure to replace the region, vmSize, and subscription values first:

CLI:

$subscription = "<yourSubID>"
$region = "<yourLocation>, example value is southeastasia"
$vmSize = "<yourVMSize>, example value is Standard_E64s_v3"

az vm list-skus --resource-type virtualMachines  --location $region --query "[?name=='$vmSize'].locationInfo[0].zoneDetails[0].Name" --subscription $subscription

PowerShell:

$region = "southeastasia"
$vmSize = "Standard_E64s_v3"
(Get-AzComputeResourceSku | where {$_.Locations.Contains($region) -and ($_.Name -eq $vmSize) -and $_.LocationInfo[0].ZoneDetails.Count -gt 0})[0].LocationInfo[0].ZoneDetails

The response will be similar to the form below, where X is the zone to use for deploying in your chosen region. X could be either 1, 2, or 3.

Preserve the Zones value, it represents your availability zone and you will need it in order to deploy an Ultra disk.

ResourceType Name Location Zones Restriction Capability Value
disks UltraSSD_LRS eastus2 X

Note

If there was no response from the command, then the selected VM size is not supported with ultra disks in the selected region.

Now that you know which zone to deploy to, follow the deployment steps in this article to either deploy a VM with an ultra disk attached or attach an ultra disk to an existing VM.

Deploy an ultra disk using Azure Resource Manager

First, determine the VM size to deploy. For a list of supported VM sizes, see GA scope and limitations section.

If you would like to create a VM with multiple ultra disks, refer to the sample Create a VM with multiple ultra disks.

If you intend to use your own template, make sure that apiVersion for Microsoft.Compute/virtualMachines and Microsoft.Compute/Disks is set as 2018-06-01 (or later).

Set the disk sku to UltraSSD_LRS, then set the disk capacity, IOPS, availability zone, and throughput in MBps to create an ultra disk.

Once the VM is provisioned, you can partition and format the data disks and configure them for your workloads.

Deploy an ultra disk using CLI

First, determine the VM size to deploy. See the GA scope and limitations section for a list of supported VM sizes.

You must create a VM that is capable of using ultra disks, in order to attach an ultra disk.

Replace or set the $vmname, $rgname, $diskname, $location, $password, $user variables with your own values. Set $zone to the value of your availability zone that you got from the start of this article. Then run the following CLI command to create an ultra enabled VM:

az vm create --subscription $subscription -n $vmname -g $rgname --image Win2016Datacenter --ultra-ssd-enabled true --zone $zone --authentication-type password --admin-password $password --admin-username $user --size Standard_D4s_v3 --location $location

Create an ultra disk using CLI

Now that you have a VM that is capable of attaching ultra disks, you can create and attach an ultra disk to it.

$location="eastus2"
$subscription="xxx"
$rgname="ultraRG"
$diskname="ssd1"
$vmname="ultravm1"
$zone=123

#create an ultra disk
az disk create `
--subscription $subscription `
-n $diskname `
-g $rgname `
--size-gb 4 `
--location $location `
--zone $zone `
--sku UltraSSD_LRS `
--disk-iops-read-write 1000 `
--disk-mbps-read-write 50

Attach an ultra disk to a VM using CLI

Alternatively, if your existing VM is in a region/availability zone that is capable of using ultra disks, you can make use of ultra disks without having to create a new VM.

$rgName = "<yourResourceGroupName>"
$vmName = "<yourVMName>"
$diskName = "<yourDiskName>"
$subscriptionId = "<yourSubscriptionID>"

az vm disk attach -g $rgName --vm-name $vmName --disk $diskName --subscription $subscriptionId

Adjust the performance of an ultra disk using CLI

Ultra disks offer a unique capability that allows you to adjust their performance, the following command depicts how to use this feature:

az disk update `
--subscription $subscription `
--resource-group $rgname `
--name $diskName `
--set diskIopsReadWrite=80000 `
--set diskMbpsReadWrite=800

Deploy an ultra disk using PowerShell

First, determine the VM size to deploy. See the GA scope and limitations section for a list of supported VM sizes. for additional details about these VM sizes.

To use ultra disks, you must create a VM that is capable of using ultra disks. Replace or set the $resourcegroup and $vmName variables with your own values. Set $zone to the value of your availability zone that you got from the start of this article. Then run the following New-AzVm command to create an ultra enabled VM:

New-AzVm `
    -ResourceGroupName $resourcegroup `
    -Name $vmName `
    -Location "eastus2" `
    -Image "Win2016Datacenter" `
    -EnableUltraSSD `
    -size "Standard_D4s_v3" `
    -zone $zone

Create an ultra disk using PowerShell

Now that you have a VM that is capable of using ultra disks, you can create and attach an ultra disk to it:

$diskconfig = New-AzDiskConfig `
-Location 'EastUS2' `
-DiskSizeGB 8 `
-DiskIOPSReadWrite 1000 `
-DiskMBpsReadWrite 100 `
-AccountType UltraSSD_LRS `
-CreateOption Empty `
-zone $zone;

New-AzDisk `
-ResourceGroupName $resourceGroup `
-DiskName 'Disk02' `
-Disk $diskconfig;

Attach an ultra disk to a VM using PowerShell

Alternatively, if your existing VM is in a region/availability zone that is capable of using ultra disks, you can make use of ultra disks without having to create a new VM.

# add disk to VM
$subscription = "<yourSubscriptionID>"
$resourceGroup = "<yourResourceGroup>"
$vmName = "<yourVMName>"
$diskName = "<yourDiskName>"
$lun = 1
Login-AzureRMAccount -SubscriptionId $subscription
$vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
$disk = Get-AzDisk -ResourceGroupName $resourceGroup -Name $diskName
$vm = Add-AzVMDataDisk -VM $vm -Name $diskName -CreateOption Attach -ManagedDiskId $disk.Id -Lun $lun
Update-AzVM -VM $vm -ResourceGroupName $resourceGroup

Adjust the performance of an ultra disk using PowerShell

Ultra disks have a unique capability that allows you to adjust their performance, the following command is an example that adjusts the performance without having to detach the disk:

$diskupdateconfig = New-AzDiskUpdateConfig -DiskMBpsReadWrite 2000
Update-AzDisk -ResourceGroupName $resourceGroup -DiskName $diskName -DiskUpdate $diskupdateconfig

Next steps

If you would like to try the new disk type request access with this survey.