KVM guest虚拟机qcow2大于磁盘大小

我有一个Windows 10虚拟机运行在我需要移动到另一台服务器的服务器上。 问题是目标服务器的qcow2文件太大。

奇怪的是,它所在的分区(在源服务器上)根据已用磁盘空间显示了以下内容:

Size Used Avail 680G 147G 499G 

但是,qcow2文件的大小实际上是501G。 这是没有意义的(147G使用,但有一个501G的文件是在上面),因为我认为磁盘的大小会随着空间实际使用而增长(在VM Windows报告31.3G使用C:它有467G空闲) ,而且文件大小实际上比磁盘上使用的数据大(当用ls显示时)。 换句话说,我在分区上使用了147G的磁盘空间,但'ls'表示qcow2文件是501G。

因为我想把它复制到另一台机器上,所以我有同样的问题。 缺less磁盘空间。 我已经gzipped qcow2文件和XML数据来移动虚拟机(这来到〜26G),但是当膨胀目标(新)服务器上的gzip文件时,它扩展到“真正使用”磁盘空间的501G,这是更多空间比我能分配给它。

所以我想我的问题是双重的:

  • 为什么原始服务器上的文件报告的分区大于分区上的已用空间?
  • 如何减小qcow2文件的大小,使其只使用虚拟机使用的磁盘空间(即31.3G)?

  1. 可能你有这个虚拟机的快照?
  2. 尝试转换这个qcow2文件。 这个命令将“收缩”qcow2文件。 删除快照,如果它们是和使用qemu-img convert -p -f qcow2 ./vm-disk-original.qcow2 -O qcow2 ./vm-disk-shrinked.qcow2