What it is
A virtual machine whose OS disk is an unmanaged VHD: a page blob sitting in a customer storage account instead of a managed disk resource. Microsoft announced the retirement of unmanaged disks in September 2022 and fully retired them on March 31, 2026 (extended from the original September 30, 2025 date). Per the retirement notice, VMs still using unmanaged disks after that date can be stopped and deallocated, and can't be started again until they're migrated.
Why it happens
Unmanaged disks were the only option before managed disks shipped in 2017, so any VM old enough, or built from a template old enough, carries the model forward. New subscriptions haven't been able to create unmanaged disks since late 2022, which means the ones that remain are veterans: workloads nobody has rebuilt, often because nobody is confident they understand them well enough to touch.
That is exactly why they never got migrated. The VM keeps booting, nothing in the portal shouts, and the migration involves a deallocation and restart that no one wants to schedule for a machine with an unclear owner. So the deadline arrived with the VM still on the retired model.
What it costs / blast radius
The direct cost is not the problem; unmanaged storage isn't meaningfully more expensive. The exposure is threefold:
- Platform retirement. The deadline has passed. Microsoft's notice states that VMs using unmanaged disks can be stopped and deallocated, and won't start again until migrated. Your legacy VM's next unplanned stop may be its last unassisted boot.
- Missing tooling. Unmanaged VHDs sit outside managed-disk encryption defaults, per-disk RBAC, managed snapshots, and the availability-set fault isolation that managed disks get automatically. Anyone with the storage account's keys can read the disk's contents.
- Storage account coupling. The VM's disk performance and availability ride on a storage account you have to capacity-manage yourself, a job managed disks made obsolete.
This is a hygiene-and-risk finding, not a spend finding. (Assessment based on the documented retirement behavior, not measured data.)
See it
Resources
| where type =~ 'microsoft.compute/virtualmachines'
| where isnull(properties.storageProfile.osDisk.managedDisk)
| project name, resourceGroup, subscriptionId, location,
vhdUri = properties.storageProfile.osDisk.vhd.uri// Test on a non-production VM first and take a backup.
az vm deallocate --resource-group rg-legacy --name vm-legacy-01
az vm convert --resource-group rg-legacy --name vm-legacy-01
az vm start --resource-group rg-legacy --name vm-legacy-01
// The original VHD blobs are NOT deleted and keep billing in the
// storage account. Delete them once the converted VM checks out.How StratoLens helps
StratoLens flags every VM still running on unmanaged disks, automatically and continuously, across all of your subscriptions, inside your own tenant. A retired storage model can't hide in the subscription nobody opens, and you get the list before an unplanned stop turns a migration task into an outage.