压缩 VirtualBox 的 VDI 文件

用 Sun VirtualBox 软件虚拟出来的硬盘文件是 VDI 文件,这个文件会随着使用而变大,因为磁盘碎片的产生,这个文件里也有很多的没用的空闲空间,为了节省空间,就需要对 VDI 文件进行压缩。

压缩分三步,1.在虚拟系统中进行碎片整理;2.在虚拟系统中把空闲空间标记为 0;3.在宿主系统中收缩 VDI 文件。

第一步,碎片整理可以用系统自带的,也可以使用第三方软件。

第二步,使用 “sdelete” 把空闲空间标记为 0,下载地址:http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx
命令:sdelete.exe -c c:

第三步,收缩

收缩有两个办法,一个是使用 VirtualBox 自带的 VBoxManage.exe,命令格式是:

VBoxManage modifyhd VDI文件名 compact

不过,我在使用这个命令时出错了,错误信息是:“Shrink hard disk operation is not implemented!”(貌似之后的版本可以用了,2010.08.09更新)

我在网上也查了这个错误,有不少人也遇到了同样的问题。

有高人写了一段小代码,实现了这个功能,PackVDI,下载地址:http://jerome.hode.free.fr/opensource/PackVDI.zip

执行 PackVDI 文件名即可。

注:本文内容在主机为 Windows 和 ubuntu 10.04 环境下测试过,VirtualBox 版本:3.2.8