Другое

Hyper-V не запускается после перезагрузки: решение проблемы

Полное руководство по решению проблемы с неработающим Hyper-V после перезагрузки Windows. Узнайте, как восстановить доступ к виртуальным машинам и предотвратить сбои в будущем.

Hyper-V перестал запускаться после перезагрузки компьютера: что делать?

Система: Windows 10 с установленным Hyper-V.
На гипервизоре работают 5 виртуальных машин с Windows Server 2019.
Система используется исключительно для работы виртуальных серверов.

Гипервизор завис ночью, предположительно во время ежедневного выгрузки виртуальных машин для резервного копирования. До этого момента Hyper-V работал стабильно в течение года без каких-либо изменений.

Вечером перед перезагрузкой все работало нормально. После утренней перезагрузки системы Hyper-V не запускается.

Проблемы:

  • Команда PowerShell Get-VM выполняется бесконечно
  • Hyper-V Manager зависает при попытке получить статус виртуальных машин
  • При принудительной остановке сервиса VMMS он не перезапускается

Как решить проблему с неработающим Hyper-V и восстановить доступ к виртуальным машинам?

Hyper-V перестал запускаться после перезагрузки компьютера, скорее всего, из-за проблем с сохраненным состоянием виртуальных машин или поврежденных конфигурационных файлов. Для решения этой проблемы необходимо перезапустить службу управления виртуальными машинами (VMMS), проверить права доступа к файлам Hyper-V и удалить сохраненное состояние зависших виртуальных машин.

Содержание


Причины проблемы

Из-за исследований можно выделить несколько основных причин, по которым Hyper-V не запускается после перезагрузки:

Поврежденные конфигурационные файлы

  • Файлы конфигурации виртуальных машин (.vmcx и .vmrs) могут быть повреждены
  • Особенно часто это происходит после некорректного завершения работы во время резервного копирования
  • Служба VMMS не может прочитать эти файлы и зависает при попытке запуска

Проблемы с сохраненным состоянием

  • Виртуальные машины могут оставаться в “сохраненном состоянии” после перезагрузки
  • Это блокирует запуск новых экземпляров гипервизора
  • Сохраненное состояние может быть повреждено или некорректно завершено

Нарушение прав доступа

  • Файлы Hyper-V могут потерять необходимые права доступа
  • Особенно часто это затрагивает каталоги C:\ProgramData\Microsoft\Windows\Hyper-V
  • Без правильных прав служба не может запуститься

Конфликт с защитой Windows

  • Эксплуатационная защита (Exploit Protection) может блокировать работу компонентов Hyper-V
  • Особенно это касается файла vmcompute.exe

Базовые методы решения

1. Перезапуск службы VMMS

Для начала попробуем перезапустить службу управления виртуальными машинами:

powershell
# Запустите PowerShell от имени администратора
Stop-Service vmms -Force
Start-Service vmms

Если служба не перезапускается, попробуйте принудительно завершить процесс:

powershell
Get-Process vmms | Stop-Process -Force
Start-Service vmms

2. Удаление сохраненного состояния

Если проблема связана с сохраненным состоянием виртуальных машин, удалите его:

powershell
# Проверить состояние всех виртуальных машин
Get-VM | Select-Object Name, State

# Принудительно удалить сохраненное состояние для всех ВМ
Get-VM | ForEach-Object {
    if ($_ | Get-VMHardDiskDrive) {
        $_ | Stop-VM -Force -TurnOff
        $_ | Remove-VM -Force
        $_ | New-VM -Name $_.Name -MemoryStartupBytes 1GB -BootDevice VHD -VHDPath $_.HardDrives[0].Path
    }
}

Важно: Этот метод требует восстановления виртуальных машин из резервных копий, так как конфигурация будет сброшена.

3. Проверка и исправление прав доступа

Исправьте права доступа к каталогам Hyper-V:

powershell
# Проверить текущие права
Get-Acl "C:\ProgramData\Microsoft\Windows\Hyper-V" | Format-List

# Восстановить стандартные права
$acl = Get-Acl "C:\ProgramData\Microsoft\Windows\Hyper-V"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("SYSTEM", "FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$rule2 = New-Object System.Security.AccessControl.FileSystemAccessRule("Administrators", "FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$rule3 = New-Object System.Security.AccessControl.FileSystemAccessRule("Users", "ReadAndExecute", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.SetAccessRule($rule)
$acl.SetAccessRule($rule2)
$acl.SetAccessRule($rule3)
Set-Acl "C:\ProgramData\Microsoft\Windows\Hyper-V" $acl

Расширенные методы устранения неполадок

1. Использование Process Monitor для диагностики

Если стандартные методы не помогают, используйте Process Monitor для диагностики:

  1. Скачайте и запустите Process Monitor
  2. Настройте фильтрацию для процесса vmms.exe
  3. Попробуйте запустить службу VMMS
  4. Проанализируйте, какие файлы вызывают блокировку

Часто проблема заключается в невозможности чтения файла data.vmcx в каталоге C:\ProgramData\Microsoft\Windows\Hyper-V.

2. Переустановка компонентов Hyper-V

Если файлы Hyper-V повреждены, потребуется переустановка компонентов:

powershell
# Отключить Hyper-V
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

# Перезагрузить компьютер
Restart-Computer -Force

# Включить Hyper-V
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

3. Отключение Exploit Protection

Эксплуатационная защита может блокировать работу Hyper-V:

  1. Откройте Панель управленияБезопасность и обслуживаниеБезопасность Windows
  2. Перейдите в Защита от эксплойтов
  3. Нажмите Настройка параметров защиты
  4. Перейдите на вкладку Параметры программы
  5. Найдите C:\Windows\System32\vmcompute.exe
  6. Отключите все параметры защиты для этого файла

Восстановление доступа к виртуальным машинам

1. Вручную восстановление виртуальных машин

Если стандартные методы не работают, восстановите виртуальные машины вручную:

  1. Найдите файлы виртуальных машин в C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines
  2. Скопируйте их в безопасное место
  3. Переименуйте файлы конфигурации (удалите расширение .vmcx)
  4. Создайте новые виртуальные машины с теми же настройками
  5. Подключите существующие диски VHD/VHDX

2. Использование резервных копий

Учитывая, что у вас есть ежедневные резервные копии, восстановите виртуальные машины из них:

powershell
# Восстановление виртуальной машины из резервной копии
New-VM -Name "RestoredVM" -MemoryStartupBytes 4GB -BootDevice VHD -VHDPath "D:\Backups\VM.vhdx" -Path "C:\VMs\RestoredVM"

Предотвращение подобных проблем в будущем

1. Настройка корректного завершения работы

Настройте правильный порядок выключения виртуальных машин:

  1. Откройте Hyper-V Manager
  2. Выберите виртуальную машину
  3. В настройках задайте порядок автоматического запуска:
    • Nothing - не запускать автоматически
    • If Running - запускать только если работала до перезагрузки
    • Always - всегда запускать автоматически

2. Мониторинг и регулярное обслуживание

  • Регулярно проверяйте журналы событий Hyper-V
  • Используйте командлеты PowerShell для автоматизации проверки состояния
  • Настрайте уведомления о проблемах с запуском виртуальных машин

3. Резервное копирование

  • Убедитесь, что резервные копии включают не только диски, но и конфигурации виртуальных машин
  • Храните резервные копии на отдельном носителе
  • Периодически проверяйте возможность восстановления из резервных копий

Источники

  1. Microsoft Learn - Восстановленные виртуальные машины Hyper-V не запускаются
  2. Microsoft Learn - Hyper-V не может запустить виртуальную машину после обновления
  3. Microsoft Learn - Устранение неполадок Hyper-V установке, конфигурации и операционных сбоев
  4. Microsoft Q&A - Hyper-V VMMS service won’t start
  5. Windows OS Hub - Hyper-V Virtual Machine Stuck in Stopping/Starting State
  6. Focused IT - Hyper-V stuck “Connecting to Virtual Machine Management service…”
  7. Microsoft Learn - Устранение неполадок Hyper-V в Windows 10
  8. BDRShield - What to Do When Hyper-V Won’t Start

Заключение

Основные моменты для решения проблемы с неработающим Hyper-V:

  1. Начните с базовых методов - перезапустите службу VMMS и удалите сохраненное состояние виртуальных машин
  2. Проверьте права доступа к файлам Hyper-V, так как это частая причина сбоев
  3. Используйте Process Monitor для диагностики, если стандартные методы не работают
  4. Переустановите компоненты Hyper-V как крайнюю меру при серьезных повреждениях
  5. Восстановите виртуальные машины из резервных копий, если конфигурации повреждены
  6. Настройте правильное завершение работы для предотвращения подобных проблем в будущем

Для вашей ситуации с 5 виртуальными машинами Windows Server 2019 рекомендуется: сначала попробовать удалить сохраненное состояние и перезапустить службу VMMS, затем при необходимости восстановить виртуальные машины из резервных копий. Регулярное резервное копирование и правильная настройка процедур выключения помогут избежать подобных проблем в будущем.

Авторы
Проверено модерацией
Модерация