虚拟化是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化使用软件的方法重新定义划分 IT 资源,可以实现 IT 资源的动态分配、灵活调度、跨域共享,提高 IT 资源利用率,使 IT 资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。
作用
虚拟化是一个广义的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管理,优化资源的解决方案。如同空旷、通透的写字楼,整个楼层没有固定的墙壁,用户可以用同样的成本构建出更加自主适用的办公空间,进而节省成本,发挥空间最大利用率。这种把有限的固定的资源根据不同需求进行重新规划以达到最大利用率的思路,在 IT 领域就叫做虚拟化技术。
虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU 的虚拟化技术可以单 CPU 模拟多 CPU 并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的 CPU 或者是虚拟主机上;而超线程技术只是单 CPU 模拟双 CPU 来平衡程序运行性能,这两个模拟出来的 CPU 是不能分离的,只能协同工作。
虚拟化技术也与 VMware Workstation 等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件虚拟机相关开销和支持更广泛的操作系统方面。
虚拟化技术有很多定义,下面就给出了一些这样的定义。
“虚拟化是以某种用户和应用程序都可以很容易从中获益的方式来表示计算机资源的过程,而不是根据这些资源的实现、地理位置或物理包装的专有方式来表示它们。换句话说,它为数据、计算能力、存储资源以及其他资源提供了一个逻辑视图,而不是物理视图。” —— Jonathan Eunice, Illuminata Inc。
“虚拟化是表示计算机资源的逻辑组(或子集)的过程,这样就可以用从原始配置中获益的方式访问它们。这种资源的新虚拟视图并不受实现、地理位置或底层资源的物理配置的限制。” —— Wikipedia
“虚拟化:对一组类似资源提供一个通用的抽象接口集,从而隐藏属性和操作之间的差异,并允许通过一种通用的方式来查看并维护资源。” —— Open Grid Services Architecture Glossary of Terms。
目的
虚拟化的主要目的是对 IT 基础设施进行简化。它可以简化对资源以及对资源管理的访问。
消费者可以是一名最终用户、应用程序、访问资源或与资源进行交互的服务。资源是一个提供一定功能的实现,它可以基于标准的接口接受输入和提供输出。资源可以是硬件,例如服务器、磁盘、网络、仪器;也可以是软件,例如 Web 服务。
虚拟化支持的操作系统有:Windows 和 Linux 各种系统。
消费者通过受虚拟资源支持的标准接口对资源进行访问。使用标准接口,可以在 IT 基础设施发生变化时将对消费者的破坏降到最低。例如,最终用户可以重用这些技巧,因为他们与虚拟资源进行交互的方式并没有发生变化,即使底层物理资源或实现已经发生了变化,他们也不会受到影响。另外,应用程序也不需要进行升级或应用补丁,因为标准接口并没有发生变化。
IT 基础设施的总体管理也可以得到简化,因为虚拟化降低了消费者与资源之间的耦合程度。因此,消费者并不依赖于资源的特定实现。利用这种松耦合关系,管理员可以在保证管理工作对消费者产生最少影响的基础上实现对 IT 基础设施的管理。管理操作可以手工完成,也可以半自动地完成,或者通过服务级协定(SLA)驱动来自动完成。
在这个基础上,网格计算可以广泛地利用虚拟化技术。网格计算可以对 IT 基础设施进行虚拟化。它处理 IT 基础设施的共享和管理,动态提供符合用户和应用程序需求的资源,同时还将提供对基础设施的简化访问。
软件简介
似乎与所有颠覆性技术一样,服务器虚拟化技术先是悄然出现,然后突然迸发,最终因为节省能源的合并计划而得到了认可。如今,许多公司使用虚拟技术来提高硬件资源的利用率,进行灾难恢复、提高办公自动化水平。本组文章分别从服务器、存储、应用程序和桌面虚拟化技术三个角度介绍了如何消除物理硬件的限制。
有了虚拟化技术,用户可以动态启用虚拟服务器(又叫虚拟机),每个服务器实际上可以让操作系统(以及在上面运行的任何应用程序)误以为虚拟机就是实际硬件。运行多个虚拟机还可以充分发挥物理服务器的计算潜能,迅速应对数据中心不断变化的需求。
虚拟化概念并不是新概念。早在 20 世纪 70 年代,大型计算机就一直在同时运行多个操作系统实例,每个实例也彼此独立。不过直到当今,软硬件方面的进步才使得虚拟化技术有可能出现在基于行业标准的大众化 x86 服务器上。
实际上,如今数据中心管理人员面临的虚拟化解决方案种类繁多,有些是专有方案,而有些是开源方案。总的来说,各自都基于以下三种基本技术当中的一种,但哪种技术效果最好,这取决于要进行虚拟化处理的具体工作负荷以及优先业务目标。
维护
对于任何虚拟化环境来说,一个非常重要的方面是减少动态的和复杂的 IT 基础设施的管理和维护需求。另外,通过软件和工具实现的模式和技术都支持这些管理任务。这些模式和技术的组合可以实现以下功能:
为 IT 基础设施中所有资源的管理访问提供单一且安全的接口,允许管理员对所有资源进行诊断 ,对所有资源进行配置和修改管理 ,发现并维护可用资源目录, 监视资源并记录它们平时的健康状况, 当某个条件达到已建立的上限值时,触发器就会执行相应操作;此时执行的操作可能包括通知管理员手工作出响应,也可能会根据正确的条件自动进行响应 根据资源的使用情况、可用性和服务级别要求提供资源或收回资源;资源的提供可以手工、半自动或根据建立好的策略自动完成 获得并维护资源的使用和检测信息,并提供适当的报告,例如对资源消耗进行记录 提供补充最终用户或应用程序安全性的安全机制 ,为满足最终用户和应用程序 SLA 而记录所有资源的性能信息
模式简介
虚拟化可以通过很多方法来证实。它不是一个单独的实体,而是一组模式和技术的集合,这些技术提供了支持资源的逻辑表示所需的功能,以及通过标准接口将其呈现给这些资源的消费者所需的功能。这些模式本身都是前面介绍过的各种不同虚拟形式的重复出现。
下面是在实现虚拟化时常常使用的一些模式和技术:
单一资源多个逻辑表示
这种模式是虚拟化最广泛使用的模式之一。它只包含一个物理资源,但是它向消费者呈现的逻辑表示却仿佛它包含多个资源一样。消费者与这个虚拟资源进行交互时就仿佛自己是唯一的消费者一样,而不会考虑他正在与其他消费者一起共享资源。
多个资源单一逻辑表示
这种模式包含了多个组合资源,以便将这些资源表示为提供单一接口的单个逻辑表示形式。在利用多个功能不太强大的资源来创建功能强大且丰富的虚拟资源时,这是一种非常有用的模式。存储虚拟化就是这种模式的一个例子。在服务器方面,集群技术可以提供这样的幻想:消费者只与一个系统(头节点)进行交互,而集群事实上可以包含很多的处理器或节点。实际上,这就是从 IT 技术设施的角度看到的网格可以实现的功能。
在多个资源之间提供单一逻辑表示
这种模式包括一个以多个可用资源之一的形式表示的虚拟资源。虚拟资源会根据指定的条件来选择一个物理资源实现,例如资源的利用、响应时间或临近程度。尽管这种模式与上一种模式非常类似,但是它们之间有一些细微的差别。首先,每个物理资源都是一个完整的副本,它们不会在逻辑表示层上聚集在一起。其次,每个物理资源都可以提供逻辑表示所需要的所有功能,而不是像前一种模式那样只能提供部分功能。这种模式的一个常见例子是使用应用程序容器来均衡任务负载。在将请求或事务提交给应用程序或服务时,消费者并不关心到底是几个容器中执行的哪一个应用程序的副本为请求或事务提供服务。消费者只是希望请求或事务得到处理。
单个资源单一逻辑表示
这是用来表示单个资源的一种简单模式,就仿佛它是别的什么资源一样。启用 Web 的企业后台应用程序就是一个常见的例子。在这种情况下,我们不是修改后台的应用程序,而是创建一个前端来表示 Web 界面,它会映射到应用程序接口中。这种模式允许通过对后台应用程序进行最少的修改(或根本不加任何修改)来重用一些基本的功能。也可以根据无法修改的组件,使用相同的模式构建服务。
复合或分层虚拟
这种模式是刚才介绍的一种或多种模式的组合,它使用物理资源来提供丰富的功能集。信息虚拟化是这种模式一个很好的例子。它提供了底层所需要的功能,这些功能用于管理对资源、包含有关如何处理和使用信息的元数据以及对信息进行处理的操作的全局命名和引用。例如 Open Grid Services Architecture(OGSA)或者 Grid Computing Components,实际上都是虚拟化的组合或虚拟化的不同层次。
解决方案
软件方案
纯软件虚拟化解决方案存在很多限制。“客户”操作系统很多情况下是通过虚拟机监视器(Virtual Machine Monitor,VMM)来与硬件进行通信,由 VMM 来决定其对系统上所有虚拟机的访问。(注意,大多数处理器和内存访问独立于 VMM,只在发生特定事件时才会涉及 VMM,如页面错误。)在纯软件虚拟化解决方案中,VMM 在软件套件中的位置是传统意义上操作系统所处的位置,而操作系统的位置是传统意义上应用程序所处的位置。这一额外的通信层需要进行二进制转换,以通过提供到物理资源(如处理器、内存、存储、显卡和网卡等)的接口,模拟硬件环境。这种转换必然会增加系统的复杂性。此外,客户操作系统的支持受到虚拟机环境的能力限制,这会阻碍特定技术的部署,如 64 位客户操作系统。在纯软件解决方案中,软件堆栈增加的复杂性意味着,这些环境难于管理,因而会加大确保系统可靠性和安全性的困难。
硬件方案
而 CPU 的虚拟化技术是一种硬件方案,支持虚拟技术的 CPU 带有特别优化过的指令集来控制虚拟过程,通过这些指令集,VMM 会很容易提高性能,相比软件的虚拟实现方式会很大程度上提高性能。虚拟化技术可提供基于芯片的功能,借助兼容 VMM 软件能够改进纯软件解决方案。由于虚拟化硬件可提供全新的架构,支持操作系统直接在上面运行,从而无需进行二进制转换,减少了相关的性能开销,极大简化了 VMM 设计,进而使 VMM 能够按通用标准进行编写,性能更加强大。另外,在纯软件 VMM 中,缺少对 64 位客户操作系统的支持,而随着 64 位处理器的不断普及,这一严重缺点也日益突出。而 CPU 的虚拟化技术除支持广泛的传统操作系统之外,还支持 64 位客户操作系统。
虚拟化技术是一套解决方案。完整的情况需要 CPU、主板芯片组、BIOS 和软件的支持,例如 VMM 软件或者某些操作系统本身。即使只是 CPU 支持虚拟化技术,在配合 VMM 的软件情况下,也会比完全不支持虚拟化技术的系统有更好的性能。
两大 CPU 巨头 Intel 和 AMD 都想方设法在虚拟化领域中占得先机,但是 AMD 的虚拟化技术在时间上要比 Intel 落后几个月。Intel 自 2005 年末开始便在其处理器产品线中推广应用 Intel Virtualization Technology(Intel VT)虚拟化技术。Intel 已经发布了具有 Intel VT 虚拟化技术的一系列处理器产品,包括桌面平台的 Pentium 4 6X2 系列、Pentium D 9X0 系列和 Pentium EE 9XX 系列,还有 Core Duo 系列和 Core Solo 系列中的部分产品,以及服务器/工作站平台上的 Xeon LV 系列、Xeon 5000 系列、Xeon 5100 系列、Xeon MP 7000 系列以及 Itanium 2 9000 系列;同时绝大多数的 Intel 下一代主流处理器,包括 Merom 核心移动处理器,Conroe 核心桌面处理器,Woodcrest 核心服务器处理器,以及基于 Montecito 核心的 Itanium 2 高端服务器处理器都将支持 Intel VT 虚拟化技术。
而 AMD 方面也已经发布了支持 AMD Virtualization Technology(AMD VT)虚拟化技术的一系列处理器产品,包括 Socket S1 接口的 Turion 64 X2 系列以及 Socket AM2 接口的 Athlon 64 X2 系列和 Athlon 64 FX 系列等等,并且绝大多数的 AMD 下一代主流处理器,包括即将发布的 Socket F 接口的 Opteron 都将支持 AMDVT 虚拟化技术。