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

QEMU ゲストエージェントをインストールすると、さまざまな libvirt コマンドがより強力になります。ゲストエージェントは以下の virsh コマンドを強化します。
  • virsh shutdown --mode=agent - QEMU ゲストエージェントで使用される virsh shutdown は連携するゲストをクリーンな状態でシャットダウンするように保証されているため、このシャットダウン方法は virsh shutdown --mode=acpi よりも信頼性が高くなります。エージェントがない場合、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 サイト を参照してください。