Red Hat Training

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

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

最小限のインストール (Minimal installation) オプションを指定して Red Hat Enterprise Linux 6 ゲスト仮想マシンをインストールしても、acpid パッケージはインストールされません。このパッケージは systemd に引き継がれたので Red Hat Enterprise Linux 7 では不要です。ただし、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 シャットダウン要求を受け取らせるには、多くのオペレーティングシステムにゲスト仮想マシンのオペレーティングシステムでの追加設定が必要になります。

手順15.4 Red Hat Enterprise Linux 6 ゲストの回避策

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

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

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

    以下の要素を組み込むようにドメイン XML ファイルを編集します。virtio シリアルポートを org.qemu.guest_agent.0 に置き換え、$guestname の代わりにゲストの名前を使用します。
    
    <channel type='unix'>
       <source mode='bind' path='/var/lib/libvirt/qemu/{$guestname}.agent'/>
       <target type='virtio' name='org.qemu.guest_agent.0'/>
    </channel>
    

    図15.2 ゲスト XML の置き換え

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

    QEMU ゲストエージェント (QEMU-GA) をインストールし、11章QEMU-img および QEMU ゲストエージェントで指示されるようにサービスを起動します。Windows ゲストを実行している場合、この章ではこれに関する方法も記載されています。
  5. ゲストをシャットダウンします。

    1. 以下のコマンドを実行します。
      # virsh list --all  - this command lists all of the known domains 
         Id Name              State
      ----------------------------------
         rhel6                running
    2. ゲスト仮想マシンをシャットダウンします。
      # virsh shutdown rhel6
      
      Domain rhel6 is being shutdown
    3. ゲスト仮想マシンがシャットダウンするまで数秒間待機します。
      # virsh list --all
       Id Name                 State
      ----------------------------------
        . rhel6                shut off
    4. 編集した XML ファイルを使用して、rhel6 という名前のドメインを起動します。
      # virsh start rhel6
    5. rhel6 ゲスト仮想マシンで acpi をシャットダウンします。
      # virsh shutdown --mode acpi rhel6 
    6. すべてのドメインを再度一覧表示します。rhel6 が一覧にまだ表示されますが、電源が切れていることが示されるはずです。
      # virsh list --all
         Id Name                 State
      ----------------------------------
         rhel6                shut off
    7. 編集した XML ファイルを使用して、rhel6 という名前のドメインを起動します。
      # virsh start rhel6
    8. rhel6 ゲスト仮想マシンのゲストエージェントをシャットダウンします。
      # virsh shutdown --mode agent rhel6
    9. ドメインを一覧表示します。rhel6 がまだリストにあり、shut off 状態になっています。
      # virsh list --all
         Id Name                 State
      ----------------------------------
         rhel6                shut off
ゲスト仮想マシンは、連続するシャットダウンにおいて、上記の回避策を使用せずに virsh shutdown コマンドを使ってシャットダウンします。
上記の方法以外にも、libvirt-guest サービスを停止してゲストを自動的にシャットダウンできます。この方法についての詳細は、「libvirt-guests 設定の設定内容の操作」を参照してください。