20 QEMU Guest 代理 #
QEMU Guest 代理 (GA) 在 VM Guest 中运行,使 VM 主机服务器能够通过 libvirt
在 Guest 操作系统中运行命令。它支持许多功能 — 例如,获取有关 Guest 文件系统的细节、冻结和解冻文件系统,或者挂起或重引导 Guest。
QEMU GA 包含在qemu-guest-agent 软件包中,默认已在 KVM 或 Xen 虚拟机上安装、配置并激活。
QEMU GA 安装在 Xen 虚拟机中,但默认未激活。尽管可以将 QEMU GA 与 Xen 虚拟机配合使用,但无法使用如下所述的适用于 KVM 虚拟机的 libvirt 命令来实现集成。要将 QEMU GA 与 Xen 配合使用,必须将一个通道设备添加到 VM Guest 配置。该通道设备包含 VM 主机服务器上用来与 QEMU GA 通讯的的 Unix 域套接字路径。
<channel type='unix'> <source mode='bind' path='/example/path'/> <target type='xen' name='org.qemu.guest_agent.0'/> </channel>
20.1 运行 QEMU GA 命令 #
QEMU GA 包含的许多本机命令没有直接对应的 libvirt
命令。请参见第 20.4 节 “更多信息”查看完整列表。您可以使用 libvirt
的通用命令 qemu-agent-command
来运行所有 QEMU GA 命令:
virsh qemu-agent-command DOMAIN_NAME '{"execute":"QEMU_GA_COMMAND"}'
例如:
>
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 }, [...]
20.2 需要 QEMU GA 的 virsh
命令 #
有多个 virsh
命令需要 QEMU GA 才能实现其功能。例如,以下命令:
virsh guestinfo
从 Guest 的角度列显有关该 Guest 的信息。
virsh guestvcpus
从 Guest 的角度查询或更改虚拟 CPU 的状态。
virsh set-user-password
为 Guest 中的用户帐户设置口令。
virsh domfsinfo
显示正在运行的域中挂载的文件系统列表。
virsh dompmsuspend
挂起正在运行的 Guest。
20.3 增强 libvirt
命令 #
如果在 Guest 中启用了 QEMU GA,多个 virsh
子命令在以代理模式运行时,其功能会得到增强。以下列表仅包含其中某些子命令的示例。有关完整列表,请参见 virsh
手册页并搜索 agent
字符串。
virsh shutdown --mode agent
和virsh reboot --mode agent
这种关机或重引导方法类似于 ACPI 方法,可让 Guest 为下次运行保持干净状态。
virsh domfsfreeze
和virsh domfsthaw
指示 Guest 将其文件系统保持静止状态 — 刷新缓存中的所有 I/O 操作并将卷保持一致状态,以便在重新挂载卷时无需进行任何检查。
virsh setvcpus --guest
更改指派给 Guest 的 CPU 数量。
virsh domifaddr --source agent
在 QEMU GA 中查询 Guest 的 IP 地址。
virsh vcpucount --guest
从 Guest 的角度列显有关虚拟 CPU 计数的信息。
20.4 更多信息 #
https://www.qemu.org/docs/master/interop/qemu-ga-ref.html 上提供了 QEMU GA 支持的命令的完整列表。
virsh
手册页 (man 1 virsh
) 包含支持 QEMU GA 接口的命令的说明。