Rexdf

The devil is in the Details.

压缩Virtualbox的vdi文件

| Comments

问题实际上比较简单,我在Arch Linux杂记 中给出过一种增加vdi磁盘空间的方法。实际上就是用gparted-live-iso复制一遍文件系统。这种方法也是具有压缩的效果的。Linux的不太清楚,Windows的系统可以直接用DiskGenius挂载磁盘,然后直接在DiskGenius里面按文件对拷。效果明显好于ghost-iso光盘拷贝的。Windows的vmdk的虚拟机我做备份的时候,都是直接用DiskGenius拷贝然后rar压缩一下,效果非常之好,原版的xpsp3全新安装打所有补丁,升级全部系统组件之后,rar包只有800M左右,这样的系统随时新建一个系统非常方便。

因为Arch我基本都不启动图形界面的,启动都是SHIFT的headless的方式,所以装在了VirtualBox里面。用过一段时间之后磁盘逐渐大了起来,前些天编译gpg4win之后还磁盘不足过。到这时我才发现pacman -Sc能极大地清理系统这个诀窍。

本文主要的是一个笔记,记录问题和解决办法,为以后备查。

我现在采用办法是这里的。

Linux 虚拟机:

sudo dd if=/dev/zero of=/bigemptyfile bs=4096k
sudo rm -rf /bigemptyfile

Windows虚拟机, 下载 SDelete (Sysinternals一个组件):

sdelete –z

然后执行

VBoxManage.exe modifyhd arch.vdi --compact

我用的是10.3.16,这里有个比较有意思的现象,上面的dd命令执行完了之后用df -h查看,可以发现磁盘剩余空间是0%,但是我在物理机上面查看,没有观测到任何磁盘空间变化,完全没有。执行完rm命令后,df -h看到的就恢复之前的正常值了,没有多也没有少。

另外还有就是执行到了60%多的时候,我都没观测到arch.vdi这个文件大小一比特的变化(我不停在按F5刷新查看)。但是执行完了之后我再去看的时候就从原来的28.8G减小到了21.5G了,释放了7.3G空间,确实不错。

另外官网还推荐一个zerofree,在arch的aur源里面有,可以用yourt zerofree进行安装。我之所以没有用这个办法是因为,虽然官网上面1.0.1说的是支持ext2,ext3,ext4,但是aur源里面版本1.0.2说明的是ext2 filesystem,看到这个我就放弃尝试了。

官网给出的方案

Windows虚拟机

sdelete -c C
sdelete -c D

Linux 虚拟机

mount -n -o remount,ro -t ext2 /dev/sda1 /
mount -n -o remount,ro -t ext2 /dev/sdb1 /var
zerofree /dev/sda1
zerofree /dev/sdb1

Comments