Автозапуск и порядок загрузки виртуальных машин Proxmox

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

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

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

  1. Выберите ВМ в веб интерфейсе Proxmox UI
  2. Выберите Options
  3. Чтобы виртуальная запускалась автоматически, включите опцию Start at boot timeАвтозапуск ВМ в proxmox. Теперь ВМ будет стартовать автоматически.
  4. В опции Start/Shutdown order можно настроить дополнительные параметры автозапуска.
    🔹В поле Start/Shutdown order указывается приоритет запуска. Если указать здесь 1, такая ВМ будет запускаться первой. У ВМ запускающихся во вторую очередь задайте 2 и т.д. С помощью этого параметра можно настроить порядок запуска виртуальных машин на хосте. Например, сначала должны стартовать сервера базы данных, и только через некоторое время сервера приложений.
    🔹Startup Delay — задержка запуска для следующей ВМ (в секундах).
    🔹 Shutdown timeout – задержка выключения ВМ

Задержка запуска виртуальной машины

Можно включить автозапуск ВМ по ее ID из консоли:

# qm set <vmid> -onboot 1

qm set -onboot

Чтобы настроить отложенный запуск для всех, в том числе для первой ВМ на хосте Proxmox, (например, чтобы подождать загрузки сетевого хранилища) откройте свойства ноды -> System -> Options. Укажите задержку запуска для всех ВМ (в секундах) в параметре Start on boot delay.

Параметр Start on boot delay

Или так:

# pvenode config set --startall-onboot-delay 120

Для гибкой настройки порядка автозапуска виртуальных машин Proxmox можно использовать bash скрипт. Для запуска ВМ используется qm start <vmid> и sleep для паузы в скрипте.

Создайте sh файл:

# nano /root/start-vm-order.sh

Настройте порядок запуска ВМ (указываются id виртуальных машин, их список можно получить командой qm list ) и необходимые задержки:

#!/bin/bash
qm start 101
echo "Started VM 101"
sleep 60 # wait 60 seconds
qm start 102
echo "Started VM 102"
sleep
qm start 103
echo "Started VM 103"

В этом случае первая ВМ будет запущена сразу, вторая через 60 секунд и третья еще через 120 секунд.

Делаем скрипт исполняемым:

# chmod +x /root/start-vm-order.sh

Настроим автоматический запуск скрипта через systemd:

# nano /etc/systemd/system/autostartvm.service

[Unit]
Description=Script to start Proxmox VMs
After=network.target
[Service]
Type=oneshot
ExecStart=/root/start-vm-order.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

Включаем юнит:

# systemctl enable autostartvm.service

Перезагрузите хост Proxmox, проверьте что при загрузке отработал скрипт и запустил ваши виртуальные машины в нужном порядке.

Проверить лог выполнения скрипта автозагрузки в systemd (последняя загрузка):

# journalctl -u autostartvm.service -b

bash скрипт для автозапуска виртуалок на proxmox

В такой скрипт можно добавить дополнительные проверки доступности определенных серверов, хранилищ и/или сервисов.

Например, добавим проверку доступности контроллера домена перед запуском ВМ:

DC_SERVER="192.168.1.200" 
MAX_RETRIES=10
RETRY_DELAY=15 
attempt=1
while ! ping -c 1 -W 2 "$DC_SERVER" &> /dev/null; do
  if [ $attempt -ge $MAX_RETRIES ]; then
    echo "Domain Controller $DC_SERVER is not reachable after $MAX_RETRIES attempts. Aborting VM startup."
    exit 1
  fi
  echo "Attempt $attempt/$MAX_RETRIES: Domain Controller is not reachable yet. Waiting $RETRY_DELAY seconds..."
  sleep $RETRY_DELAY
  attempt=$((attempt + 1))
done
echo "Domain Controller is reachable. Starting VM..."
qm start 101

В кластере Proxmox с включенным High Availability (HA), параметры start on boot и boot order на уровне отдельных ВМ игнорируются, т.к. за запуск и остановку ВМ будет отвечать ha-manager.

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

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