По умолчанию Proxmox VE не запускает виртуальные машины автоматически при включении или перезагрузке сервера. Все необходимые ВМ в таком случае требуется запускать вручную через веб-интерфейс или консоль. Однако при необходимости вы можете настроить автоматический запуск виртуальных машин при старте хоста.
Настройка автозапуска может быть выполнена как через графический интерфейс, так и с помощью командной строки. Кроме того, можно задать порядок запуска и задержки между запуском разных ВМ, чтобы избежать перегрузки ресурсов при старте.
Если вы хотите, чтобы виртуальная машина запускалась автоматически:
- Выберите ВМ в веб интерфейсе Proxmox UI
- Выберите Options
- Чтобы виртуальная запускалась автоматически, включите опцию Start at boot time
. Теперь ВМ будет стартовать автоматически.
- В опции Start/Shutdown order можно настроить дополнительные параметры автозапуска.
🔹В поле Start/Shutdown order указывается приоритет запуска. Если указать здесь 1, такая ВМ будет запускаться первой. У ВМ запускающихся во вторую очередь задайте 2 и т.д. С помощью этого параметра можно настроить порядок запуска виртуальных машин на хосте. Например, сначала должны стартовать сервера базы данных, и только через некоторое время сервера приложений.
🔹Startup Delay — задержка запуска для следующей ВМ (в секундах).
🔹 Shutdown timeout – задержка выключения ВМ
Можно включить автозапуск ВМ по ее ID из консоли:
# qm set <vmid> -onboot 1
Чтобы настроить отложенный запуск для всех, в том числе для первой ВМ на хосте Proxmox, (например, чтобы подождать загрузки сетевого хранилища) откройте свойства ноды -> System -> Options. Укажите задержку запуска для всех ВМ (в секундах) в параметре 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
В такой скрипт можно добавить дополнительные проверки доступности определенных серверов, хранилищ и/или сервисов.
Например, добавим проверку доступности контроллера домена перед запуском ВМ:
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.