如何减少虚拟机大小?

如何减少虚拟机大小?

我有一台 Virtualbox VM,其中的 .vdi 在主机上占用了 49gb。

我可能曾经使用过虚拟机内部那么多的空间,但现在我实际只使用了大约 6gb。

我尝试对 virtualbox 使用这个命令:

vboxmanage modifyhd /path/to/disk.vdi --compact

它开始工作 0%...10%.....100%。但实际上什么也没发生,.vdi 仍然是 49gb。

然后我在虚拟机中运行“df -h”,发现了这一点:

root@mypc# df -h
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/mypc-root       2.0T   38G  1.9T   2% /
udev                        1.3G  4.0K  1.3G   1% /dev
tmpfs                       502M  784K  501M   1% /run
none                        5.0M     0  5.0M   0% /run/lock
none                        1.3G  160K  1.3G   1% /run/shm
/dev/sda1                   228M   31M  185M  15% /boot
/home/someuser/.Private     2.0T   38G  1.9T   2% /home/someuser

我不知道为什么那里使用了 38gb。

我清理了垃圾,但没有帮助。

还有什么想法我还能做什么吗?

VM 装有 Ubuntu 12,带有加密的 LVM 和主目录(即 .Private 目录)。主机装有 Windows 7。

更新

我能够释放 /dev/sda1 的空间,但无法释放 /dev/mapper/mypc-root 的空间。Zerofree 启动后就再也没有结束,但我可以断定磁盘已停止写入,因为它在一分钟后停止发出噪音。

以下是“df -ih”的输出

root@mypc:/home/someuser# df -ih
Filesystem                 Inodes IUsed IFree IUse% Mounted on
/dev/mapper/mypc-root        128M  208K  128M    1% /
udev                         311K   495  310K    1% /dev
tmpfs                        314K   428  314K    1% /run
none                         314K     4  314K    1% /run/lock
none                         314K     7  314K    1% /run/shm
/dev/sda1                    122K   230  122K    1% /boot
/home/someuser/.Private      128M  208K  128M    1% /home/someuser

答案1

来自手动的

为了使此操作有效,需要先使用合适的软件工具将客户机系统中的可用空间清零。对于 Windows 客户机,您可以使用sdeleteMicrosoft 提供的工具。sdelete -c在客户机中执行以将可用磁盘空间清零,然后再压缩虚拟磁盘映像。对于 Linux,请使用zerofree支持 ext2/ext3 文件系统的实用程序。

答案2

相对于该有此解决方案的原始答案

在虚拟机中:

  1. dd if=/dev/zero of=test.file
  2. sync
  3. rm test.file

在主机上:

  1. VBoxManage modifyhd --compact your_image_path.vdi

这是我尝试过的唯一有效的解决方案。zerofreesfill(来自secure-delete) 在我的 Debian VM (Windows 10 主机) 上不起作用。

答案3

我认为问题的核心在于您的根文件系统 ( /) 的大小为 2TB。对于这么大的文件系统,相对较小的开销(inode 等)仍然相当大(在您的情况下为 >32GB)。

如果您想缩小虚拟磁盘,您首先需要缩小根文件系统。

相关内容