QEMU 客户代理 (GA) 在 VM 客户机内部运行,允许 VM 主机服务器通过 libvirt 在客户机操作系统中运行命令。它支持许多功能——例如,获取客户机文件系统的详细信息、冻结和解冻文件系统,或暂停或重新启动客户机。
QEMU GA 包含在 qemu-guest-agent 包中,并且默认情况下在 KVM 虚拟机上安装、配置和激活。
QEMU GA 安装在 Xen 虚拟机中,但默认情况下未激活。虽然可以使用 QEMU GA 与 Xen 虚拟机配合使用,但它与 KVM 虚拟机描述的 libvirt 没有集成。要在 Xen 上使用 QEMU GA,必须将通道设备添加到 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 等效项的本机命令。请参阅 第 19.4 节,“更多信息” 以查找完整的列表。您可以使用 libvirt 的通用命令 qemu-agent-command 运行所有 QEMU GA 命令
virsh qemu-agent-command DOMAIN_NAME '{"execute":"QEMU_GA_COMMAND"}'例如
>sudovirsh 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 命令需要 QEMU GA 才能实现其功能。例如,以下命令:
virsh guestinfo从客户机的角度打印有关客户机的信息。
virsh guestvcpus查询或更改客户机视角的虚拟 CPU 状态。
virsh set-user-password设置客户机中用户帐户的密码。
virsh domfsinfo显示正在运行的域内挂载的文件系统列表。
virsh dompmsuspend暂停正在运行的客户机。
如果在客户机内部启用了 QEMU GA,则在 agent 模式下运行时,几个 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 接口的命令的描述。