错误信息 `QEMU guest agent is not configured` 是因为你使用了 `--quiesce` 参数。该参数要求虚拟机内部必须运行 **QEMU Guest Agent**,并且 libvirt 已经配置好与之通信的通道。`--quiesce` 的作用是在快照前通过 guest agent 暂停虚拟机的文件系统 I/O,以保证快照的数据一致性(尤其对 Windows 系统很重要)。 --- ## 🎯 镜像管理 安装并配置 QEMU Guest Agent(推荐)这是最规范的做法,既能保证快照一致性,又能实现后续更多管理功能(如获取 IP、关机等)。 #### 1. 下载 virtio-win ISO(如果尚未下载) ```bash wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso -O /tmp/virtio-win.iso ``` #### 2. 挂载 ISO 到 Windows 虚拟机 你可以动态挂载,也可以关机后添加一个光驱设备。这里采用**动态挂载**(虚拟机运行时): ```bash cat > /tmp/attach-ga.xml < EOF virsh attach-device win10-ltsc /tmp/attach-ga.xml --live ``` #### 3. 在 Windows 虚拟机内安装 Guest Agent - 打开“此电脑”,找到新出现的虚拟光驱(盘符可能为 D: 或 E:)。 - 进入 `guest-agent` 文件夹,双击安装 `qemu-ga-x86_64.msi`(根据系统版本选择)。 - 按向导完成安装,**不需要重启**(但后续最好重启一次)。 #### 4. 配置 libvirt 虚拟机 XML,添加 guest agent 通道 如果虚拟机正在运行,可以先关闭(`virsh shutdown win10-ltsc`),然后编辑配置: ```bash virsh edit win10-ltsc ``` 在 `` 段内,添加以下内容: ```xml ``` 保存退出。 #### 5. 启动虚拟机并验证 guest agent ```bash virsh start win10-ltsc # 等待虚拟机启动后,检查 guest agent 是否在线 virsh guestinfo win10-ltsc --name ``` 如果返回了主机名,说明 agent 工作正常。 #### 6. 重新执行快照命令(现在应该成功) ```bash virsh snapshot-create-as win10-ltsc win10-clean --disk-only --quiesce ``` --- ### 方案 B:去掉 `--quiesce` 参数(简单但不推荐) 如果你不想安装 guest agent,可以放弃数据一致性保证,直接创建快照: ```bash virsh snapshot-create-as win10-ltsc win10-clean --disk-only ``` 这样不会报错,但快照时文件系统可能处于不一致状态(尤其当有大量磁盘写入时),恢复后可能触发磁盘检查或数据丢失。**仅建议用于测试或非关键环境**。 --- ## 📌 补充说明 - **快照位置**:即使没有 `--quiesce`,快照数据仍会保存在原始磁盘文件内(内部快照)或生成新文件(外部快照),位置不变。 - **外部快照**:如果你想生成独立的快照文件(方便备份),可以指定 `--diskspec` 参数,例如: ```bash virsh snapshot-create-as win10-ltsc win10-clean --disk-only --diskspec vda,file=/vm/disk/win10-clean.qcow2 ``` - **恢复快照**:使用 `virsh snapshot-revert win10-ltsc win10-clean`。 --- ## ✅ 建议 如果你打算长期使用快照功能,**请采用方案 A**,配置 guest agent 后快照会更可靠。安装过程不复杂,后续对虚拟机管理也很有帮助。 如果方案 A 中遇到任何问题(例如 XML 编辑报错),请告诉我具体的错误信息,我会帮你调整。