我在虚拟机上安装了CentOS(主机操作系统是Windows 7)。我创建了VDI文件的磁盘映像文件(动态分配映像)。最近,当我删除CentOS中的大文件时,我磁盘上的VDI文件不会减少。为什么?如何解决这个问题?
答案 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
使用--compact选项,可用于压缩磁盘映像,即删除仅包含零的块。这将再次缩小动态分配的图像;它会减小图像的物理尺寸,而不会影响虚拟磁盘的逻辑大小。压缩适用于基本图像和作为快照一部分创建的差异图像。
BTW:对于VMWare(.vmdk),您需要使用vmware-vdiskmanager -k xxx.vmdk
来执行相同操作。
答案 1 :(得分:1)
主机如何知道VM提供给VM的哪些扇区以及哪些扇区是免费的?
它唯一知道的是当VM请求仍未在磁盘文件中分配的扇区时(当它增加它时)。
也许“碎片整理”或类似的过程可以很好地重新组织磁盘使用,以便您可以手动告诉主机减少空间。到目前为止,我不知道任何提供该功能的VM主机(并且使用它总是非常危险)。
最简单的替代方法是将您的VM克隆到新的。