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. ゲストディスクのバックアップの作成
libvirt は、qemu-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 ポリシーは、そのような目的のために開発およびインストールする必要があります。
/etc/qemu-ga/fsfreeze-hook.d/
というラベルが付いた表の行の 表11.1「QEMU ゲストエージェントパッケージの内容」 にリスト表示されている restorecon -FvvR コマンドを実行した後、ファイルシステムノードへのアクセスがすぐに機能するようになります。
qemu-guest-agent バイナリー RPM には、以下のファイルが含まれます。
File name | 説明 |
---|---|
/usr/lib/systemd/system/qemu-guest-agent.service | QEMU ゲストエージェントのサービス制御スクリプト (start/stop) |
/etc/sysconfig/qemu-ga | /usr/lib/systemd/system/qemu-guest-agent.service 制御スクリプトにより読み込まれる QEMU ゲストエージェントの設定ファイル。設定は、シェルスクリプトのコメントが記載されたファイルで説明されています。 |
/usr/bin/qemu-ga | QEMU ゲストエージェントのバイナリーファイル。 |
/etc/qemu-ga | フックスクリプトのルートディレクトリー。 |
/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 サイト を参照してください。