Loading... > 今天在封装 Windows Server 2025 `qcow2` 镜像的时候突然注意到一个问题,将系统配置好之后导出时发现镜像的大小竟然是 60G ???(给虚拟机磁盘的大小就是60G),研究了一番得出了如下结论:`QCOW2`格式允许磁盘动态增加,虚拟机磁盘文件不会立即占用预配的磁盘空间,而是根据需要进行使用,而且磁盘空间的增加也不是说完全是被用掉了,例如我打包的这个镜像,实际大小是 7G 左右,我创建实例设置的磁盘大小是 60G 的,这个盘的映像文件也会占用 60G ,因为 `qcow2` 文件的结构在写入操作时会在原有基础上进行扩展,不会自动减少。 **这种现象通常出现在以下两种情况:** - 实例中的删除操作没有实际释放空间。。 - 实例中在进行了一些大规模的 I/O 操作之后镜像文件没有自动压缩。 ### 解决方法, 压缩 qcow2 镜像 使用 `qemu-img` 命令 来压缩镜像文件大小,`qemu-img` 的 `convert` 命令可以将一个镜像文件转换成另一个文件,同时进行压缩。通过使用 `-O qcow2` 和 `-c` 选项,可以将 `qcow2`镜像压缩 ```bash qemu-img convert -O qcow2 -c old.qcow2 new.qcow2 qemu-info xxx.qcow2 # 查看镜像参数 ``` **`old.qcow2`**:原始镜像文件 **`new.qcow2`**:压缩后的镜像文件 **`-O qcow2`**:指定输出格式为 `qcow2` **`-c`**:启用压缩功能 然后在打包 Windows 镜像的时候可以使用 [sdelete](https://docs.microsoft.com/en-us/sysinternals/downloads/sdelete) 工具来清理一下空间,减少没必要的占用,Linux操作系统的话可以使用 `fstrim`。 ```bash sdelete -z C: # Win sudo fstrim / # Linux ``` Last modification:April 25, 2025 © Reprint prohibited Support Appreciate the author Like 如果觉得我的文章对你有用,请随意赞赏