Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
You can increase the input/output operations per second (IOPS) and throughput limits for Premium SSD, Standard SSD, and Standard HDD managed disks that are 513 GiB and larger by enabling performance plus. Enabling performance plus improves the experience for workloads that require high IOPS and throughput, such as database and transactional workloads. There's no extra charge for enabling performance plus on a disk.
Once enabled, the IOPS and throughput limits for an eligible disk increase to the higher maximum limits. To see the new IOPS and throughput limits for eligible disks, consult the columns that begin with "*Expanded" in the Scalability and performance targets for VM disks article.
Limitations
- Can only be enabled on Standard HDD, Standard SSD, and Premium SSD managed disks that are 513 GiB or larger
- Can only be enabled during disk creation
- To work around this, create a snapshot of your disk, then create a new disk from the snapshot
- Can't be enabled on disks created during virtual machine creation.
- Not supported for disks recovered with Azure Site Recovery
Prerequisites
Either install a version of the Azure PowerShell module 9.5 or newer, or a version of the Azure CLI that is 2.44.0 or newer.
Enable performance plus
You need to create a new disk to use performance plus. The following scripts show how to create a disk with performance plus enabled and, if desired, attach it to a VM. The commands have been organized into self-contained steps for reliability.
Create a resource group
This step creates a resource group with a unique name.
export RANDOM_SUFFIX=$(openssl rand -hex 3)
export MY_RG="PerfPlusRG$RANDOM_SUFFIX"
export REGION="ChinaNorth2"
az group create -g $MY_RG -l $REGION
A successful response shows the resource group's provisioningState set to Succeeded:
{
"id": "/subscriptions/xxxxx/resourceGroups/PerfPlusRGxxx",
"location": "ChinaNorth2",
"name": "PerfPlusRGxxx",
"properties": {
"provisioningState": "Succeeded"
}
}
Create a new disk with performance plus enabled
The az disk create command creates a disk in the resource group and region you defined earlier. Specify an eligible disk SKU and a size of 513 GiB or larger, and set --performance-plus to true.
export MY_DISK="PerfPlusDisk$RANDOM_SUFFIX"
export SKU="Premium_LRS"
export DISK_SIZE=513
az disk create -g $MY_RG -n $MY_DISK --size-gb $DISK_SIZE --sku $SKU -l $REGION --performance-plus true
A successful response shows performancePlus set to true and provisioningState set to Succeeded:
{
"id": "/subscriptions/xxxxx/resourceGroups/PerfPlusRGxxx/providers/Microsoft.Compute/disks/PerfPlusDiskxxx",
"location": "ChinaNorth2",
"name": "PerfPlusDiskxxx",
"properties": {
"provisioningState": "Succeeded",
"diskSizeGb": 513,
"sku": "Premium_LRS",
"performancePlus": true
},
"type": "Microsoft.Compute/disks"
}
Attempt to attach the disk to a VM
This optional step attempts to attach the disk to an existing VM. It first checks if the VM exists and then proceeds accordingly.
export MY_VM="NonExistentVM"
if az vm show -g $MY_RG -n $MY_VM --query "name" --output tsv >/dev/null 2>&1; then
az vm disk attach --vm-name $MY_VM --name $MY_DISK --resource-group $MY_RG
else
echo "VM $MY_VM not found. Skipping disk attachment."
fi
If the VM doesn't exist, the output confirms that disk attachment was skipped:
VM NonExistentVM not found. Skipping disk attachment.
Create a new disk from an existing disk with performance plus enabled
This series of steps creates a snapshot from an existing disk and then uses az disk create to create a new disk from that snapshot. The source disk, snapshot, and new disk must be in the same region. Specify an eligible disk SKU and a size of 513 GiB or larger, and set --performance-plus to true.
Create a resource group for migration
export RANDOM_SUFFIX=$(openssl rand -hex 3)
export MY_MIG_RG="PerfPlusMigrRG$RANDOM_SUFFIX"
export REGION="ChinaNorth2"
az group create -g $MY_MIG_RG -l $REGION
A successful response shows the migration resource group's provisioningState set to Succeeded:
{
"id": "/subscriptions/xxxxx/resourceGroups/PerfPlusMigrRGxxx",
"location": "ChinaNorth2",
"name": "PerfPlusMigrRGxxx",
"properties": {
"provisioningState": "Succeeded"
}
}
Create the disk from the snapshot
# Create a snapshot from the original disk
export MY_SNAPSHOT_NAME="PerfPlusSnapshot$RANDOM_SUFFIX"
echo "Creating snapshot from original disk..."
az snapshot create \
--name $MY_SNAPSHOT_NAME \
--resource-group $MY_RG \
--source $MY_DISK
# Get the snapshot ID for use as source
SNAPSHOT_ID=$(az snapshot show \
--name $MY_SNAPSHOT_NAME \
--resource-group $MY_RG \
--query id \
--output tsv)
echo "Using snapshot ID: $SNAPSHOT_ID"
# Create the new disk using the snapshot as source
export MY_MIG_DISK="PerfPlusMigrDisk$RANDOM_SUFFIX"
export SKU="Premium_LRS"
export DISK_SIZE=513
az disk create \
--name $MY_MIG_DISK \
--resource-group $MY_MIG_RG \
--size-gb $DISK_SIZE \
--performance-plus true \
--sku $SKU \
--source $SNAPSHOT_ID \
--location $REGION
A successful response shows performancePlus set to true and provisioningState set to Succeeded for the new disk:
{
"id": "/subscriptions/xxxxx/resourceGroups/PerfPlusMigrRGxxx/providers/Microsoft.Compute/disks/PerfPlusMigrDiskxxx",
"location": "ChinaNorth2",
"name": "PerfPlusMigrDiskxxx",
"properties": {
"provisioningState": "Succeeded",
"diskSizeGb": 513,
"sku": "Premium_LRS",
"performancePlus": true,
"source": "/subscriptions/xxxxx/resourceGroups/PerfPlusRGxxx/providers/Microsoft.Compute/snapshots/PerfPlusSnapshotxxx"
},
"type": "Microsoft.Compute/disks"
}