KVM qcow2镜像压缩,减小镜像磁盘占用空间

KVM 虚拟机使用 qcow2 镜像时,随着删除文件、重装软件,镜像文件并不会自动变小,而是会持续膨胀。
本文针对 qcow2 镜像压缩需求,提供从准备、离线处理到验证的完整操作流程,帮助零基础用户在 KVM 宿主机上安全减小镜像磁盘占用空间,同时不影响虚拟机原有数据。

为什么 qcow2 镜像越用越大

qcow2 是一种支持稀疏文件的磁盘格式,写入数据时才按块分配空间。
但虚拟机内部删除文件后,宿主机上的 qcow2 文件通常不会自动释放这些块,于是镜像文件保持“只增不减”。
此外,日志、临时文件、数据库碎片等都会让镜像虚胖。
想让镜像恢复紧凑,必须对 qcow2 做一次整理和重建。

压缩前准备:先清理虚拟机内部空间

压缩前先在虚拟机内部做一轮清理,这一步直接影响压缩效果。
登录虚拟机,执行以下操作:

# 删除不必要的文件,然后执行 TRIM 回收空闲块(适用于支持 Trim 的磁盘)
sudo fstrim -av

如果没有 fstrim,可以用填零方式强制腾出可压缩空间:

dd if=/dev/zero of=/tmp/zero bs=1M status=progress
sync
rm -f /tmp/zero

完成后关闭虚拟机,后续所有操作都在宿主机上离线进行。

方法一:使用 virt-sparsify 回收空闲空间(推荐)

virt-sparsify 来自 libguestfs-tools,可以识别镜像中的空闲扇区并生成瘦身后的新镜像,操作相对安全。

先安装工具:

# Debian / Ubuntu
dsudo apt install libguestfs-tools

# CentOS / RHEL
dsudo yum install libguestfs-tools

执行压缩时,建议给原镜像先做一份备份,然后运行:

virt-sparsify --in-place /var/lib/libvirt/images/你的镜像.qcow2

如果不想改动原文件,也可以输出成新镜像:

virt-sparsify /var/lib/libvirt/images/原镜像.qcow2 /var/lib/libvirt/images/压缩后.qcow2

注意:--in-place 不支持带快照的镜像,且执行期间必须保证虚拟机处于关机状态。
生成新镜像后,检查无误再替换原文件。

方法二:使用 qemu-img convert 重新压缩

不安装额外工具时,也可以用 qemu-img 自带的重写功能。
qcow2 转换成 qcow2 并启用 -c 压缩,会重新整理数据块,减小文件体积。

qemu-img convert -p -f qcow2 -O qcow2 -c 原镜像.qcow2 新镜像.qcow2

参数说明:

  • -p 显示进度
  • -f qcow2 指定源格式
  • -O qcow2 指定输出格式
  • -c 启用压缩,适合存储文本、日志、系统文件等可压缩数据

转换完成后,把新镜像替换回原路径。
如果虚拟机已经在 libvirt 中定义,可以直接修改磁盘路径:

virsh edit 虚拟机名称

指向新镜像路径,然后启动虚拟机验证。

压缩后的验证与避坑提醒

压缩是否成功,主要看两点:镜像文件体积是否变小,虚拟机能否正常启动。
用下面命令检查:

ls -lh 原镜像.qcow2 新镜像.qcow2
qemu-img info 镜像.qcow2

重点看 disk size(实际占用)和 virtual size(虚拟大小)。
如果 disk size 明显小于之前的文件大小,说明压缩有效。

实际使用中这几个坑容易踩:

  • 对正在运行的虚拟机执行压缩,可能导致数据损坏,必须先关机并备份。
  • 如果镜像有快照链,virt-sparsify --in-place 会报错,建议先合并快照或用 qemu-img convert 处理当前层。
  • 镜像内部数据本身已高度随机(如已压缩的视频、加密数据库),压缩后体积可能变化很小,这是正常现象。
  • 转换后原镜像先保留几天,确认新镜像稳定运行后再删除,避免误操作丢失数据。

如果你正在处理 KVM qcow2 镜像压缩,减小镜像磁盘占用空间,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分,必要时查阅 libguestfs 和 qemu-img 官方文档。

分享到:
上一篇
Nginx配置长连接keepalive
下一篇
Debian系统apt自动安全更新
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意