По умолчанию Proxmox автоматически не запускает виртуальные машины при загрузке сервера. Нужные виртуальные машины нужно запускать вручную. Однако вы можете включить для ВМ автоматический запуск при старте хоста Proxmox.
Если вы хотите, чтобы виртуальная машина запускалась автоматически:
- Выберите ВМ в веб интерфейсе 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.