VirtrueBox 镜像压缩

来源:互联网 发布:淘宝开店链接 编辑:程序博客网 时间:2024/05/01 18:48


最近发现了使用virtualbox产生的系统镜像动态增长的速度十分惊人,用了几个月镜像出乎意料的到达了110GB,不要问我为什么会变得这么大,我也不知道为什么,总之删除神马的对磁盘空间没有什么帮助。

使用磁盘管理的命令可以看出系统的空间远没有这么大,所以就需要我们对镜像进行碎片整理和压缩。

首先,VirtralBox 的磁盘格式有很多种,其中vdi格式virtualBox专用的,当时创建的时候为了通用性考虑使用了vdmk这个格式。原来virtual本身自带的工具镜像的互转。


1.碎片整理

sudo dd if=/dev/zero of=/EMPTY bs=1M

sudo rm -rf /EMPTY

//对于这个命令 看不明白/EMPTY 挂载了什么,至于这个命令可以运行就理解为空闲的区域清零操作

2.压缩

VBoxManage modifyvdi   xx.vdi compact


这里两个步骤是从网上找到了,发现压缩只支持vdi格式,所以先进行格式转化,当然本来就是VDI格式就不需要转化了

VBoxManage 这个命令是在virtualBox的安装目录下 执行前输入绝对路径或者到安装目录或者设置一下环境变量总之能运行即可

      -------------------------------------------------------------------------------------------------

接下去是我的操作:

1.首先我尝试了一下 sudo dd if=/dev/zero of=/EMPTY bs=1M  

  结果硬盘满载,然后10分钟了也没有任何提示,无奈110G的镜像似乎遥遥无期,(查看网上的一些评论似乎也没啥效果就放弃了)

于是不管3721就先转化格式看看情况: 

VBoxManage clonehd e:\virtual\uuu.vmdk  f:\k.vdi --format vdi

漫长的等待得亏还有提示:

十分震惊大小居然只有原来的60%左右了,感觉和原来运行10分钟填充的关系不是很大吧,可能转化的过程就会做一些压缩吧?

因为还没有做填充zero操作,因为我们删除文件通常是做一个标记这个文件已经不可用,实际上文件只是文件管理器看不到了,

但本事还是一堆二进制存在。这里压缩的原理是根据把0的区域干掉。那么我们需要找一个好用的工具快速解决这个问题。

这里用到一个liveCD和一个命令zerofree ,听起来就是为这个而生的。

首先我们需要先打开虚拟机安装好命令,在liveCD上安装这个命令应该也可以,这里我进入虚拟机进行安装

sudo apt-get install zerofree

whereis zerofree     这里看到zero被放到了/usr/bin 目录  之前在bin 和sbin下都找不到使用了find才找出来了。

虚拟机挂载一下liveCD的镜像,然后运行起来

sudo mkdir /mnt/ub

sudo mount -n -o ro -t ext4 /dev/sda1 /mnt/ub

        #执行zerofree

sudo /mnt/ub/usr/bin/zerofree /dev/sda1

#完成后关机就好,然后尝试压缩

VBoxManagemodifyvdi   xx.vdi compact

再一次漫长的等待  从69G-->46G  这里没有进入虚拟机里观察究竟占用空间有多少,感觉是差不多了从110G 到了46G体积已经缩小了太多了

最后想,不妨压缩看一下最后结果如何:用到了7Z压缩(极限压缩,这里线程越多压缩的越快,但是相当耗内存这种压缩的情况,这里保留了一点机器的性能)

经过漫长的等待这里因为压缩软件本身计时了90分钟的时间(CPU是I7-4600 8G内存的情况)

惊人的压缩率21%(从46g-->11g)

感觉备份这个文件就非常的方便了。(有人问你的镜像到底干了什么这么,我只能默默的吐槽这个是用来编译安卓的一个镜像,重复编译几十次就变成这样了)

缺点是解压估计性能差的电脑需要很长的时间了。





0 0
原创粉丝点击