Red Hat Training

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

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

QEMU ゲストエージェントや SPICE エージェントなどの Red Hat Enterprise Linux のエージェントをデプロイして、システムで仮想化ツールをより最適に実行することができます。これらのエージェントは、本章で説明します。
注記
ホストおよびゲストのパフォーマンスをさらに最適化するには、『 Red Hat Enterprise Linux 7 仮想化のチューニングと最適化ガイド』 を参照してください。

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

QEMU ゲストエージェントはゲスト内で実行され、libvirt を使用して、ホストマシンのコマンドをゲストオペレーティングシステムに発行することができます。これは、空きファイルシステムや改ざんファイルシステムなどの機能に役立てることができます。その後、ゲストオペレーティングシステムはこれらのコマンドを非同期に応答します。QEMU ゲストエージェントパッケージ qemu-guest-agent は、Red Hat Enterprise Linux 7 ではデフォルトでインストールされます。
本セクションは、ゲストエージェントで利用可能な libvirt コマンドおよびオプションについて説明します。
重要
信頼できるゲストで実行する際は、QEMU ゲストエージェントのみに依存することに注意してください。信頼できないゲストは、ゲストエージェントプロトコルを不安定に無視または悪用することがありますが、ホストでサービス拒否攻撃を防ぐために、組み込み安全な手段が存在する可能性があります。ホストには、通常通りに実行される操作にゲストを稼働させる必要があります。
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 仮想マシンで設定されるようになりました。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。