虚拟化技术的游戏规则
虽然这两个厂商在技术细节上有所不同,但都为我们提供了相当真实的产品。如前所述,虚拟机技术从上世纪 70 年代就出现了。它在实现完全的操作独立和提供有效的虚拟集合方面取得了成功,这使得在一个真正的系统上运行多个虚拟机成为可能。而这又引出了一个问题,为什么 Intel 平台迈向虚拟化耗费了这么长时间。为了获得这个答案,我们必须回顾市场,并了解一下 IA32 技术。
IA32/X86 — 虚拟化进程上的绊脚石
对于市场来说,答案很简单。很多出售 Intel 架构系统的供应商都有不错的业绩,而这些供应商的大部分利润都是通过不断向计算能力已经过剩的市场销售更多的电脑而获得的。事实上直到最近,这个问题一直很少被人提起。另外,虽然自从上世纪 60 年代末,虚拟化技术就是大型机的一个关键技术,但 IA32 架构从来都不是为虚拟化而设计的,与之有关的研究也不多,因此才会使得后来的 Vmware 在虚拟化技术的研究上获得了大量专利。
虚拟化层的魔术
直接的实现处理器虚拟化。一般来说,操作系统和驱动软件享有最高优先级,而应用程序(在虚拟世界中,操作系统也被看作是一个应用程序)使用较低的优先级。简单来说,虚拟机的原理就是通过在无优先级模式下运行 VM 代码,并让 VM 代码控制硬件(或部分特殊软件)的中断并捕获应用程序及 VM 的全部操作,然后通过虚拟机管理器( VMM ,一个运行在硬件层之上的很薄的层)来模拟这个指令。这就是 IBM 的虚拟机或 Vmware 的 ESX 所依据的原理,它可以模拟全部硬件资源。由于 VMM 的输出接口与系统硬件的接口是一致的,因此像 Windows 或 Linux 之类的操作系统不会察觉到硬件层之上的 VMM 层。这个 40 年前的理论指出了一个简单的事实,那就是大部分处理器都会忠实的生成异常(也就是处理器不会处理没有优先级的任务,如虚拟机 );而 VMM 层模拟了这些异常并继续控制着系统硬件。不幸的是, IA32/X86 处理器架构并不支持这个简单的规则。
实际上, 17 个 IA32/x86 优先级指令不提供这种功能。另外,在 IA32/x86 系统中,相同的机器操作码对于不同的 IA32/x86 “保护环”(或优先等级)也有不同的意义。因此, IA32/x86 架构的系统只能实现“部分”虚拟化。实际上, VMware 和 Connectix 都花费大量精力开发框架和方法用以弥补这个不足,由此便产生了虚拟机管理( VMM )层。
数以万计的 PC 设备制造商和各种驱动器都在增加 Intel 系统虚拟化的复杂程度。毫无疑问,除了一些小问题(如性能和扩展 SMP 的支持等),两个厂商都解决了这一难题。而且随着每个新版本的发布,虚拟机解决方案都变得越来越健壮。虽然我们都相信基于 x86 系统的虚拟机会不断提升基本效率,但要达到大型机的效率,还需要三到五年的时间。在很多情况下,大型机架构由于更适于进行虚拟化,因此其效率一般都在 90% 以上(除了 2%-3% 的虚拟化损耗)。而 x86 架构上的虚拟化性能最初大约有 40% 的虚拟化损耗,随着技术的发展,目前的损耗大约为 20% ,而在三年内,这个损耗就会降低到 10% 以下。
虚拟化之战
平台虚拟化对实现按需计算和适应企业的要求来说是一个关键能力。当然,倘若所有的资源是充足的,数据处理团队只需提供机器而不用购买它们。在多数情况下,一个VMM供应商,如Vmware,会为一整类的服务器提供参考平台环境,使领导者大体上了解虚拟化和计算体系的实现方式以及购买原因。无疑,虚拟化是一个非常强的特性。考虑到这种情况,Intel最近宣布了它的Vanderpool计划,其目标是提供它自己的虚拟化平台甚至是与 Vmware 的 EX 产品类似的虚拟机监视器。这样,虚拟机市场上就有 Microsoft、Intel和VMware 三大玩家,而其他公司也在蓄势待发。
众所周知,IA32/x86虚拟化要求很高的技术和努力,而IA64,也要求付出同样的或更大的努力,因为它的体系非常难以虚拟化,或者很难有效地虚拟化。了解了如此情形,再加上Intel表示五年后才能交付产品,消费者们将会继续评估现有的各个公司的虚拟化产品,而不会干等着Intel的成果出来。对大多数企业来说,目前的提供商如VMware,所提供的解决方案已经可以为企业带来巨大的运作收益了,尽管其产品大多仍然处于半成品模式。此外,在12到18个月里,Intel超过20%的高端市场将对产品应用实现开发虚拟化。由于虚拟化层是硬件层之上的一个很薄的层,用户们可以尝试不同公司的解决方案。虽然其效果可能不会完全透明,但起码对资源的需求不会高到令人无法容忍。
商业影响:基础架构虚拟化能带来巨大的运作收益,例如改进对市场响应速度、增加机构弹性,以及降低运作成本。
总结:基础架构虚拟化能提供巨大的操作灵活性。要成功,运作团队必须有丰富的操作经验,以保证对日益复杂的计算体系提供适当的管理。