虚拟机快照、热迁移与图形前端管理
VM 级快照(savevm / loadvm)
qcow2 内部已经有磁盘快照了,QEMU 还有 VM 级快照——完整保存虚拟机状态(CPU + 内存 + 磁盘 + 设备状态)。
创建
# QEMU Monitor 里(Ctrl+Alt+2 切换)
(qemu) savevm pre-upgrade
(qemu) info snapshots
ID TAG VM SIZE DATE VM CLOCK
1 pre-upgrade 2.3G 2026-10-12 15:20:00 00:12:30.456
VM SIZE 就是保存的内存大小——如果 Guest 分了 8GB 内存,这个快照文件会接近 8GB。比纯磁盘快照大得多。
恢复
(qemu) loadvm pre-upgrade
恢复后虚拟机从快照时刻继续执行,包括内存和 CPU 状态。
外部快照文件
也可以把 VM 状态存到单独的文件:
(qemu) savevm /path/to/snapshot.bin
(qemu) loadvm /path/to/snapshot.bin
这样可以把快照文件和 qcow2 镜像分开管理。
热迁移(Live Migration)
QEMU 支持实时迁移——把一个正在运行的虚拟机从一台物理机迁移到另一台,几乎不停机。
基本流程
源主机 ────── TCP/SSH ──────→ 目标主机
(运行中的 VM) (等待接收)
│ │
│ 1. 目标启动空 VM │
│ 2. 源开始迁移内存页 │
│ 3. 循环迁移脏页 │
│ 4. 暂停 + 迁移设备状态 │
│ 5. 目标接管,源退出 │
命令行步骤
目标主机(先启动一个空的、配置相同的虚拟机,用 -incoming 等待接收):
qemu-system-x86_64 \
-accel kvm -m 8G -smp 4 \
-drive file=empty.qcow2,format=qcow2 \
-incoming tcp:0.0.0.0:8888
源主机(在 QEMU Monitor 里发迁移命令):
(qemu) migrate -d tcp:目标主机IP:8888
(qemu) info migrate
transferred: 10240000 bytes
remaining: 5120000 bytes
total: 16384000 bytes
等 remaining 变成 0 就迁完了。
virt-manager 图形界面
- 右键虚拟机 →「Migrate」
- 选目标主机
- 点「Migrate」
libvirt 帮你处理了所有 QEMU 细节。
迁移的前提条件
| 条件 | 说明 |
|---|---|
| CPU 架构相同 | x86→x86,ARM→ARM |
| QEMU 版本兼容 | 版本差异太大可能有问题 |
| 磁盘可访问 | 目标主机能读到源的磁盘文件(通常用 NFS/iSCSI) |
| 网络同网段 | 迁移后 VM 需要保持相同 IP |
| 相同设备模型 | CPU 型号、主板、网卡等尽量一致 |
故障排查
- 迁移卡住:通常是磁盘或网络带宽不够。检查源和目标的网络连通性、磁盘 I/O
- 迁移后崩溃:设备模型不匹配。确保
-cpu host改成-cpu max(更通用) - 跨版本迁移:推荐用 qemu 自带的
migrate命令做版本协商
virt-manager 图形管理前端
virt-manager 是 libvirt 生态的图形管理工具,封装了 QEMU 的命令行细节。
安装
# Debian/Ubuntu
sudo apt install virt-manager
# RHEL
sudo dnf install virt-manager
# Arch
sudo pacman -S virt-manager
功能
- 虚拟机创建向导:图形化选 ISO、配内存 CPU
- 快照管理:点几下创建/恢复快照
- 实时迁移:右键迁移
- 虚拟网络管理:默认 NAT、桥接、自定义网络
- 控制台访问:VNC / SPICE 图形或串口终端
- 资源监控:实时 CPU、内存、磁盘、网络图表
连接远程 libvirt
virt-manager 可以管理远程主机上的虚拟机:
# 文件 → Add Connection
# 选 Remote libvirt via SSH
# 输入 user@remote-host
其他图形前端
| 前端 | 平台 | 特点 |
|---|---|---|
| virt-manager | Linux(跨平台) | 最成熟,libvirt 官方 |
| UTM | macOS / iOS | 基于 QEMU/M1,Apple 生态最强 |
| QtEMU | Linux / Windows | 独立 QEMU 图形外壳 |
| Cockpit Web | Web | libvirt 的 Web 界面 |
| Proxmox | Debian-based | 完整的虚拟化管理平台 |
Proxmox:基于 QEMU 的完整虚拟化平台
如果你需要管理大量虚拟机,Proxmox 值得考虑:
- 基于 Debian + QEMU/KVM
- Web 管理界面(Cockpit 风格)
- 集群功能(多节点 HA)
- Ceph / ZFS 存储后端
- 免费开源
下一步
VM 管理搞定了,去 对比与选型 看看 QEMU 和 VirtualBox/VMware 的全面对比。