自从微软宣布将在Windows 8中集成Hyper-V客户端虚拟化hypervisor,围绕实际案例和将对桌面虚拟化软件格局影响的猜测就不绝于耳。
可以确定的一点是微软将停止Windows Virtual PC,由于它的功能多数已经被其它产品替代,影响并不大。而另一点可能更为深远的影响在于,是否Windows 8的Hyper-V将可以取代所有第三方工作站虚拟化软件。作为Oracle VirtualBox的用户,我对这个跟VMware Workstation类的软件从本质上有所冲突的产品特别关注。
由于Windows 8和Hyper-V 终端都还处于开发阶段,很难准确预测它们最终的产品形态和工作方式。不过关于Windows 8自带的Hyper-V 客户端如何同VirtualBox等工作站虚拟化方案进行竞争方面还是有一些可比较的线索。
硬件需求
首先可比较的是Hyper-V和VirtuaBox的硬件需求。前者需要64位操作系统而且支持二级地址转换(SLAT Second Level Address Translation),英特尔称之为SLAT EPT(Extended Page Table),而AMD叫做快速虚拟化索引(RVI Rapid Virtualization Indexing)。它们的基本功能都一样——让处理器可以在内存中更高效地把虚拟地址映射到物理地址。不巧的是,现在使用的多数硬件都不支持SLAT。我现在的办公室有4台机器,都是2007年后生产的,只有1台支持SLAT,还恰好不是我现在正是使用的这台。
Hyper-V内核无法在不支持SLAT的系统上安装
VirtualBox不需要SLAT,或任何其它的基于Intel或AMD芯片的硬件级虚拟化功能(Intel VT-x和AMD-V)。如果系统提供这些硬件虚拟化功能,软件也可以支持;反之,也不会成为障碍,仅仅速度慢一点。这种灵活性使得VirtualBox的使用范围更广。
换句话说,VirtualBox虚拟化需要的两个硬件条件是:支持64位OS和对称的多核处理器。几乎现在出厂的所有PC都支持硬件虚拟化,所以这两点需求对多数用户不会形成障碍(而是否能特别支持SLAT则是另外一回事了)。
关于内存的需求,Windows 8要少于Windows 7,所以您所需要的内存数量完全取决于对虚拟化后的性能期望。Hyper-V允许用户在虚拟机运行期间分配和释放内存,而未使用的内存可以在Hyper-V 虚拟机之间共享来提高效率。
VirtualBox提供了两个相似的功能:内存膨胀和页面共享(memory ballooning and page fusion)。前者可以让用户在不停机的前提下,改变虚拟机可用内存数量。当希望在虚拟机运行时对其中2、3台虚拟机重新分配内存时是很方便的。页面共享指的是运行同种OS的虚拟机可以共享部分内存交换区。注意这两项都是需要手动开启的,默认对虚拟机关闭。
Windows 8 Hyper-V客户端优缺点
Windows 8 Hyper-V和VirtualBox这样的第三方工作站虚拟化软件的关键区别之一在于,它是属于Windows系统的组件之一。这项优点是把宿主机和客机紧密地结合在一起。
例如,可以把.VHD文件直接映射给Windows 8,并在Hyper-V客户端中进行加载,类似于Internet Explorer Application Compatibility VPC Images的功能,可以在Windows实例中独立运行早期的IE版本一样。
VirtualBox平台的中立属性也代表了它不能达到Hyper-V和Windows 8的集成紧密程度。通过集成工具VirtualBox可以改善宿主机和客机的交互能力,但是把某个单独的应用从客机输出到宿主机Windows系统还需要对客机的Windows附件进行修改。例如,把Windows虚拟应用输出到Mac桌面这样的跨平台应用输出虽然理论上是可行的,但工作量不小。
Windows 8可能会包含一个向导程序来完成该功能(最终情况还不清楚)。假设这样,您可以双击.VHD文件实现在Windows中的启动。IT达人通过使用Hyper-V就可以无缝地把应用输出到宿主机操作系统。例如在最新版本的Windows中运行已经淘汰的IE版本(通过虚拟化技术运行老版本的IE在现在的微软授权规则下是不允许的。)
Windows 8的Hyper-V客户端具备一些优势的同时还需要不断地完善来发挥出最大的潜力。
相比而言,VirtualBox这样的工作站虚拟化产品要更直白一些——它是一个拥有友好界面的独立开发的应用。它跟Windows的任何特殊组件都没有关联,也可以运行于Windows、Linux、Mac OS X或任意OS上。
只有等到带有Hyper-V的Windows 8发布,人们才能知道是否它可以取代VirtualBox这类的虚拟化产品。短期内看是不太可能的,Hyper-V需要借助于处理器附加功能,而VirtualBox不需要,而且它更成熟,用户界面更为友好。