为什么当我删除虚拟机中的大文件时,主机上的磁盘映像文件没有减少?

时间:2013-02-17 13:34:27

标签: linux virtualbox

我在虚拟机上安装了CentOS(主机操作系统是Windows 7)。我创建了VDI文件的磁盘映像文件(动态分配映像)。最近,当我删除CentOS中的大文件时,我磁盘上的VDI文件不会减少。为什么?如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

当您删除VM中的文件时,VirtualBox不会自动回收磁盘空间(在主机上)。要缩小磁盘映像,您需要

首先,将所有可用空间(对于HDD上的所有分区和逻辑卷)清零,然后关闭VM。

cat /dev/zero > z;sync;sleep 3;sync;rm -f z

然后,使用以下命令压缩VDI。

VBoxManage modifyhd /path/to/image.vdi --compact

VBox Doc

  

使用--compact选项,可用于压缩磁盘映像,即删除仅包含零的块。这将再次缩小动态分配的图像;它会减小图像的物理尺寸,而不会影响虚拟磁盘的逻辑大小。压缩适用于基本图像和作为快照一部分创建的差异图像。

BTW:对于VMWare(.vmdk),您需要使用vmware-vdiskmanager -k xxx.vmdk来执行相同操作。

答案 1 :(得分:1)

主机如何知道VM提供给VM的哪些扇区以及哪些扇区是免费的?

它唯一知道的是当VM请求仍未在磁盘文件中分配的扇区时(当它增加它时)。

也许“碎片整理”或类似的过程可以很好地重新组织磁盘使用,以便您可以手动告诉主机减少空间。到目前为止,我不知道任何提供该功能的VM主机(并且使用它总是非常危险)。

最简单的替代方法是将您的VM克隆到新的。