qcow2 内部快照管理
qemu-img snapshot 直接操作 qcow2 的内部快照:-c 创建、-l 列表、-a 应用、-d 删除。它与 libvirt 自己的快照元数据体系相互独立——libvirt 不感知 qemu-img 建出来的快照。两套体系混用会造成状态认知偏差,所以服务化环境一般统一走 virsh。
基本信息
| 创建 | qemu-img snapshot -c snap1 disk.qcow2 |
|---|---|
| 列表 | qemu-img snapshot -l disk.qcow2 |
| 应用 | qemu-img snapshot -a snap1 disk.qcow2 |
| 删除 | qemu-img snapshot -d snap1 disk.qcow2 |
| 适用范围 | 仅支持内部快照的格式(如 qcow2) |
| 操作前提 | 最好在关机状态执行,避免运行态写入冲突 |
典型使用场景
- 实验环境做快速回滚:改配置前打一个还原点
- 排查镜像问题时先保留现场
- 离线准备镜像时记录一个基线状态
- 对没有纳入 libvirt 管理的裸镜像做版本点
- 给自动化测试提供快速恢复点
内部快照操作序列
内部快照操作序列
qemu-img snapshot -c snap-baseline disk.qcow2 # 创建内部快照
qemu-img snapshot -l disk.qcow2 # 列出快照:名称、大小与时间
qemu-img info disk.qcow2 | head -8 # 确认格式与虚拟、实际占用
qemu-img snapshot -a snap-baseline disk.qcow2 # 回滚到该快照
qemu-img snapshot -d snap-baseline disk.qcow2 # 删除快照并释放空间常用参数
| 参数 | 作用 | 注意点 |
|---|---|---|
| -c | 创建内部快照 | 仅适用于支持内部快照的格式 |
| -l | 列出快照 | 可看名称、大小与创建时间 |
| -a | 应用(回滚)快照 | 会丢弃之后的写入,不可撤销 |
| -d | 删除快照 | 释放其占用空间,操作不可恢复 |
不建议对正在被 QEMU 使用的镜像执行应用操作:libvirt 不感知 qemu-img 创建的快照,两套快照体系互相覆盖会让状态无法解释。服务化环境统一走 virsh 更可靠。
内部快照存放在镜像文件内部,必须删除快照才能真正释放空间;这与外部快照生成独立 delta 文件的存储行为不同,做容量规划时要区分开。