文档章节

如何减小VirtualBox虚拟硬盘文件的大小

tsl0922
 tsl0922
发布于 2013/12/27 14:48
字数 518
阅读 9301
收藏 20

VirtualBox同时支持自己的虚拟硬盘格式VDI和Vmware的VMDK格式,两种格式的压缩略有不同。

1. 碎片整理

第一步要做的是碎片整理,打开虚拟机,执行下面的命令:

Linux系统:

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

Windows系统需要下载Sysinternals Suite并执行:

sdelete –z

2. 压缩磁盘

关闭虚拟机,现在可以开始压缩虚拟硬盘了

如果你的虚拟硬盘是VirtualBox自己的VDI格式,找到你的虚拟硬盘文件,执行命令:

VBoxManage modifyhd mydisk.vdi --compact

如果你的虚拟硬盘是Vmware的VMDK格式,那就要麻烦点,因为VirtualBox不支持直接压缩VMDK格式,但是可以变通下:先转换成VDI并压缩,再转回VMDK。执行命令:

VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi
VBoxManage modifyhd cloned.vdi --compact
VBoxManage clonehd "cloned.vdi" "compressed.vmdk" --format vmdk

事实上,执行命令的过程中可以发现:在从VMDK转换到VDI的过程中似乎已经做了压缩,文件大小已经减少了很多,第二条命令反而没见到文件大小有什么变化,所以这里第二条命令应该可以省略了。

VMDK 的压缩,也可以使用 vmware-vdiskmanager,只需要一条命令(参考):

vmware-vdiskmanager -k disk.vmdk

© 著作权归作者所有

共有 人打赏支持
tsl0922

tsl0922

粉丝 260
博文 26
码字总数 11714
作品 1
深圳
高级程序员
加载中

评论(1)

慧心石
慧心石
如果有多个分区需要到每个分区下执行一下
sudo dd if=/dev/zero of=/EMPTY
sudo rm -f /EMPTY
然后再压缩, 效果非常明显. 感谢
Ubuntu 14.04 使用VirtualBox 4.3.10 虚拟 Windows 7

Ubuntu 14.04 虽然不错,但是有些事只能在Windows下才能完成,所以在 Ubuntu 下利用虚拟机软件Oracle VirtualBox,虚拟安装个Windows系统是个不错的选择。 首先,去VirtualBox官网的下载地址...

Surjur
2015/07/15
0
0
VirtualBox之vdi、vhd、vmdk虚拟硬盘格式相互转换

VirtualBox之vdi、vhd、vmdk虚拟硬盘格式相互转换– 自由帽博客 2011-09-22 15:41:47| 分类: 默认分类 |字号 订阅

雕栏玉砌
2011/11/10
0
0
在 VirtualBox 中安装最小化版 CentOS

在 VirtualBox 中安装最小化版 CentOS 发表于 2013-08-27 作者 Haoxian Zeng 在刚开始接触 VPS 服务器的时候,为了测试各种程序和配置是否能用,就在本地使用 VirtualBox创建了一个与 VPS 配...

Backflow
2014/10/25
0
0
增大virtualbox中系统盘大小

Sun Virtualbox 增大虚拟磁盘空间的简单方法 最近遇到的问题,在刚开始建立虚拟机的时候,只分了C盘10G来装xp,到现在不够用了。而Virtualbox没有修改虚拟磁盘大小的功能。所以自己想了办法,...

Edwinn
2012/08/01
0
0
开发人员学Linux(1):VirtualBox中安装CentOS7过程记录

在开发过程中常常需要进行一些预研,而有些操作对操作系统可能具有破坏性且是不可恢复的,或者需要在不同的操作系统中去观察结果,虽然在某些场合下Ghost可以解决一部分问题,但是有时候很繁...

周金桥
2017/10/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
3
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
3
0
Nignx缓存文件与动态文件自动均衡的配置

下面这段nginx的配置脚本的作用是,自动判断是否存在缓存文件,如果有优先输出缓存文件,不经过php,如果没有,则回到php去处理,同时生成缓存文件。 PHP框架是ThinkPHP,最后一个rewrite有关...

swingcoder
今天
2
0
20180920 usermod命令与用户密码管理

命令 usermod usermod 命令的选项和 useradd 差不多。 一个用户可以属于多个组,但是gid只有一个;除了gid,其他的组(groups)叫做扩展组。 usermod -u 1010 username # 更改用户idusermod ...

野雪球
今天
3
0
Java网络编程基础

1. 简单了解网络通信协议TCP/IP网络模型相关名词 应用层(HTTP,FTP,DNS等) 传输层(TCP,UDP) 网络层(IP,ICMP等) 链路层(驱动程序,接口等) 链路层:用于定义物理传输通道,通常是对...

江左煤郎
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部