3.6 KiB
3.6 KiB
错误信息 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(如果尚未下载)
wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso -O /tmp/virtio-win.iso
2. 挂载 ISO 到 Windows 虚拟机
你可以动态挂载,也可以关机后添加一个光驱设备。这里采用动态挂载(虚拟机运行时):
cat > /tmp/attach-ga.xml <<EOF
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/tmp/virtio-win.iso'/>
<target dev='sdc' bus='sata'/>
<readonly/>
</disk>
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),然后编辑配置:
virsh edit win10-ltsc
在 <devices> 段内,添加以下内容:
<channel type='unix'>
<source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-1-win10-ltsc/org.qemu.guest_agent.0'/>
<target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>
</channel>
保存退出。
5. 启动虚拟机并验证 guest agent
virsh start win10-ltsc
# 等待虚拟机启动后,检查 guest agent 是否在线
virsh guestinfo win10-ltsc --name
如果返回了主机名,说明 agent 工作正常。
6. 重新执行快照命令(现在应该成功)
virsh snapshot-create-as win10-ltsc win10-clean --disk-only --quiesce
方案 B:去掉 --quiesce 参数(简单但不推荐)
如果你不想安装 guest agent,可以放弃数据一致性保证,直接创建快照:
virsh snapshot-create-as win10-ltsc win10-clean --disk-only
这样不会报错,但快照时文件系统可能处于不一致状态(尤其当有大量磁盘写入时),恢复后可能触发磁盘检查或数据丢失。仅建议用于测试或非关键环境。
📌 补充说明
- 快照位置:即使没有
--quiesce,快照数据仍会保存在原始磁盘文件内(内部快照)或生成新文件(外部快照),位置不变。 - 外部快照:如果你想生成独立的快照文件(方便备份),可以指定
--diskspec参数,例如: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 编辑报错),请告诉我具体的错误信息,我会帮你调整。