解决Ubuntu 10.10下Vmware每次打开都会重新编译加载模块的问题
Fedora Kernel 升级至 2.6.40 之后 VMware Player 无法开启的解决方案

VirtualBox 4.0 实现Virtual PC和VMware那样的母盘差分

bachue posted @ 2011年1月09日 08:22 in Virtualization with tags ubuntu vbox virtualbox VMware differencing virtualpc disk immutable writethrough vdi vboxmanage modifyhd autoreset Unity , 10538 阅读

使用VirtualBox,一定是看中了他免费的特点(也许还号称开源,虽然我怀疑没有多少人会真的选择OSE版本,缺功能的),否则的话,这个虚拟机和VMware Workstation相比,根本不是一个级别的。VMware完全GUI操作,功能强大,使用方便,运行稳定。VirtualBox的功能就是他一个子集,而且还有大量命令行操作,使用非常不便,Bug也很多,幸亏核心功能还是比较稳定的。

但是在社会主义伟大精神的号召下,我还是想放弃盗版的VMware Workstation,毕竟一台Ubuntu电脑上装一盗版软件实在是不妥。虽然想,但是难度很大,由于学习方面的需求,我对虚拟机的功能要求是非常苛刻的,不仅效率要高,而且一定要有非常先进的母盘差分功能和文件传输功能。前者的意思是多个虚拟机共用一个硬盘文件,当一个虚拟机要向硬盘写入时,实现写时拷贝,就像Linux多个进程共享内存那样,有效的节约了硬盘资源。后者么就是虚拟机和实体机文件传输了。

问题是VirtualBox的这两个功能全都没有,或者说极其落后。Virtual PC和VMware很多年前就有母盘差分和文件拖拽传输,VMware更是实现了丰富的快照功能(快照也是一种简易的差分),而VirtualBox的文件传输必须依靠共享一个文件夹,极其不方便(有人说这样安全,VMware的文件拖拽是不安全的,但在我看来,病毒如果能突破虚拟机,要感染个共享文件夹岂不更加简单,没有人共享文件夹总是只读的吧),他也有快照功能,但是功能弱到绝不可能成为母盘差分的替代品。这也是我多年不使用VirtualBox的主要原因。

不过后来在一个很偶然的机会下,我读到了一篇英文文章(链接),这里面详细描述了VirtualBox的磁盘类型——immutable和writethrough,直到那个时候我才知道原来VirtualBox有很多命令行驱动的隐藏功能,这倒使我对VirtualBox的隐藏功能产生了兴趣,如果这些命令行功能中正好有我想要的,岂不善哉?为此我Google了大量文章,但是收获很少。但我曾经有一次实现了!不知道之前做了神马,最后我把vdi文件权限设为400后,他真的变成了母盘!所有基于他的虚拟机都可以同时开启并且互不影响的操作,但后来我发现,这是个很偶然的操作下诱发的Bug,我无法在另一台电脑上复制这个操作。尤其是VirtualBox进入4.0版本后,似乎还修复了这个Bug。VirtualBox 4.0还取消了存储选项中的一个叫Differencing Disk的选项,之前版本我其实也不知道这个选项究竟干吗用,现在索性还取消了。

我曾经还在Ubuntu中文论坛发过求助帖,但是无一人回帖,令我对这个论坛深感失望。

又是很偶然的,翻了Google排名较后的文件,发现了一篇BlogSpot的英文文章(链接),察看缓存,竟然发现正是我要的!这篇文章最大的特点就是没有用到Differencing Disk的选项,非常符合目前的情况。

创建好虚拟机之后,在VirtualBox Media Manager下选中即将成为母盘的VDI文件,右击Release。这样,既有的虚拟机将和这个VDI文件完全脱离关系。你也许能想出各种让VDI文件孤立的办法,但是请一定要使用上述方法,用其他方法几乎都会报错。

切到终端下(Linux系统的骄傲!VirtualBox是我见过唯一的在Linux平台下使用比在Windows平台下使用更加方便的多平台软件,方便就体现在这里),使用这样一个命令:

VBoxManage modifyhd <disk file>  --type immutable

把VDI文件转换为immutable文件,顺便把文件权限设为400吧,这样的VDI才是真正意义上的母盘。好,现在创建各种基于她的虚拟机吧!

其实之前的动作只是创建immutable盘的标准操作而已(什么是immutable盘?是指每次关闭虚拟机后,之前的所有操作全部回滚,再打开后就像一个从没被操作过的虚拟机一样),后面的才是重点。

图上的只是演示,我觉得在VirtualBox Media Manager下找到新虚拟 机的VDI文件(其实是基于母盘的快照)的路径更方便些,复制这个路径,使用以下命令:

VBoxManage modifyhd <differencing disk file> --autoreset false

把自动回滚取消,这样的immutable盘既实现了母盘差分,又不会在每次关闭后回滚,符合了我的要求。

真够麻烦的,其实Sun/Oracle要加个母盘差分功能很难吗?不可能。但他就是没有这么做,其中的原因么,不得而知了。不过随着进一步的深入研究,应该是能找到比这更方便的操作的。

至于文件传输,还是配个FTP吧,比她自带的共享文件夹功能还方便点。

后来发现:VMware Player也不错,同样也是免费产品,功能还行,非常稳定。与VMware Workstation相比,VMware Player仅仅失去了快照和母盘差分功能,与VirtualBox相比,VMware Player非常方便的文件拖拽功能,和其特色的Unity功能依然胜过他,如果不需求快照和母盘差分功能,还是考虑VMware Player吧,更好些!

Avatar_small
依云 说:
2011年1月09日 22:36

如果VirtualBox是你见过唯一的在Linux平台下使用比在Windows平台下使用更加方便的多平台软件的话,那你是不是没折腾过Vim/Emacs、nginx/Apache/MySQL、Python/Ruby/Perl/etc?

Avatar_small
依云 说:
2011年1月09日 22:38

至于文件传输嘛,我一直 scp 中,FTP 太麻烦了。

Avatar_small
bachue 说:
2011年1月10日 01:46

@依云: 哈哈!都不是很熟悉,只是懂点皮毛而已。scp么,好像不能linux->windows吧。

Avatar_small
依云 说:
2011年1月10日 02:32

@bachue: 虽然效率低了很多,但 Cygwin 还是很好用的。另外,scp 的源地址也可以是远程地址,所以也可以从 win 上 ssh 到 linux 来把文件拷过去。

nolnom 说:
2011年4月07日 13:53

怎样令vbox具有还原性呀 就是每次都不保存我对他做的修改

Avatar_small
bachue 说:
2011年4月14日 12:35

@nolnom: 其实这招我从来不用,因为我还是不喜欢VirtualBox,我用VMware Player。

Avatar_small
依云 说:
2011年4月14日 13:36

@nolnom: 你先 snapshot 下,然后每次用完关闭时选择“强制退出”,勾选“恢复上一次的快照”即可。

nolnom 说:
2011年4月18日 21:43

@依云: 什么是immutable盘?是指每次关闭虚拟机后,之前的所有操作全部回滚,再打开后就像一个从没被操作过的虚拟机一样),后面的才是重点。

这个immutable不是还原盘吗 我把磁盘设成那样也不成呀

piraya 说:
2011年6月25日 13:43

winscp很好用的说……

Avatar_small
bachue 说:
2013年10月20日 15:37

突然发现Virtualbox现在真的有linked clone功能了 归了Oracle后竟然有点进步了。。

HP Board 10th Questi 说:
2022年9月06日 16:18

Interested Students can Download HP Board 10th Model Paper 2023 From This Website for the Better Understanding of Examination Pattern and Guess Important Questions for the Current years. HPBOSE 10th Standard Students HP Board 10th Question Paper Check Previous Question Papers along with a Guess Papers. You can Download These in Pdf format to Prepare, Matric Public Exam Practice and get good marks.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter