在目前的x86 服务器上,虚拟化技术已经成为或者即将成为潮流。但从整个IT 业界的发展来看,虚拟化技术的历史远远超过了x86 虚拟化技术的9 年。早在上世纪60 年代,美国的计算机学术界就开始了虚拟技术的萌芽。1959年6月在国际信息处理大会上,克里斯托弗的一篇《计算机分时应用》的论文,被认为是虚拟化技术的最早论述。
今天,虚拟化技术已经出现在了很多首席信息官(CIO)的预定任务中。在一次第三方调查当中,75% 的CIO 都同意虚拟化技术是目前的一项投资重点,因为他们已经开始注重减少他们的服务器的数量以减少能源使用、降低成本。甚至于,虚拟化技术目前正在走向主流技术市场并且已经逐步成为数据中心环境的标准组成部分。
为什么需要虚拟化
实际上,虚拟化技术的初衷就是为了实现更高的设备利用率,使用户能够尽可能地利用系统资源。也就是说,如果你能够在单个服务器上虚拟多个系统,就能够以少数几台计算机完成所有工作,这显然能够节省耗电、空间、冷却和管理开支。考虑到确定服务器利用状况的困难,虚拟化技术需要支持动态迁移(Live Migration)。动态迁移允许操作系统能够迁移到另一台全新的服务器上,从而减少当前主机的负载。
有这样一句话,叫做“更多虚拟,更少管理(Virtualize more, manage less)”。IBM 将虚拟定义为不受物理限制的资源逻辑表达。更简单地说,IBM 将虚拟诠释为可以将一个物理设备作为很多虚拟资源(分区)来使用,或者令多个异构资源的行为看起来就如同是一个大的资产(**)。
正是由于虚拟化技术能够降低TCO(总拥有成本),提高资源的利用率和应用上的灵活性,虚拟化技术后来也在UNIX 服务器、小型机上得到了应用。可以说,经过多年的发展,虚拟化技术在高端产品上的应用日臻成熟。不过,由于真正使用大型机和小型机的用户毕竟还是少数,加上各家产品和技术之间并不兼容,致使虚拟化曲高和寡。
服务器虚拟化溯源
尽管目前的虚拟化技术热潮是由于该技术在x86 服务器上的迅速普及引发的,但虚拟化技术的最初来源却不在x86 架构上,而是大型主机。最早使用虚拟化技术的是IBM 7044 计算机,IBM 之后在上世纪60 年代还开发了型号为Model 67 的System/360 主机。Model 67 主机通过虚拟机监视器(Virtual Machine Monitor)虚拟所有的硬件接口。在早期的计算中,操作系统被称做Supervisor,能够运行在其它操作系统之上的操作系统被称做 hypervisor。其中,VMM 直接运行在底层硬件上,允许执行多个虚拟机(VM),每一个VM 运行自己的操作系统实例(CMS,Conversational Monitor System)。随后,VM 继续发展。今天,你能够在System z9 主机上发现 VM, 它甚至能够向后兼容到System/360。
由于虚拟化技术技术在商业应用上的优势,RISC 服务器与小型机成为了虚拟化技术第二波受益者。1999年,IBM 公司在AS/400 上提出了上“逻辑分区(LPAR)”技术和新的高可用性集群解决方案。在POWER 管理程序上运行的AS/400 LPAR 令单台服务器工作起来如同12 个独立的服务器。而在2002 年,IBM 还更进一步,其AIX5L v5.2 还首次包括了IBM 实现的动态逻辑分区(DLPAR)。DLPAR 允许在无需重启系统的情况下,将包括处理器、内存和其它组件在内的系统资源分配给独立的分区。这种在不中断运行的情况下进行资源分配的能力不仅令系统管理变得更加轻松,而且因为能够更好地使用资源而帮助降低总拥有成本。
不过,尽管惠普、Sun 公司也跟随IBM 在自己的RISC 服务器上提供了虚拟化技术,但由于真正使用大型机和小型机的用户还是少数,加上各家产品和技术之间并不兼容,虚拟化技术仍旧不太被公众所关注。目前,主要的UNIX 厂商均支持64 路SMP 的虚拟。并且普遍能实现1/X 量级CPU 的微调,例如 IBM 宣称可以实现1/100 CPU 量级的调整,惠普则可以实现1/20 量级的调整。在应用上,UNIX 上的虚拟化也非常成熟,IBM 的客户订购的System i5 595 中有82% 具备逻辑分区功能,IBM 客户管理的分区总数超过45000 个。在中国,甚至有用户在一台System p 系列服务器上运行了9 个逻辑分区。
而现在,虚拟化技术的发展已经惠及到了x86 架构。此前,虚拟化技术在x86 架构上进展缓慢的主要原因有二:x86 架构本身不适合进行虚拟化,这个障碍已经由英特尔、AMD 修改x86 处理器的指令集得到解决;另一个原因则是x86 处理器的性能不足,也由于x86 处理器在性能上的飞速提高得到了解决。由于x86 架构的广泛普及,x86 架构上的虚拟化技术也得到了比以前多得多的关注。
不过,与已经有多年历史的UNIX 服务器、大型主机上的虚拟化技术相比,x86 服务器上的虚拟化仍旧处于早期阶段——根据英特尔的蓝图,在处理器当中集成硬件辅助虚拟化指令只是IA 平台上的第一步,而在第二步则要实现I/O 方面的虚拟化,直到最后实现整个IA 平台的虚拟化。也就是说,目起的x86 平台上,目前仅仅能够实现在处理器级别的虚拟化,在I/O 以及其他方面的虚拟化还需要进一步的发展。不仅如此,x86 架构上的虚拟化技术还无法完美实现虚拟分区之间动态迁移,而这些在 UNIX 平台、大型主机上早已不是问题。IBM 公司最近发布的POWER6 处理器甚至还提供了Live Partition Mobility 功能,允许实现活动分区的在线迁移。目前,x86 架构上的虚拟化技术的最高规划是支持8路SMP 系统,可以实现对单个CPU 资源的配置。
(责任编辑:)