Red Hat Training

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

第11章 QEMU ゲストエージェントおよび SPICE エージェントを使用した仮想化の強化

QEMU ゲストエージェントや SPICE エージェントなど、Red Hat Enterprise Linux のエージェントは、システムでより最適に仮想化ツールの実行を図るためにデプロイ可能です。これらのエージェントは、本章で説明します。

11.1. QEMU ゲストエージェント

QEMU ゲストエージェントはゲスト内で実行され、ホストマシンが libvirt を使用してゲストオペレーティングシステムにコマンドを発行できるようにします。これは、フリーズやチーミングなどの機能 を参照してください。その後、ゲストオペレーティングシステムはこれらのコマンドを非同期に応答します。QEMU ゲストエージェントパッケージ qemu-guest-agent は、Red Hat Enterprise Linux 7 ではデフォルトでインストールされます。
本セクションでは、ゲストエージェントで利用可能な libvirt コマンドおよびオプションを説明します。
重要
信頼できるゲストによって実行される場合にのみ QEMU ゲストエージェントのみに依存することに注意してください。信頼できないゲストは、ゲストエージェントのプロトコルを無視したり、悪用したりする可能性があり、ホスト上でのサービス拒否(DoS)を防ぐために、ホストには、ゲストが期待どおりに稼働させる必要があります。
ゲストの実行中に、QEMU ゲストエージェントを使用して仮想 CPU(vCPU)を有効または無効にできるため、ホットプラグおよびホットアンプラグ機能を使用せずに vCPU の数を調整することができます。「仮想 CPU 数の設定」

11.1.1. QEMU ゲストエージェントとホスト間の通信の設定

ホストマシンは、ホストとゲスト仮想マシン間の VirtIO シリアル接続で QEMU ゲストエージェントと通信します。VirtIO シリアルチャンネルは、キャラクターデバイスドライバー(通常は Unix ソケット)を使用してホストに接続し、ゲストはこのシリアルチャネルでリッスンします。
注記
qemu-guest-agent は、ホストが VirtIO シリアルチャネルをリッスンするかどうかを検出しません。ただし、このチャネルの現在の使用は、ホストとゲストのイベントをリッスンするため、リスナーのないチャネルへの書き込みによるゲスト仮想マシンの問題が発生する可能性が非常に低くなっています。また、qemu-guest-agent プロトコルには、コマンドを発行する際にゲスト仮想マシンを強制的に同期できるように、同期マーカーが含まれます。このため、libvirt はこのマーカーをすでに使用し、ゲスト仮想マシンが保留中の応答をすべて安全に破棄できるようにします。

11.1.1.1. Linux ゲストでの QEMU ゲストエージェントの設定

QEMU ゲストエージェントは、実行中またはシャットダウン仮想マシンで設定できます。実行中のゲストに設定すると、ゲストはゲストエージェントをすぐに使い始める。ゲストがシャットダウンした場合、QEMU ゲストエージェントは次回の起動時に有効になります。
virsh または virt-manager を使用して、ゲストと QEMU ゲストエージェント間の通信を設定することができます。以下の手順では、Linux ゲストに QEMU ゲストエージェントを設定する方法を説明します。

手順11.1 シャットダウン Linux ゲストの virsh を使用したゲストエージェントとホスト間の通信の設定

  1. 仮想マシンのシャットダウン

    QEMU ゲストエージェントを設定する前に、仮想マシン (この例では rhel7) がシャットダウンされていることを確認します。
    # virsh shutdown rhel7 
  2. QEMU ゲストエージェントチャネルをゲスト XML 設定に追加します。

    ゲストの XML ファイルを編集し、QEMU ゲストエージェントの詳細を追加します。
    # virsh edit rhel7
    以下をゲストの XML ファイルに追加し、変更を保存します。
    <channel type='unix'>
       <target type='virtio' name='org.qemu.guest_agent.0'/>
    </channel>
  3. 仮想マシンの起動

    # virsh start rhel7
  4. QEMU ゲストエージェントのゲストへのインストール

    QEMU ゲストエージェントをゲスト仮想マシンにインストールしていない場合はインストールします。
    # yum install qemu-guest-agent
  5. ゲストでの QEMU ゲストエージェントの起動

    QEMU ゲストエージェントサービスをゲストで起動します。
    # systemctl start qemu-guest-agent
または、QEMU ゲストエージェントは、以下の手順により実行中のゲストに設定することもできます。

手順11.2 実行中の Linux ゲストでのゲストエージェントとホスト間の通信設定

  1. QEMU ゲストエージェントの XML ファイルの作成

    # cat agent.xml
    <channel type='unix'>
       <target type='virtio' name='org.qemu.guest_agent.0'/>
    </channel>
  2. QEMU ゲストエージェントの仮想マシンへの割り当て

    以下のコマンドを使用して、QEMU ゲストエージェントを実行中の仮想マシン(この例では rhel7 という名前)に割り当てます。
    # virsh attach-device rhel7 agent.xml
  3. QEMU ゲストエージェントのゲストへのインストール

    QEMU ゲストエージェントをゲスト仮想マシンにインストールしていない場合はインストールします。
    # yum install qemu-guest-agent
  4. ゲストでの QEMU ゲストエージェントの起動

    QEMU ゲストエージェントサービスをゲストで起動します。
    # systemctl start qemu-guest-agent

手順11.3 QEMU ゲストエージェントと virt-managerでホスト間の通信の設定

  1. 仮想マシンのシャットダウン

    QEMU ゲストエージェントを設定する前に、仮想マシンがシャットダウンされていることを確認します。
    仮想マシンをシャットダウンするには、Virtual Machine Manager の仮想マシンの一覧から選択し、メニューバーから軽量スイッチアイコンをクリックします。
  2. QEMU ゲストエージェントチャネルをゲストに追加

    ゲストウィンドウの上部にある lightbulb アイコンをクリックして、仮想マシンのハードウェア情報を開きます。
    ハードウェアの追加 ボタンをクリックして Add New Virtual Hardware ウィンドウを開き、Channel を選択します。
    Name ドロップダウンリストから QEMU ゲストエージェントを選択し、Finish をクリックします。

    図11.1 QEMU ゲストエージェントチャネルデバイスの選択

    QEMU ゲストエージェントチャネルデバイスの選択
  3. 仮想マシンの起動

    仮想マシンを起動するには、Virtual Machine Manager の仮想マシンの一覧から選択し、メニューバーの をクリックします。
  4. QEMU ゲストエージェントのゲストへのインストール

    ゲスト仮想マシンにまだインストールされていない場合は、virt-manager でゲストを開き、QEMU ゲストエージェントをインストールします。
    # yum install qemu-guest-agent
  5. ゲストでの QEMU ゲストエージェントの起動

    QEMU ゲストエージェントサービスをゲストで起動します。
    # systemctl start qemu-guest-agent
QEMU ゲストエージェントが rhel7 仮想マシンで設定されるようになりました。