Expand unmanaged virtual hard disks attached to a virtual machine

This article covers how to expand unmanaged disks. To learn how to expand a managed disk, use either the Windows or Linux articles.

Applies to: ✔️ Windows VMs ✔️ Linux VMs ✔️ Flexible scale sets

When you create a new virtual machine (VM) in a resource group by deploying an image from Azure Marketplace, the default operating system (OS) drive is often 127 GB (some images have smaller OS disk sizes by default). Even though it's possible to add data disks to the VM (the number depends on the SKU you chose) and we recommend installing applications and CPU-intensive workloads on these addendum disks, often, customers need to expand the OS drive to support specific scenarios:

  • To support legacy applications that install components on the OS drive.
  • To migrate a physical PC or VM from on-premises with a larger OS drive.

Important

Resizing an OS or data disk of an Azure VM requires the VM to be deallocated.

Shrinking an existing disk isn’t supported, and can potentially result in data loss.

After expanding the disks, you need to expand the volume within the OS in either Windows or Linux to take advantage of the larger disk.

Resize an unmanaged disk by using PowerShell

Open your PowerShell ISE or PowerShell window in administrative mode and follow the steps below:

  • Sign in to your Microsoft Azure account in resource management mode and select your subscription:

    Connect-AzAccount
    Select-AzSubscription –SubscriptionName 'my-subscription-name'
    
  • Set your resource group name and VM names:

    $rgName = 'my-resource-group-name'
    $vmName = 'my-vm-name'
    
  • Obtain a reference to your VM:

    $vm = Get-AzVM -ResourceGroupName $rgName -Name $vmName
    
  • Stop the VM before resizing the disk:

    Stop-AzVM -ResourceGroupName $rgName -Name $vmName
    
  • Set the size of the unmanaged OS disk to the desired value and update the VM:

    $vm.StorageProfile.OSDisk.DiskSizeGB = 1023
    Update-AzVM -ResourceGroupName $rgName -VM $vm
    

    Warning

    The new size should be greater than the existing disk size. The maximum allowed is 2,048 GB for OS disks. (It's possible to expand the VHD blob beyond that size, but the OS will only be able to work with the first 2,048 GB of space.)

  • Update the size of any data disks you want to resize. To expand the first data disk attached to the VM, use a numeric index to obtain a reference to first attached data disk:

    $vm.StorageProfile.DataDisks[0].DiskSizeGB = 1023
    

    Similarly, you can reference other data disks attached to the VM, either by using an index or the Name property of the disk:

    ($vm.StorageProfile.DataDisks | Where ({$_.Name -eq 'my-second-data-disk'})).DiskSizeGB = 1023
    
  • Updating the VM might take a few seconds. When the command finishes executing, restart the VM:

    Start-AzVM -ResourceGroupName $rgName -Name $vmName
    

Next steps

You can also attach disks using the Azure portal.