升级VirtualBox虚拟机到4.0新存储格式

Oracle 在2010年12月6日发布了 VirtualBox 4.0 Beta 1,之后继续发力又发布了三个 Beta ,抢在圣诞节前发布了 VirtualBox 4.0 正式版。

这个版本加入了诸多新特性和改进。其中变化最大的几个如下:

  1. 二进制下载改成了 VirtualBox base package + extension packs 的方式。这样做的好处是避免了 VirtualBox 不同版本对用户造成的困扰,用户也可以按需取用。同时使第三方公司或用户无需重新封装整个产品即可扩展 VirtualBox 成为可能。

    • 原先在遵循 VirtualBox Personal Use and Evaluation License (PUEL) 的前提下,个人使用和评估完全版是免费的,而 Open Source Edition - OSE 则是按照 GPL 发布的。
* 4.0引入 Extension Pack 实际上是对安装结构重新调整,将开源和闭源特性分开封装发布。其中闭源部分,包括非 GP L驱动,USB 2.0,SATA,PXE Boot for e1000 和 VRDP Server 等,以类似于 Firefox 扩展的方式发布,扩展许可证分 PUEL 和商业许可两种,更多内容可以参考这篇文章:[Oracle VM Virtualbox 4.0 extension packs](http://blogs.oracle.com/wim/2010/12/oracle_vm_virtualbox_40_extens.html)
  1. GUI 进行了大返工,经重新设计改头换面,现在叫做:VirtualBox Manager。
  2. 虚拟机在文件系统上的存储采用了新的布局,设定(.vbox)和所有虚拟硬盘(vdi)在同一文件夹下,便于迁移。
    这个终于改过来了,作为一个老 VMware Workstation 用户(从3.0开始一路用到截至今日最新的7.1.3),实在无法理解将一个虚拟机的 Virtual HardDisk(vdi)和 Machines(配置文件)分开存储在不同文件夹这种布局的意义,不知道是哪个脑残设计出来的。

升级到4.0之后的问题是,之前版本创建的虚拟机如何升级到新的存储布局以便于日后迁移呢?杯具的是 VirtualBox 本身并未提供此功能,文档中也只字未提。研究了一下发现我的想法是可行的。

手动更新 VirtualBox 虚拟机到4.0新存储格式:

  1. 创建一个新的虚拟机,最好用与 source 近似或者相同的配置
  2. 从 Harddisk 目录复制源虚拟机的 vdi 至新建机目录下(4.0后都在默认的 machine folder 下,例如 Linux 是 ~/VirtualBox VMs),覆盖已存在的空白 vdi
  3. 用 vboxmanage showhdinfo 获取 vdi 的 uuid (会报告覆盖用的vdi的与虚拟机配置文件中虚拟硬盘的 uuid 不匹配)
  4. 编辑新虚拟机的 .vbox 配置文件,更新 HardDisk 的 uuid (两处),保存
  5. 完成,启动虚拟机

步骤不算麻烦,但还是希望 VirtualBox 能将其自动化并在 GUI 中提供选项。同时改进稳定性和性能问题,早日摆脱桌面虚拟化玩具的形象。

http://blogs.oracle.com/wim/2010/12/oracle_vm_virtualbox_40_extens.html