介绍在多个操作系统(包括 Linux 各发行版、Windows、OpenWrt 和群晖 DSM)上安装和配置 QEMU Guest Agent 的方法,解决 PVE 和群晖 VMM 虚拟机无法关机等问题。
在 PVE 安装 Windows Step By Step 中提到,为了让 Windows 能够响应 PVE 的关机等事件,需要安装 QEMU Guest Agent,本文给出常见系统的 QEMU Guest Agent 安装方式供参考。
前言
在虚拟化平台中,都有一个客户机 Agent 用于与宿主机通信,向宿主机传递关于虚拟机的信息,包括用户、文件系统以及网络信息等。例如 VMware 平台上使用的是 VMware Tools。Proxmox VE 是基于 KVM(Kernel-based Virtual Machine)的虚拟化平台,使用的是 qemu-guest-agent,因此除了 PVE,其他一些基于 KVM 的平台,如群晖的 Virtual Machine Manager (VMM)、 Red Hat Virtualization 和 OpenStack,也可以参考本文在客户机安装 qemu-guest-agent。 根据 PVE 的文档,qemu-guest-agent 是一个安装在客户机中的辅助守护程序,用于在宿主机和客户机之间交换信息,并在客户机中执行命令。 在 Proxmox VE 中,qemu-guest-agent 主要用于三个方面: - 用于正确地关闭客户机,而不是依赖于 ACPI 命令或 Windows 策略。
- 在进行备份 / 快照时冻结客户机的文件系统(在 Windows 上,使用卷影复制服务 VSS)。如果启用了客户机代理并且它正在运行,它会调用 guest-fsfreeze-freeze 和 guest-fsfreeze-thaw 来提高一致性。
- 在客户机(虚拟机)暂停后恢复(例如在快照之后)的阶段,它会立即使用 qemu-guest-agent 与超级管理程序同步时间(作为第一步)。
Linux
For Arch Linux
- pacman -S qemu-guest-agent
- systemctl enable --now qemu-guest-agent
复制代码 For Debian/Ubuntu
- apt-get install qemu-guest-agent
- systemctl enable --now qemu-guest-agent
复制代码 For Redhat
- yum install qemu-guest-agent
- systemctl enable --now qemu-guest-agent
复制代码 Windows
访问网站 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/ 下载 Virtio 驱动,例如 virtio-win-0.1.240.iso,上传到 Windows 虚拟机。打开镜像文件,在 guest-agent 文件夹中,安装「qemu-ga-x86_64.exe」,然后重启系统。
OpenWrt
登录 SSH 或者 WebShell,使用以下命令更新并安装 QEMU guest-agent,并重启系统。
- opkg update
- opkg install qemu-ga
- reboot
复制代码 如果提示找不到 qemu-ga,需要更换软件源为官方源,可以按以下步骤操作:
在 WEB 后台,「系统」-「软件包」-「发行版软件源」里,替换域名为官方域名或者镜像,然后再安装。
官方软件源类似如下,注意版本和架构不同,不要直接复制,只替换域名即可。PS:此文撰写时腾讯云镜像也是可以的。
- src/gz openwrt_core https://downloads.openwrt.org/snapshots/targets/x86/64/packages
- src/gz openwrt_base https://downloads.openwrt.org/snapshots/packages/x86_64/base
- src/gz openwrt_luci https://downloads.openwrt.org/releases/18.06.9/packages/x86_64/luci
- src/gz openwrt_packages https://downloads.openwrt.org/snapshots/packages/x86_64/packages
- src/gz openwrt_routing https://downloads.openwrt.org/snapshots/packages/x86_64/routing
- src/gz openwrt_telephony https://downloads.openwrt.org/snapshots/packages/x86_64/telephony
复制代码 群晖 Synology DSM
1.在套件中心 - 设置 - 套件来源中,添加「矿神 SPK」源,地址分别是:
如果提示无效的源,需要在 SSH 中,使用如下命令更新 CA 根证书,更新后还是无效就重启系统再添加。
- sudo mv /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt.bak && sudo curl -Lko /etc/ssl/certs/ca-certificates.crt https://curl.se/ca/cacert.pem
复制代码 2.在套件中心中搜索「QEMU Guest Agent」,并安装,安装后不要启动。 ![CleanShot 2023-12-11 at 00.31.51@2x](./ 各系统配置 QEMU Guest Agent.assets/CleanShot 2023-12-11 at [email protected])
3.安装后 SSH 按照说明运行以下命令,然后启动套件。
- sudo sed -i 's/package/root/g' /var/packages/qemu-ga/conf/privilege
复制代码 4.在 PVE 的虚拟机设置中,为 DMS 新增一个串口编号为 0 的串口设备,否则可能检测不到 QEMU Guest Agent。
常见问题解析
當你在 Ubuntu 使用指令 apt install qemu-guest-agent 安裝完 qemu-gesut-agent 後,你可能會想嘗試使用指令 systemctl start qemu-guest-agent 啟動。但你可能會看到錯誤訊息或是甚至是卡住無法執行,原因是因為你可能沒有開啟 Proxmox VM 的選項設定。
也可能是你没有添加串行设备:
查看运行状态:
- systemctl status qemu-guest-agent.service
复制代码 当查询结果显示 Active 时,则代表插件服务为运行状态。否则,请执行以下命令,设置其为运行状态:
- systemctl restart qemu-guest-agent.service
复制代码
|