[转帖]在VirtualBox中收缩虚拟磁盘映像文件

Kvm、VMware、Virtualbox、Xen、Qemu 等
回复
头像
devin
帖子: 189
注册时间: 2008-08-26 22:57
来自: 长沙

[转帖]在VirtualBox中收缩虚拟磁盘映像文件

#1

帖子 devin » 2008-09-13 15:05

转自http://blog.sina.com.cn/bobbyworm

由于经常要测试一些软件,我在VirtualBox虚拟机中安装了一套Windows。使用过虚拟机的朋友都知道,为了节省硬盘空间,一般都使用动态扩展映像。它不会在一开始就占用指定大小的硬盘空间,而是随着实际使用的需要动态扩展。但是在虚拟系统里删除了文件,使用过的空间并不会自动收回。虚拟系统使用久了以后,磁盘映像文件会变得越来越大。



我以前使用过VMware,在VMware Tools里有一个很方便的Shrink功能可以收回未使用的硬盘空间,但是在VirtualBox里没有看到这样的选项。经过上网查找资料,终于找到了在VirtualBox(我用的是2.0.0版)里Shrink的方法,只需要三个步骤:



第一步:在Guest OS中整理磁盘碎片。可以使用Windows自带的碎片整理工具,不过更推荐使用Defraggler。这是一款免费的磁盘碎片整理工具,使用简单,整理速度很快。

Defraggler下载地址:http://www.defraggler.com/download
http://www.filehippo.com/download_defraggler/

第二步:将Guest OS的磁盘剩余空间清零,也就是把0值写入磁盘未使用空间的每一个字节。这一步是关键,因为在下一步里,所有只包含0值的磁盘空间将被收回。可以用Sysinternals出品的一个命令行工具SDelete来完成这一步。在Guest OS的命令行里执行:

代码: 全选

sdelete -c c:\
其中c:\是要清零的磁盘分区,应依次对所有虚拟磁盘分区执行这一步,如d:\、e:\等等。

SDelete下载地址:http://technet.microsoft.com/en-us/sysi ... 97443.aspx


第三步:使用VirtualBox提供的VBoxManage工具收缩磁盘映像文件。在Host OS的命令行中进入VirtualBox的安装目录(缺省为C:\Program Files\Sun\xVM VirtualBox),执行:

代码: 全选

VBoxManage modifyvdi 'Windows XP.vdi' compact
其中Windows XP.vdi是要收缩的磁盘映像文件名,请根据实际名称修改,不用指定路径。



经过这三个步骤以后,我的vdi文件从2.5G收缩到了1.2G,效果非常明显。以上介绍的前两个步骤所使用的工具是针对Windows的,如果Guest OS是Linux或其它系统,可以找一找相同功能的工具软件,原理都是一样的。
上次由 devin 在 2008-09-13 17:07,总共编辑 2 次。
头像
hubert_star
论坛版主
帖子: 5373
注册时间: 2007-10-29 22:12
系统: OSX 10.9 + Ub 1304
来自: 江苏南京

#2

帖子 hubert_star » 2008-09-13 15:59

收藏

原来硬盘写0是最重要的一步,之前我怎么做都不成功!
佛经说,人有八苦: 生、老、病、死、求不得、怨憎、爱别离、五阴盛 故我苦!
圣经说,人有七罪: 饕餮、贪婪、懒惰、淫欲、傲慢、嫉妒和暴怒  故我有罪!

我这篇帖子里面没有任何攻击我们伟大的中华人民共和国政府和任劳任怨的人民公仆(和本论坛高素质的版主)的文字和含义;

特此声明!

有些事,我们明知道是错的,也要去坚持,因为不甘心;有些人,我们明知道是爱的,也要去放弃,因为没结局;有时候,我们明知道没路了,却还在前行,因为习惯了。

欢迎来我的新浪微博@me
头像
冲浪板
论坛版主
帖子: 7513
注册时间: 2007-05-06 8:19

#3

帖子 冲浪板 » 2008-09-13 16:05

不收回空间的话,该空间是否可以再次写入数据?
头像
yiding_he
帖子: 2677
注册时间: 2006-10-25 18:10
来自: 长沙
联系:

#4

帖子 yiding_he » 2008-09-13 16:16

冲浪板 写了:不收回空间的话,该空间是否可以再次写入数据?
应该是可以的
你是自由的。别人也是。
头像
tony3322
帖子: 38
注册时间: 2007-08-17 17:10

#5

帖子 tony3322 » 2008-09-13 19:11

有点麻烦。
我是直接再新建一个虚拟磁盘。
光盘启动ghost
全盘ghost到新磁盘
新磁盘文件大小就是实际使用大小了。

把旧的虚拟磁盘删掉,用新的。
头像
想入非非
帖子: 8078
注册时间: 2008-07-14 22:42
来自: Beijing
联系:

#6

帖子 想入非非 » 2008-09-13 19:48

收藏以后或许会用上。。。 8)
Ubuntu User
头像
windwiny
帖子: 2254
注册时间: 2007-03-13 17:26

#7

帖子 windwiny » 2008-09-13 20:10

噢,我的神啊。。。。。。。


不知道怎么搞的,把 -c 参数写成 -s 了,NND删除了N多数据 什么桌面快捷方式,快速启动,Cookies ....


马马咪哎
mauricze
帖子: 87
注册时间: 2007-12-24 12:58

#8

帖子 mauricze » 2008-09-14 8:40

tony3322 写了:有点麻烦。
我是直接再新建一个虚拟磁盘。
光盘启动ghost
全盘ghost到新磁盘
新磁盘文件大小就是实际使用大小了。

把旧的虚拟磁盘删掉,用新的。
我也这么干的,毕竟可扩展虚拟硬盘在主系统下产生的碎片太多了
还是固定大小好点
红颜白发
帖子: 38
注册时间: 2006-11-25 7:46

#9

帖子 红颜白发 » 2008-09-15 0:47

分个 Xg 的独立空间,格式化成Ext3,挂上去,然后把Windows的Vbox虚拟机固定大小扔进去。OK了。不爽了把盘格式化~~~反正现在硬盘空间大,多分个10来G空间也不用心痛吧。
Ubuntu/linux QQ群(未满):25828986。
头像
photor
论坛版主
帖子: 11004
注册时间: 2008-04-26 12:41

Re:

#10

帖子 photor » 2009-02-25 13:08

红颜白发 写了:分个 Xg 的独立空间,格式化成Ext3,挂上去,然后把Windows的Vbox虚拟机固定大小扔进去。OK了。不爽了把盘格式化~~~反正现在硬盘空间大,多分个10来G空间也不用心痛吧。
没搞懂为什么这么干 :em20
头像
nscyj
帖子: 178
注册时间: 2007-10-05 10:28

Re:

#11

帖子 nscyj » 2012-07-11 8:32

tony3322 写了:有点麻烦。
我是直接再新建一个虚拟磁盘。
光盘启动ghost
全盘ghost到新磁盘
新磁盘文件大小就是实际使用大小了。

把旧的虚拟磁盘删掉,用新的。
试过楼主在办法,效果不大而且太麻烦了,还是这个方法简单有效。支持一下。
回复