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 и регулярные бэкапы.