Fix it now
The machine has state on disk that no longer matches the machine trying to load it. Either the saved memory image cannot be read back, or a checkpoint chain is broken so the disk the machine expects is not the disk it finds. Copy the whole folder somewhere safe before you touch either.
Get-VM 'Server1' | Select-Object Name, State, Version
Get-VHD 'D:\VMs\Server1\disk_A1B2.avhdx' | Select-Object Path, ParentPath, VhdType
Get-VMHostSupportedVersion
- If the machine is in a saved state you do not need, discard it with
Remove-VMSavedState -VMName 'Server1'and start it normally. It boots as though it had been powered off abruptly, so expect the guest to run its own consistency checks. - If checkpoints are involved, read the
ParentPaththe second command reports and confirm that file exists at exactly that path. - If the folder was moved, repoint the child at its parent with
Set-VHD -Path '<child>' -ParentPath '<parent>'rather than editing anything by hand. - If a checkpoint is showing in Hyper-V Manager, delete it there so the merge runs, and leave the host alone until the merge finishes.
Discarding saved state loses everything the guest held in memory, exactly as a power cut would. Repointing a differencing disk at a file that is not really its parent can corrupt the guest file system beyond recovery.
If the machine boots, stop here. If it will not, or the version numbers do not line up between hosts, the next section explains what has to match what.
Why it happens
A saved virtual machine writes the whole of its memory and its device state to files beside the configuration. Restoring it means reloading that image into a machine with the same virtual hardware. If the configuration has changed, if only part of the file set was restored from backup, or if the files came from a host generation that does not match, the reload fails and the machine sits refusing to start or resume.
Checkpoints work differently. Each one creates a differencing disk that records only what changed and points back at its parent by both path and identifier. The chain from the newest differencing disk down to the base disk has to be complete and consistent. Restoring only the base disk, moving the folder without Hyper-V, or copying some files but not others leaves a machine that cannot resolve its own storage.
Both codes on this page are unpublished, which is unhelpful and also not much of a loss, because the entries beside them carry the file path the host could not follow. That path is the diagnosis. Start from it rather than from the number, and the two cases separate themselves immediately: a path into the saved state files is one problem and a path into an AVHDX chain is the other.
The saved state cannot be reloaded
You have this one if The machine shows as saved and every attempt to start or resume it fails immediately.
- Confirm you can afford to lose what was in memory. Anything unsaved inside the guest goes with it.
- Discard the state with
Remove-VMSavedState -VMName 'Server1'. - Start the machine. It boots as it would after a power failure, so expect file system checks and application recovery.
- If the guest will not boot afterwards, treat it as crash recovery rather than as a state problem.
Saved state is not a backup. It is a snapshot of running memory, and it is the first thing to discard when it is standing between you and a machine that will start.
The differencing chain is broken
You have this one if The machine has checkpoints, and Get-VHD on the newest file names a parent that is missing or in the wrong place.
- Find the parent file. Restoring a machine by file copy often leaves the base disk in a different folder from the differencing disks.
- Put the files back in the layout the chain expects. That is the safest repair, because nothing on disk is rewritten.
- If the path genuinely has to change, repoint the child with
Set-VHD -Path '<child>' -ParentPath '<parent>'. - Re-run
Get-VHDon the child and confirm it resolves its parent before starting the machine.
A merge was interrupted or never finished
You have this one if Checkpoints appear in the console that nobody created, usually left by a backup job, or the volume ran out of space during a merge.
- Free space on the volume first. A merge needs room to work and will stop rather than corrupt anything.
- Delete the checkpoint in Hyper-V Manager, which starts the merge, and watch the differencing files shrink and disappear.
- Do not restart the host or the management service while a merge is running.
- Once the chain is a single base disk again, start the machine.
Backup products create their own checkpoints and normally remove them. A checkpoint older than your backup window that nobody recognises is a failed job, and clearing it is the first thing to do.
The machine was moved to a host that cannot read its state
You have this one if The files are complete and consistent and the machine only fails on the host it was moved to.
- Compare the configuration version with what the host supports:
Get-VM 'Server1' | Select-Object Name, VersionagainstGet-VMHostSupportedVersion. - Move the machine back to the original host if its version is higher than the new host supports. There is no downgrade.
- If the new host is the newer one, discard any saved state before importing, then raise the version with
Update-VMVersiononce the machine runs. - For a shielded or TPM-enabled machine, confirm the key protector is available on the new host, or the guest state cannot be unlocked at all.
Raising a machine’s configuration version is one way only. Once updated it cannot move back to a host that supports only the earlier version, so do it deliberately rather than as part of a recovery.
Full reference
What is on disk, and what has to match
| File | What it holds | What breaks it |
|---|---|---|
| Configuration file | The machine’s virtual hardware and settings | Being restored without its state and disk files |
| Saved state files | Guest memory and device state at the moment it was saved | A changed configuration, a partial restore, a different host generation |
| Base disk | Everything written before the first checkpoint | Being restored on its own, leaving newer data stranded |
| Differencing disks | Everything written since each checkpoint, pointing back at a parent | A moved folder, a partial copy, an interrupted merge |
Reading the chain
Get-VM 'Server1' | Get-VMHardDiskDrive | Select-Object VMName, Path
Get-VHD 'D:\VMs\Server1\disk_A1B2.avhdx' | Select-Object Path, ParentPath, VhdType, FragmentationPercentage
Follow ParentPath from the newest file down to a base disk whose type is not differencing. Every link has to resolve to a file that exists at exactly that path. If one does not, you have found the break. Do this before starting the machine, not after, because a machine that starts on a half-resolved chain writes into it.
Order of operations when you are not sure
- Copy the entire virtual machine folder, including every VHDX and AVHDX and the configuration, to somewhere with space for it.
- Read the chain and write down what points at what, so you can tell later whether a change helped.
- Deal with saved state first if there is any, because discarding it takes one variable out of the problem.
- Restore the file layout the chain expects rather than repointing, wherever the files still exist.
- Repoint only when the path genuinely cannot be restored, and only after the copy in step one.
- Merge outstanding checkpoints through the console once the chain resolves, and leave the host alone while it runs.
Configuration versions between hosts
A machine carries a configuration version, and a host supports a range of them. A machine from a newer host will not run on an older one, and there is no downgrade path: Update-VMVersion raises the version and nothing lowers it. Get-VMHostSupportedVersion on each host tells you what that host will accept, which is worth checking before a move rather than after a failed one. In a mixed-version estate this is a recurring source of machines that will not start on the host they were just moved to, and the fix is to move them back rather than to force anything.
Why AVHDX files are not clutter
They hold everything written since the checkpoint they belong to. Deleting one discards that data, and if the guest has been running on the chain, the base disk underneath is far out of date: you would be reverting the machine by however long the checkpoint has existed. Merge through the console instead, which writes the changes down into the parent and then removes the file. A folder full of AVHDX files that nobody recognises is a merge that never completed, not a cleanup opportunity.
None of this is a licensing or edition question. Saved state and checkpoints behave identically on Standard and Datacenter; edition affects how many virtual machines you may run on the host, not how their state is stored.
Every code this article covers
| Code | What it points at | Source |
|---|---|---|
0xC0370027 |
Not published by Microsoft. It accompanies a machine whose saved state could not be read back into it | not published by the vendor |
0xC0370104 |
Not published by Microsoft. It accompanies a machine whose state or disk chain on disk no longer matches its configuration | not published by the vendor |
Event ID 15500 |
Not published by Microsoft. It appears from the worker side against a machine that could not be started or restored | not published by the vendor |
Event ID 12620 |
Not published by Microsoft. It appears from the management service side; the file path it names is the useful part | not published by the vendor |
Confirm the fix worked
- The machine starts and the guest operating system comes up with its services running.
Get-VM 'Server1' | Select-Object Name, State, Versionreports it running with no saved state remaining.Get-VHDagainst each disk resolves the whole chain, or there is now a single base disk.- No differencing files remain in the folder that no longer belong to the machine.
- The machine’s configuration version is within the range
Get-VMHostSupportedVersionreports on this host.
Questions people ask about this
Will I lose data by discarding the saved state?
You lose what was in memory and not yet written to disk. The virtual disks are untouched, so the guest boots as it would after a power failure. Applications with their own recovery, such as databases, handle this routinely.
Is this a licensing or edition problem?
No, and it costs nothing to fix. Saved state and checkpoints behave identically on Standard and Datacenter. Edition affects how many virtual machines you may run, not how their state is stored.
Can I delete the AVHDX files to clean up?
No. Those files contain everything written since the checkpoint was taken. Deleting them discards that data, and if the guest has been running on them the base disk is far out of date. Merge through the console instead.
Why do checkpoints appear that nobody created?
Backup software creates them to get a consistent copy and normally removes them afterwards. One that outlives the backup window means a job failed part-way, and the merge needs completing manually.
Can I move the machine back to the old host after updating its version?
No. Raising the configuration version is one way only, and there is no downgrade. Check Get-VMHostSupportedVersion on both hosts before you update anything.
