TL;DR

  • Converting a VM to managed disks is usually operationally straightforward: deallocate, convert, start, validate.
  • The real work is coordination:
    • availability set batching
    • maintenance windows
    • IP address behavior
    • validation and rollback plan
  • Expect a possible post-migration background-copy window where reads can be slower.
  • Do not skip cleanup: original VHD blobs and storage accounts can keep accruing cost after conversion.

Architecture Diagram

Table of Contents

  • Scenario
  • Core Concepts
  • Prerequisites
  • Version Compatibility Matrix
  • Step-by-step
  • Validation
  • Troubleshooting Workflow
  • Rollback Considerations
  • Cost Model Snapshot
  • Best Practices
  • Conclusion

Scenario

Single VM conversion:

  • minimizes human error
  • scales across subscriptions and resource groups
  • produces clear validation evidence for your change board

Core Concepts

  • Unmanaged disks live as VHD page blobs inside a storage account.
  • Managed disks are first-class Azure resources (disks) managed by the platform.
  • The migration converts:
    • OS disk
    • attached data disks
  • Constraints you must account for:
    • VM must be deallocated during conversion
    • availability set rules (no mixing disk types)
    • some scenarios can change IP behavior if you rely on dynamic assignment

Prerequisites

This migration is best treated as non-reversible in place.

  • Confirm you have:
    • VM owner approval
    • approved maintenance window
    • rollback plan
  • Confirm backups:
    • Azure Backup recovery point exists and is recent
    • application-consistent backups where required

Operational prerequisites:

  • VM is healthy:
    • provisioning state is good
    • extensions are healthy
  • Networking plan:
    • if the VM must keep its IP, ensure the right static configuration is in place before you begin

Version Compatibility Matrix

Component What you need How you verify
Azure CLI Azure CLI with az vm convert available az version and az vm convert --help
Azure PowerShell Az.Compute with ConvertTo-AzVMManagedDisk Get-Command ConvertTo-AzVMManagedDisk
Permissions At least Contributor on VM RG Attempt a no-op read and confirm rights before change window

Step-by-step

Step-by-step using Azure Portal

Resources
| where type =~ ‘microsoft.compute/virtualmachines’
| extend osDisk = properties.storageProfile.osDisk
| extend usesManagedOsDisk = isnotnull(osDisk.managedDisk)
| project subscriptionId, resourceGroup, name, location, usesManagedOsDisk

PowerShell validation

$rgName = “<rg>”
$vmName = “<vm>”

# Deallocate
Stop-AzVM -ResourceGroupName $rgName -Name $vmName -Force

# Convert (converts OS + data disks)
ConvertTo-AzVMManagedDisk -ResourceGroupName $rgName -VMName $vmName

You’ve identified one or more production VMs still using unmanaged disks. You need a runbook you can hand to an operations team that:

Technical prerequisites:

Migrate your Azure unmanaged disks by March 31, 2026: https://learn.microsoft.com/en-us/azure/virtual-machines/unmanaged-disks-deprecation
Convert a Windows VM from unmanaged disks to managed disks: https://learn.microsoft.com/en-us/azure/virtual-machines/windows/convert-unmanaged-to-managed-disks
Convert a Linux VM from unmanaged disks to managed disks: https://learn.microsoft.com/en-us/azure/virtual-machines/linux/convert-unmanaged-to-managed-disks
Frequently asked questions about disks: https://learn.microsoft.com/en-us/azure/virtual-machines/faq-for-disks
Migrate Azure VMs to Managed Disks in Azure: https://learn.microsoft.com/en-us/azure/virtual-machines/windows/migrate-to-managed-disks

Hidden costs people forget:

$rgName = “<rg>”
$avSetName = “<availabilitySet>”

$avSet = Get-AzAvailabilitySet -ResourceGroupName $rgName -Name $avSetName
Update-AzAvailabilitySet -AvailabilitySet $avSet -Sku Aligned

Validation

The conversion commands are easy. The success criteria are not. If you treat this like a production change with pre-flight, validation, and cleanup, you can migrate quickly without last-minute firefighting.

  • disks are now managed
  • the VM boots and app is healthy
  • monitoring and backups are still working

Resource Graph validation query

FinOps checklist:

  • VM status: running
  • application health: synthetic transaction or service check
  • disk performance: baseline read latency compared to pre-change
  • backup: next scheduled backup job succeeds
  • logging: heartbeats and metrics flowing

Troubleshooting Workflow

Use this for repeatability and batch execution.

  • Extensions not in a succeeded state
    • Fix extensions first, then retry migration.
  • Availability set constraints
    • Ensure the availability set itself is migrated correctly and all VMs are coordinated.
  • Snapshot count exceeded
    • Reduce snapshot counts and retry.
  • IP changes
    • If you relied on dynamic addressing, ensure the correct static IP approach was applied prior to conversion.

Practical rollback patterns:

  • stop
  • identify blocking error
  • remediate the blocking condition
  • retry the conversion command
  • validate again

Rollback Considerations

Rollback decision gates:

# Convert availability set
az vm availability-set convert –resource-group <rg> –name <availabilitySetName

Step-by-step using Azure PowerShell

For a single VM:

  • boot failure
  • application health failure after restart
  • unacceptable latency for the workload

Cost Model Snapshot

# Deallocate
az vm deallocate –resource-group <rg> –name <vm>

# Convert unmanaged -> managed
az vm convert –resource-group <rg> –name <vm>

# Start
az vm start –resource-group <rg> –name <vm>

Use this when the count is low and you need a UI-backed change record.

  • tag conversion date
  • set a cleanup date
  • delete old artifacts only after validation and sign-off

Best Practices

  • Convert one low-risk VM first to validate your runbook end to end.
  • Batch by dependency domain:
    • per app tier
    • per availability set
    • per maintenance window group
  • Update IaC immediately after conversion:
    • templates and modules should no longer reference storage account VHDs
  • Document the new steady state:
    • managed disks, backup behavior, operational runbooks

Conclusion

Operator workflow:

Sources

Common failure modes you should expect:

Similar Posts