我在 VirtualBox 中的虚拟机上安装了 Ubuntu Server 10.04 TLS。硬盘的大小是动态增长的硬盘,最大为 32GB。一开始我的硬盘上有 4GB,.vdi 的大小也是 4GB。最近磁盘上的数据大小为 15GB,但 .vdi 的大小几乎是 32GB。
这是为什么?
我如何打包/优化/碎片整理硬盘以使其与磁盘上的数据大小相同?
谢谢。
答案1
原因是动态磁盘存储了所有数据,甚至是临时的、现在已解除链接的数据。VBoxManage 可执行文件有一个命令,modifyvhd,可以执行硬盘映像的压缩:
VBoxManage modifyhd Ubuntu.vhd --compact
这应该会使文件大小回到接近 15GB 的大小,甚至可能略微提高性能(读取/搜索的数据更少)。如果您真的想优化磁盘,可以先将零写入可用空间,然后压缩。这将强制文件系统释放可能仍被占用的任何块。
cat /dev/zero > zero ; sync ; rm zero
其他参考:http://www.virtualbox.org/manual/ch08.html- 参见modifyvhd部分,特别是--compact
选项。
答案2
您可以使用 Clonezilla 将磁盘克隆到新的 VDI。我最近成功地将它用于 Linux 和 Windows 卷。我不能肯定地说它会收回空间,但尝试一下也没什么用。
- 使用 VBox 创建新卷
- 将卷附加到虚拟机
- 启动到 Clonezilla Live CD
- 将当前磁盘克隆到新磁盘
- 验证结果后,将原始磁盘和新磁盘移至同一连接点
- 启动虚拟机并测试