A.15. ゲスト仮想マシンのシャットダウンの失敗

通常 virsh shutdown コマンドを実行すると、電源ボタンの ACPI イベントが送信され、物理マシン上で誰かが電源ボタンを押す場合と同様のアクションがコピーされます。すべての物理マシン内で、このイベントを処理するのは OS になります。これまではオペレーティングシステムのサイレントインストールが実行されていましたが、現在の最も有効なアクションは、何を実行すべきかを尋ねるダイアログを表示させることです。一部のオペレーティングシステムは、とりわけいずれのユーザーもログインしていない場合にこのイベントを完全に無視します。このようなオペレーティングシステムがゲスト仮想マシンにインストールされていると、virsh shutdown を実行しても機能しません (このコマンドが無視されるか、ダイアログが仮想ディスプレイに表示されるかのいずれかです)。ただし、qemu-guest-agent チャネルがゲスト仮想マシンに追加され、このエージェントがゲスト仮想マシンの OS 内で実行されている場合、virsh shutdown コマンドは、エージェントに対し、ACPI イベントを送信する代わりにゲスト OS をシャットダウンするように指示します。エージェントはゲスト仮想マシン OS の内部からシャットダウンを要求し、すべてのことが予想通りに機能します。

手順A.7 ゲスト仮想マシンのゲストエージェントチャネルの設定

  1. ゲスト仮想マシンを停止します。
  2. ゲスト仮想マシン用のドメイン XML を開き、次にスニペットを追加します。
    
    <channel type='unix'>
        <source mode='bind'/>
        <target type='virtio' name='org.qemu.guest_agent.0'/>
    </channel>
    

    図A.2 ゲストエージェントチャネルの設定

  3. virsh start [domain] を実行して、ゲスト仮想マシンを起動します。
  4. ゲストの仮想マシンに qemu-guest-agent をインストール (yum install qemu-guest-agent) し、これをサービス (qemu-guest-agent.service) として毎回の起動時に自動的に実行させます。