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

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

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

  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.


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


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

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

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

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