使用 QEMU 压缩 QCOW2 镜像文件的大小
今天在封装 Windows Server 2025
qcow2
镜像的时候突然注意到一个问题,将系统配置好之后导出时发现镜像的大小竟然是 60G ???(给虚拟机磁盘的大小就是60G),研究了一番得出了如下结论:QCOW2
格式允许磁盘动态增加,虚拟机磁盘文件不会立即占用预配的磁盘空间,而是根据需要进行使用,而且磁盘空间的增加也不是说完全是被用掉了,例如我打包的这个镜像,实际大小是 7G 左右,我创建实例设置的磁盘大小是 60G 的,这个盘的映像文件也会占用 60G ,因为qcow2
文件的结构在写入操作时会在原有基础上进行扩展,不会自动减少。
这种现象通常出现在以下两种情况:
- 实例中的删除操作没有实际释放空间。。
- 实例中在进行了一些大规模的 I/O 操作之后镜像文件没有自动压缩。
解决方法, 压缩 qcow2 镜像
使用 qemu-img
命令 来压缩镜像文件大小,qemu-img
的 convert
命令可以将一个镜像文件转换成另一个文件,同时进行压缩。通过使用 -O qcow2
和 -c
选项,可以将 qcow2
镜像压缩
1 | qemu-img convert -O qcow2 -c old.qcow2 new.qcow2 |
**old.qcow2
**:原始镜像文件
**new.qcow2
**:压缩后的镜像文件
**-O qcow2
**:指定输出格式为 qcow2
**-c
**:启用压缩功能
然后在打包 Windows 镜像的时候可以使用 sdelete 工具来清理一下空间,减少没必要的占用,Linux操作系统的话可以使用 fstrim
。
1 | sdelete -z C: # Win |
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Comments