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

Рассмотрим, как принудительно выключить/перезагрузить зависшую виртуальную машину на хосте Proxmox, которая не отвечает на команды Reboot/Stop/Reset из веб интерфейса.

В моем случае, при попытке выключить виртуальную машину Proxmox в панели задач появилась ошибка:

trying to acquire lock...
TASK ERROR: can't lock file '/var/lock/qemu-server/lock-152.conf' - got timeout

Не могу выключить ВМ proxmox can't lock file

В логе /var/log/pve/tasks/active ошибка выглядит так:

UPID:pve1:00002C30:0005677F:67E127EF:qmstop:152:root@pam: 1 67E127F9 can't lock file '/var/lock/qemu-server/lock-152.conf' - got timeout

При этом ВМ не реагирует на штатные команды сброса или принудительного выключения ВМ из веб интерфейса Proxmox.

В некоторых случаях причиной блокировки ВМ могут быть текущие операции с ВМ (бэкап, клонирование, управление снапшотами). В этом случае в описании задачи будет указана причина блокировки. Просто дождитесь окончания задания.

  • Error: VM is locked (backup)
  • VM is locked (snapshot)
  • VM is locked (clone)

• VM is locked (snapshot)

Для остановки запущенной ВМ из консоли Proxmox доступны две команды:

# qm shutdown <vmid>

Эта команда аналогична короткому однократному нажатию на кнопку питания физического компьютера, когда в операционную систему отправляется команда ACPI для запуска процедуры корректного отключения. Это безопасный способ выключения ВМ (но требует наличие агента QEMU в гостевой ОС).

Аналогичная команда отправки гостевой ОС в корректную перезагрузку через guest tools:

# qm reboot <vmid>

Команда принудительного выключения ВМ (аналогично отключению питания на физическом компьютере):

# qm stop <vmid>

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

# qm stop 152

trying to acquire lock...
can't lock file '/var/lock/qemu-server/lock-152.conf' - got timeout

Не могу выключить ВМ - файл заблокирован /var/lock/qemu-server/lock-152.conf

Пробуем снять все блокировки ВМ:

# qm unlock 152

trying to acquire lock...
can't lock file '/var/lock/qemu-server/lock-102.conf' - got timeout

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

# rm -f /var/lock/qemu-server/lock-103.conf

Останавливаем виртуальную машину:

# qm stop 103

Удалить файл блокировки ВМ proxmox

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

Также, если ничего не помогает, можно принудительно завершить процесс ВМ. Получить идентификатор процесса (PID) запущенной виртуальной машины можно, выведя список всех ВМ на хосте:

# qm list

qm list вывести список ВМ и их PID

Здесь видно, что ВМ запущена (STATUS = running) в процессе с PID = 23549.

Или получим PID, отфильтровав процессы по VMID зависшей виртуальной машины:

# ps aux | grep "/usr/bin/kvm -id 152"

Найти PID процесса виртуальной машины proxmox

# kill -9 PIDVM

Проверяем, что ВМ остановлена (статус stopped):

kill -9 принудительно завершить процесс виртуальной машины proxmox

Команды qm stop и qm shutdown будут работать только когда в гостевой ОС установлены qemu guest tools. Можно проверить, доступен ли Qemu агент в ВМ по ее ID из консоли самого хоста:

# qm agent 152 ping

QEMU guest agent is not running

qm agent 152 ping


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


Комментариев: 0 Оставить комментарий

Оставить комментарий

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

Я не робот( Обязательно отметьте)