Как выключить виртуальную машину
Перейти к содержимому

Как выключить виртуальную машину

  • автор:

Как выключить виртуальную машину Proxmox через консоль

В редких случаях виртуальная машина в Proxmox циклически перезапускается и из-за этого завершить ее крайне сложно. Сложно это сделать через web-интерфейс, но через консоль проще простого.

Чтобы это сделать в консоли, нам нужно иметь доступ к консоли гипервизору Proxmox и знать id-номер виртуальной машины.

Управление запуском ВМ через консоль

Выводим состояние всех машин

sudo qm list VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID 100 win10 stopped 8000 32.00 0 102 cad stopped 32768 42.00 0 103 HomeAssistant running 2048 32.00 28153

Нас интересует ID 103.

Завершить работу

sudo qm shutdown 103

Перезагрузить

sudo qm reboot 103

Остановить работу

sudo qm stop 103

Запустить

sudo qm start 103

Если «trying to acquire lock…»

При остановке виртуальной машины выскакивает ошибка, что виртуальная машина заблокирована:

sudo qm stop 103 trying to acquire lock. can't lock file '/var/lock/qemu-server/lock-103.conf' - got timeout

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

sudo rm -f /var/lock/qemu-server/lock-103.conf sudo qm stop 103

Как остановить зависшую виртуальную машину в Hyper-V?

date

06.09.2022

user

itpro

directory

Hyper-V, PowerShell, Windows Server 2016, Windows Server 2019

comments

комментариев 5

Если ваша виртуальная машина, запущенная на хосте Hyper-V зависла по каким-то причинам, перестала отвечать, и не реагирует на кнопки включения, выключения, перезагрузки в консоли Hyper-V Manager, единственный быстрый способ принудительно остановить такую машину — завершить процесс этой ВМ в хостовой ОС. Вы можете принудительно перезапустить конкретную ВМ в Hyper-V на Windows Server 2022/2019/2016 (или бесплатного Hyper-V Server) без перезагрузки всего сервера и запущенных на нем виртуальных машин (полезно, если у вас нет HA кластера Hyper-V и Live-Migration).

Виртуальная машина Hyper-V зависла в статусе Stopping или Starting

Администраторы Hyper-V периодически сталкиваются с ситуациями, когда что одна из ВМ на хосте Hyper-V зависает в состоянии Stopping (Stopping-Critical), Starting (Starting 10%) или Backing up.

Виртуальная машина hyper зависла в статусе stopping

При этом гостевая ОС перестаёт отвечать, и кнопки “Turn Off”,” Shut Down” и” Reset” вв консоли Hyper-V Manager становиться недоступны или при нажатии возвращают ошибку:

Failed to change state The operation cannot be performed while the object is in its current state

The operation cannot be performed while the object is in its current state

Если ваш хост Hyper-V не показывает список зарегистрированных виртуальных машин в консоли Hyper-V Manager и возвращает ошибку “Connecting to Virtual Machine Management service”, вам нужно перезапустить процесс vmms.exe (служба Hyper-V Virtual Machine Management). Это безопасная операция, которая не прервет работу запушенных виртуальных машин. Проще всего перезапустить процесс службы vmms через консоль services.msc или PowerShell командой:

перезапустить службу vm management service hyper v

Как завершите процесс зависшей виртуальной машины Hyper-V?

Чтобы принудительно выключить/ перезапустить зависшую виртуальную машину без перезагрузки всего хостового сервера Hyper-V, нужно завершить ее рабочий процесс на гостевой ОС. Все ВМ на хосте Hyper-V запускаются с помощью процесса vmwp.exe (Virtual Machine Worker Process). Для поиска конкретного PID процесса нужно узнать GUID виртуальной машины.

Настройки hyper v manager

Вы можете найти GUID ВМ в консоли управления Hyper-V Manager. Откройте настройки сервера (Hyper-V Settings). В разделе Server указан каталог, в котором хранятся конфигурационные файлов ВМ (в нашем примере D:\VMStore).

Откройте этот каталог в File Explorer и найдите каталог с именем зависшей виртуальной машины. Скопируйте GUID, который указан в имени конфигурационного файла ВМ с расширением *.vmcx.

hyper-v guid виртуальной машины

Теперь нужно запустить диспетчер задач (Task Manager) и перейти на вкладку Details. Все виртуальные машины запускаются в рамках собственного экземпляра процесса vmwp.exe. Чтобы определить какой процесс за какую ВМ отвечает, нам нужен полученный ранее GUID зависшей ВМ. Найдите процесс vmwp.exe, у которого в столбце User name содржится GUID вашей ВМ. Завершите данный процесс (End Task).

Завершить процесс зависшей вирулаьной машины Hyper-V

По аналогии вы можете найти и завершить процесс подвисшей виртуальной машины на хосте Hyper-V с помощью утилиты Process Explorer.

process explorer завершить процесс vmwp зависшей виртуальонй машины hyper-v

  1. Запустите Process Explorer с правами администратора и нажмите Find Handle or DLL (или нажмите Ctrl-F );
  2. В строке поиска укажите путь к виртуальному диску зависшей виртуальной машину (*.vhdx);
  3. Process Explorer выведет все процессы, которые используются VHDX файл виртуальной машины;
  4. Найдите процесс виртуальной машину vmwp.exe и завершите его.

Виртуальная машина будет принудительно остановлена. Теперь вы сможете делать с ней все что угодно.

Выключить зависшую ВМ на Hyper-V с помощью PowerShell

Гораздо проще найти и завершить процесс зависшей виртуальной машины с помощью PowerShell. Запустите консоль PowerShell с правами администратора (учетная запись должна состоять в локальной группе Hyper-V administrators).

В этом случае встроенный командлет Stop-VM из модуля Hyper-V PowerShell не позволит вам выключить ВМ. Если попробовать выполнить команду Stop-VM –Force , она также зависает. Очевидно ожидает ответа от ВМ.

Вы также можете завершить процесс ВМ по ее VM ID. Можно получить GUID ВМ по ее имени. Например, для ВМ с именем SVM-GUARDEDHOST1, выполните команду:

$VMGUID = (Get-VM «SVM-GUARDEDHOST1»).ID

Если вы не хотите набирать полное имя ВМ, можете вывести список всех ВМ, зарегистрированных на данном хосте Hyper-V и их ID:

Get-VM | Select VMName, VMId, Parh

получить id виртуальной машины hyper v из powershell

Скопируйте VMID нужной вам ВМ из полученного списка.

Теперь нужно найти идентификатор процесса (PID) ‘vmwp.exe’ для вашего VMGUID:

Затем нужно принудительно завершить рабочий процесс подвисшей виртуальной машины Hyper-V с помощью команды Stop-Process:

Stop-Process ($VMWMProc.ProcessId) –Force

powershell остановить зависшую ВМ

Совет. У нас также описана аналогичная процедура по завершению процесса зависшей ВМ на хосте VMWare ESXi.

Виртуальная машина Hyper-V зависает при резервном копировании

При выполнении резервного копирования ВМ на хосте Hyper-V вы можете столкнуться с зависанием виртуальной машины Hyper-V в состоянии Running и статусом Backing up. При этом вы не можете остановить или запустить ВМ через Hyper-V Manager.

hyper-v: виртуальня машина зависла в статусе backing up

Если вы не хотите перезагружать хост Hyper-V, проверьте сначала состояние службу «Microsoft Hyper-V VSS Writer»:

vssadmin list writers

проверить состояние vss writer

Убедитесь, что команда не вернула ошибку. Значит нужно перезапустить службу «Hyper-V Virtual Machine Management» с помощью команды PowerShell:

Get-service vmms | stop-process
Убедитесь, что процесс vmms.exe завершен. Если нет, завершите его принудительно:

Get-Process | Where-Object < $_.ProcessName -eq 'vmms' >| Stop-Process

Теперь можно запустить службу Hyper-V:

Start-Service vmms
Перезапуск службы Virtual Machine Management должно сбросить состояние VSS Writer для Hyper-V.

Hyper-V: Не удалось изменить состояние виртуальной машины

Иногда бывает, что даже после завершения зависшего процесса вы не можете включить ВМ и она зависает в статусе Starting с ошибкой:

Virtual Machine Connection Не удалось изменить состояние. Failed to Change State.

hyper v ошибка запуска ВМ failed to change state

В этом случае проверьте следующие варианты:

hyper v сетевая карта с configuration error

  • Проверьте что на диске, на котором хранятся файлы ВМ достаточно свободного места;
  • Если в настройках ВМ подключен ISO образ, проверьте этот файл доступен;
  • Проверьте сетевые настройки ВМ. Виртуальные сетевые адаптеры должны быть подключены к существующему виртуальному коммутатору Hyper-V (не должно быть статуса Network Adapter – Configuration Error);
  • Проверьте, что служба Hyper-V Virtual Management Service (VMMS) запушена, и не зависла в статусе Stopping;
  • Убедитесь, что ваш антивирус не блокирует доступ к файлам ВМ. Добавьте пути к каталогу с виртуальными машинами в исключения антивируса ( см. как добавить исключения во встроенный антивирус Windows Defender в Windows Server);
  • Проверьте ошибки в журнале событий Event Viewer -> Applications and Services Logs -> Microsoft -> Windows -> Hyper-V-Worker;
  • Отключите режим сна и гибернации в гостевых операционных системах виртуальных машин. В Windows спящий режим отключается через Control Panel –>Power Options -> Change plan settings -> Put the computer to sleep -> Never. Чтобы отключить спящий режим в гостевой ОС с Ubuntu Linux, выполните команду: systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

Если методы, описанные выше, не помогли, похоже, что вам придется перезагрузить весь хост Hyper-V.

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

VxRail. Как выключить виртуальную машину, не отвечая на запросы, на хосте ESXi

Сводка: Как выключить виртуальную машину, не отвечая на запросы, на хосте ESXi.

  • Содержание статьи
  • Свойства статьи
  • Оцените эту статью

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

Содержание статьи

Симптомы

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

Виртуальная машина не отвечает и не может быть принудительно отключена или остановлена.

Не удается получить доступ к файлам или разблокировать их на виртуальной машине.

После выключения виртуальной машины vCenter Server отображает виртуальную машину как запущенную.

Причина

Существует несколько причин этих симптомов.

Разрешение
  1. Войдите как пользователь root в ESXi с помощью SSH.
  2. Получите список запущенных виртуальных машин, определяемых идентификатором мира и именем дисплея, выполнив команду:
# esxcli vm process list
  1. Запишите world ID виртуальной машины, не отвечая на запросы.
  2. Выключите виртуальную машину, не отвечая на запросы, из списка, выполнив одну из следующих команд:
# esxcli vm process kill -t=soft -w=WorldID Or # esxcli vm process kill -t=hard -w=WorldID Or # esxcli vm process kill -t=force -w=WorldID

ПРИМЕЧАНИЕ. Эти команды обеспечивают различные уровни силы для остановки виртуальной машины:

  • Мягкое — самый мягкий.
  • Жесткий диск выполняет немедленное выключение.
  • В качестве последнего параметра следует использовать force .
esxcli vm process kill
Свойства статьи
Затронутый продукт

VxRail Appliance Family, VxRail Appliance Series, VxRail G Series Nodes, VxRail D Series Nodes, VxRail E Series Nodes, VxRail P Series Nodes, VxRail S Series Nodes, VxRail V Series Nodes, VxRail VD Series Nodes

Как выключить виртуальную машину

• virsh edit – изменить настройки виртуальной машины;

• virsh start – запустить виртуальную машину;

• virsh shutdown – выключить виртуальную машину;

• virsh reboot – перегрузить виртуальную машину;

• virsh console – открыть консоль виртуальной машины; выход из консоли осуществляется при помощи сочетания Ctrl + ] ;

• virsh list —all – вывести список всех виртуальных машин;

• virsh destroy – уничтожает (останавливает) виртуальную машину (когда shutdown не работает);

• virsh undefine – удалить виртуальную машину из списка (необходимо применять после destroy);

• virsh vcpuinfo – просмотр привязки виртуальных ядер к физическим в данный момент времени (повторный вывод может отличаться, если привязка ядер не фиксированная).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *