关于Virtualbox的那个奇妙的vdi的瘦身~最新版VBox通过[本博的virtualbox4.08测试通过]

      首先说下,Virtualbox是一个虚拟机~如果在此帖是第一次看到Virtualbox这几个英文字母的孩子们理论上不用往下看了~~~当然看了也无妨~

好了,言归正传,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文件名,不成功;提示为:

引用:
rocky@rocky-desktop:~/.VirtualBox/VDI$ VBoxManage modifyhd WinXP.vdi --compact
VirtualBox Command Line Management Interface Version 2.2.2
(C) 2005-2009 Sun Microsystems, Inc.
All rights reserved.

ERROR: Could not find a hard disk with location 'WinXP.vdi' in the media registry ('/home/rocky/.VirtualBox/VirtualBox.xml')
Details: code VBOX_E_OBJECT_NOT_FOUND (0x80bb0001), component VirtualBox, interface IVirtualBox, callee nsISupports
Context: "FindHardDisk(Bstr(FilenameOrUuid), hardDisk.asOutParam())" at line 415 of file VBoxManageDisk.cpp


我的这个VDI从vbox 1.5.2开始,存放目录中间改过多次,不知是否有关系。后改为使用UUID成功。
虚拟机硬盘的UUID可以在~/.VirtualBox/VirtualBox.xml里找到。

代码:
VBoxManage modifyhd  b5cf7595-9709-421e-a2b4-96c8683425c4 --compact
VirtualBox Command Line Management Interface Version 2.2.2
(C) 2005-2009 Sun Microsystems, Inc.
All rights reserved.

0%...10%...20%...30%...40%...50%...60%...70%...80%...
 
 
以上内容均为转载
 
注:vdi文件的uuid可以从C:\Documents and Settings\用户名\.VirtualBox文件夹下的VirtualBox.xml文件中查看,
<MediaRegistry>
<HardDisks>
  <HardDisk uuid="{865c589e-1de8-4ced-99c7-73b6d978f144}"location="E:\VirtualMachine\XPSP3.vdi" format="VDI" type="Normal" />
  <HardDisk uuid="{067a2a61-5143-4878-b83d-931111dc5fbb}"location="E:\VirtualMachine\XPJP.vdi" format="VDI" type="Normal" />
  </HardDisks>
 
花括号中的即为uuid,根据自己想要压缩的文件选择相应的字符串。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值