仮想マシンの自動起動について

はじめに

自宅ラボで ESXi を利用する際は電気代を節約するためにホストの毎日ホストのシャットダウンを行っている方も多いのではないでしょうか。

本日はホストの電源を入れた際に、「特定の仮想マシンを自動的に起動させる ESXi の機能」についてご紹介します。

設定方法

設定は Host Client 上から行うことが可能です。
左のペインから [管理] をクリック、[システム] タブを選択し、[自動起動] から設定を行います。

上部にある5つの設定項目はデフォルトの設定を定義するものです。
仮想マシンごとに設定を有効にすることも、デフォルトの設定をオーバーライドさせることも可能です。

因みにデフォルトの設定で自動起動を有効としても、各仮想マシンの設定で有効化しないと自動起動しない動きに見えました。

[先に起動]、[後に起動] の設定によって、仮想マシンの起動順序を制御することも可能です。
また、起動だけではなく [停止アクション] にてホストが停止した際の仮想マシンの振る舞いを定義することもできます。

なお、この自動起動の設定は vSphere HA が有効になっている場合には機能しない ため注意が必要です。

コマンドによる確認

/etc/vmware/hostd/vmAutoStart.xml に設定が定義されています。
hostd とは、管理エージェントの一つで、UserWorld に分類されるプロセスのことです。

仮想マシンに関する操作は、まずこのエージェントが命令を受け付けてカーネル等を通じて実行されています。

[root@esxi:/etc/vmware/hostd] cat vmAutoStart.xml 
<ConfigRoot>
  <AutoStartOrder>
    <_length>6</_length>
    <_type>vim.host.AutoStartManager.AutoPowerInfo[]</_type>
    <e id="0">
      <_type>vim.host.AutoStartManager.AutoPowerInfo</_type>
      <key>
        <_type>vim.VirtualMachine</_type>
        <moid>4</moid>
      </key>
      <startAction>powerOn</startAction>
      <startDelay>-1</startDelay>
      <startOrder>1</startOrder>
      <stopAction>systemDefault</stopAction>
      <stopDelay>-1</stopDelay>
      <waitForHeartbeat>systemDefault</waitForHeartbeat>
    </e>
    <e id="1">
      <_type>vim.host.AutoStartManager.AutoPowerInfo</_type>
      <key>
        <_type>vim.VirtualMachine</_type>
        <moid>5</moid>
      </key>
      <startAction>powerOn</startAction>
      <startDelay>-1</startDelay>
      <startOrder>2</startOrder>
      <stopAction>systemDefault</stopAction>
      <stopDelay>-1</stopDelay>
      <waitForHeartbeat>systemDefault</waitForHeartbeat>
    </e>

各仮想マシンは moid とよばれる管理オブジェクトIDによって管理がされており、<startOrder>のところで定義した起動順序が確認できると思います。

また、<startDelay>など -1 となっている箇所はデフォルトの設定を継承している場合のようです。

起動遅延時間はデフォルトで120s なので、ここは変更して仮想マシンが早く上がってくるよう調整してもいいのかなと感じました。

以上です。