好了,言归正传,vdi是Virtual box在建立虚拟空间时的动态磁盘格式,相对于固定磁盘格式来说,它的最大好处在于在建立空间时速度较快,而且初始大小很小。
但是缺点也是有的,相对于固定磁盘格式来说,速度较慢(这个“较”请往小的方向取,有多小取多小),并且当一个空间区域第一次被写入时,以后哪怕这部分空间的数据被移除了,但是增大的空间并不会减少~~纠结的很吧~那就举个例子,我知道这个用语言很难表达~~~比如装完了XP后,大约空间为2G, 这个时候,在我的主系统Windows7下的虚拟机磁盘文件大小也是2G,然而如果我在虚拟机的XP中装了个Office,那个总的空间就会增大到3G左右,好了,卸载Office,此时在虚拟机中看到的占用空间应该回到了2G,但是在Windows7下的那个磁盘空间文件依然会是3G,而不会回到2G。简言之这个磁盘空间文件,即vdi文件,它只会大,不会小~~~
这对于我们来说自然是无法接受的,于是我们投向了伟大的网络,找到了一些方法,但是多为n久以前的文章,并且大多注明,Virtualbox 2.2以后版本可能不适用,OMG, 我们可是3.08啊~
为了跟与时俱进一些,首先要有一个与时俱进的环境:Windows 7 RTM + Virutalbox 3.08
————————————————我是分割线——————————————————
当然了,牛角尖就是让人钻的~于是我们继续尝试,在Virtualbox的安装目录下,有一个文件叫做VBoxManage.exe的程序文件,各位也不用直接运行了,运行了各位我相信也看不清,一个cmd的窗口跳一下就没了~~当然为了少走弯路,我就直说了吧:
我终于开始说了:(大家在建立vdi的时候,尽量用一个单词作为名字)
打开Virtualbox的主程序,不用开虚拟机,这样做只是为了挂载要瘦身的vdi文件~
请先在虚拟机中下载http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx,这是sdelete程序,最好放在C盘根目录下,然后在虚拟机中运行cmd,直接cd\ ,然后使用 sdelete -c c: 命令(注意有个冒号),然后会看到一个进度显示,这是把虚拟机中剩余的空间用0写入,只要等就可以了,也不算太慢~好了之后就可以关掉虚拟机了,留下Virtualbox的主程序~
回到主系统~~~
点击开始,在搜索中键入cmd,在出来的结果上右键击之,以管理员身份运行,用cd命令一级一级跑到X:\program files\Sun\Virtualbox目录,X为安装目录序号,运行“VBoxManage modifyhd xxxxx.vdi compact ”(不含引号)xxxxx为vdi的文件名,这也是为什么一开始说最好名字是一个单词了,否则连不起来……无奈吧~(当然也可以临时改下,重新挂载就好了)
不出意外的话,这时候就会出来一个进度条,当然也是DOS风格的,到达100%的时候,就好了,这时再看vdi文件就小了~我们也就笑了~
P.S 请不要觉得那条命令很高端,其实我也是看着打的,想看吗,其实就在那个运行VBoxManage.exe闪过的框里,呵呵~~要看很容易,不用管理员身份再打开个cmd,然后直接把那个VBoxManage.exe拖放进cmd区域,然后点击Enter回车键~~然后就看到了……
我知道,能看到这里的孩子们是不容易的,谢谢你们了,我知道废话很多……
原文地址:http://bbs.lehu.shu.edu.cn/Article.aspx?aid=129062
如果开始直接用VDI文件名,不成功;提示为:
我的这个VDI从vbox 1.5.2开始,存放目录中间改过多次,不知是否有关系。后改为使用UUID成功。
虚拟机硬盘的UUID可以在~/.VirtualBox/VirtualBox.xml里找到。