Home Server Backups Failed: Recovery Checkpoints That Never Clean Up

Your home server stops backing up. The error says “insufficient free disk space”. You delete files. The error returns. The real cause is hidden: recovery checkpoints that never clean up. This article shows how to find them, remove them, and make backups reliable again.

The Symptom

Veeam Backup & Replication runs a VM backup job each night. Each job creates a recovery checkpoint for every VM. The job then converts each checkpoint to a reference point. The conversion failed. The error: “Failed to convert the check point to the reference point”. The checkpoint stayed on disk. Each night added another checkpoint. After 20 nights, the checkpoints used 180 GB. The drive had 40 GB free. The backup job failed with “Insufficient free disk space on production drive C:”.

The Cause

Veeam uses a Hyper-V recovery checkpoint to make a consistent snapshot. Veeam must delete the snapshot after the backup. The delete operation merges the snapshot data back into the base disk. The merge needs free disk space on the drive that holds the VM disks. If the drive is nearly full, the merge fails. Veeam leaves the checkpoint behind. The next run creates another checkpoint. The checkpoints accumulate. This is a known failure pattern on Windows Server 2019 with Hyper-V.

You can identify these checkpoints by name. Each name contains the text “Veeam Recovery Checkpoint”.

Get-VMCheckpoint -VMName "ubuntuserver" | Select-Object Name, CreationTime

How to Check Your Server

Open PowerShell as administrator on the Hyper-V host. Run these commands.

1. List all checkpoints on every VM:

Get-VM | ForEach-Object { "{0}: {1} checkpoints" -f $_.Name, (Get-VMCheckpoint -VMName $_.Name).Count }

2. Find the snapshot files and their total size:

Get-ChildItem -Path "C:\VMs" -Recurse -Filter *.avhdx |
  Measure-Object -Property Length -Sum

3. Check the free space on the VM drive:

Get-CimInstance Win32_LogicalDisk -Filter "DeviceID='C:'" |
  Select-Object DeviceID, FreeSpace, Size

4. Search the backup event log for the conversion error:

Get-WinEvent -LogName "Veeam Backup" |
  Where-Object { $_.Message -match "convert the check point" }

The Fix

Step 1: Free Disk Space

The merge needs room to work. Free space first. Look for install leftovers. On our server, a Veeam upgrade staged 78 GB of files in two folders: VeeamDeployment and VeeamMedia. We deleted both folders. Clean the temp folder too.

Step 2: Merge the Checkpoints

Hyper-V can merge checkpoints while the VM runs. You do not need to stop the VM. The merge happens in the background. Remove all checkpoints for a VM with one command:

Get-VMCheckpoint -VMName "ubuntuserver" | Remove-VMCheckpoint

Wait until the snapshot files disappear from the VM folder. The merge is complete when the count reaches zero. We merged 20 checkpoints on three running VMs. The servers never stopped. The disk usage dropped by 180 GB.

Step 3: Verify

Check that no checkpoints remain. Then run the next scheduled backup. The job should finish with “All objects have been backed up successfully”. The event log should show no conversion errors. The restore point should appear with no warnings.

Prevention

  • Keep at least 15 percent of the VM drive free. The checkpoint merge needs this space.
  • Check the checkpoint count once per week. If it climbs, find out why.
  • Watch the system pool memory. If “System Driver Resident” grows, disable VMQ and offloads on the network adapter.
  • Keep a second copy offsite. Our article on Veeam agent backups for physical machines covers one path.
Disable-NetAdapterVmq -Name "Ethernet"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*LSOv2IPv4" -RegistryValue 0

Summary

  • Recovery checkpoints that fail to convert accumulate on the VM drive.
  • They consume disk space and break backup jobs.
  • Merge them with Remove-VMCheckpoint. You do not need to stop the VM.
  • Free disk space first. The merge needs headroom.
  • Monitor the checkpoint count and the pool memory.

Leave a Reply

Your email address will not be published. Required fields are marked *