Proxmoxで仮想マシンの自動起動と起動順序を設定する方法

ProxmoxでVMの自動起動を設定するのは、特に再起動後に環境全体をシームレスにオンラインにしたい場合は、よくある作業です。しかし、正直なところ、すべてを正しく設定するのは少々面倒です。特に、相互に依存していたり​​、特定の順序で起動する必要がある複数のVMを操作している場合はなおさらです。通常はWeb UIの「起動時に起動」オプションを切り替えるだけですが、カスタム遅延、特定の起動優先度、またはスクリプト駆動型の順序が必要な場合は、それだけでは不十分な場合が多いです。さらに、一部の設定では、特にネットワークストレージやクラスター環境を扱っている場合、デフォルトの自動起動がうまく動作しないことがあります。そこで、この問題を解決し、VMが適切な順序で起動し、必要に応じて遅延を設定し、すべてを混乱させることなく起動するようにします。

ProxmoxでVMの自動起動とカスタムブート順序を修正する方法

方法1: GUIで基本的な自動起動を有効にし、優先順位を設定する

起動時に起動するシンプルな機能で、少し順序を制御できれば十分でしょう。これは、VMが複雑な起動シーケンスに大きく依存していない場合に有効です。「起動時に起動」を有効にすると、ProxmoxがVMを自動的に処理します。素晴らしいと思いませんか?しかし、VMの起動順序が不明確だったり、遅延を無視したりと、少々乱暴な動作になる場合があります。これを調整するには、同じメニューで「起動/シャットダウン順序」「起動遅延」を設定できます。

  • データセンター->ノード-> ノードを選択 -> VMへ移動
  • VMをクリックしてオプションへ移動します
  • 起動時に開始を「はい」に切り替える
  • 起動/シャットダウン順序番号を調整します。1は最初に起動し、数字が大きいほど後で起動します。
  • サービスが適切に起動するように速度を落としたい場合は、起動遅延(秒)を設定します。

これはかなり単純ですが、覚えておいてください。これは、クラスタまたはセットアップがこれらの設定を上書きしない場合にのみ機能します。また、複数のVMを構成する場合は、順序が重要です。データベースサーバーをアプリケーションよりも先に起動する必要がある場合は、より小さな番号を指定してください。

方法2: CLIを使用して制御と遅延をさらに強化する

GUIオプションだけでは不十分な場合があります。特に、カスタム起動シーケンスやネットワークサービスの初期化遅延などです。そこでCLIが威力を発揮します。以下の簡単なコマンドで、VMを起動時に起動するように設定できます。

# qm set <vmid> -onboot 1

これは、再起動後にVMを確実に起動させる最も簡単な方法です。しかし、遅延させたい場合にはどうすればよいでしょうか?そこで、ホスト構成のstartall-onboot-delay設定が役立ちます。この設定により、すべてのVMの起動が均一に遅延されるため、ストレージやネットワークの安定を待つ場合に役立ちます。

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

この例では、すべてのVMは起動前に2分間待機します。依存関係に余裕が必要な大規模な環境に適しています。

方法3: Bashで起動シーケンスをスクリプト化する

まだ足りない? 正確な順序とカスタムの一時停止時間が必要ですか? 秘訣はスクリプト化することです。qm start <vmid>必要な順序で呼び出し、sleep遅延用のコマンドを含むシェルスクリプトを作成します。このスクリプトを安全な場所に置き、実行可能ファイルとして保存し、起動時にsystemd経由で実行します。まるで魔法のように機能します。少なくとも、私の環境では、初期状態ではVMを正しい順序で起動できなかったのですが、実際にうまくいきました。

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

そして内部には:

#!/bin/bash qm start 101 echo "Started VM 101" sleep 60 # wait 60 seconds for DNS, network, etc.qm start 102 echo "Started VM 102" sleep 120 # wait 2 minutes before next qm start 103 echo "Started VM 103"

保存して実行可能にする:

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

次に、起動時に実行されるように systemd サービスを作成します。

# nano /etc/systemd/system/autostartvm.service [Unit] Description=Start Proxmox VMs in sequence After=network.target [Service] Type=oneshot ExecStart=/root/start-vm-order.sh RemainAfterExit=yes [Install] WantedBy=multi-user.target 

有効にします:

# systemctl enable autostartvm.service

ホストを再起動し、ステータスを確認します。

# journalctl -u autostartvm.service -b

完璧ではありませんが、かなり柔軟性があります。さらに、より高度な機能が必要な場合は、ネットワークチェックや、VMを起動する前にサービスを待機させるスクリプトを追加することもできます。

ボーナス: HA クラスタに関する考慮事項

高可用性(HA)が有効になっているクラスタを使用している場合は、個々のVMの「起動時に起動」や「起動順序」の設定は不要です。これらはHAマネージャによって管理されます。HA設定を微調整するか、スクリプトを別途作成する必要があります。Proxmoxは、当然のことながら、必要以上に複雑にしてしまうからです。

もう一つ注意点があります。一部の設定では、ネットワークやストレージの準備ができていない場合、自動起動を有効にしても不安定になる可能性があります。そのような場合は、スクリプトによる方法が最も信頼性が高く、特にVMを起動する前にネットワークやサーバーの可用性を確認する方法と組み合わせると効果的です。

つまり、GUIの微調整、CLIコマンド、カスタムスクリプトを組み合わせることで、サーバーの再起動後にVMがどのように起動するかをほぼ正確に制御できます。すべてを完璧に設定するのは少し大変ですが、一度設定すれば、時計のように、あるいはほぼ正確に動作します。