Как принудительно завершить работу зависшей виртуальной машины Hyper-V
Архитектура процессов Hyper-V и причины блокировки (Lock)
В диспетчере Hyper-V виртуальная машина (VM) может зависнуть в состоянии «Остановка» (Stopping), «Сохранение» (Saving) или «Запуск» (Starting), не реагируя на команды управления. Кнопки выключения или перезагрузки становятся серыми (неактивными). Каждая виртуальная машина в гипервизоре Microsoft обслуживается отдельным процессом рабочего процесса виртуальной машины — vmwp.exe (Virtual Machine Worker Process). Зависание этого процесса происходит из-за блокировки ввода-вывода (I/O Deadlock) на уровне хранилища (отвал iSCSI LUN, проблема с CSV-томом) или из-за багов интеграционных служб (Integration Services) при резервном копировании (VSS). Бизнес-риски: недоступность сервиса внутри ВМ, невозможность запустить ВМ на другом узле кластера (так как она заблокирована на текущем).
Процессы, обслуживающие Hyper-V
| Процесс | Описание | Что будет, если убить? |
|---|---|---|
vmms.exe | Virtual Machine Management Service. Управляет всеми ВМ. | Перезапуск службы безопасен, ВМ продолжат работать, обновится только консоль. |
vmwp.exe | Рабочий процесс конкретной ВМ (Имеет GUID). | Принудительное (жесткое) выключение (Crash) конкретной ВМ без сохранения данных. |
Алгоритм поиска и убийства зависшего процесса vmwp.exe
Сценарий 1: Убийство зависшей ВМ через PowerShell (Рекомендуемый)
Самый быстрый и точный способ — найти PID (Process ID) процесса vmwp.exe, привязанного к зависшей машине, и завершить его.
1. Получаем GUID зависшей машины (Замените 'Имя_ВМ')
$VMGUID = (Get-VM -Name "Имя_ВМ").Id
2. Ищем процесс vmwp.exe с аргументом командной строки, содержащим этот GUID
$VMProcess = Get-WmiObject Win32_Process | Where-Object { $_.Name -match 'vmwp.exe' -and $_.CommandLine -match $VMGUID }
3. Убиваем процесс (Hard Kill)
Stop-Process -Id $VMProcess.ProcessId -ForceПосле этого статус ВМ в консоли Hyper-V мгновенно изменится на «Выключена», и её можно будет запустить заново.
Сценарий 2: Использование Task Manager и GUID (Визуально)
Если PowerShell недоступен.
- В Диспетчере Hyper-V откройте свойства зависшей ВМ -> Жесткий диск -> Посмотрите путь к VHDX. Папка с файлом конфигурации имеет имя, равное GUID машины (например,
14B2C3...). Запишите первые 4 символа. - Откройте Диспетчер задач (Task Manager) на хосте Hyper-V. Перейдите на вкладку «Подробности» (Details).
- Найдите все процессы
vmwp.exe. - Добавьте столбец «Имя пользователя» (User name). Именем пользователя для каждого vmwp.exe будет GUID машины!
- Найдите строку с вашим GUID, нажмите правой кнопкой мыши -> Снять задачу.
Типовые ошибки администраторов
- Перезагрузка всего хоста Hyper-V: Из-за одной зависшей ВМ администраторы часто уводят в ребут весь физический сервер, отключая десятки других рабочих виртуальных машин. Изолированное убийство нужного vmwp.exe решает проблему без даунтайма остальных сервисов.
- Попытка убить процесс vmms.exe: Перезапуск службы управления (vmms) часто помогает, если консоль «глючит», но он НЕ выключает саму зависшую ВМ.
Проблема часто кроется в конфликте VSS-провайдеров на СХД или внутри гостевой ОС. Специалисты ITSTM проведут аудит систем резервного копирования (Veeam, DPM), обновят драйверы Integration Services и стабилизируют работу кластера (CSV).
Частые вопросы (FAQ)
Безопасно ли убивать процесс vmwp.exe?
Для хоста — абсолютно безопасно. Для самой ВМ — это эквивалентно выдергиванию шнура питания из розетки. Несохраненные данные в оперативной памяти ВМ будут потеряны, при следующем запуске ОС выдаст сообщение о непредвиденном завершении работы.
Что делать, если процесс vmwp.exe не убивается (Access Denied)?
Убедитесь, что выполняете команду PowerShell или открыли Диспетчер задач от имени Администратора. Если процесс висит намертво (Unkillable process), значит он ждет ответа от драйвера ядра (обычно дисковой подсистемы). Поможет только перезагрузка физического хоста.
Почему ВМ зависает в статусе 'Сохранение' (Saving)?
При сохранении ВМ содержимое её ОЗУ сбрасывается в файл .bin (или .vmrs) на диск. Если место на диске (CSV томе) закончилось, или диск отвалился, процесс записи не может завершиться, и ВМ зависает.
Поможет ли перезапуск службы Hyper-V Virtual Machine Management?
В редких случаях — да, если завис не сам рабочий процесс ВМ, а служба управления, которая не может обновить статус в UI. Выполните 'Restart-Service vmms' — работающие ВМ от этого не пострадают.