一、概念
虚拟化
虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化技术
虚拟化是一个广义的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管理,优化资源的解决方案。如同空旷、通透的写字楼,整个楼层几乎看不到墙壁,用户可以用同样的成本构建出更加自主适用的办公空间,进而节省成本,发挥空间最大利用率。这种把有限的固定的资源根据不同需求进行重新规划以达到最大利用率的思路,在IT领域就叫做虚拟化技术。
虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。
虚拟化技术也与VMware Workstation等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件虚拟机相关开销和支持更广泛的操作系统方面。
虚拟化技术有很多定义,下面就给出了一些这样的定义。
“虚拟化是以某种用户和应用程序都可以很容易从中获益的方式来表示计算机资源的过程,而不是根据这些资源的实现、地理位置或物理包装的专有方式来表示它们。换句话说,它为数据、计算能力、存储资源以及其他资源提供了一个逻辑视图,而不是物理视图—— Jonathan Eunice, Illuminata Inc。
“虚拟化是表示计算机资源的逻辑组(或子集)的过程,这样就可以用从原始配置中获益的方式访问它们。这种资源的新虚拟视图并不受实现、地理位置或底层资源的物理配置的限制。”—— Wikipedia
“虚拟化:对一组类似资源提供一个通用的抽象接口集,从而隐藏属性和操作之间的差异,并允许通过一种通用的方式来查看并维护资源。—— Open Grid Services ArchitectureGlossary of Terms。
二、目的
虚拟化的主要目的是对IT基础设施进行简化。它可以简化对资源以及对资源管理的访问。
消费者可以是一名最终用户、应用程序、访问资源或与资源进行交互的服务。资源是一个提供一定功能的实现,它可以基于标准的接口接受输入和提供输出。资源可以是硬件,例如服务器、磁盘、网络、仪器;也可以是软件,例如Web 服务。
虚拟化支持的操作系统有:Windows和Linux各种系统。
消费者通过受虚拟资源支持的标准接口对资源进行访问。使用标准接口,可以在IT基础设施发生变化时将对消费者的破坏降到最低。例如,最终用户可以重用这些技巧,因为他们与虚拟资源进行交互的方式并没有发生变化,即使底层物理资源或实现已经发生了变化,他们也不会受到影响。另外,应用程序也不需要进行升级或应用补丁,因为标准接口并没有发生变化。
IT 基础设施的总体管理也可以得到简化,因为虚拟化降低了消费者与资源之间的耦合程度。因此,消费者并不依赖于资源的特定实现。利用这种松耦合关系,管理员可以在保证管理工作对消费者产生最少影响的基础上实现对 IT 基础设施的管理。管理操作可以手工完成,也可以半自动地完成,或者通过服务级协定(SLA)驱动来自动完成。
在这个基础上,网格计算可以广泛地利用虚拟化技术。网格计算可以对 IT 基础设施进行虚拟化。它处理 IT 基础设施的共享和管理,动态提供符合用户和应用程序需求的资源,同时还将提供对基础设施的简化访问。
三、软件简介
似乎与所有颠覆性技术一样,服务器虚拟化技术先是悄然出现,然后突然迸发,最终因为节省能源的合并计划而得到了认可。如今,许多公司使用虚拟技术来提高硬件资源的利用率,进行灾难恢复、提高办公自动化水平。本组文章分别从服务器、存储、应用程序和桌面虚拟化技术三个角度介绍了如何消除物理硬件的限制。
有了虚拟化技术,用户可以动态启用虚拟服务器(又叫虚拟机),每个服务器实际上可以让操作系统(以及在上面运行的任何应用程序)误以为虚拟机就是实际硬件。运行多个虚拟机还可以充分发挥物理服务器的计算潜能,迅速应对数据中心不断变化的需求。
虚拟化概念并不是新概念。早在20世纪70年代,大型计算机就一直在同时运行多个操作系统实例,每个实例也彼此独立。不过直到当今,软硬件方面的进步才使得虚拟化技术有可能出现在基于行业标准的大众化x86服务器上。
实际上,如今数据中心管理人员面临的虚拟化解决方案种类繁多,有些是专有方案,而有些是开源方案。总的来说,各自都基于以下三种基本技术当中的一种,但哪种技术效果最好,这取决于要进行虚拟化处理的具体工作负荷以及优先业务目标。
完全虚拟
最流行的虚拟化方法使用名为hypervisor的一种软件,在虚拟服务器和底层硬件之间建立一个抽象层。VMware和微软的VirtualPC是代表该方法的两个商用产品,而基于核心的虚拟机(KVM)是面向Linux系统的开源产品。
hypervisor可以捕获CPU指令,为指令访问硬件控制器和外设充当中介。因而,完全虚拟化技术几乎能让任何一款操作系统不用改动就能安装到虚拟服务器上,而它们不知道自己运行在虚拟化环境下。主要缺点是,hypervisor给处理器带来开销。
在完全虚拟化的环境下,hypervisor运行在裸硬件上,充当主机操作系统;而由hypervisor管理的虚拟服务器运行客户端操作系统(guest OS)。
IBM也有自已的虚拟化产品,Z/VM。
准虚拟
完全虚拟化是处理器密集型技术,因为它要求hypervisor管理各个虚拟服务器,并让它们彼此独立。减轻这种负担的一种方法就是,改动客户操作系统,让它以为自己运行在虚拟环境下,能够与hypervisor协同工作。这种方法就叫准虚拟化(para-virtualization)。
Xen是开源准虚拟化技术的一个例子。操作系统作为虚拟服务器在Xen hypervisor上运行之前,它必须在核心层面进行某些改变。因此,Xen适用于BSD、Linux、Solaris及其他开源操作系统,但不适合对像Windows这些专有的操作系统进行虚拟化处理,因为它们无法改动。
准虚拟化技术的优点是性能高。经过准虚拟化处理的服务器可与hypervisor协同工作,其响应能力几乎不亚于未经过虚拟化处理的服务器。准虚拟化与完全虚拟化相比优点明显,以至于微软和VMware都在开发这项技术,以完善各自的产品。
系统虚拟
实现虚拟化还有一个方法,那就是在操作系统层面增添虚拟服务器功能。SolarisContainer就是这方面的一个例子,Virtuozzo/OpenVZ是面向Linux的软件方案。
就操作系统层的虚拟化而言,没有独立的hypervisor层。相反,主机操作系统本身就负责在多个虚拟服务器之间分配硬件资源,并且让这些服务器彼此独立。一个明显的区别是,如果使用操作系统层虚拟化,所有虚拟服务器必须运行同一操作系统(不过每个实例有各自的应用程序和用户账户)。
虽然操作系统层虚拟化的灵活性比较差,但本机速度性能比较高。此外,由于架构在所有虚拟服务器上使用单一、标准的操作系统,管理起来比异构环境要容易。
桌面虚拟
服务器虚拟化主要针对服务器而言,而虚拟化最接近用户的还是要算的上桌面虚拟化了,桌面虚拟化主要功能是将分散的桌面环境集中保存并管理起来,包括桌面环境的集中下发,集中更新,集中管理。桌面虚拟化使得桌面管理变得简单,不用每台终端单独进行维护,每台终端进行更新。终端数据可以集中存储在中心机房里,安全性相对传统桌面应用要高很多。桌面虚拟化可以使得一个人拥有多个桌面环境,也可以把一个桌面环境供多人使用,节省了license。另外,桌面虚拟化依托于服务器虚拟化。没有服务器虚拟化,这个桌面虚拟化的优势将完全没有了。不仅如此,还浪费了许多管理资本。
硬件助力软件
不像大型机,PC的硬件在设计时并没有考虑到虚拟化,而就在不久前,它还是完全由软件来承担这项重任。随着AMD和英特尔推出了最新一代的x86处理器,头一回在CPU层面添加了支持虚拟化的功能。
遗憾的是,这两家公司的技术各自独立开发,这意味着它们的代码不相兼容。不过,硬件虚拟化支持功能让hypervisor从极其繁重的管理事务中脱离出来。这除了提高性能外,还有操作系统不用改动就能在准虚拟化环境下运行,包括Windows环境。
CPU层虚拟化技术不会自动发挥作用。为了专门支持它,必须开发虚拟化软件。不过,因为这种技术的优点非常诱人,预计各种类型的虚拟化软件会源源不断地开发出来。
四、厂商
随着虚拟化应用变得越来越热门,简单分析几大虚拟化厂商之间的优缺点
Citrix公司:Citrix公司是近两年增长非常快的一家公司,他得益于云计算的兴起,Citrix公司主要有三大产品,服务器虚拟化XenServer,优点是便宜,管理一般;应用虚拟化XennAPP,桌面虚拟化Xendesktop。后两者是目前为止最成熟的桌面虚拟化与应用虚拟化厂家。企业级VDI解决方案中不少都是使用Citrix公司的Xendesktop与Xenapp的结合使用。
IBM:在2007年11月的IBM虚拟科技大会上,IBM就提出了“新一代虚拟化”的概念。只是时之今日,成功的案例全并不多见,像陕西榆林地区的中国神华分公司的失败案例到是不少。不过笔者认为IBM虚拟化还是具备以下两点优势:第一,IBM丰富的产品线;对自有品牌良好的兼容性,第二,强大的研发实力,可以提供较全面的咨询方案,只是成本过高,不是每一个客户都这么富有的。加上其对第三方支持兼容较差,运维操作也比较复杂,对于企业来说是把双刃剑。并且IBM所谓的虚拟化只是服务器虚拟化,而非真正的虚拟化。
VMware:做为业内虚拟化领先的厂商VMware公司,一直以其易用性和管理性得到了大家的认同。只是受其架构的影响限制,VMware还主要是在X86平台服务器上有较大优势,而非真正的IT信息虚拟化。加上,其本身只是软件方案解决商,而非像IBM与微软这样拥用各自己阵地用户基础的厂商。所以当前,对于VMware公司来说将面临着多方面的挑战,这其中包括微软、XenSource(被Citrix购得)以及Parallels、IBM公司。所以,未来对于VMware公司来说这条道虚拟化之道能否继续顺风顺水下去还真不好说。
微软:2008年,随着微软Virtualization的正式推出,微软已经拥有了从桌面虚拟化、服务器虚拟化到应用虚拟化、展现层虚拟化的完备的产品线。至此,其全面出击的虚拟化战略已经完全浮出水面。因为,在微软眼中虚拟化绝非简单的加固服务器和降低数据中心的成本。他还意味着帮助更多的IT部门最大化ROI,并在整个企业范围内降低成本,同时强化业务持续性。这也是微软为什么研发了一系列的产品,用以支持整个物理和虚拟基础架构。
并且,近两年随着虚拟化技术的快速发展,虚拟化技术已经走出了局域网,从而延伸到了整个广域网。几大厂商的代理商业越来越重视客户对虚拟化解决方案需求的分析,因此也不局限于仅与一家厂商代理虚拟化产品。
五、评价
每种虚拟化方法都有各自的优点,选择哪个则取决于用户的具体情况。一组服务器基于同一操作系统,这非常适用于通过操作系统层实现合并。
准虚拟化技术集两者之所长,如果与支持虚拟化技术的处理器一起部署,优点更为明显。它不但提供了良好性能,还提供了可运行多种异构客户端操作系统的功能。
在三种方法中完全虚拟化性能受到的影响最大,但提供了这个优点:既能让客户端操作系统彼此完全隔离,还能让它们与主机操作系统完全隔离。它非常适用于软件质量保证及测试,另外还支持种类最广泛的客户端操作系统。
完全虚拟化解决方案提供了其他独特功能。譬如说,它们可以对虚拟服务器拍“快照(snapshot)”,保留状态、有助于灾难恢复。这种虚拟服务器映像可以用来迅速配置新的服务器实例。越来越多的软件公司甚至开始提供评测版产品,作为可下载、预包装的虚拟服务器映像。
就跟物理服务器一样,虚拟服务器需要不断得到支持和维护。越来越流行的服务器虚拟化已为第三方工具造就了兴旺的市场,无论是物理环境到虚拟环境的迁移实用程序,还是面向虚拟化技术的各大系统管理控制台,它们都旨在简化从传统IT环境迁移到高效、具有成本效益的虚拟环境的过程。
六、维护
对于任何虚拟化环境来说,一个非常重要的方面是减少动态的和复杂的 IT 基础设施的管理和维护需求。另外,通过软件和工具实现的模式和技术都支持这些管理任务。这些模式和技术的组合可以实现以下功能:
为 IT 基础设施中所有资源的管理访问提供单一且安全的接口,允许管理员对所有资源进行诊断,对所有资源进行配置和修改管理,发现并维护可用资源目录,监视资源并记录它们平时的健康状况,当某个条件达到已建立的上限值时,触发器就会执行相应操作;此时执行的操作可能包括通知管理员手工作出响应,也可能会根据正确的条件自动进行响应根据资源的使用情况、可用性和服务级别要求提供资源或收回资源;资源的提供可以手工、半自动或根据建立好的策略自动完成获得并维护资源的使用和检测信息,并提供适当的报告,例如对资源消耗进行记录提供补充最终用户或应用程序安全性的安全机制,为满足最终用户和应用程序 SLA 而记录所有资源的性能信息
七、模式简介
虚拟化可以通过很多方法来证实。它不是一个单独的实体,而是一组模式和技术的集合,这些技术提供了支持资源的逻辑表示所需的功能,以及通过标准接口将其呈现给这些资源的消费者所需的功能。这些模式本身都是前面介绍过的各种不同虚拟形式的重复出现。
下面是在实现虚拟化时常常使用的一些模式和技术:
单一资源多个逻辑表示
这种模式是虚拟化最广泛使用的模式之一。它只包含一个物理资源,但是它向消费者呈现的逻辑表示却仿佛它包含多个资源一样。消费者与这个虚拟资源进行交互时就仿佛自己是唯一的消费者一样,而不会考虑他正在与其他消费者一起共享资源。
多个资源单一逻辑表示
这种模式包含了多个组合资源,以便将这些资源表示为提供单一接口的单个逻辑表示形式。在利用多个功能不太强大的资源来创建功能强大且丰富的虚拟资源时,这是一种非常有用的模式。存储虚拟化就是这种模式的一个例子。在服务器方面,集群技术可以提供这样的幻想:消费者只与一个系统(头节点)进行交互,而集群事实上可以包含很多的处理器或节点。实际上,这就是从 IT 技术设施的角度看到的网格可以实现的功能。
在多个资源之间提供单一逻辑表示
这种模式包括一个以多个可用资源之一的形式表示的虚拟资源。虚拟资源会根据指定的条件来选择一个物理资源实现,例如资源的利用、响应时间或临近程度。尽管这种模式与上一种模式非常类似,但是它们之间有一些细微的差别。首先,每个物理资源都是一个完整的副本,它们不会在逻辑表示层上聚集在一起。其次,每个物理资源都可以提供逻辑表示所需要的所有功能,而不是像前一种模式那样只能提供部分功能。这种模式的一个常见例子是使用应用程序容器来均衡任务负载。在将请求或事务提交给应用程序或服务时,消费者并不关心到底是几个容器中执行的哪一个应用程序的副本为请求或事务提供服务。消费者只是希望请求或事务得到处理。
单个资源单一逻辑表示
这是用来表示单个资源的一种简单模式,就仿佛它是别的什么资源一样。启用Web 的企业后台应用程序就是一个常见的例子。在这种情况下,我们不是修改后台的应用程序,而是创建一个前端来表示 Web 界面,它会映射到应用程序接口中。这种模式允许通过对后台应用程序进行最少的修改(或根本不加任何修改)来重用一些基本的功能。也可以根据无法修改的组件,使用相同的模式构建服务。
复合或分层虚拟
这种模式是刚才介绍的一种或多种模式的组合,它使用物理资源来提供丰富的功能集。信息虚拟化是这种模式一个很好的例子。它提供了底层所需要的功能,这些功能用于管理对资源、包含有关如何处理和使用信息的元数据以及对信息进行处理的操作的全局命名和引用。例如 Open Grid Services Architecture(OGSA)或者 GridComputing Components,实际上都是虚拟化的组合或虚拟化的不同层次。
八、评估
1、使用习惯、感受:企业大量的分散的PC采用集中式运算结合虚拟化技术进行集中式的管理确实为我们企业提供了很好的解决方案。不过我们知道计算资源是不可缺少的,不过是存在的位置不同而已,我们放在终端上还是服务器上都是无法减少的。假设我们当今每个人桌面的计算资源相当于(cpu双核2.0 内存2G)在这种环境下我们已经习惯了的用户体验转移到服务器上,100个用户的并发那就要求服务器提供100X2X2等于400的CPU运算能力和200G的内存才可以满足用户习惯了的体验环境(冗余未计算内)。那么我们计算如果我们的企业有500个用户呢,如果是1000个用户呢。实际上我们不可能为我们的用户提供如此的计算能力的,那么也就从这个单方面就必须牺牲用户的体验了。其二在每个用户都要去服务器端下载它所用的操作系统对带宽压力是巨大的,用户越多这个因素就越明显,所以这个因素也需要企管人员重点考虑。用户的体验没以前好了,会不会对IT人员的工作推进造成影响呢?
2、设备和软件兼容性:我们习惯了即插即用的外设设备,新的系统会不会对日常的工作习惯造成影响呢,如果有了影响是如何避免的呢?我们的IT管理人员的工作量是增加了还是降低了,效率是提高了还是降低了?需要我们企管人员具体考量。
3、成本:企业花费的每一分钱都会具体考虑投入产出比,一个好的管理工具要推广,最起码它能够给企业在一个时间内带来成倍以上的收益才给与考虑的。集中式的虚拟化方案带来的投入成本主要是虚拟化软件授权费用,正版操作系统的授权,正版办公软件的授权,瘦客户机的采购费用,网络设备的换代费用,新的存储设备增加费用,服务器集群的硬件和软件采购费用,甚至有一些网络改造的费用。由于新的技术对管理人员的技术要求的提高相应的就会有技术人员的培训学习费用,新增管理人员费用。由于设备的成倍增加带来的还有机房改造电力消耗的各种费用。考虑到各种费用的总和,计算出的单点改造成本,还要考虑到日后虚拟化平台升级费用和兼容性是否能匹配企业内部的系统升级。然后才可以制定一个完整的财务规划来应对整个项目的开支和升级。这个计划就需要整个集团公司所有部门一起参与协调。
4、多媒体和大型程序体验:在一些设计部门和跟设计关联部门,需要大型的设计程序由于当今显卡虚拟化的技术尚未成熟,所以在这个场景中是无法应用的。
5、软硬件架构改变:新的系统和新的应用,我们有做好准备吗来应对管理架构的改变,来应对团队组织的改变吗?最后建议我们的企管人员对于云计算模式引入虚拟化产品的方案问一句:我们准备好了吗?
九、解决方案
软件方案
纯软件虚拟化解决方案存在很多限制。“客户”操作系统很多情况下是通过虚拟机监视器(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虚拟化技术。
虚拟化技术:
http://baike.baidu.com/link?url=ma8VoeCAkCwQ-awoF_ZCjTAxMEZapBEWdabhIs7-l4K32OZl1Zfc1z7nO1kx-75_