Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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

Minimal installation を使用して Red Hat Enterprise Linux 6 ゲスト仮想マシンをインストールしても、acpid (acpi デーモン) はインストールされません。Red Hat Enterprise Linux 7 は、systemd に引き継がれたため、このパッケージを必要としなくなりました。ただし、Red Hat Enterprise Linux 7 ホストで実行されている Red Hat Enterprise Linux 6 ゲスト仮想マシンには引き続き必要です。
acpid パッケージがないと、virsh shutdown コマンドの実行時に Red Hat Enterprise Linux 6 ゲスト仮想マシンはシャットダウンしません。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 です。ファイルを保存することを忘れないでください。

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

    
    <channel type='unix'>
       <source mode='bind' path='/var/lib/libvirt/qemu/guest1.agent'/>
       <target type='virtio' name='org.qemu.guest_agent.0'/>
    </channel>
        
    
    
  4. QEMU ゲストエージェントのインストール

    QEMU ゲストエージェント (QEMU-GA) をインストールし、Red Hat Enterprise Linux 6 Virtualization Administration Guide の指示に従ってサービスを起動します。
  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 サービスを停止することで、ゲストを自動的にシャットダウンできます。このメソッドの詳細は、「(オプション) 正常なシャットダウンを許可する回避策」 を参照してください。