VirtualBox VDI文件大小随着Ubuntu 16.04的增长而不断增长

我的VDI文件不断增长,我不明白为什么。 VirtualBox支持已经确认这是一个Ubuntu Guest OS问题,而不是主机VB问题。 (顺便说一句,这个问题最好在这里得到解答,还是我应该在https://superuser.com上询问?)

我在Windows 7(Home Premium)64位作为主机运行最新的VirtualBox(5.1.18)。 Ubuntu 16.04(最新补丁)64位作为访客。 VDI文件使用动态分配存储高达100G。

当我以前运行Ubuntu 14.04时似乎都很合理。 最近我发现VDI图像的大小不断增长。 它已从7G增长到14G。 (这对你们中的一些人来说可能不是很多,但是使用8G记忆棒进行备份对我来说是一个问题!)我可以将Ubuntu启动到Unity桌面,然后立即退出,图像可以增长0.5G。

在Ubuntu中, df -h的输出显示:

 Filesystem Size Used Avail Use% Mounted on /dev/sda1 97G 7.7G 84G 9% / 

所以这就是说,与Avail相比,还有一个额外的6G已经“丢失”。 du -h -x -s /确认7.6G使用。

  1. 多余的存储空间是什么?
  2. VirtualBox和Ubuntu 16.04之间是否存在已知问题(14.04似乎没有这个问题)? 我在网上看到一些post说16.04正在使用过多的桌面内存,但没有任何东西可以达到6G ……

据我所知,当您或任何程序向磁盘写入内容时,删除该文件后,只会删除该文件的相关inode,并且数据(零和1)仍保留在磁盘上,因此在使用动态分配存储时, VirtualBox不知道你的操作系统中有哪些文件,只知道例如10G的数据已写入你的磁盘,所以它会增加你的硬盘大小来管理那10G的数据。

你可以做什么?

  1. 将guest虚拟机中的硬盘空闲空间归零,在Linux发行版中,您可以使用dd实用程序来执行此操作:

      sudo dd if=/dev/zero of=/home/zero bs=1M 
  2. 然后使用带有--compact开关的VBoxManage命令使您的VDI文件紧凑。

     VBoxManage modifyhd '/home/ravexina/VirtualBox VMs/Ubuntu/ubuntu.vdi' 

关于压缩的更多信息: 这里

保留块

关于你提到的大小,我想这将是ext4文件系统的保留块。 我的家庭分区是sda2

 user@machine:~$ sudo tune2fs -l /dev/sda2 | grep -ie 'reserved block count' Reserved block count: 1408704 

因为我的块大小是4096字节,所以1408704×4096使得5770051584再见,这相当于我的家庭补丁上的5.77 GB预留空间。

在Win7 VirtulBox 5.2.0上有同样的问题Ubuntu 16.04:

以下步骤解决了这个问题(感谢Ravexina上面的回答和这个 :

访客Ubuntu:

 sudo dd if=/dev/zero of=/home/zero bs=1M shutdown 

在cmd中托管Win7 (将目录更改为.vdi的位置)

 C:/virtualbox/vboxmanage.exe modifymedium --compact MyPathTo/MyVM.vdi 

重新启动的访客Ubuntu:

 sudo rm -rf /home/zero