A.10. Red Hat Enterprise Linux 7 ホスト上の Red Hat Enterprise Linux 6 ゲストのシャットダウン

  オプションを指定して Red Hat Enterprise LinuxMinimal installation6 ゲスト仮想マシンをインストールしても、acpid (acpi daemon) パッケージはインストールされません。このパッケージは  systemd  に引き継がれたので Red Hat EnterpriseLinux7 では不要です。ただし、Red Hat Enterprise Linux 7 ホスト上で実行される Red Hat Enterprise Linux 6 ゲスト仮想マシンにはこれが依然として必要になります。
acpid パッケージがないと、  コマンドを実行しても Red Hat Enterprise Linuxvirsh shutdown6 ゲスト仮想マシンがシャットダウンしません。virsh shutdown コマンドはゲスト仮想マシンを正常にシャットダウンするように設計されています。
virsh shutdown コマンドの使用はシステム管理上、より安全かつ簡単な方法となります。virsh shutdown コマンドで正しくシャットダウンできないと、システム管理者は手動でゲスト仮想マシンにログインするか、または Ctrl-Alt-Del のキー組み合わせを各ゲスト仮想マシンに送信しなければならなくなります。

注記

他の仮想化オペレーティングシステムもこの問題の影響を受ける場合があります。virsh shutdown コマンドが正しく動作するには、ゲスト仮想マシンのオペレーティングシステムが ACPI シャットダウン要求を処理できるよう設定されている必要があります。ACPI シャットダウン要求の受け入れを可能にするには、多くのオペレーティングシステムの場合、ゲスト仮想マシンのオペレーティングシステムで追加の設定が必要になります。

手順A.4 Red Hat Enterprise Linux 6 ゲストの回避策

  1. acpid パッケージをインストールします。

    acpid サービスが ACPI 要求をリッスンし、これを処理します。
    ゲスト仮想マシンにログインし、ゲスト仮想マシンに acpid パッケージをインストールします。
    # yum install acpid
  2. ゲストで acpid サービスを有効にします。

    acpid サービスがゲスト仮想マシンの起動シーケンスで起動され、サービスを起動するように設定します。
    # chkconfig acpid on
    # service acpid start
  3. ゲストドメイン XML を準備します。

    以下の要素を組み込むようにドメイン XML ファイルを編集します。virtio シリアルポートを org.qemu.guest_agent.0 に置き換え、表示されているものの代わりにゲストの名前を使用します。この例では、ゲストは guest1 です。ファイルは必ず保存してください。
    
    <channel type='unix'>
       <source mode='bind' path='/var/lib/libvirt/qemu/guest1.agent'/>
       <target type='virtio' name='org.qemu.guest_agent.0'/>
    </channel>
        

    図A.1 ゲスト XML の置き換え

  4. QEMU ゲストエージェントをインストールします。

    Red Hat Enterprise Linux 仮想化管理ガイド』で説明されているように QEMU ゲストエージェント (QEMU-GA) をインストールし、サービスを開始します。
  5. ゲストをシャットダウンします。

    1. 既知のゲスト仮想マシンを一覧表示し、シャットダウンする必要のある仮想マシンの名前を検索できます。
      # virsh list --all
         Id Name              State
      ----------------------------------
        14 guest1             running
    2. ゲスト仮想マシンをシャットダウンします。
      # virsh shutdown guest1
      
      guest virtual machine guest1 is being shutdown
    3. ゲスト仮想マシンがシャットダウンするまで数秒間待機します。それがシャットダウンされていることを確認します。
      # virsh list --all
       Id Name                 State
      ----------------------------------
       14 guest1               shut off
    4. 編集した XML ファイルを使用して、guest1 という名前のゲスト仮想マシンを起動します。
      # virsh start guest1
    5. guest1 ゲスト仮想マシンで acpi をシャットダウンします。
      # virsh shutdown --mode acpi guest1
    6. すべてのゲスト仮想マシンを再び一覧表示します。guest1 が一覧に表示され、それが停止していることを示すはずです。
      #  virsh list --all
         Id Name                 State
      ----------------------------------
         14 guest1               shut off
    7. 編集した XML ファイルを使用して、guest1 という名前のゲスト仮想マシンを起動します。
      # virsh start guest1
    8. guest1 ゲスト仮想マシンのゲストエージェントをシャットダウンします。
      # virsh shutdown --mode agent guest1
    9. すべてのゲスト仮想マシンを一覧表示します。guest1 が一覧に表示され、それが停止していることを確認できるはずです。
      # virsh list --all
         Id Name                 State
      ----------------------------------
         guest1                shut off
ゲスト仮想マシンは、連続するシャットダウンでは上記の回避策を使用せずに virsh shutdown コマンドを使ってシャットダウンします。
上記の方法以外にも、libvirt-guests サービスを停止してゲストを自動的にシャットダウンできます。この方法についてさらに詳しくは、「正常なシャットダウンに向けたオプションの方法」 を参照してください。