VirtrueBox 镜像压缩
2015-06-13 23:27
225 查看
最近发现了使用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
漫长的等待得亏还有提示:
![](http://img.blog.csdn.net/20150613225701002?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvem1ucWF6cWF6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20150613225808841?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvem1ucWF6cWF6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20150613225813468?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvem1ucWF6cWF6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
十分震惊大小居然只有原来的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体积已经缩小了太多了
![](http://img.blog.csdn.net/20150613231453114?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvem1ucWF6cWF6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
最后想,不妨压缩看一下最后结果如何:用到了7Z压缩(极限压缩,这里线程越多压缩的越快,但是相当耗内存这种压缩的情况,这里保留了一点机器的性能)
![](http://img.blog.csdn.net/20150613231756503?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvem1ucWF6cWF6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
经过漫长的等待这里因为压缩软件本身计时了90分钟的时间(CPU是I7-4600 8G内存的情况)
惊人的压缩率21%(从46g-->11g)
感觉备份这个文件就非常的方便了。(有人问你的镜像到底干了什么这么,我只能默默的吐槽这个是用来编译安卓的一个镜像,重复编译几十次就变成这样了)
缺点是解压估计性能差的电脑需要很长的时间了。
使用磁盘管理的命令可以看出系统的空间远没有这么大,所以就需要我们对镜像进行碎片整理和压缩。
首先,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)
感觉备份这个文件就非常的方便了。(有人问你的镜像到底干了什么这么,我只能默默的吐槽这个是用来编译安卓的一个镜像,重复编译几十次就变成这样了)
缺点是解压估计性能差的电脑需要很长的时间了。
相关文章推荐
- [Algorithms] Longest Common Subsequence
- 理解MiniGUI消息循环和窗口过程
- Using JavaFX UI Controls 18 超链接
- 使用HMSegmentedControl实现分段控件
- LeetCode之“动态规划”:Unique Binary Search Trees && Unique Binary Search Trees II
- UVA 11235 - Frequent values
- 【leetcode】Unique Binary Search Trees II
- Value Investment
- poj 1141 Brackets Sequence(线性dp)
- [Android Pro] 获取手机已经安装的应用 和 获取当前正在运行的所有进程(一个uid对应多个pid)
- [Android UI] Service里面启动Activity和Alertdialog
- Uva - 12100 - Printer Queue
- Uva - 12100 - Printer Queue
- 详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别
- [Java基础] Java多线程-工具篇-BlockingQueue
- Form builder开发一些技巧
- String、StringBuffer和StringBuilder的区别
- 莫队算法+哈希 csu1515 Sequence
- Key-Value Observing机制
- 如何在easyui datagrid 中显示外键的值