当前位置:文档之家› 虚拟化技术介绍及应用

虚拟化技术介绍及应用

虚拟化技术介绍及应用1 虚拟化技术简介目前虚拟化技术深入人心,从服务器到桌面都呈现出一片繁荣的景象,由此相信多数人都不会怀疑虚拟技术的可用性和研究其的必要性。

通俗说来,虚拟化就是把物理资源转变为逻辑上可以管理的资源,以打破物理结构间的壁垒。

虚拟化技术就其本质而言属于一种资源管理技术,它将硬件、软件、网络、存储等硬件设备隔离开来,使用户能更合理更充分的控制与管理各种资源。

1.1 术语介绍1).宿主机,即虚拟机管理器所在的系统2).客户机,即运行在虚拟化管理器之上的系统3).VMM, Virtual Machine Monitor. 虚拟机监视器4).hypervisor,也称为虚拟机管理系统(包含VMM)2 虚拟化技术历史IBM 早在 20 世纪 60 年代开发 System/360™Model 67 大型机时就认识到了虚拟化的重要性。

Model 67 通过 VMM(Virtual Machine Monitor)对所有的硬件接口都进行了虚拟化。

但在x86平台上的虚拟化技术起步较晚,但随着x86平台CPU性能越来越强健,在市场上的应用越来越广泛,x86平台下的虚拟化技术同样得到了快速发展,特别是支持虚拟化技术的芯片辅助技术(即CPU虚拟化技术)出现以后,x86平台一直以来对虚拟化支持不佳的形象发生了很大改变,x86平台已经成为了虚拟化技术发挥作用的重要平台之一。

虚拟化技术的发展大概经历了下面两个阶段。

初级阶段:在虚拟化早期,人们采用模拟软件技术模拟出计算机硬件和软件。

模拟层与操作系统对话,而操作系统与计算机硬件对话。

在模拟层中安装的操作系统并不知道自己是被安装在模拟环境下的,你可以按照常规的方法安装操作系统。

这种虚拟化需要付出很大的性能代价。

高级阶段:随着虚拟技术发展的不断深化,虚拟化被带到了一个更高的级别。

在模拟层(负责被虚拟机器的指令翻译)和硬件之间,不需要任何主机操作系统运行硬件上的虚拟机。

虚拟机监控器直接运行在硬件上。

由此虚拟化变得更加高效。

3 虚拟化技术原理我们首先简要介绍一下虚拟化技术及其涉及的元素。

虚拟化解决方案的底部是要进行虚拟化的机器。

这台机器可能直接支持虚拟化,也可能不会直接支持虚拟化;那么就需要系统管理程序层的支持。

系统管理程序,或称为 VMM,可以看作是平台硬件和操作系统的抽象化。

在某些情况中,这个系统管理程序就是一个操作系统;此时,它就称为主机操作系统。

系统管理程序之上是客户机操作系统,也称为虚拟机(VM)。

这些 VM 都是一些相互隔离的操作系统,将底层硬件平台视为自己所有。

但是实际上,是系统管理程序为它们制造了这种假象。

3.1 VMM分类VMM是虚拟化技术的核心组件,当前主流的 VMM 实现结构可以分为三类:宿主模型 (OS-hosted VMMs),Hypervisor 模型 (Hypervisor VMMs),混合模型(Hybrid VMMs)。

下面分别介绍。

宿主模型如图3.1,该结构的 VMM,物理资源由 Host OS (Windows, Linux etc.) 管理,实际的虚拟化功能由 VMM 提供,其通常是 Host OS 的独立内核模块(有的实现还含用户进程,如负责 I/O 虚拟化的用户态设备模型)VMM 通过调用 Host OS 的服务来获得资源,实现 CPU,内存和 I/O 设备的虚拟化VMM 创建出 VM 后,通常将 VM 作为 Host OS 的一个进程参与调度如上图所示,VMM 模块负责 CPU 和内存虚拟化,由 ULM 请求 Host OS 设备驱动,实现 I/O 设备的虚拟化。

图3.1 宿主模型VMM结构图优点:可以充分利用现有 OS 的设备驱动,VMM 无需自己实现大量的设备驱动,轻松实现 I/O 设备的虚拟化。

缺点:因资源受 Host OS 控制,VMM 需调用 Host OS 的服务来获取资源进行虚拟化,其效率和功能会受到一定影响。

采用该结构的 VMM 有:VMware Workstation, VMWare Server (GSX), Virtual PC。

Hypervisor 模型该结构中,VMM 可以看作一个为虚拟化而生的完整 OS,掌控有所有资源(CPU,内存,I/O 设备)VMM 承担管理资源的重任,其还需向上提供 VM 用于运行 Guest OS,因此 VMM 还负责虚拟环境的创建和管理。

图3.2 Hypervisor 模型VMM结构图优点:因 VMM 同时具有物理资源的管理功能和虚拟化功能,故虚拟化的效率会较高;安全性方面,VM 的安全只依赖于 VMM 的安全。

缺点:因 VMM 完全拥有物理资源,因此,VMM 需要进行物理资源的管理,包括设备的驱动,而设备驱动的开发工作量是很大的,这对 VMM 是个很大的挑战。

采用该结构的 VMM 有:VMWare ESX Server, WindRiver Hypervisor, KVM(后期)混合模型该结构是上述两种模式的混合体,VMM 依然位于最底层,拥有所有物理资源,但VMM 会主动让出大部分 I/O 设备的控制权,将它们交由一个运行在特权 VM 上的特权 OS 来控制。

VMM 只负责 CPU 和内存的虚拟化,I/O 设备的虚拟化由 VMM 和特权 OS 共同完成。

图3.3 混合模型VMM结构图优点:可利用现有 OS 的 I/O 设备驱动;VMM 直接控制 CPU 和内存等物理资源,虚拟化效率较高;若对特权 OS 的权限控制得当,虚拟机的安全性只依赖于 VMM。

缺点:因特权 OS 运行于 VM 上,当需要特权 OS 提供服务时,VMM 需要切换到特权 OS,这里面就产生上下文切换的开销。

采用该结构的 VMM 有:Xen。

4 虚拟化技术分类虚拟化技术的核心部分是VMM (虚拟机管理器),VMM的实现方式直接决定真个虚拟化解决方案的效率和功能。

4.1 按实现层次按VMM的实现层次来分,目前有下面几种虚拟化实现方式。

1).指令级虚拟化,它是通过纯软件的方式模拟各种不同硬件的指令集来达到虚拟化的目的,这种方式的优点是可以完全的模拟出所需要虚拟设备的所有特性,这样必然会带来的一个缺点就是性能太差,而且实现复杂。

代表软件有QEMU。

2).硬件级虚拟化,硬件级虚拟化是基于虚拟的硬件一般与实际硬件指令集非常相似这一假设前提下实现,因为有上面的前提,通过硬件虚拟化可以把客户机的大多数操作指令通过映射方式在主机上直接执行,从而大大提供虚拟化的效率。

它的优点是简单高效,缺点是所虚拟的硬件平台范围有限,且可能需要硬件对虚拟化的支持。

代表软件有xen,kvm等。

3).操作系统级虚拟化,(待补充)。

4).编程语言级虚拟化,代表有JVM(Java虚拟机)。

5).程序库级虚拟化,代表有WIne库(在linux下模拟windows的运行环境),cygwin库(在windows下模拟linux运行环境)。

这里需要说一下的是,我们一般提到的虚拟技术仅包括上面前三种类别,后两种属于一种广义上的虚拟化技术的范畴。

本文中我们主要讨论的是狭义的虚拟化技术范畴。

4.2 按实现方式虚拟化按实现方式来分,可以分为下面几种。

1).全虚拟化(Full virtualization),顾名思义,全虚拟化就是完全虚拟出一个主机所需要的所有环境,因为运行于其上的虚拟机来说,它感觉不到虚拟化管理器的存在,所以此种方案是对客户机的支持类型最广泛的一种。

它的具体实现是灵活的,可以在指令级层,如QEMU,可以在操作系统级层,如Virtualbox, 也可以在硬件级层,如KVM(需要芯片辅助技术支持)。

2).半虚拟化(Para- virtuallization),半虚拟化技术是为了改善传统x86平台下硬件对虚拟化支持不佳而提出的一种改进技术,它的实现在硬件级虚拟化层。

为了提高虚拟化的效率,需要让客户机的操作指令直接让主机运行,以减少中间转换层造成的性能损失和时间延迟,但由于传统x86平台天生的缺陷--CPU指令的分环运行级存在等,导致一些操作系统指令必需在特权级(Ring 0)下运行,否则将会得到不同的运行结果,而这一点又是虚拟机管理器存在的环境中无法现实的。

解决此问题的方法有下面几种:一是修改客户机系统(改变此类特殊指令的实现方式),二是采用虚拟机管理器监视并重定向特殊操作指令,三是修改x86 CPU设计结构以支持此类特殊操作指令。

此三种方法中第一种方法即是半虚拟化技术中采用的,毕竟为了追求极致的虚拟化性能而小小的(可能不小)改变一点客户机的内容,而且完全不影响客户机的功能,这还是可以接受的。

但此方法的缺点是无法支持闭源操作系统作为客户机系统。

3).硬件虚拟化,硬件虚拟化是指硬件直接支持虚拟化操作,包括CPU虚拟化支持技术,内存支持虚拟化技术,其他设备I/O虚拟化支持技术等。

硬件虚拟化技术专门为改善 X86平台在虚拟化技术方面的落后局面而出现,比如在CPU 特权指令方面,新的支持VT(virtualiztion Technology)技术的CPU在传统的两环运行模式的基础上新加了一个运行级--特权级(或者也叫客户机模式),虚拟机管理器就运行于这一特权级模式,而其他的所有客户机的运行模式保持不变,仍运行在运行级0(Ring 0)和运行级3(Ring 3)两种模式下,硬件虚拟化技术解决了半虚拟化技术中的难题;在内存访问方面,新的内存技术将实现通过直接硬件地址转换来支持虚拟客户机的物理内存访问,由于内存是系统中最频繁访问的设备之一,所以新的支持虚拟化的内存技术可以大大提高虚拟机性能。

正式一系列硬件虚拟化技术的出现和发展,使得虚拟化可以同时得到全虚拟化的良好支持性和半虚拟的高效性,可以预想随着硬件虚拟化技术的发展,x86平台下的虚拟化技术必将取得辉煌的战绩。

5 虚拟化技术实现全虚拟化全虚拟化(Full virtualization), 也称为原始虚拟化技术, 该模型使用虚拟机协调客户操作系统和原始硬件(见图5.1). 这里"协调"是一个关键词, 因为VMM在客户操作系统和裸硬件之间用于工作协调. 一些受保护的指令必须由Hypervisor(虚拟机管理程序)来捕获和处理。

全虚拟化: 使用Hypervisor分享底层硬件图5.1全虚拟化的运行速度损失比较大, 因为客户机系统是在Hypervisor的协调下和硬件交互. 全虚拟化最大的优点是操作系统没有经过任何修改.半虚拟化半虚拟化(Paravirtualization). 它使用Hypervisor(虚拟机管理程序)分享存取底层的硬件, 它的客户操作系统集成了虚拟化方面的代码并知道自己是在虚拟模式下运行,因为客户操作系统自身能够与虚拟进程进行很好的协作.所以半虚拟化的性能接近于真实系统。

相关主题