快照回滚与删除
virsh snapshot-revert 把虚机状态回滚到某个快照,快照之后的写入会被丢弃;snapshot-delete 删除快照,其中 --metadata 只删元数据而把数据留在增量盘上,之后需要自行做 blockcommit 合并。外部快照(磁盘与状态分开存放)的删除与合并更依赖手工步骤,需要在维护窗口内按顺序执行,避免中间态无人接管。
基本信息
| 回滚 | virsh snapshot-revert vm1 snap1 |
|---|---|
| 删除 | virsh snapshot-delete vm1 snap1 |
| 仅删元数据 | virsh snapshot-delete vm1 snap1 --metadata(数据保留在增量盘) |
| 合并 | 外部快照删除后配合 virsh blockcommit 合并增量 |
| 查看 | virsh snapshot-list vm1(含创建时间与状态字段) |
典型使用场景
- 升级或变更前打快照,出问题快速回到变更前状态
- 演练环境反复回滚到初始状态
- 清理不再需要的快照链,回收存储空间
- 排查快照链过长导致的性能下降问题时先梳理现有快照
- 在做备份前建立一致性快照
回滚与删除
回滚与删除
virsh snapshot-list vm1 # 列出快照与创建时间
virsh snapshot-revert vm1 snap-before-upgrade # 回滚,之后的写入会丢弃
virsh snapshot-delete vm1 snap-before-upgrade # 删除快照
virsh snapshot-delete vm1 snap2 --metadata # 只删元数据,数据仍在增量盘
virsh blockcommit vm1 vda --active --pivot # 合并增量到基础盘
virsh domblklist vm1 # 合并后核对磁盘状态操作与注意
| 操作 | 命令要点 | 注意 |
|---|---|---|
| 创建 | snapshot-create-as 指定名称与描述 | 命名带时间与用途,便于事后辨认 |
| 查看 | snapshot-list 看类型与时间 | 外部快照与内部快照的删除流程不同 |
| 回滚 | snapshot-revert 指定快照名 | 回滚丢弃之后写入,必须先备份现状 |
| 删除 | snapshot-delete 删除整条快照 | 运行状态下删除要先确认磁盘链完整 |
| 仅删元数据 | 加 --metadata | 数据留在增量盘,需手工 blockcommit |
| 合并 | blockcommit 把增量并入基础盘 | 合并期间不要同时做其他磁盘操作 |
回滚前对现状再打一个快照:这样即使回滚后发现问题,还有一条退路,代价只是少量存储空间。
回滚是否需要关机取决于快照类型:磁盘快照通常要求虚机处于关机状态,带内存状态的快照可在运行态回滚;执行前先确认快照类型与所支持的操作组合。