Cost Optimization

    How Do You Reduce Azure Managed Disk Costs?

    Reduce Azure Managed Disk costs by 30-50% through orphaned disk cleanup, Premium SSD v2 migration, and automated tier management for deallocated VMs.

    Spotto
    February 2026
    25 min read

    Azure Managed Disks often account for 15-30% of total compute spend, yet most organizations overprovision storage tiers, leave orphaned disks running, and miss opportunities to decouple performance from capacity. Spotto continuously analyzes managed disk utilization, attachment status, and tier selection across Azure subscriptions, surfacing actionable recommendations to eliminate waste while preserving workload requirements.

    The most common savings come from three areas: upgrading to Premium SSD v2 to stop paying for oversized disks, downgrading idle disks attached to deallocated VMs, and deleting orphaned disks that serve no workload. Together, these optimizations typically reduce managed disk costs by 30-50% without degrading performance or availability.

    What Problem This Solves

    Managed disk cost waste compounds silently because disks bill continuously regardless of VM power state:

    Tier-capacity coupling. Premium SSD v1 ties performance to disk size. A workload needing 5,000 IOPS must provision a P30 (1 TiB) even if it only uses 200 GB of capacity. The remaining 800 GB is pure waste, often adding 40% or more to disk costs.
    Idle premium storage. When VMs are deallocated for dev/test cycles, maintenance windows, or seasonal workloads, their Premium SSD disks continue billing at full rate. An MSP managing 200 deallocated VMs with Premium disks across tenants may be spending thousands monthly on storage performance that delivers zero value.
    Orphaned disk accumulation. VM deletions, failed deployments, and snapshot-then-forget workflows leave unattached disks that persist indefinitely. Each orphaned P30 costs around $135/month regardless of whether anyone knows it exists.
    Non-zonal placement blocking upgrades. VMs deployed without availability zone assignment cannot attach Premium SSD v2 disks, locking them into the more expensive v1 tier even when v2 would be a better fit.
    Region lock-in. Disks in regions without availability zone support cannot use Premium SSD v2 or Ultra Disks, forcing expensive workarounds for redundancy that zone-enabled regions handle natively.

    Azure Managed Disk Tiers -- Quick Reference

    TierMax IOPSMax ThroughputSizingRedundancyOS DiskHost Cache
    Standard HDD2,000500 MB/sFixed tiersLRS/ZRSYesYes
    Standard SSD6,000750 MB/sFixed tiersLRS/ZRSYesYes
    Premium SSD (v1)20,000900 MB/sFixed tiersLRS/ZRSYesYes
    Premium SSD v280,0001,200 MB/sPer-GiBLRS onlyNoNo
    Ultra Disk400,00010,000 MB/sPer-GiBLRS onlyNoNo

    Key distinctions:

    Premium SSD v2 decouples capacity from performance but is LRS-only and cannot be used as an OS disk
    Premium SSD v1 supports ZRS and host caching but forces oversized disks to meet performance requirements
    Disk reservations (1-year term) are available for Premium SSD v1 only (P30 through P80), not for v2
    Unmanaged disks are being retired on March 31, 2026

    How It Works

    Unused: Eliminating Orphaned Managed Disks

    Are you paying for disks that are not attached to any virtual machine? Orphaned managed disks are unattached to any VM and generate storage charges without serving a workload.

    Detection logic:

    If a managed disk shows diskState: Unattached with no VM association then flag as orphaned
    If the orphaned disk is Premium SSD or Ultra then escalate priority
    If the orphaned disk has no Azure Backup, ASR, or managed image dependencies then recommend immediate deletion
    If compliance requires data retention then snapshot the disk to Standard storage before deletion

    Detection via Azure Resource Graph:

    resources
    | where type == "microsoft.compute/disks"
    | where properties.diskState == "Unattached"
    | extend sku = tostring(sku.name), sizeGB = properties.diskSizeGB
    | project name, resourceGroup, subscriptionId, sku, sizeGB, location
    | order by sku desc, tolong(sizeGB) desc

    Deletion after validation:

    # Confirm disk is unattached
    az disk show --name diskName --resource-group rg --query diskState
    
    # Create retention snapshot if needed
    az snapshot create --source diskId --name snapshotName --resource-group rg
    
    # Delete the orphaned disk
    az disk delete --name diskName --resource-group rg --yes

    Key constraint: Confirm no backup, disaster recovery, managed image, or Azure Compute Gallery pipelines depend on the disk before deletion. Deletion is irreversible.

    Storage: Right-Sizing and Tier Optimization

    Upgrade to Premium SSD v2 (Active Workloads)

    Premium SSD v1 forces you to buy more capacity than needed to hit IOPS targets. Premium SSD v2 lets you provision capacity, IOPS, and throughput independently, typically saving 20-40%.

    Detection logic:

    If a Premium SSD v1 disk shows consistent utilization below the tier's maximum IOPS and throughput over 30 days then calculate equivalent Premium SSD v2 cost
    If the v2 cost is lower and the workload's region and VM support v2 then recommend migration
    If the disk is an OS disk then v2 migration is blocked

    v2 eligibility checklist:

    Region supports Premium SSD v2
    VM is deployed in an availability zone (required)
    Disk is a data disk (not OS disk)
    Workload does not require host caching
    LRS-only redundancy is acceptable

    Migration to Premium SSD v2:

    # Review disk utilization over 30 days
    az monitor metrics list --resource diskId \
      --metric "Composite Disk Read Operations/sec" \
      --aggregation Average --interval PT1H
    
    # Create snapshot of current disk
    az snapshot create --resource-group rg --source diskId --name snapshotName
    
    # Deallocate VM
    az vm deallocate --resource-group rg --name vmName
    
    # Create Premium SSD v2 disk with right-sized performance
    az disk create --resource-group rg --name newDiskName \
      --sku PremiumV2_LRS --source snapshotId \
      --disk-iops-read-write targetIOPS \
      --disk-mbps-read-write targetMBps --zone zone
    
    # Swap disk and restart
    az vm update --resource-group rg --name vmName --os-disk newDiskName
    az vm start --resource-group rg --name vmName

    Downgrade Idle Premium Disks (Deallocated VMs)

    Detection logic:

    If a VM has been deallocated for more than 7 days and its disks are Premium SSD then recommend downgrading to Standard SSD
    If the VM has a predictable schedule then recommend automating the tier switch

    Downgrade code:

    # Confirm VM is deallocated
    az vm show --name vmName --resource-group rg --query powerState
    
    # Downgrade disk to Standard SSD
    az disk update --name diskName --resource-group rg --sku StandardSSD_LRS
    
    # Tag VM to prevent accidental start
    az vm update --name vmName --resource-group rg --set tags.DiskDowngraded=true
    
    # Before restart: restore Premium tier
    az disk update --name diskName --resource-group rg --sku Premium_LRS

    Key constraint: Shared disks and Premium SSD v2/Ultra cannot be directly re-tiered. VM must stay deallocated during the change.

    Automated disk tier management (PowerShell runbook):

    # Runbook: Manage-IdleDiskTiers
    # Schedule: Daily
    Connect-AzAccount -Identity
    $vms = Get-AzVM -Status | Where-Object { $_.PowerState -eq "VM deallocated" }
    foreach ($vm in $vms) {
        $disks = Get-AzDisk -ResourceGroupName $vm.ResourceGroupName |
            Where-Object {
                $_.ManagedBy -eq $vm.Id -and
                $_.Sku.Name -like "Premium*"
            }
        foreach ($disk in $disks) {
            if ($disk.MaxShares -gt 1 -or
                $disk.Sku.Name -in @("PremiumV2_LRS", "UltraSSD_LRS")) {
                continue
            }
            $tags = @{ OriginalSku = $disk.Sku.Name }
            Update-AzTag -ResourceId $disk.Id -Tag $tags -Operation Merge
            $disk.Sku = [Microsoft.Azure.Management.Compute.Models.DiskSku]::new("StandardSSD_LRS")
            Update-AzDisk -ResourceGroupName $disk.ResourceGroupName \
                -DiskName $disk.Name -Disk $disk
        }
    }

    Architecture: Zonal Placement and Region Migration

    Non-Zonal Placement (Blocks Premium SSD v2)

    If a VM and its disks have no availability zone assignment and the region supports zones then flag for zonal migration
    If the VM uses Premium SSD v1 and would benefit from v2 pricing then escalate priority

    Migration steps:

    Check current zone assignment
    Verify zone support for VM size
    Snapshot all attached disks
    Create zonal disks from snapshots in target zone
    Deploy new VM in target zone with zonal disks
    Update networking
    Monitor 48-72 hours before decommissioning

    Key constraints: Requires planned downtime. VMs in availability sets must be fully redeployed. Cross-zone data transfer costs may apply. Estimated effort: 12 hours per VM.

    Non-AZ Region (Blocks Advanced Storage)

    If disk resides in a region without AZ support then evaluate migration to zone-enabled region
    If data residency permits relocation then plan phased migration

    Key constraints: Data residency rules may prevent migration. Requires rebuilding networking, encryption, and identity. Estimated effort: 60 hours for cross-region migration.

    Failure Modes and Mitigations

    Premature orphaned disk deletion -- Risk: High (irreversible). Mitigation: Query Recovery Services vaults, managed images, and Compute Gallery before deleting.
    Performance regression after downgrade -- Risk: Medium (reversible). Mitigation: Tag VMs with DiskDowngraded=true and monitor for 48 hours.
    Premium SSD v2 limitations overlooked -- Risk: Medium. Mitigation: Run v2 compatibility checklist before every migration.
    Zone migration data loss -- Risk: High. Mitigation: Validate encryption key access and snapshot integrity before decommissioning.

    Cost Impact Summary

    RecommendationTypical SavingsEffortRisk
    Delete orphaned disks100%LowMedium
    Downgrade idle Premium40-60%LowLow
    Re-tier deallocated VM disks40-70%LowLow
    Upgrade Premium v1 to v220-40%MediumMedium
    Migrate to AZEnables v2 accessMediumMedium
    Migrate to AZ-supported region~18% redundancyHighHigh

    Common Questions About Azure Managed Disk Cost Optimization

    1. How do I find orphaned disks across all subscriptions?

    Use the Azure Resource Graph query provided above. It queries all subscriptions in a single call and returns every disk with diskState: Unattached. For MSPs managing multiple tenants via Azure Lighthouse, the same query works across delegated subscriptions without switching context.

    2. Is it safe to delete an unattached disk?

    Not always. Before deletion, confirm the disk is not referenced by Azure Backup (Recovery Services vault), Azure Site Recovery, a managed image, or an Azure Compute Gallery image version. If any of these dependencies exist, deleting the disk can break backup restore points or image pipelines. When in doubt, snapshot the disk to Standard storage first and retain the snapshot for your compliance retention period.

    3. What is the difference between Premium SSD v1 and Premium SSD v2?

    Premium SSD v1 uses fixed tiers where IOPS and throughput are tied to disk size. You must provision a larger disk to get more performance, even if you do not need the capacity. Premium SSD v2 lets you set capacity, IOPS, and throughput independently, so you pay only for what you use. However, v2 is LRS-only, cannot be used as an OS disk, does not support host caching, and requires availability zone placement.

    4. Can I downgrade a disk tier while the VM is running?

    No. Changing a managed disk's SKU (for example, from Premium_LRS to StandardSSD_LRS) requires the VM to be deallocated. This is by design -- Azure needs to move the disk to different storage infrastructure. Plan tier changes during maintenance windows or automate them using the PowerShell runbook provided above for deallocated VMs.

    5. Do disk reservations apply to Premium SSD v2?

    No. Azure disk reservations are currently available only for Premium SSD v1 disks, specifically P30 through P80 sizes. Premium SSD v2 and Ultra Disk do not support reservations. If you are migrating from v1 to v2, factor in the loss of reservation discounts when calculating the net savings.

    6. What happens to my data when I change a disk's SKU?

    Changing the SKU (e.g., Premium_LRS to StandardSSD_LRS) does not erase data. Azure moves the data to the appropriate storage tier in the background. However, the VM must be deallocated during the change, and the operation may take several minutes depending on disk size. Always take a snapshot before any tier change as a precaution.

    7. Why can I not use Premium SSD v2 as an OS disk?

    Premium SSD v2 does not support host caching, which is commonly used for OS disks to improve boot and read performance. Additionally, v2 disks cannot be used with certain VM features that depend on host-level caching. OS disks should remain on Premium SSD v1 or Standard SSD, while data disks are the primary candidates for v2 migration.

    8. How do I automate disk tier management for deallocated VMs?

    Deploy the PowerShell runbook provided in this guide as an Azure Automation runbook with a daily schedule. The runbook identifies deallocated VMs with Premium disks, tags the original SKU for restoration, and downgrades the disk to Standard SSD. Before restarting the VM, the reverse operation restores the Premium tier. This approach is fully reversible and typically saves 40-70% on idle disk storage.

    9. What is the impact of migrating a VM to an availability zone?

    Zonal migration requires planned downtime because you must create a new VM in the target zone. The process involves snapshotting all disks, creating new zonal disks from those snapshots, deploying a new VM with the zonal disks, and updating networking. VMs in availability sets must be fully redeployed. Cross-zone data transfer costs may apply. Estimated effort is approximately 12 hours per VM, but the payoff is access to Premium SSD v2 and Ultra Disk pricing.

    10. How does Spotto help with managed disk cost optimization?

    Spotto continuously monitors disk attachment status, utilization metrics, tier selection, and zonal placement across all your Azure subscriptions. It automatically flags orphaned disks, identifies Premium SSD v1 disks that would cost less as v2, and detects deallocated VMs with idle premium storage. Rather than running one-off audits, Spotto provides ongoing visibility and alerts when disk waste accumulates -- especially valuable for MSPs managing many tenants.

    Use-Case and Scenario Coverage

    Scenario 1: MSP with 200 Deallocated VMs

    Before

    $27,000/mo

    200 deallocated VMs with Premium SSD disks billing at full rate

    After

    $8,100/mo

    Automated tier downgrade to Standard SSD during deallocation

    Actions taken: Deployed the automated tier management runbook across all tenants. Premium disks on deallocated VMs downgraded to Standard SSD daily. Original SKU tagged for automatic restoration before VM restart.

    70% savings -- $226,800/year

    Scenario 2: Orphaned Disk Cleanup Across 15 Subscriptions

    Before

    $9,400/mo

    87 orphaned disks (42 Premium, 45 Standard) across 15 subscriptions

    After

    $0/mo

    All orphaned disks validated and deleted after snapshot retention

    Actions taken: Resource Graph query identified 87 unattached disks. Verified none were referenced by backup vaults, ASR, or managed images. Compliance-required disks snapshotted to Standard storage before deletion. All orphaned disks removed.

    100% savings -- $112,800/year

    Scenario 3: Premium SSD v1 to v2 Migration for Database Cluster

    Before

    $5,400/mo

    8x P30 (1 TiB) disks provisioned for IOPS, only 200 GB used each

    After

    $2,160/mo

    8x Premium SSD v2 disks, 256 GB each, right-sized IOPS

    Actions taken: Reviewed 30-day disk telemetry showing peak IOPS at 4,800 across all disks. Migrated data disks from P30 v1 to Premium SSD v2 with 256 GB capacity and 5,000 IOPS provisioned per disk. OS disks remained on Premium SSD v1.

    60% savings -- $38,880/year

    Scenario 4: Zonal Migration to Unlock v2 Pricing

    Before

    $3,200/mo

    4 non-zonal VMs locked into Premium SSD v1 (P40 each)

    After

    $1,600/mo

    Migrated to zone 2, data disks converted to Premium SSD v2

    Actions taken: Verified region supported availability zones and VM sizes were zone-compatible. Snapshotted all disks, deployed new VMs in zone 2, created zonal Premium SSD v2 data disks from snapshots. Updated load balancer and DNS. Monitored 72 hours before decommissioning original VMs.

    50% savings -- $19,200/year

    What to Do Next

    Run the orphaned disk query now. The Azure Resource Graph query above takes seconds and will immediately show you unattached disks across all subscriptions. This is the highest-ROI starting point.
    Deploy the automated tier management runbook. Copy the PowerShell runbook into Azure Automation with a daily schedule. It will automatically downgrade idle Premium disks on deallocated VMs and tag them for restoration.
    Identify your top 10 Premium SSD v1 disks and review telemetry. Focus on the largest and most expensive disks first. Pull 30 days of IOPS and throughput metrics to determine if v2 migration would reduce cost.
    Establish a recurring disk optimization cadence. Disk waste accumulates continuously. Schedule monthly reviews or use Spotto for automated, ongoing monitoring across all subscriptions.

    Summary

    Orphaned disks are the highest-ROI target -- They cost money and serve no workload. Detection is fast and deletion (after validation) is immediate.
    Idle Premium re-tiering is fully reversible and automatable -- Downgrading deallocated VM disks to Standard SSD saves 40-70% with zero risk to running workloads.
    Premium SSD v2 migration delivers the largest per-disk savings but requires checking five eligibility criteria -- Region, zone, data disk, no host caching, and LRS-only redundancy.
    Regular disk audits prevent waste from compounding -- Orphaned disks accumulate from VM deletions, failed deployments, and snapshot workflows. Without ongoing monitoring, savings erode within months.

    The challenges outlined in this article — orphaned disk accumulation, Premium tier overprovisioning, idle storage on deallocated VMs — are the same ones our customers work through across their Azure environments. The difference is they use Spotto to surface these opportunities automatically, rather than running the analysis by hand.

    Stop Paying for Storage Nobody Uses

    Spotto continuously analyzes disk utilization, attachment status, and tier selection across your Azure subscriptions -- surfacing orphaned disks, idle Premium storage, and v2 migration opportunities so you can eliminate waste without degrading performance.

    Free Trial

    Disclaimer: This article is provided for informational purposes only and does not constitute professional advice. Azure pricing, features, and service behavior may have changed since publication. Always validate recommendations against your specific environment and consult Microsoft's official documentation before making changes to production infrastructure. Spotto is not liable for any actions taken based on the content of this article.