云计算实践之虚拟化技术介绍
---vent
一.虚拟化技术的类型
1.全虚拟化
全虚拟化(Full virtualization), 也称为原始虚拟化技术,全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其它系统软件完全不做任何修改就可以在虚拟机中运行。该技术架构图如图1-1所示:
图1-1. 全虚拟化: 使用Hypervisor分享底层硬件
由于计算机硬件化资源被抽象化,必须需要一个机制来管理抽象化之后的资源。这个机制一般称作Hypervisor或者Virtual Machine Monitor(VMM)。该模型使用虚拟机协调客户操作系统和原始硬件.因为VMM在客户操作系统和裸硬件之间用于工作协调. 一些受保护的指令必须由Hypervisor(虚拟机管理程序)来捕获和处理.
因为操作系统是通过Hypervisor来分享底层硬件。全虚拟化的运行速度要快于硬件模拟, 但是性能方面不如裸机, 因为Hypervisor需要占用一些资源.它的唯一限制是操作系统必须能够支持底层硬件(比如, PowerPC)
代表项目;VMWare 闭源/ z/VM(IBM) 闭源
2.半虚拟化
半虚拟化(Paravirtualization)是另一种类似于全虚拟化的热门技术. 它使用Hypervisor(虚拟机管理程序)分享存取底层的硬件。半虚拟化技术使得操作系统知道自身运行在一个Hypervisor,它的客户操作系统集成了虚拟化方面的代码. 该方法无需重新编译或引起陷阱, 因为操作系统自身能够与虚拟进程进行很好的协作.如图1-2所示:
图1-2半虚拟化: 通过客户操作系统分享进程
上面提到过, 半虚拟化需要客户操作系统做一些修改(配合Hypervisor), 这是一个不足之处. 但是半虚拟化提供了与原始系统相近的性能. 与全虚拟化一样, 半虚拟化可以同时能支持多个不同的操作系统.代表项目: XEN GPL / UML GPL
3.硬件辅助虚拟化
硬件辅助虚拟化(Hardware-assiisted virtualization).或者称作硬件虚拟机(HVM) 主要是指操作系统在其之上运行时,必须靠系统的硬件来完成虚拟化的过程。硬件辅助虚拟技术不但能够提高全虚拟的效率(VM的产品都加入该类功能),而且使用半虚拟技术的XEN也通过该项技术做到支持Window,Mac之类闭源的操作系统。该技术的架构图如图1-1所示:
图1-3. HVM架构图
X-86平台(包括X-86 64,AMD64)上的硬件辅助虚拟化项目主要是:Intel的VT和AMD的AMD-V
4. 操作系统级的虚拟化
最后一个需要了解的虚拟化技术是操作系统级的虚拟化(Operating system-level virtualization), 它使用不同于上面的虚拟化方法. 该类只能仿真出主机的操作系统,如在Linux上只能运行Linux,Window上只能运行Window
图1-4操作系统级的虚拟化: 隔离单个服务器
二.具体的虚拟化产品
1.XEN
Xen作为最优秀的半虚拟化引擎,在基于硬件的虚拟化的帮助下,现在也支持完全虚拟化MS windows了.XEN架构如图2-1所示:
图2-1 XEN架构
最底层的是计算机硬件,包括CPU,RAM,硬盘接口,网卡,外设数据总线等等。
硬件层之上,是Xen hypervisor层,包括总控界面(Xen Control Interface),虚拟CPU,虚拟RAM,虚拟硬盘,虚拟网卡等等。
在Xen层之上,是各个OS实例(OS instances)。其中最左边的OS实例很特别。在启动Xen的时候,最左边的OS实例,Domain0 on XenoLinux,自动被启动。Domain0里运行着Xen Control Software,这个软件控制着各个OS实例的启动,终止,以及监控其运行情况。
Domain0对于其它OS实例的控制,是通过Xen层中Xen Control Interface来实现的。而这个Xen Control Interface只对Domain0开放。其它OS实例只有被管理的义务,而没有管理其它实例的权力。DomUs可以运行被修改过或者标准化的操作系统。被修改的系统运行在paravirtualization(半虚拟化)每个OS实例都被分配一套虚拟的CPU,RAM,硬盘和网卡。每个OS实例使用这些虚拟的设备,与通常的OS并无不同。在新版的XEN中通过PCI允许客户OS直接读取硬件,以提高整体性能。如图2-2所示,客户OS直接使用硬件
图2-2客户OS通过XEN PCI 直接读取硬件
2.KVM
KVM是在X86平台上的Linux全虚拟化方案。Linux 2.6.20内核增加了KVM虚拟化技术.它的特点是系统内核通过添加KVM的kernel module(kvm.ko),使系统内核自身成为一个Hypervisor(虚拟机管理程序)。
内核中的KVM模块通过/dev/kvm字符串设备显示被虚拟的硬件. KVM使用修改过的QEMU进程做为客户操作系统接口.KVM的虚拟化架构如图2-3所示:
图2-3. KVM的虚拟化
KVM模块向内核增加了一个新的执行模式: 客户模式. 官方原始内核(vanilla kernel)支持内核和用户模式. 客户模式用于执行所有非I/O客户代码, 普通用户模式支持客户I/O.
它是第一个整合到Linux内核的虚拟化技术.
3.VMware
WMware是全球最大的虚拟化厂商,该公司产品线漫长,主要包括桌面版的 Vmware workstation和企业版的VMWare ESX server。它们使用的虚拟化技术主要是全虚拟,在加上硬件辅助虚拟化后,产品性能有所提高。
在云计算中,VM主打产品是vSphere。它是非常完整的虚拟机群集产品,其组件包括:ESX Server 群,vCenter管理中心,数据库,vSphere (VI4)客户端。vSphere组件层如图2-4所示:
图2-4vSphere组件层
更多具体的技术细节参见Vmware技术白皮书
三.参考文献
[1] XEN at Wikipedia [EB/OL] http://en.wikipedia.org/wiki/Xen, 28 September 2010
[2]XEN book--what is XEN [EB/OL] http://www.xen.org/files/Marketing/WhatisXen.pdf
[3]XEN book –How does Xen work [EB/OL]
http://www.xen.org/files/Marketing/HowDoesXenWork.pdf
[4]M. Tim Jones.Virtual Linux-An overview of virtualization methods, architectures, and implementations [EB/OL] http://www.ibm.com/developerworks/library/l-linuxvirt/index.html?ca=drs, 29 Dec 2006
[5]胡嘉许 企业级虚拟机应用实战[M]电子工业出版社,2009:11-30
[6]KVM at Wikipedia [EB/OL] http://en.wikipedia.org/wiki/KVM_switch ,4 October 2010
[7] VMware, Inc. VMware-vsp_41_intro_vs-PG-CN[EB/OL]
http://www.vmware.com/files/cn/pdf/support/VMware-vsp_41_intro_vs-PG-CN.pdf