Hyper‑V: контрольные точки не удаляются, AVHDX не сливается — как исправить (2025)

Не удаляются снимки, а цепочка AVHDX распухла? Сделаем безопасное слияние и вернём виртуальную машину в строй.

Признаки зависших чекпоинтов

  • Удаление контрольной точки висит, прогресс не двигается.
  • В папке ВМ много .avhdx, основной .vhdx давно не менялся.
  • Заканчивается место на диске хоста.
Нужна помощь? Подключусь удалённо, сделаю всё за Вас: найду причину, поправлю настройки и дам рекомендации, чтобы проблема не вернулась.

1) Выключаем ВМ и создаём «страховочную» точку

PowerShell (Администратор, на хосте) — выполнять по одной:

Stop-VM -Name "VM-Name" -TurnOff
Checkpoint-VM -Name "VM-Name" -SnapshotName "safety-before-merge"

2) Проверяем цепочку AVHDX

PowerShell (Администратор) — вставить целиком:

$vm = "VM-Name"
$disks = (Get-VMHardDiskDrive -VMName $vm).Path
$report = foreach ($d in $disks) {
  Get-VHD -Path $d | Select-Object Path, VhdType, FileSize, Size, ParentPath
}
$report | Format-Table -Auto
$report | Out-File "$env:PUBLIC\vhd-report.txt"

3) Выполняем Merge

PowerShell (Администратор) — выполнять по одной:

Merge-VHD -Path "D:\VMs\VM-Name\Virtual Hard Disks\disk-0003.avhdx" -DestinationPath "D:\VMs\VM-Name\Virtual Hard Disks\disk-0002.avhdx"
Merge-VHD -Path "D:\VMs\VM-Name\Virtual Hard Disks\disk-0002.avhdx" -DestinationPath "D:\VMs\VM-Name\Virtual Hard Disks\disk-0001.avhdx"
Merge-VHD -Path "D:\VMs\VM-Name\Virtual Hard Disks\disk-0001.avhdx" -DestinationPath "D:\VMs\VM-Name\Virtual Hard Disks\disk.vhdx"

4) Чиним связь с родителем

PowerShell (Администратор) — выполнять по одной:

Set-VHD -Path "D:\VMs\VM-Name\Virtual Hard Disks\disk-0001.avhdx" -ParentPath "D:\VMs\VM-Name\Virtual Hard Disks\disk.vhdx"
Get-VHD -Path "D:\VMs\VM-Name\Virtual Hard Disks\disk-0001.avhdx"

5) Если мало места

PowerShell (Администратор) — выполнять по одной:

Convert-VHD -Path "D:\VMs\VM-Name\Virtual Hard Disks\disk-0003.avhdx" -DestinationPath "E:\VMs\VM-Name\disk-new.vhdx" -VHDType Dynamic

6) Удаляем пустые снимки и запускаем ВМ

PowerShell (Администратор) — выполнять по одной:

Get-VMSnapshot -VMName "VM-Name" | Remove-VMSnapshot -Confirm:$false
Start-VM -Name "VM-Name"

7) Профилактика

  • Не держите ВМ на снимках долго.
  • Следите за свободным местом на хосте.
  • Используйте быстрые SSD и регулярные бэкапы.

Читайте также: