虚拟机正接管着整个世界。就其本身来讲,虚拟机只是一个定义了不同资源的一种容器,这些资源包括内存、磁盘空间、处理器以及网卡,并且负责从物理机上分配这些资源。相对于物理机来说,虚拟机需要靠软件(操作系统和应用程序)的帮助才成为可用。如果把虚拟机和软件组在一起,那么就称为虚拟应用(virtual appliance)。有一些完整的并且带有专门软件的Linux发行版被做成虚拟应用。虚拟应用的打包很简单,所以我们绝不缺少虚拟应用,如果你知道从哪里去找的话。
部署(deploy)一个预安装并且事先配置好应用要远简单于从头准备系统、安装应用然后将其配置成功。不过使用简单也有其缺点,那就是虚拟应用的大小会数倍于应用本身的大小,主要是因为应用会同时绑定支撑其运行的操作系统。当这种应用流行起来,开发人员有可能会将他们10MB的程序与700MB的发行版绑定起来,然后发布超过700MB的一个应用。
今天,虚拟应用已经真实的成为软件发行的一种方式并且衍生出一种新的商业类型--虚拟应用发行商。与软件商和虚拟软件公司一道,虚拟应用发行商努力去实现支撑应用的发行版的效率。例如,流行的bug跟踪软件Bugzilla可以从Mozilla的站点下载,作为tar包只有2.4MB的大小,也可以从虚拟应用发行商Jumpbox那里得到150MB的虚拟应用。这差不多是软件本身的62.6倍,但是在这150MB里,同时包括了操作系统,非常精简并且优化来只运行特定的程序。
寻找虚拟应用
某些软件商除了发行可供下载的常规的软件包之外,还会发行一种即可可用的应用,比如TrixBox, DimDim, 和 Ubuntu。所以,寻找特定虚拟应用的第一个地方就是软件商本身。
并且,有很多站点提供流行的应用和发行版。一个流行的虚拟应用的地方是VMware's virtual marketplace。那里列出来的大部分应用是可免费下载的。那些需要付费的应用要么是绑定了专有软件,要么是被VMWare认证了的可供企业使用的。这里列出的所有应用都是为VMWare制作的,使用的是VMWare的虚拟技术,所以你需要一个免费的VMware Player来运行这些应用。
由于Vmware是最流行的虚拟软件,有一些个人网站会为其发布一些虚拟应用,通常为某个特定的发行版或者一类特定的发行版制作。例如VMwhere serves的 Gentoo 和 Slackware 应用, ThoughtPolice 有 CentOS, Debian, Fedora, Ubuntu, 和 FreeBSD 版本的应用, Jcinacio 有所有Ubuntu版本的应用, VMachines 有desktop, server, 和 防火墙/安全相关的发行版的应用。
VMware 可能是最流行的虚拟软件,但是并不意味着就是唯一的。你也可以找到为其他虚拟软件比如 Xen、 VirtualBox、 和 QEMU准备的虚拟应用。
Xen 是一个流行的开源的虚拟机监控器或者说hypervisor。你可以在Jailtime.org找到一些修改后可以运行在Xen的Linux发行版。这个站点有主流发行版的32位版本,包括 Debian、CentOS、Fedora、Gentoo、Slackware 和 Ubuntu,还有其中一些的64位版本。
另一个流行的虚拟软件是 VirtualBox,由 Innotek 开发,最近被 Sun 收购。 VirtualBox 有一个功能受限的开源版本的客户端,不过全功能的客户端也可以免费下载。你需要其中的一个版本来运行VirtualBox的应用。
有一些站点发布不同的Linux发行版的 VirtualBox 应用。在HelpdeskLive你可以一些流行发行版 (Fedora, Ubuntu, 等等)的应用,也可以找到一些定制的发行版的应用,比如Ubuntu Studio with Cinelerra 和 GNOME CentOS 5 with GCC.。veeDee-Eyes 有所有发行版的修改过的和原始的版本,也包含他们的alpha和beta版本。你也可以在SourceForge.net的 VirtualBox Images project 找到很多发行版的应用。
在 VMware, VirtualBox, Xen, 以及其他类似的软件之前有一个 QEMU, 这是一个开源的处理器仿真器。与它的操纵组件 KQEMU 组合在一起,在那些喜欢100%开源的人当中颇为流行。如果你打算用QMENU测试Linux或*BSD发行版,可以到 FreeOsZoo。这个站点提供70个即时可用的基于不同发行版的应用,包括新的、老的、全功能的和Live发行版。你需要QMNEU来运行这些应用,得到QMENU的最好的地方就是你的发行版的软件仓库。
如果你在学校或者单位使用 Microsoft Windows,却又想运行Linux,可以看一看Bagvapp 的为Windows宿主优化过的Linux发行版。这个站点列出了很多的基于大大小小的Linux发行版的应用,这些发行版有 Fedora、Ubuntu、Debian、Slackware、openSUSE、Mandriva、CentOS、Pardus、Vector Linux 和 Xubuntu。所有的 Bagvapp 应用都是免费的,但是只能在 VMware Player 中运行。
如果你是用的是 Mac,Parallels 有大量的应用可供选择,这些应用包含不同的Linux发行版,开发套装,服务器和通信软件。不过 Parallels 是专有和商业的,有Linux下的Workstation的试用版可供下载。
正如你所看到的,对于给虚拟产品来说,除了基于VMWare的,并没有其他太多的基于特定应用的虚拟应用。不过有很多应用提供商提供能在不同虚拟软件上运行的应用。其中一个是 Virtual Appliances,具有4个高效率的 stack,用来部署流行的部署环境,包括 Tomcat、Linux-Apache-MySQL-PHP、Linux-Apache-PostegreSQL-PHP 和 Cacti,以此来创建软件。这些 stack 基于Ubuntu 的 JeOS (Just enough Operating System) 创建,有 VMware、Xen、Virtual Iron和 Microsoft's Virtual PC 的版本。
还有就是Jumpbox,也很流行,实际上被看做部署开源的内容管理系统的最好的方式。在它的Web站点上有着几乎所有类型的开源软件的应用,例如 WordPress、Joomla!、Bugzilla、Mantis、Drupal、Alfresco、SugarCRM、OTRS、Redmine 等等。最棒的地方是同一个应用可以运行在不同的虚拟平台上。有针对 VMWare、Parallels、Microsoft Virtual PC/Server、Virtual Iron 和 Xen 的版本可供免费下载。
应用的转换
假设你已经针对你喜好的虚拟软件下载了上面列出的某一个虚拟应用,并且要用它建立和测试网络或者部署网络服务。如果你又要用另一种虚拟软件,又该怎样呢?你可能会找到,不过也许找不到对应新的虚拟软件的应用版本,那么你针对这个应用所做的配置和定制又该如何呢?
迁移应用是件麻烦事。实际上,除了VMWare,没有其他虚拟软件发布了简单易用的工具来帮助你将一个虚拟平台上创建或者部署的应用迁移到另一个平台上。VMware Converter 是一个免费的工具,可以帮助你将一个基于Windows的物理机转换成一个虚拟机,也可以迁移其它第三方软件创建的完整的虚拟机,例如 Microsoft Virtual Server、Microsoft Virtual PC、Symantec Backup Exec System Recovery、Norton Ghost 10 和 Norton Save & Restore。
虽然没有官方的转换工具,使用一些命令行的技巧和QMENU,我们也可以把 VMware和 QEMU 应用转换成 VirtualBox的应用, 转换VMware应用到Xen, 以及转换VMware 应用到Parallels。
一旦你转换了若干应用之后,你会发现这个过程充满痛苦而且没有保障。不过情况会慢慢变好。由Dell、Hewlett-Packard、IBM、Microsoft、VMware 和 XenSource共同创办的组织Distributed Management Task Force (DMTF)正在努力发布最终版本的 开放虚拟机格式(Open Virtual Machine Format)。好处之一就是,创建在OVF里面的应用可以运行在任何支持OVF的虚拟软件中。 VMware已经实现了一个工具用来转换由OVF创建的应用。不过我还没看到有OVF格式的应用可供下载,除了VMWare的工具之外,我也暂时没看到其他虚拟软件商发布可以将已有的应用与OVF互相转换的工具。
总结
一旦你打算运行虚拟应用,你会发现几乎所有开源应用程序都有虚拟应用,并且有不同的Linux或者*BSD发行版可供选择。应用的范围和数量取决于你选择的虚拟软件。VMWare是目前最流行的,不过 VirtualBox 和 Xen紧跟其后。 QEMU 看上去排在第四,主要在一些开发人员中流行,看上的是它的处理器仿真的特性。
有大量的虚拟软件无关的源码,也有可以运行在不同虚拟软件平台上的应用,它们要么是单独为每个虚拟软件平台发布,要么是多合一的可以跨平台运行的应用。
将虚拟应用从一个平台转换到另一个平台仍然是一个灰色的地带,虽然一些虚拟软件商正在最后完成一个开放格式,那有助于创建提供商无关的应用。不过在此之前,你还是不得不在Internet上慢慢寻找适合你的虚拟软件的应用。Happy hunting!