如何进行KVM+QEMU外部磁盘快照合并和释放存储空间
问题现象描述
在虚拟机运行状态下,尝试进行快照合并操作时失败,导致快照占用的存储空间不断增长且无法有效释放。
关键过程、根本原因分析
- 使用的操作系统和软件版本可能存在缺陷,导致快照合并操作失败。
- 对KVM、QEMU及libvirt的快照管理功能不熟悉,可能导致操作不当,进而影响快照合并的成功率。
结论、解决方案及效果
- 建议使用如表1所示操作系统和软件版本。
- 在虚拟机运行状态下,创建快照。
virsh snapshot-create-as --domain VM_NAME SNAPHOT_NAME SNAPHOT_DESC --disk-only --diskspec vda,snapshot=external --atomic
- VM_NAME:虚拟机名称。
- SNAPHOT_NAME:快照名称。
- SNAPHOT_DESC:快照描述。
- vda:指定创建快照的虚拟机磁盘。
- 外部磁盘快照默认存储在虚拟机磁盘相同的目录下,创建完成后虚拟机磁盘设备将指向新建的外部磁盘快照。每个虚拟机最多可创建199个外部磁盘快照。
- 查询虚拟机磁盘设备信息。
virsh domblklist VM_NAME
- 虚拟机运行状态下,合并快照(blockcommit)。
virsh blockcommit --domain VM_NAME vda --base path_to_base_snapshot --top path_to_top_snapshot --wait --verbose
- VM_NAME:虚拟机名称。
- path_to_base_snapshot:要提交到的基本文件的绝对路径(不能是初始的虚拟机磁盘文件)。
- path_to_top_snapshot:要提交的顶部文件的绝对路径(不能是最后一个外部磁盘快照)。
- 删除合并后的不在需要的快照文件(谨慎操作)。
不能删除初始的虚拟机磁盘文件、最后一个外部磁盘快照,以及提交合并到的基本外部磁盘快照。
virsh snapshot-delete --domain VM_NAME SNAPHOT_NAME --metadata rm path_to_snapshot
- VM_NAME:虚拟机名称。
- SNAPHOT_NAME:快照名称。
- path_to_snapshot:快照文件的绝对路径。
父主题: 故障排除