QEMU ゲストエージェント (GA) は VM ゲスト 内で動作するもので、 VM ホストサーバ から libvirt
を介して、ゲスト側でコマンドを実行するための仕組みです。この仕組みでは、ゲスト側のファイルシステムに関する情報やファイルシステムの一時休止/再開、ゲストの一時停止や再起動などを行うことができます。
QEMU GA は qemu-guest-agent パッケージ内に含まれています。このパッケージは、 KVM の仮想マシン環境を設定していれば、既定でインストールおよび設定、有効化までが行われます。
QEMU GA は Xen 仮想マシンでもインストールされますが、既定では有効化されません。また、 Xen 仮想マシンでも使用することができますが、 KVM 仮想マシンのような libvirt との統合機能は提供されていません。 QEMU GA を Xen で使用する場合は、 VM ゲスト の設定でチャンネルデバイスを追加しなければなりません。チャンネルデバイスは VM ホストサーバ 側の Unix ドメインソケットで、 QEMU GA との通信に使用するチャンネルです。
<channel type='unix'> <source mode='bind' path='/example/path'/> <target type='xen' name='org.qemu.guest_agent.0'/> </channel>
QEMU GA には、 libvirt
では直接提供していない多数の組み込みコマンドが提供されています。完全な一覧については 21.4項 「さらなる情報」 をお読みください。また QEMU GA のコマンドは、 libvirt
の汎用コマンド qemu-agent-command
を利用して実行します:
virsh qemu-agent-command ドメイン名 '{"execute":"QEMU_GA_のコマンド"}'
たとえば下記のようになります:
>
sudo
virsh qemu-agent-command sle15sp2 '{"execute":"guest-info"}' --pretty { "return": { "version": "4.2.0", "supported_commands": [ { "enabled": true, "name": "guest-get-osinfo", "success-response": true }, [...]
virsh
のコマンド #Edit sourcevirsh
のコマンド内にも、実行するにあたって QEMU GA の機能を必要とするものがあります。下記にそれらのうちのいくつかを示します:
virsh guestinfo
ゲスト側の観点で、ゲストに関する情報を表示します。
virsh guestvcpus
ゲスト側の観点で、仮想 CPU の状態を問い合わせたり、設定を変更したりすることができます。
virsh set-user-password
ゲスト内のユーザアカウントに対して、パスワードの設定を行います。
virsh domfsinfo
動作中のドメイン内で、マウントされているファイルシステムの一覧を表示します。
virsh dompmsuspend
動作中のゲストを一時停止します。
libvirt
コマンドの拡張 #Edit sourceゲスト内で QEMU GA が有効化されていれば、エージェント モードで動作させることで、様々な機能を提供する多数の virsh
サブコマンドを実行することができるようになります。下記の一覧には、それらのうちのいくつかの例を示します。完全な一覧を読みたい場合は、 virsh
のマニュアルページにて agent
で検索を行ってご確認ください。
virsh shutdown --mode agent
および virsh reboot --mode agent
このサブコマンドを実行すると、次回以降のゲスト実行時に障害を発生させたりすることのないよう、適切なシャットダウンもしくは再起動を行うことができます。これは ACPI でのシャットダウンや再起動と似ています。
virsh domfsfreeze
および virsh domfsthaw
ゲストに対してファイルシステムの一時休止を指示します。これにより、キャッシュ内に残っている全ての I/O 操作を完了させ、ボリュームの一貫性が保たれた状態になります。そのため、再マウント時にファイルシステムのチェックが不要となります。
virsh setvcpus --guest
ゲストに割り当てている CPU の数を変更します。
virsh domifaddr --source agent
QEMU GA に対して、ゲスト側の IP アドレスを問い合わせます。
virsh vcpucount --guest
ゲスト側の観点で、仮想 CPU の数に関する情報を表示します。
QEMU GA で提供している全てのコマンドの一覧については、 https://www.qemu.org/docs/master/interop/qemu-ga-ref.html をお読みください。
virsh
のマニュアルページ ( man 1 virsh
) には、 QEMU GA インターフェイスを利用することのできるコマンドの説明が示されています。