是什么
做外部快照会在基础盘之上叠出增量层,快照多了以后虚机磁盘就成了一条链:读写要穿透多层,管理也更复杂。合并操作把增量层的内容并回基础盘,让链变短。合并活动层使用提交命令加枢轴参数,把当前运行层并回底层并切换;拉平则把底层内容并入当前层,让镜像不再依赖底层文件。
基本信息
| 合并活动层 | 把运行中的增量层并入基础盘,并切换到合并后的镜像 |
|---|---|
| 拉平镜像 | 把底层内容拉进当前层,使镜像脱离对底层文件的依赖 |
| 查看进度 | 查询块任务信息,观察已完成比例 |
| 取消任务 | 任务执行中可请求取消,但要确认取消后的数据状态 |
| 收尾核对 | 合并完成后用镜像信息命令查看依赖链是否已经清空 |
典型使用场景
- 快照收尾:备份完成后把增量层合并回基础盘,恢复单层结构
- 链过长:多层叠加导致性能下降,合并缩短链长
- 交付整理:把依赖底层的镜像拉平,便于单独分发
- 空间回收:合并后清理不再需要的增量文件,释放存储
- 迁移准备:迁移前先把镜像链拉平,避免搬漏依赖文件
合并与拉平
合并与拉平
virsh blockjob vm1 vda --info # 查看当前是否有块任务在跑
# 合并活动层并切换:适用于外部快照收尾
virsh blockcommit vm1 vda --active --pivot --wait --verbose
# 拉平:把底层内容并入当前层,之后不再依赖底层文件
virsh blockpull vm1 vda --wait --verbose
virsh domblklist vm1 # 确认虚机仍指向正确的磁盘
qemu-img info --backing-chain /var/lib/libvirt/images/vm1.qcow2操作要点
| 项 | 说明 | 注意点 |
|---|---|---|
| 合并方向 | 增量层并回基础盘,与拉平方向相反 | 选错方向会让链更长或改变镜像结构 |
| 枢轴切换 | 合并活动层时切换虚机使用的新镜像 | 完成后核对虚机磁盘指向是否已更新 |
| 执行窗口 | 合并涉及大量顺序读写 | 业务高峰执行会明显拖慢虚机 IO |
| 并发 | 同一磁盘上不要同时跑多个块任务 | 并发冲突会导致任务失败或状态不一致 |
| 空间 | 合并过程需要额外空间做中转 | 存储余量不足会让任务中途失败 |
合并是 IO 密集型操作:一套链越深、磁盘越大,耗时越长。安排在业务低谷,并对宿主的存储延迟做监控,避免影响同宿主其他虚机。
合并进行中不要动增量文件:手工删除或移动链上的文件会让任务失败,严重时整条链不可用,虚机需要从备份恢复。