На Hyper-V-хостах с тяжёлыми виртуальными машинами перезагрузка может пройти грубо: Windows начинает останавливать службы, Hyper-V пытается сохранить состояние ВМ, но времени не хватает. В итоге часть машин выключается не так аккуратно, как хотелось бы, а администратор потом разбирает последствия.
Обычно проблему решают в двух местах: сначала проверяют действие при остановке для каждой виртуальной машины, затем увеличивают общий таймаут остановки служб Windows. Второй пункт не заменяет нормальное обслуживание, но даёт Hyper-V больше времени на сохранение состояния.
Сначала проверьте Automatic Stop Action
Откройте Hyper-V Manager, выберите виртуальную машину, откройте Settings и перейдите в раздел Automatic Stop Action. Для машин, которые нужно именно сохранять, выберите Save the virtual machine state.
- Save the virtual machine state — Hyper-V сохраняет состояние машины на диск;
- Shut down the guest operating system — гостевая ОС получает команду штатного выключения;
- Turn off the virtual machine — жёсткое выключение, его лучше не использовать для рабочих серверов без причины.
Если машин много, быстрее проверить настройки через PowerShell от администратора.
Get-VM | Select-Object Name, AutomaticStopAction
Чтобы выставить сохранение состояния для конкретной машины:
Set-VM -Name 'VM-NAME' -AutomaticStopAction Save
Увеличиваем WaitToKillServiceTimeout
Параметр WaitToKillServiceTimeout находится в ветке HKLM\SYSTEM\CurrentControlSet\Control. Значение задаётся в миллисекундах. Например, 300000 означает 5 минут.
Сначала посмотрите текущее значение:
reg query HKLM\SYSTEM\CurrentControlSet\Control /v WaitToKillServiceTimeout
Затем задайте новый таймаут. Для большинства небольших Hyper-V-хостов разумно начать с 300000 или 600000, а не ставить огромные значения вслепую.
reg add HKLM\SYSTEM\CurrentControlSet\Control /v WaitToKillServiceTimeout /t REG_SZ /d 300000 /f
То же самое через PowerShell:
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control' -Name WaitToKillServiceTimeout -Value '300000'
Когда нужно больше 5 минут
Если на хосте большие ВМ с десятками гигабайт RAM, сохранение состояния может занимать дольше. Здесь важен здравый смысл: лучше оценить реальное время сохранения и добавить запас, чем бесконечно увеличивать таймаут. Иначе аварийная перезагрузка сервера будет тянуться слишком долго.
Проверьте свободное место
При сохранении состояния Hyper-V пишет данные на диск. Если на томе мало места, увеличение таймаута не спасёт. Проверьте расположение файлов виртуальных машин и запас свободного места на томах, где лежат конфигурации и диски ВМ.
Get-VMHost | Select-Object VirtualHardDiskPath, VirtualMachinePath Get-Volume | Select-Object DriveLetter, FileSystemLabel, SizeRemaining, Size
Проверка после настройки
- перезагрузите хост в согласованное окно обслуживания;
- посмотрите события Hyper-V в Event Viewer;
- убедитесь, что ВМ вернулись в ожидаемое состояние;
- проверьте, нет ли ошибок VSS и интеграционных служб в гостевых ОС.
Журнал можно открыть через Event Viewer → Applications and Services Logs → Microsoft → Windows → Hyper-V-VMMS. Если удобнее PowerShell:
Get-WinEvent -LogName 'Microsoft-Windows-Hyper-V-VMMS-Admin' -MaxEvents 50 | Select-Object TimeCreated, Id, LevelDisplayName, Message
Важный нюанс
Увеличение WaitToKillServiceTimeout помогает только дать службам больше времени. Оно не чинит медленное хранилище, зависшие гостевые ОС, проблемы VSS или нехватку места. Если машины регулярно не успевают сохраниться, смотрите в сторону хранилища, интеграционных служб и политики остановки конкретных ВМ.
FAQ по настройке Hyper-V
Можно ли просто поставить очень большой таймаут? Технически можно, но это плохая привычка. Если хосту нужно двадцать минут на остановку нескольких ВМ, лучше отдельно проверить скорость диска, состояние гостевых ОС и интеграционные службы. Таймаут должен давать запас, а не маскировать постоянную проблему.
Нужно ли менять настройку для всех виртуальных машин сразу? Нет. Для контроллеров домена, баз данных и файловых серверов часто лучше штатное завершение гостевой ОС, а для некоторых сервисных машин удобнее сохранение состояния. Смотрите на роль конкретной ВМ и требования приложения.
После изменения реестра перезагрузка обязательна? Для надёжной проверки да. Параметр относится к поведению Windows при остановке служб, поэтому оценивать результат лучше на реальной тестовой перезагрузке в окно обслуживания.





Не поможет, если есть виртуалка с FreeBSD. Надо отключать интеграцию с VSS. Баг воспроизводится на серверах 2012, 2016, 2019.
подтверждаю. никаких 600 секунд ждать никто не будет — будет жёсткое выключение виртуальных машин (но некоторые могут успеть остановиться нормально)