各系统配置QEMU Guest Agent解决PVE/群晖虚拟机无法关机问题

介绍在多个操作系统(包括 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 主要用于三个方面:

  1. 用于正确地关闭客户机,而不是依赖于 ACPI 命令或 Windows 策略。
  2. 在进行备份/快照时冻结客户机的文件系统(在 Windows 上,使用卷影复制服务 VSS)。如果启用了客户机代理并且它正在运行,它会调用 guest-fsfreeze-freeze 和 guest-fsfreeze-thaw 来提高一致性。
  3. 在客户机(虚拟机)暂停后恢复(例如在快照之后)的阶段,它会立即使用 qemu-guest-agent 与超级管理程序同步时间(作为第一步)。

Linux

Linux 的安装方式都差不多,使用各自的包管理器安装,然后启动服务就可以了。

For Arch Linux

1
2
pacman -S qemu-guest-agent
systemctl enable --now qemu-guest-agent

For Debian/Ubuntu

1
2
apt-get install qemu-guest-agent
systemctl enable --now qemu-guest-agent

For Redhat

1
2
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」,然后重启系统。

CleanShot 2023-12-10 at 23.53.07@2x

OpenWrt

登录 SSH 或者 WebShell,使用以下命令更新并安装 QEMU guest-agent,并重启系统。

1
2
3
opkg update
opkg install qemu-ga
reboot

如果提示找不到 qemu-ga,需要更换软件源为官方源,可以按以下步骤操作:

在 WEB 后台,「系统」-「软件包」-「发行版软件源」里,替换域名为官方域名或者镜像,然后再安装。

官方软件源类似如下,注意版本和架构不同,不要直接复制,只替换域名即可。PS:此文撰写时腾讯云镜像也是可以的。

1
2
3
4
5
6
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

群晖部分参考:https://imnks.com/9522.html

  1. 在套件中心 - 设置 - 套件来源中,添加「矿神 SPK」源,地址分别是:

    • DSM6:https://spk.imnks.com/,还需要在「常规」-「信任层级」中选中「任何发行者」
    • DSM7:https://spk7.imnks.com/
    CleanShot 2023-12-11 at 00.20.48@2x

    如果提示无效的源,需要在 SSH 中,使用如下命令更新 CA 根证书,更新后还是无效就重启系统再添加。

    1
    
    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 00.31.51@2x.webp)

  3. 安装后 SSH 按照说明运行以下命令,然后启动套件。

    1
    
    sudo sed -i 's/package/root/g' /var/packages/qemu-ga/conf/privilege
  4. 在 PVE 的虚拟机设置中,为 DMS 新增一个串口编号为 0 的串口设备,否则可能检测不到 QEMU Guest Agent。

    664453c0479b5.webp

0%