11.2. libvirt による QEMU ゲストエージェントの使用

QEMU ゲストエージェントをインストールすると、さまざまな libvirt コマンドをより強力にすることができます。ゲストエージェントは以下の virsh コマンドを強化します。
  • virsh shutdown --mode=agent - このシャットダウン方法は virsh shutdown --mode=acpi よりも信頼性があります。QEMU ゲストエージェントで使用される virsh shutdown は連携しているゲストをクリーンな状態でシャットダウンできるように保証されているためです。エージェントがない場合、libvirt は ACPI シャットダウンイベントの挿入に依存しなければなりませんが、一部のゲストはそのイベントを無視するため、シャットダウンされません。
    virsh reboot の場合と同じ構文で使用できます。
  • virsh snapshot-create --quiesce - スナップショットが作成される前に、ゲストがその I/O を安定した状態にフラッシュできるようにします。これにより、fsck を実行したり、部分的なデータベーストランザクションを失わずにスナップショットを使用することが可能になります。ゲストエージェントは、ゲストの連携を可能にすることにより、ディスクコンテンツの高レベルの安定性を実現します。
  • virsh domfsfreeze および virsh domfsthaw - 分離したゲストファイルシステムを休止します。
  • virsh domfstrim - ゲストに対してそのファイルシステムをトリミングするように指示します。
  • virsh domtime - ゲストのクロックを休止するか、または設定します。
  • virsh setvcpus --guest - ゲストに対して、CPU をオフラインにするように指示します。
  • virsh domifaddr --source agent - ゲストエージェント経由でゲストオペレーティングシステムの IP アドレスを照会します。
  • virsh domfsinfo - 実行中のゲスト内にマウントされたファイルシステムの一覧を表示します。
  • virsh set-user-password - ゲストにおけるユーザーアカウントのパスワードを設定します。

11.2.1. ゲストディスクバックアップの作成

libvirtqemu-guest-agent と通信し、ゲスト仮想マシンファイルシステムのスナップショットが内部で一貫しており、随時使用可能であることを保証することができます。ゲストシステムの管理者はアプリケーション固有のフリーズ/フリーズ解除フックスクリプトを作成し、インストールすることができます。ファイルシステムをフリーズする前に、qemu-guest-agent は主なフックスクリプト (qemu-guest-agent パッケージ内に組み込まれている) を起動します。フリーズプロセスは、すべての仮想マシンアプリケーションを一時的に非アクティブにします。
スナップショットプロセスは以下のステップで構成されています。
  • ファイルシステムのアプリケーション/データベースは作業バッファーを仮想ディスクにフラッシュし、クライアント接続の受け入れを停止します。
  • アプリケーションはそれらのデータファイルを一貫性のある状態にします。
  • メインフックスクリプトが返されます。
  • qemu-guest-agent はファイルシステムをフリーズし、管理スタックはスナップショットを取得します。
  • スナップショットが確認されます。
  • ファイルシステムの機能が再開します。
フリーズ解除が逆の順序で生じます。
ゲストのファイルシステムのスナップショットを作成するには、virsh snapshot-create --quiesce --disk-only コマンド を実行 (または、「現在のゲスト仮想マシンのスナップショットの作成」に詳しく説明されているように virsh snapshot-create-as guest_name --quiesce --disk-only を実行) します。

注記

アプリケーション固有のフックスクリプトは、正常に実行されるために各種の SELinux パーミッションを必要とする場合があります。これは、データベースと対話するためにスクリプトをソケットに接続する必要がある場合と同様です。通常、このような状況に備えて、ローカルの SELinux ポリシーを作成し、インストールしておく必要があります。表11.1「QEMU ゲストエージェントのパッケージコンテンツ」内の /etc/qemu-ga/fsfreeze-hook.d/ のラベルが付いた行にある restorecon -FvvR コマンドを実行すると、ファイルシステムノードへのアクセスが設定なしで機能します。
qemu-guest-agent バイナリー RPM には以下のファイルが含まれます。

表11.1 QEMU ゲストエージェントのパッケージコンテンツ

ファイル名説明
/usr/lib/systemd/system/qemu-guest-agent.serviceQEMU ゲストエージェント用のサービス制御スクリプト (開始/停止)。
/etc/sysconfig/qemu-ga/usr/lib/systemd/system/qemu-guest-agent.service 制御スクリプトで読み取られる QEMU ゲストエージェントの設定ファイル。設定内容はシェルスクリプトのコメントと共にファイルに記載されます。
/usr/bin/qemu-gaQEMU ゲストエージェントのバイナリーファイル。
/etc/qemu-gaフックスクリプトの root ディレクトリー。
/etc/qemu-ga/fsfreeze-hookメインフックスクリプト。これに必要な変更はありません。
/etc/qemu-ga/fsfreeze-hook.d個別の、アプリケーション固有フックスクリプトのディレクトリー。ゲストのシステム管理者はこのディレクトリーにフックスクリプトを手動でコピーし、それらに適切なファイルモードビットが設定されていることを確認してから、このディレクトリー上で restorecon -FvvR を実行する必要があります。
/usr/share/qemu-kvm/qemu-ga/サンプルスクリプト (サンプルとしての使用のみを想定) を含むディレクトリー。ここに含まれるスクリプトは実行されません。
メインのフックスクリプトである /etc/qemu-ga/fsfreeze-hook は、独自のメッセージを、アプリケーション固有スクリプトの標準出力およびエラーメッセージと共に /var/log/qemu-ga/fsfreeze-hook.log のログファイルに記録します。詳細情報は、libvirt アップストリームの Web サイト を参照してください。