如何从 VirtualBox 缩小动态增长的 VDI 磁盘?

Tak*_*kat 36 partitioning virtualbox

我从 Virtual Box 中的各种 Ubuntu 安装中动态增长的虚拟磁盘 (VDI) 实际上确实在稳步“增长”。

删除虚拟机中的文件不会释放我的 VDI 文件从主机硬盘空间中占用的空间。

如何缩小这些文件以将未使用的硬盘空间还给主机?

Tak*_*kat 34

动态增长的 Virtual Box 虚拟硬盘驱动器文件能够根据虚拟机的需求增长到我们在设置此文件时定义的最大大小。但是,它不会释放我们在来宾操作系统中删除的文件空间。

如果磁盘增长太多,我们可以再次压缩它,前提是未使用的空间用零填充,并且驱动器为 VDI 格式。

对于 ext2 到 ext 4 文件系统,这可以从 Ubuntu 来宾使用命令行实用程序zerofree 完成 安装 zerofree * .

zerofree /dev/sdxX
Run Code Online (Sandbox Code Playgroud)

这需要驱动器不被使用,并被卸载。因此,我们可能必须将它临时绑定到我们为此目的创建的另一个 VM,或者我们需要在此 VM 上启动 Ubuntu 实时环境。

替换为/dev/sdxX有问题的 ext2、ext3 或 ext4 格式的分区

在多个分区上,我们必须zerofree对每个分区重复。请记住,通过填充零,虚拟文件​​将暂时增大到其最大大小。

一旦所有未使用的驱动器空间都用零填充,我们然后用以下命令缩小驱动器

VBoxManage modifyhd <name>.vdi --compact
Run Code Online (Sandbox Code Playgroud)

这将大大减少我们的 VDI 文件的文件大小。

* 在 Windows 客户机中,我们可以用实用程序替换未使用的空间sdelete

  • 如果您不想将 VDI 连接到另一台机器,您可以启动到恢复模式,并以只读方式挂载磁盘 `mount -n -o remount,ro -t ext4 /dev/sda1` 然后 `zerofree -v /开发/sda1`。 (3认同)
  • @smichak:这就是加密的重点。它将加密您的所有驱动器,以确保我们看不到文件边界。 (2认同)