Неправильное выключение сервера Proxmox VE — прямой путь к повреждению файловых систем виртуальных машин, рассинхронизации кластера и потере данных в хранилищах ZFS или Ceph. Операция кажется тривиальной, но в гипервизоре она затрагивает сразу несколько уровней: работающие ВМ и контейнеры, службы кластера, пулы хранения и саму хостовую систему. Простое обесточивание сервера в такой конфигурации часто приводит к тому, что после включения виртуальные машины уходят в проверку дисков или не стартуют вовсе.

Корректное завершение работы Proxmox занимает от пары минут до получаса — в зависимости от количества гостевых систем и скорости их остановки. В этом материале разберём все способы: через веб-интерфейс, через консоль, с предварительной остановкой ВМ и с принудительным завершением, когда штатный метод не срабатывает.

Почему нельзя просто обесточить сервер Proxmox

Proxmox VE построен на базе Debian и держит в оперативной памяти множество незаписанных данных: кэш файловых систем, транзакции ZFS, журналы кластерных служб. При резком отключении питания эти данные теряются, а файловые системы гостевых машин остаются в «грязном» состоянии.

Особенно чувствительны к внезапному отключению виртуальные машины с базами данных и контейнеры LXC с активной записью на диск. После аварийного выключения возможны повреждение таблиц БД, битые снапшоты и ошибки монтирования томов. Если сервер входит в кластер, резкое отключение узла дополнительно вызывает ложные срабатывания механизма HA и миграцию ВМ на другие ноды.

⚠️ Внимание: выключение сервера кнопкой питания с удержанием (принудительное) допустимо только как последняя мера, когда система полностью зависла и не отвечает ни на SSH, ни на локальную консоль. Сначала всегда пробуйте штатные методы.

Выключение через веб-интерфейс

Самый простой способ — использовать веб-панель Proxmox. Авторизуйтесь в интерфейсе, выберите нужный узел в дереве слева и в правом верхнем углу нажмите кнопку Shutdown. Система предложит подтвердить действие, после чего начнёт штатное завершение работы.

Перед нажатием кнопки убедитесь, что все важные виртуальные машины и контейнеры остановлены. По умолчанию Proxmox при завершении работы пытается корректно остановить гостевые системы, посылая им сигнал ACPI shutdown, но гость может проигнорировать его, если внутри ВМ не установлены гостевые агенты QEMU Guest Agent или ОС занята зависшим процессом.

  • 🖥️ Откройте веб-интерфейс и выберите узел в дереве ресурсов слева
  • 🛑 Остановите критичные ВМ и контейнеры вручную через контекстное меню
  • ⏳ Дождитесь статуса «остановлено» у всех гостевых систем
  • 🔘 Нажмите Shutdown в правом верхнем углу и подтвердите действие
📊 Как вы обычно выключаете сервер Proxmox?
Через веб-интерфейс
Командой shutdown по SSH
Скриптом с остановкой ВМ
По расписанию через cron

Выключение через консоль и SSH

Если веб-интерфейс недоступен или вы работаете по SSH, завершение работы выполняется стандартными командами Linux. Подключитесь к серверу под пользователем root и выполните одну из команд:

shutdown -h now

Альтернативный вариант — команда poweroff, которая делает то же самое: останавливает все службы и отключает питание сервера. Если нужно выключить машину с задержкой, например через 10 минут, используйте параметр времени: shutdown -h +10. Это удобно, когда требуется дать пользователям ВМ время сохранить работу.

Отменить запланированное выключение можно командой shutdown -c — она сработает, пока таймер не истёк. Учтите, что при подключении по SSH сессия разорвётся в процессе завершения работы, это нормальное поведение.

💡

Перед выключением по SSH проверьте активные задачи командой «pvesh get /cluster/tasks» или просто посмотрите журнал задач в веб-интерфейсе — прерванный бэкап или репликация могут оставить хранилище в несогласованном состоянии.

Правильный порядок остановки виртуальных машин

Ключевой момент безопасного выключения — корректная остановка гостевых систем до завершения работы хоста. Рекомендуемый порядок действий выглядит так:

  • 💾 Сохраните данные и завершите работу приложений внутри важных ВМ
  • 🧩 Проверьте, что в ВМ установлен и запущен QEMU Guest Agent
  • 🛑 Остановите ВМ командой qm shutdown <VMID> или через веб-интерфейс
  • 📦 Остановите контейнеры командой pct shutdown <CTID>
  • ✅ Убедитесь, что все гостевые системы перешли в статус stopped
  • 🔌 Только после этого выключайте сам хост

Разница между qm shutdown и qm stop принципиальна: первая команда отправляет гостю сигнал штатного завершения (как нажатие кнопки питания в обычной ОС), вторая — мгновенно «вырывает шнур», что равнозначно аварийному отключению. Используйте stop только для зависших машин.

☑️ Чек-лист перед выключением Proxmox

Выполнено: 0 / 5

Выключение узла в кластере Proxmox

Если сервер входит в кластер, процедура усложняется. Сначала мигрируйте работающие ВМ на другие узлы — через веб-интерфейс (пункт Migrate в контекстном меню машины) или командой qm migrate. Живая миграция позволяет перенести машины без их остановки.

Для узлов с включённым HA перед выключением переведите ноду в режим обслуживания: в веб-интерфейсе выберите узел и установите соответствующий флаг в разделе управления HA. Иначе менеджер ресурсов воспримет выключение как сбой и начнёт аварийный перезапуск ВМ на других серверах, что приведёт к конфликтам при повторном включении узла.

Также убедитесь, что после выключения узла в кластере сохраняется кворум — большинство голосующих узлов должно остаться в сети. Если кластер состоит из двух нод, выключение одной из них лишит оставшуюся кворума, и управление ВМ станет невозможным до возврата второго узла или ручного изменения конфигурации.

⚠️ Внимание: никогда не выключайте одновременно несколько узлов кластера без проверки кворума. Потеря кворума блокирует изменение конфигурации и запуск гостевых систем на всех оставшихся нодах.
💡

Золотое правило: сначала миграция или остановка ВМ, затем перевод узла в maintenance (для HA), и только потом — shutdown самого хоста. Нарушение порядка грозит конфликтами HA и потерей кворума.

Сравнение способов выключения

Каждый метод имеет свою область применения. Сводная таблица поможет выбрать подходящий вариант под вашу ситуацию:

СпособКогда использоватьРиск для данных
Кнопка Shutdown в веб-интерфейсеШтатное выключение одиночного сервераМинимальный
shutdown -h now по SSHНедоступен веб-интерфейс, автоматизацияМинимальный
shutdown -h +N с задержкойПлановое обслуживание с предупреждениемМинимальный
Короткое нажатие кнопки питанияНет сетевого доступа, есть физический доступНизкий (если ACPI работает)
Удержание кнопки питанияПолное зависание системыВысокий — только как крайняя мера

Автоматическое выключение и защита от сбоев питания

Для регулярного выключения по расписанию используйте планировщик cron: добавьте задачу с командой shutdown -h now на нужное время. Перед этим полезно настроить скрипт, который сначала останавливает все ВМ и контейнеры, дожидается их завершения и только потом гасит хост.

Если сервер подключён к ИБП, настройте службу NUT (Network UPS Tools) или фирменный агент производителя источника бесперебойного питания. При разряде батареи до критического уровня агент инициирует штатное выключение Proxmox — это самая надёжная защита от аварийного обесточивания. Точные параметры конфигурации зависят от модели ИБП, поэтому сверяйтесь с документацией производителя и официальной вики Proxmox.

Пример простого скрипта остановки всех ВМ перед выключением

Скрипт может выглядеть так: сначала цикл по всем VMID через «qm list», для каждой запущенной машины выполняется «qm shutdown VMID», затем ожидание завершения (проверка статуса в цикле с паузами), аналогично для контейнеров через «pct list» и «pct shutdown», и в конце — «shutdown -h now». Таймаут ожидания каждой ВМ задайте с запасом, чтобы медленные гостевые системы успели сохранить данные.

Что делать, если Proxmox не выключается

Иногда завершение работы зависает: система ждёт остановки службы или не может размонтировать хранилище. Типичные причины — недоступное сетевое хранилище (NFS, iSCSI), зависшая виртуальная машина, игнорирующая сигнал shutdown, или служба кластера, ожидающая ответа от недоступных узлов.

Порядок диагностики такой: подключитесь по SSH (если сессия ещё возможна) или к локальной консоли и посмотрите журнал командой journalctl -b — в конце будут видны службы, которые блокируют завершение. Зависшую ВМ можно принудительно остановить через qm stop <VMID>. Если недоступно сетевое хранилище, восстановите связь с ним или дождитесь таймаута монтирования.

💡

Если выключаете узел кластера, а он «висит» на остановке служб corosync или pve-cluster, проверьте доступность остальных нод. Часто помогает предварительный перевод всех ресурсов на другие серверы и остановка кластерных служб вручную.

Частые вопросы

Можно ли выключать Proxmox кнопкой питания на корпусе?

Короткое нажатие кнопки питания отправляет системе сигнал ACPI, и Proxmox начнёт штатное завершение работы — это допустимый способ. А вот удержание кнопки несколько секунд приводит к принудительному отключению, эквивалентному выдёргиванию шнура: используйте его только при полном зависании системы.

Что произойдёт с виртуальными машинами при выключении хоста?

При штатном завершении работы Proxmox отправляет каждой ВМ сигнал корректного выключения и ждёт некоторое время. Машины, которые не остановились за отведённый таймаут, будут завершены принудительно. Чтобы гарантировать сохранность данных, останавливайте важные ВМ вручную заранее и убедитесь, что в них работает QEMU Guest Agent.

Как выключить Proxmox, если нет доступа ни к веб-интерфейсу, ни к SSH?

Подключите монитор и клавиатуру напрямую к серверу, войдите в локальную консоль под root и выполните shutdown -h now. Если система не реагирует и на локальный ввод, остаётся только короткое нажатие кнопки питания, а при полном зависании — принудительное отключение с последующей проверкой файловых систем и состояния ВМ после загрузки.

Нужно ли останавливать кластер перед выключением одного узла?

Нет, останавливать весь кластер не требуется. Достаточно мигрировать ВМ с выключаемого узла, при включённом HA перевести его в режим обслуживания и убедиться, что оставшиеся ноды сохраняют кворум. После этого узел выключается как обычный одиночный сервер.

Как проверить, что сервер выключился корректно?

После следующего включения откройте журнал командой journalctl -b -1 -e — он покажет конец предыдущей сессии. Корректное завершение видно по упорядоченной остановке служб без ошибок размонтирования. Дополнительно проверьте состояние пулов ZFS командой zpool status и запустите критичные ВМ, убедившись в отсутствии ошибок файловых систем внутри гостей.