Emergency server help: get in touch

Hyper-V Checkpoint Merge Failed: Fix Stuck AVHDX Chains Safely

Fix a Hyper-V checkpoint stuck merging or a merge failed error: find backup-created and orphaned AVHDX files, delete checkpoints safely, and merge offline as a last resort.

Published 9 min read

Short answer: A Hyper-V checkpoint is an AVHDX differencing disk; deleting it makes Hyper-V merge that file back into its parent. When the merge fails or never starts, first free disk space and stop whatever holds the files (backup job, antivirus), then delete the checkpoint with Get-VMSnapshot -VMName <vm> | Remove-VMSnapshot (include backup-created Recovery checkpoints) and, if possible, shut the VM down so the merge can finish. Only if that fails, back up the whole VM folder, map the chain with Get-VHD and merge offline with Merge-VHD.

Commands checked against the official documentation (linked below) on 6 October 2026; not yet run on our lab servers.

How checkpoints and AVHDX chains work

When you take a checkpoint, Hyper-V freezes the current VHDX and starts writing all new blocks to a new .avhdx file whose parent is the frozen disk. Take another checkpoint and a second AVHDX is chained on top of the first. The VM always runs on the newest file in the chain.

Deleting a checkpoint does not throw data away: Hyper-V merges the differencing disk into its parent and then removes the AVHDX. Microsoft is explicit that you should never delete .avhdx files by hand; doing so breaks the chain and usually the VM.

Backup products (Veeam, DPM, Altaro, Veritas and others) use the same mechanism. They create a recovery checkpoint, copy the frozen disk, then ask Hyper-V to merge. If the job crashes or loses contact with the host, that checkpoint can be left behind. Some of them do not even show in Hyper-V Manager, which is why you can find a folder full of AVHDX files with an empty checkpoint list.

Typical symptoms people search for:

  • A checkpoint that sits in a merging state for hours, or a merge percentage that never moves.
  • Backup error Failed to create VM recovery checkpoint … error code: 32768 or Could not create backup checkpoint for virtual machine - Error -0x800423F2.
  • The process cannot access the file because it is being used by another process. (0x80070020) when deleting or importing.
  • The volume holding the VM fills up and the VM is paused because AVHDX files keep growing.
  • “Delete Checkpoint” is missing from the right-click menu.

Diagnose: list checkpoints and map the disk chain

Run these on the Hyper-V host as Administrator. Replace APP01 with your VM name.

# All checkpoints, including those created by backup software
Get-VMSnapshot -VMName APP01 |
    Format-Table Name, SnapshotType, CreationTime, ParentSnapshotName -AutoSize

# What file each virtual disk is actually running on, and its parent
Get-VMHardDiskDrive -VMName APP01 | ForEach-Object {
    Get-VHD -Path $_.Path | Select-Object Path, VhdType, ParentPath, FileSize, Size
}

SnapshotType tells you who made it: Recovery checkpoints were created by a backup application, while checkpoints an admin takes normally show as Standard. A type of Missing points at a checkpoint whose files are gone. If Get-VMHardDiskDrive shows a path ending in .avhdx but Get-VMSnapshot returns nothing, you have an orphaned (hidden) checkpoint.

Walk the full chain from the running disk down to the base VHDX. This short loop follows ParentPath until it reaches a disk with no parent, and stops with a warning if a parent file is missing:

$disk = (Get-VMHardDiskDrive -VMName APP01 | Select-Object -First 1).Path
$level = 0
while ($disk) {
    if (-not (Test-Path -LiteralPath $disk)) { Write-Warning "Missing file in chain: $disk"; break }
    $v = Get-VHD -Path $disk
    [pscustomobject]@{ Level = $level; Type = $v.VhdType; Path = $v.Path; SizeGB = [math]::Round($v.FileSize / 1GB, 1) }
    $disk = $v.ParentPath
    $level++
}

Then check the three things that cause most failed merges:

# 1. Free space on the volume that holds the VM (a merge can need roughly the size of the data being merged)
Get-Volume -DriveLetter D | Select-Object DriveLetter, SizeRemaining, Size

# 2. Recent Hyper-V management errors and warnings
Get-WinEvent -LogName 'Microsoft-Windows-Hyper-V-VMMS-Admin' -MaxEvents 50 |
    Where-Object Level -le 3 | Format-Table TimeCreated, Id, Message -Wrap

# 3. VSS writers in a failed state (backup-related merges)
vssadmin list writers

Fix 1: delete the checkpoints the supported way

Start here even if Hyper-V Manager has failed before. If a backup job is running against this VM, stop it first, and confirm the backup application is not about to retry.

Delete a specific checkpoint, or all of them:

# One checkpoint by name
Remove-VMSnapshot -VMName APP01 -Name 'Before update'

# Every checkpoint of the VM (merges each one into its parent)
Get-VMSnapshot -VMName APP01 | Remove-VMSnapshot

# Only checkpoints left behind by backup software
Get-VMSnapshot -VMName APP01 -SnapshotType Recovery | Remove-VMSnapshot

Add -WhatIf first if you want to see what would be removed. When Delete Checkpoint is missing from the context menu (common with backup-created checkpoints), select the checkpoint in Hyper-V Manager and press the Del key; Microsoft documents this as a working alternative.

The merge runs in the background. On a running VM it can take a long time for large AVHDX files. Watch the VM status column in Hyper-V Manager, and keep re-running the chain map: the number of levels should fall to zero AVHDX files.

If it does not move: shut the VM down cleanly. Microsoft notes that shutting down triggers the pending merge, and offline merges are both faster and more reliable than live ones.

Stop-VM -Name APP01   # graceful guest shutdown; wait for the merge, then Start-VM

Fix 2: clear what blocks the merge

If the merge errors out or hangs again, fix the cause before retrying:

CauseWhat to do
Volume full or nearly fullFree space or temporarily move other VMs off the volume (Storage Migration). Do not delete AVHDX files to make room.
File lock, error 0x80070020Find the process with Resource Monitor (CPU tab, Associated Handles, search “.avhdx”) or Process Monitor. Usually a backup agent or antivirus. Stop it, add the Microsoft-recommended Hyper-V antivirus exclusions, retry.
Failed VSS writersRestart the VSS services (net stop vss / net start vss), check vssadmin list writers again; reboot the host if writers stay failed. Stagger backup jobs so they do not overlap.
Backup vendor still “owns” the checkpointUse the vendor’s cleanup tool or support procedure. Microsoft gives Veritas nbhypervtool.exe as an example.
Permissions after a restore or file copyThe VM’s own account (NT VIRTUAL MACHINE\<VM GUID>) needs full control on its folder; Microsoft’s example is icacls <VMFolder> /grant "NT VIRTUAL MACHINE\<VMGuid>:F" /T.
Pass-through, shared VHDX or virtual Fibre Channel disksCheckpoints are not supported on these by design. Use your backup vendor’s method for these VMs.

Fix 3: manual offline merge (last resort)

This changes disk files directly. Before you start: shut the VM down, then copy the entire VM folder (configuration, every VHDX and AVHDX) to another volume or a NAS and confirm the copy completed. If anything goes wrong you return to this copy. Merge-VHD is an offline operation: the chain must not be attached to a running VM.

Use this when checkpoints are invisible, Remove-VMSnapshot fails, and a clean shutdown does not merge. Work from the newest file towards the base disk.

  1. Shut down the VM and confirm it is Off: Get-VM APP01 | Select-Object Name, State.
  2. Copy the VM folder to a safe location (see the warning above).
  3. Map the chain with the loop in the diagnose section and write down every path, newest first.
  4. Merge the newest AVHDX into the base disk. Merge-VHD can merge through intermediate files in one step when the destination is an ancestor further down the chain.
  5. Point the VM’s disk at the merged base VHDX.
  6. Start the VM and check the guest file system and applications.
# Example chain: APP01_A2.avhdx -> APP01_A1.avhdx -> APP01.vhdx
$base   = 'D:\Hyper-V\Virtual Hard Disks\APP01.vhdx'
$newest = 'D:\Hyper-V\Virtual Hard Disks\APP01_A2.avhdx'

Merge-VHD -Path $newest -DestinationPath $base

# Repoint the VM's first disk at the merged base disk
$drive = Get-VMHardDiskDrive -VMName APP01 | Select-Object -First 1
Set-VMHardDiskDrive -VMHardDiskDrive $drive -Path $base

Get-VHD -Path $base | Select-Object Path, VhdType, ParentPath
Start-VM -Name APP01

After a successful merge the intermediate AVHDX files are no longer valid disks (Microsoft’s documentation says they are not deleted but can no longer be used). Keep them, and your backup copy, until the VM has run correctly for a while and a fresh backup has completed; then remove them.

In Hyper-V Manager the same merge is Edit Disk > select the AVHDX > Merge > To the parent virtual hard disk, repeated for each level.

If the VM configuration is too damaged to start even with a clean, merged VHDX, the supported fallback is simple: create a new VM of the same generation and attach the merged disk.

Check that it worked

Get-VMSnapshot -VMName APP01                      # should return nothing (or only checkpoints you want)
Get-VMHardDiskDrive -VMName APP01 | ForEach-Object { Get-VHD -Path $_.Path } |
    Select-Object Path, VhdType, ParentPath             # Path should be .vhdx, ParentPath empty
Get-ChildItem 'D:\Hyper-V\Virtual Hard Disks' -Filter 'APP01*.avhdx'

Finish by running a backup job and confirming that its recovery checkpoint is created and removed cleanly. If the backup leaves a new AVHDX every night, the root cause is still there (usually the backup product version, VSS or antivirus).

Prevent it next time

  • Treat checkpoints as short-term: take one before a change, delete it once the change is confirmed. Microsoft’s guidance flags chains of more than 50 checkpoints as a problem that needs scheduled downtime to merge.
  • Use production checkpoints (Set-VM -Name APP01 -CheckpointType Production) for anything with application data, and never revert a domain controller with a standard checkpoint.
  • Alert on free space on VM volumes and on AVHDX files older than a day. Our disk alert script covers Linux hosts; on Windows a scheduled Get-ChildItem -Recurse -Filter *.avhdx with an age filter does the job.
  • Keep backup software and Hyper-V integration services up to date, and do not let two backup products protect the same VM.

Official documentation: Hyper-V snapshots, checkpoints and differencing disks troubleshooting · Merge checkpoints with many differencing disks · Remove-VMSnapshot · Merge-VHD

Related: Disks Consolidation Needed on ESXi: Safe VM Snapshot Fix · Redo Log of VMDK Is Corrupt on ESXi: Recovery · Backup Verify Script · Restore Domain Controller Backups: System State and DSRM Steps

See also: Install Hyper-V on Windows Server 2025: Switches and First VM · Hyper-V Export and Import VM: Move VMs with PowerShell

Frequently asked questions

Can I just delete the AVHDX files?

No. Each AVHDX holds every change written since its checkpoint. Deleting one loses that data and breaks the chain so the VM will not start. Merge it instead.

How long does a checkpoint merge take?

It depends on how much data the AVHDX holds and on storage speed. A few GB merges in minutes; a checkpoint left for months can take hours. Offline merges after a shutdown are usually faster.

Why are there AVHDX files but no checkpoints in Hyper-V Manager?

A backup job most likely created a recovery checkpoint and failed before cleanup. Check Get-VMSnapshot with -SnapshotType Recovery, then shut the VM down to let the merge run.

What does error 32768 mean in my backup log?

It is a generic Hyper-V failure code returned when the backup could not create the recovery checkpoint. Look at the Hyper-V-VMMS Admin log and vssadmin list writers on the host for the real cause.

Is it safe to merge while the VM is running?

Deleting a checkpoint with Remove-VMSnapshot merges live and is supported. Manual Merge-VHD is offline only and needs the VM shut down.

Maintenance record

This guide changes servers, data or security settings, so we re-check it against current versions on a fixed schedule. Take a backup or snapshot before you start.

Maintained by
srvScripts editorial team
Last full review
Next review

Free website test

Is your website set up right?

Check SSL, security headers, redirects, robots.txt, sitemap, llms.txt and security.txt in one test. It takes about 30 seconds.