首页 理论教育虚拟化技术概述及其应用实践

虚拟化技术概述及其应用实践

【摘要】:2003年,采用最新半虚拟化技术实现的开源Xen推出,并在数据中心用户群体中流行开来。Xen的推出使得虚拟化技术的研究和应用更加普及。这项技术改变了x86架构对虚拟化支持的效能,x86架构由此成为虚拟化技术发挥作用的重要平台之一。

1.发展历程

虚拟化技术是伴随着计算机技术的产生而出现的。在计算机技术的发展历程中,虚拟化技术一直扮演着重要的角色。

虚拟化技术[11]的起源最早可以追溯到1959年,计算机科学家Christopher Strachey发表的一篇名为“Time Sharing in Large Fast Computers”(大型高速计算机中的时间共享)的学术论文[12]。他在文中提出了虚拟化的基本概念,这篇文章被认为是虚拟化技术的最早论述,可以说虚拟化作为一个概念被正式提出,自此迎来了虚拟化新纪元的开始。

此后的十几年,虚拟化技术走进了初始发展阶段。直到20世纪60年代,IBM公司为其System/360 Model67大型机发明了一种虚拟机监控器(VMM)技术[13]。这种技术将一台大型计算机划分为多个逻辑实例,每个逻辑实例运行一个操作系统,使得用户可以在一台计算机上同时运行多个操作系统,而用户在使用这些操作系统时就像在真实的物理设备上使用操作系统一样。通过这种技术,用户可以充分地利用昂贵的大型机资源,降低了大型机资源的使用成本。

在接下来的十年间,由于计算机硬件成本的显著下降,当初为了共享昂贵计算机硬件资源而设计的虚拟化技术受到的关注度有所降低,但在高档服务器中仍继续存在。

20世纪70年代后,随着计算机技术的发展和市场竞争的要求,大型机的技术开始向小型机和UNIX服务器转移。IBM、HP和SUN等公司都将虚拟化技术引入各自的高端精简指令集RISC服务器和小型计算机中。由于不同厂商的产品和技术不能很好地兼容,这使得虚拟化技术的发展进程有所变慢,公众关注度也有所降低[14]

2000年以前,x86架构上并没有虚拟化产品,而虚拟化在当时也绝非主流技术。但早在1998年,毕业于麻省理工学院(Massachusetts Institute of Technology,MIT)的Diane Greene察觉到计算机资源的使用率比较低,因此和Mendel Rosenblum、Scott Devine、Edward Wang及Edouard Bugnion等人成立VMware公司,专注提升硬件效能的研究和产品开发。1999年,VMware公司提出了一套以VMM为中心的软件解决方案[15]。这套方案在全虚拟化模式中使PC服务器平台实现虚拟化。这是x86架构上的第一款虚拟化商用软件。虚拟机技术从此进入个人计算机领域并重新得到快速发展。

2003年,采用最新半虚拟化技术实现的开源Xen推出,并在数据中心用户群体中流行开来。Xen的推出使得虚拟化技术的研究和应用更加普及。2005年和2006年,两大CPU生产商Intel和AMD对硬件进行了修改,分别推出支持硬件虚拟化技术的产品[16]。这项技术改变了x86架构对虚拟化支持的效能,x86架构由此成为虚拟化技术发挥作用的重要平台之一。

时间跨进2006年,可以说是进入了虚拟化技术的爆发期。2009年,虚拟机首次在历史上超过了物理机。

随着云计算的兴起,虚拟化技术走进了一个全面鼎盛的时期。虚拟机技术是云计算系统中的核心关键技术之一。它是可以将各种计算及存储资源充分整合和高效利用的关键技术。通过虚拟化手段将系统中各种异构的硬件资源转换成为灵活统一的虚拟资源池,从而形成云计算基础设施,为上层云计算平台和云服务提供相应的支撑。

2.虚拟化的优势

虚拟化技术所带来的效益与价值是多方面的。具体来讲,主要包括以下几点[17]

(1)提高资源利用率 通过虚拟化技术可以将原本一台机器的资源分配给数台虚拟化的机器而不牺牲性能,这可以使企业在不增加硬件资源的情况下提供更多的服务能力,即提升了已有资源的利用率。

(2)降低成本 由于虚拟化技术实现了资源的逻辑抽象和统一表示。因此,在服务器、网络及存储管理等方面都有着突出的优势,如可以降低管理复杂度,从而有效地控制管理成本,或者可以方便地实现虚拟机在物理机之间的动态迁移,进而实现计算资源或任务的整合,从而通过关停无负载的物理机器而降低运营成本。

(3)隔离 虽然虚拟机可以共享一台计算机的物理资源,但它们彼此之间是完全隔离的,就像它们是不同的物理计算机一样。因此,在可用性和安全性方面,虚拟环境中运行的应用程序之所以远优于在传统的非虚拟化系统中运行的应用程序,隔离就是一个重要的原因。

(4)高可用性 传统的解决方案多为采用双机热备(需要购买两台服务器、两套操作系统、两套数据库和双机热备软件等)的方式来保证业务的连续性,但是这种方式是以付出昂贵的成本为代价的。通过虚拟化,以软件的方式实现高可用性的要求,可以把意外宕机的恢复时间降至最低。在充分利用现有硬件计算能力的前提下,在多台服务器上部署虚拟化软件后,即使一台服务器出现故障意外宕机,虚拟化软件也会自动把该服务器的应用系统切换到其他服务器上来运行,从而以相对较低的成本在最大程度上保证不同应用系统的连续性,降低了风险。

(5)封装 所有与虚拟机相关的内容都存储在文件中,复制和移动虚拟机就像复制和移动普通文件一样简单、方便。

(6)便于管理 通过虚拟化可以集中式地管理和监控所有的物理服务器和虚拟机,灵活动态地调整和分配虚拟机的运算资源,使一个管理员可以轻松地管理比以前更多的设备而不会造成更大的负担。

3.虚拟化的概念

尽管虚拟化已经成为IT界的热门话题之一,但目前关于虚拟化的定义并没有统一的标准。在实践中,可以从广义与狭义两个方面来理解虚拟化概念。在计算机科学领域,广义上的虚拟化是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管理、优化资源的解决方案[18]。狭义上的虚拟化是指在计算机上模拟运行多个操作系统的技术。可以说,凡是把一种形式的资源以另一种形式呈现出来的方法都可以称为虚拟化。

从本质上讲,虚拟化就是将物理实体资源转换为逻辑上可以管理的资源,以打破物理实体间不可切割的障碍。换言之,虚拟化就是一种资源管理技术,它将硬件、软件和存储等物理资源虚拟成多个虚拟资源提供给不同的系统使用,以提高资源利用率,使得程序运行在虚拟资源上[19]

为了便于后面对虚拟化技术的讨论,这里首先给出与虚拟化技术密切相关的几个重要概念:

1)宿主机(Host)。虚拟机监控器所在的主机系统。

2)客户机(Guest)。运行在虚拟机监控器之上的虚拟机系统。

3)宿主操作系统。运行虚拟机监控器的操作系统。(www.chuimin.cn)

4)客户操作系统。运行在虚拟机监控器之上的虚拟机里的操作系统。

5)虚拟机。顾名思义,就是指一台虚拟的计算机,是一种严密隔离的软件容器。它可以运行自己的操作系统和应用程序,就好像一台物理计算机一样,具有自己的虚拟CPU、RAM、硬盘和网卡等设备。虚拟的含义,是相对于我们日常使用的物理计算机来讲的。物理计算机是摸得到、看得见的CPU、硬盘和内存等设备。而虚拟机则是一种被虚拟化的技术,虚拟机中的CPU和内存等设备是看不见、摸不到的,但是我们可以使用它们。比如可以使用虚拟机中的硬盘来存储数据,使用虚拟机中的网卡来连接网络等。其实这些功能都是由计算机软件模拟出来的。在使用过程中,我们并不会感觉到虚拟机和真实的物理计算机之间有什么不同。

6)虚拟机监控器。它也称为虚拟机管理器或Hypervisor。虚拟化解决方案的实质是要进行物理实体虚拟化。然而,有的物理实体直接支持虚拟化,有的不直接支持虚拟化。对于后者,就需要虚拟化管理程序VMM的支持,即VMM可以看作是为了虚拟化而设计出来的一个完整OS,它可以对所有的底层硬件资源如CPU、内存和I/O等进行管理。VMM是虚拟机中最关键的组件,通过它可允许多个操作系统和应用程序共享底层的硬件资源。

4.虚拟化类别

按应用类别不同,虚拟化可以分为如下三类:

1)平台虚拟化。针对计算机和操作系统的虚拟化。

2)资源虚拟化。针对特定的系统资源如存储资源和网络资源等的虚拟化。网络虚拟化是指将网络的硬件和软件资源进行整合,向用户提供虚拟网络连接的技术。存储虚拟化是指为物理存储设备提供一个逻辑视图,通过这个视图的统一逻辑接口来访问被整合的存储硬件资源的技术。

3)软件虚拟化。包括应用虚拟化和高级语言虚拟化。应用虚拟化是指将应用程序和操作系统分离,独立为应用程序提供一个虚拟的运行时支撑环境。高级语言虚拟化则解决了可执行程序在不同体系结构计算机间迁移的问题。

我们通常所说的虚拟化主要是指平台虚拟化,也称为服务器虚拟化。这是一种针对计算机和操作系统的虚拟化技术,通过使用VMM隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境,此环境被称为虚拟机。各虚拟机之间通过负责管理虚拟机的软件VMM共享CPU、网络、内存和硬盘等物理资源,每台虚拟机都有独立的运行环境。

综上所述,服务器虚拟化环境由硬件、VMM和虚拟机三个部分组成,如图3-3所示。从图3-3可知,VMM是建立在虚拟机和硬件中间的一层监控软件。它取代了宿主操作系统的位置,负责对硬件资源的分配和管理,并为由它创建出来的虚拟机提供硬件资源抽象,为虚拟机创建高效而相对独立的虚拟执行环境,承担了虚拟化的主要工作。

978-7-111-53353-5-Chapter03-3.jpg

图3-3 服务器虚拟化环境的组成

需要指出的是,在VMM技术出现之前,虚拟软件必须是装在一个操作系统上,然后在虚拟软件之上安装虚拟机,并在其中运行虚拟的系统及应用。

5.VMM模型

虚拟化技术的核心是VMM。根据VMM在物理系统中实现位置的不同,将VMM的实现方式划分为独立监控器模型(Stand-alone Hypervisor VMMs)、主机模型(Hosted-based VMMs)和混合模型(Hydrid VMMs)三种情况,如图3-4所示。

(1)独立监控器模型 如图3-4所示,VMM直接运行在裸机上,可以掌控所有底层的硬件资源。同时,VMM还负责创建VM,并使客户OS运行在VM中,即VMM负责虚拟环境的创建和管理。

由于VMM具有最高特权级,并向虚拟机内的客户操作系统提供抽象的底层硬件,因此,当客户操作系统访问硬件时,VMM会截获请求,使用自己的驱动程序完成请求。

因为VMM同时具硬件资源的管理功能和虚拟化功能,故此模型具有高效的虚拟化性能。在安全性方面,VM的安全性只依赖于VMM的安全。但是,由于VMM需要提供硬件设备驱动程序,因此VMM的实现较为复杂。此模型主要应用在企业级虚拟化,如大型服务器的虚拟化。Hyper-V采用的就是独立监控器模型。

(2)主机模型 如图3-4所示,主机模型下的VMM是作为一个应用程序运行在宿主操作系统上。VMM不需要包含硬件的驱动,可以利用宿主操作系统提供的设备驱动和底层服务实现I/O设备的虚拟化,而CPU和存储的虚拟化则由VMM独立完成。

此模型的优点是VMM可以充分利用现有操作系统的设备驱动程序,比较容易地实现I/O设备的虚拟化。另外,VM的安全性依赖于VMM和宿主操作系统的安全。由于客户操作系统对硬件的访问不仅要经过VMM,还要经过宿主操作系统。因此,此模型的缺点是性能比较低,功能上也有一定影响。此模型主要用在桌面级虚拟化,如PC的虚拟化。Virtual PC采用的就是主机模型。

(3)混合模型 如图3-4所示,混合模型集合了上述两种模式的优点。VMM依然是直接运行在裸机上,拥有所有硬件资源,具有最高的特权级,负责处理客户操作系统的CPU、内存和中断等的请求。与独立监控器模型的区别在于:混合模型的VMM是轻量级的,只负责向客户操作系统提供一部分基本的虚拟服务,而将I/O设备的控制权交由一个运行在管理VM内的管理OS。VMM负责CPU和存储的虚拟化,I/O设备的虚拟化由VMM和管理OS共同完成。

978-7-111-53353-5-Chapter03-4.jpg

图3-4 VMM的三种模型

混合模型可以充分利用现有操作系统的I/O设备驱动,这样就无须在VMM上开发I/O设备驱动程序,即混合模型的虚拟化效率较高。如果对管理OS的权限控制得当,虚拟机的安全只依赖于VMM。由于管理OS运行于VM之上,当需要管理OS提供的服务时,VMM需要切换到管理OS,这样就产生上下文切换的时间浪费。此模型主要用在普通服务器或高档PC的虚拟化。Xen采用的就是混合模型。