分类: LINUX
2008-08-27 13:35:29
作者 Scott Delap译者 黄璜 发布于 2008年8月19日 上午9时16分
IT业总是大量的使用潮流词和不断变化的术语来定义自己。有些时候这个行业所使用的最新的命名法是某种特定的技术如x86或者某种概念如绿色计算。随着行业的发展,这些术语也是浮浮沉沉。最近几年,虚拟化渐渐成为了行业的新宠。这引来了一个问题——究竟什么是虚拟化?对于一般的从业人员来讲,他们的第一反应会是在一个宿主机上运行一个或多个虚拟(客户)操作系统。然而,再往下发掘一点点就会发现这样的定义太局限了。有大量的服务,硬件,软件可以被“虚拟化”。本文将对各种不同类型的虚拟化技术梳理一遍同时探究其各自的利与弊。
首先,对虚拟化这个术语进行一个抽象层面的定义,这对进一步细致地讨论各种不同类型的虚拟化技术是有好处的。维基百科对其作出了如下定义: “在计算领域,虚拟化是一个宽泛的术语,指的是对计算机资源的抽象。虚拟化对其用户,不管是应用程序还是终端用户,隐去了计算资源的物理特性。这包括使一个单一的物理资源(比如一个服务器,一个操作系统,一个应用,或是一个存储设备)表现为多个虚拟资源运行;也包括多个物理资源(比如存储设备或多台服务器)表现为一个单一的虚拟资源...”
从通俗的角度来说虚拟化常常意味着:
在诸如网络,存储,硬件等各种各样的场合,这一术语都被频繁地用于表达上述概念。
虚拟化并不是一个新的概念。在这一领域的早期成果有Christopher Strachey的论文“大型高速计算机的时分系统”(参见另一篇详尽的)。IBM对虚拟化的探索始于其研究系统。作为回报,这又促成了其商业产品CP-67/CMS。虚拟机的概念使用户隔离开,并为每个用户单独模拟出一套的完整的系统。
在八十年代以及九十年代初,业界逐渐从利用单一的大型主机过渡到运行更小更便宜的x86服务器的组合。虚拟化也因此显得不是那么的突出了。这一切都因为1999年所推出的VMware workstation而发生了改变。VMware随后推出了ESX Server,它可以运行在裸机上并且不需要宿主操作系统。
今天,虚拟化这个术语已被广泛的运用于多种概念,其中包括:
在以上的多数场合,将一个物理资源抽象成多个虚拟资源,或者将多个物理资源整合成一个虚拟资源的情况都可能发生。
服务端虚拟化是以已经树立业界地位的VMware,,以及等公司为代表的虚拟化业界里最活跃的部分。运用服务器虚拟技术,一个物理的机器可以被分成多个虚拟的机器。在这种虚拟化技术的背后,其核心是 hypervisor(虚拟机监视器)的概念。Hypervisor是很小的一层,它可以拦截操作系统对硬件的调用。Hypervisor典型的作用是为驻留在其之上的操作系统提供虚拟的CPU和内存。这一术语最开始是和IBM的CP-370一起使用的。
Hypervisor可以被分成两种类型:
与第一类hypervisor相关的概念是泛虚拟化(paravirtualization)。泛虚拟化是这样一种技术,软件接口以与底层硬件相似但并不完全一致的方式得以呈现。操作系统必须移植以运行在泛虚拟的hypervisor之上。经修改的操作系统通过泛虚拟的hypervisor所支持的“超级调用(hypercalls)”直接与硬件打交道。流行的Xen项目就是利用了这一类虚拟技术。从3.0版开始Xen也开始支持借助硬件的虚拟化技术,如 Intel的VT-x以及AMD的AMD-V。这些扩展使得Xen可以支持原生(未经修改)的操作系统,如微软视窗系统。
对于使用服务端虚拟化技术的公司来说,这项技术带给了他们许许多多好处,常常提起的就有:
相应地,也会有一些潜在的不利因素必须去考虑:
虚拟化并不仅仅是一门服务器领域的技术。在客户端,它也大量的运用于桌面以及应用层面。这种虚拟化技术可以细分为四种类别:
维基百科对应用虚拟化作了如下:
应用虚拟化是这样一种软件技术的总称词汇:它通过依赖的底层操作系统对应用程序进行打包,可以更好地管理遗留应用程序及其兼容性。一个完全虚拟化的应用程序不是以传统的方式来安装的,尽管它执行的时候好像仍然是这么回事。应用虚拟化与操作系统虚拟所不同的是,后者是虚拟整个操作系统,而不是只针对特定的应用。
有了流处理与本地应用虚拟化,应用程序的安装可以随需应变。如果支持流媒体,那么应用程序启动所需要的部分就可以优先传送,以优化启动时间。本地虚拟化的应用程序也时常借助于虚拟注册与文件系统来保持其与用户物理机器的隔离与自身的纯净。本地应用虚拟化的例子包括Citrix Presentation Server和Microsoft SoftGrid。一些虚拟设备也可以算在这一类里面,就像经常通过VMware的VMware Player来分发的那些。
托管应用虚拟化允许用户从本地机器上访问物理上运行在网络某处的程序。例如微软的RemoteApp等技术包括了将远程应用处理为本地文件类型处理器的功能,使得用户体验到一种相对无缝的集成。
应用虚拟化带来的好处包括:
其劣势在于:
维基百科对桌面虚拟化作了如下:
桌面虚拟化(或者虚拟桌面基础结构)是以服务器为中心的计算模型,它借鉴了传统的瘦客户端的模型,但却是为了将这两方面的优点都带给管理员和用户而设计的:拥有在数据中心托管和集中管理桌面虚拟机的能力同时又带给用户完全的PC桌面的体验。
托管桌面虚拟化与托管应用虚拟化是类似的,将用户的体验扩展到整个桌面。商业产品包括微软的Termial Services,Citrix的XenDesktop以及VMware的VDI。
桌面虚拟化带来的好处,大部分也是和应用虚拟化相同的:
桌面虚拟的不足之处与服务器虚拟是类似的。在这之上附加的一点就是客户必须要具备网络连接来访问虚拟桌面。对于离线应用这显然成了一个问题,同时也增加了办公室的带宽需求。
最后一部分客户端虚拟化就是本地桌面虚拟。可以这样说,伴随着VMware于90年代末引入VMware Workstation,这一领域正是近来虚拟化觉醒的开端。如今,市场上已经多了诸如微软的Virtual PC以及Parallels的Desktop这样的竞争对手。本地桌面虚拟化对于苹果成功转向英特尔的芯片也扮演着十分重要的角色,因为像VMware Fusion以及Parallels等产品使得获取Windows应用程序变得很简单。本地桌面虚拟化的带来的好处包括:
到目前为止,我们所谈的虚拟技术类型是以应用或者整个机器为中心的。然而这并不是可进行虚拟化的唯一粒度级别。其它的一些计算概念同样为它们自身增添了可以软件虚拟化的能力。网络虚拟化正是其中之一。维基百科将网络虚拟化如下:
在计算领域,网络虚拟化是这样一个过程:将硬件与软件的网络资源与功能组合成一个单一的,基于软件的管理性实体,一个虚拟网络。网络虚拟化涉及到平台虚拟化,常常整合了资源虚拟化。网络虚拟化可分为:外部的,将许多网络,或网络的各部分,组合成一个虚拟单元;内部的,在一个单一的系统上为软件容器提供类似网络的功能…
使用这一术语的内部性定义,桌面和服务器虚拟解决方案提供了宿主与客户机之间,以及多个客户机之间的网络访问。在服务器端,虚拟交换机正逐渐作为虚拟层的一部分被接受。不过,网络虚拟化的外部性定义可能是其被使用得最多的一个版本。虚拟专用网(VPNs)多年来都是网络管理员工具箱中的一个普及的部件,并且有大部分公司都允许VPN的使用。虚拟局域网(VLANs)是另一个普遍使用的网络虚拟化概念。利用诸如10g以太网等高端网络,网络不再需要纯粹地按地理线来布局。在这一领域拥有产品的包括思科公司以及3Leaf公司。
总的来说网络虚拟化带来的好处包括:
如服务端虚拟化一样,网络虚拟可能增加复杂性,性能开销,以及对管理员的技能集提出更高的要求。
另一个常常虚拟化的计算概念就是存储。不像到目前我们所看到的各种复杂的定义,维基百科对存储虚拟化的相当简单:
存储虚拟化指的是将物理存储抽象成逻辑存储的过程。
尽管RAID在基础的层面上提供了这一功能,但存储虚拟这一术语典型地包括了更多附加的概念,比如数据迁移以及缓存。由于有着各种各样提供这一功能的方式,对于存储虚拟化难以作出一个定式的解释。典型地,它提供了以下特性:
每个供应商对此有着不同的解决方式。另一种主流的对存储虚拟化分类的办法是,它是可控制的还是非控制的?可控制的(常常称作对称的)虚拟化位于宿主与存储设备之间,并允许缓存。非控制的(常常称作非对称的)虚拟化利用了特别的基于托管的设备驱动,首先查找元数据(表明文件存于什么地方),然后支持宿主直接从存储位置取回文件。对于这种方法,在虚拟层是不支持缓存的。
存储虚拟化的总体好处在于:
其不足点在于:
企业级应用程序供应商也开始注意到虚拟化的好处并开始提供相应的解决方案:比如提供允许虚拟化诸如Apache等普遍使用的应用的功能,以及提供支持容易地从头开始开发带有虚拟化功能的软件的应用组织(fabric)平台。
应用基础结构(applicaation infrastructure)虚拟化(有时称为应用组织——application fabric)使应用从物理的OS和硬件分离出来。应用程序开发者可以面向虚拟层来编程。由“组织”来处理部署与伸缩等特性。这一的精髓在于网格计算向提供虚拟层特性的组织形式的演变。像以及这样的公司提供了这些特性:
IBM同样从应用基础结构的层面拥抱着虚拟化概念,它重塑了Websphere XD这一品牌并推出了其强化版。这一软件能运行在多种Windows,Unix以及基于Linux的操作系统之上并支持诸如Websphere,Apache,BEA,JBoss和PHP应用服务器等多种流行的服务器。这使得管理员可以在虚拟层,而不用在机器物理层,部署和迁移应用服务器。
概括来看应该很明显,那就是虚拟化不仅仅是一个关于服务端的概念。这一技术可以被应用于广泛的计算领域,包括各种虚拟化:
虚拟技术是以多种不同的方式在演化的,然而其中心主题是围绕着既存领域增进的稳定性,以及加速业界中尚未拥抱虚拟化的部分对其的采纳。最近微软以进入裸机hypervisor领域就是该技术业已成熟的标志。
超出这些核心元素之外,虚拟化的未来也正在被书写。一个中心的分界线就是特性或者产品。对于像红帽以及许多存储供应商等公司,虚拟化正作为其现有供应的补充被推送。而其它的像VMware等公司其整个业务都是建立在虚拟化产品之上的。随着这一领域的演化,InfoQ将继续关注其涉及的技术和公司。
查看英文原文:。