Files
Knowledge/1 使用/Linux/virsh 命令.md
T

84 lines
3.6 KiB
Markdown

错误信息 `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
<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`),然后编辑配置:
```bash
virsh edit win10-ltsc
```
在 `<devices>` 段内,添加以下内容:
```xml
<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
```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 编辑报错),请告诉我具体的错误信息,我会帮你调整。