VirtualBox压缩vdi文件

随着虚拟机越建越多,越用体积越大,本地的磁盘已经快要捉襟见肘了,需要赶快清理一下。我们都知道,虚拟机磁盘在创建的时候可以选择动态(dynamically allocated)或者固定(fixed size)两种方式,动态方式可以初期占用较少物理磁盘空间,只要不超出最大配额,虚拟机用到多大就在物理磁盘上扩展多大,但是坏处就是容易在物理磁盘上产生碎片并最终影响性能,而且删除虚拟机上的文件释放空间后并不能让vdi磁盘文件自动收缩,还需要手工来压缩磁盘:

压缩前首先需要将虚拟机中没有存储文件的空闲磁盘空间都填充为''0",因为虽然你可能删除了文件,但是磁盘上的文件内容或许还在。在windows系统上可以用sdelete工具:
" sdelete -c -z c: "
的方式清理C盘,linux上有人介绍用:
"dd if=/dev/zero of=tmp.file"
dd_zero

通过用0来填充磁盘上未使用的空间来达到置零的目的,看着是不是很傻呢?不专业啊!所以我们要采用zerofree来完成这项任务,用Ubuntu做实验,先使用dd,然后用zerofree,对比一下效果。zerofree要求操作的磁盘设备不能以rw的方式mount,所以要进入单用户模式(Ubuntu进入单用户模式可以在启动时长按Shift键,然后会出现grub菜单,选择recover模式,进入root shell),执行
"zerofree -v /dev/sda1"
然后关机,用vboxmanage命令进行磁盘压缩操作:
"vboxmanage modifyhd ubuntu12.04.vdi.vdi --compact"
看一下用dd和zerofree的对比结果(先dd,后zerofree),明显zerofree效果好那么一点点:
vboxmanage_modifyhd_vdi_compact

最后,在在zerofree的man手册里面看到这么一条:-<:
OPTIONS
-n  Perform a dry run (do not modify the file-system);

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据