微信公众号:杰夫弹弹看
分类: 虚拟化
2011-11-13 10:30:59
全虚拟化(Full virtualization), 也称为原始虚拟化技术,全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其它系统软件完全 不做任何修改就可以在虚拟机中运行。该技术架构图如图1-1所示:
图1-1. 全虚拟化: 使用Hypervisor分享底层硬件
由于计算机硬件化资源被抽象化,必须需要一个机制来管理抽象化之后的资源。这个机制一般称作Hypervisor或者Virtual Machine Monitor(VMM)。该模型使用虚拟机协调客户操作系统和原始硬件.因为VMM在客户操作系统和裸硬件之间用于工作协调. 一些受保护的指令必须由Hypervisor(虚拟机管理程序)来捕获和处理.
因为操作系统是通过Hypervisor来分享底层硬件。全虚拟化的运行速度要快于硬件模拟, 但是性能方面不如裸机, 因为Hypervisor需要占用一些资源.它的唯一限制是操作系统必须能够支持底层硬件(比如, PowerPC)
代表项目;VMWare 闭源/ z/VM(IBM) 闭源
半虚拟化(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.XENXen作为最优秀的半虚拟化引擎,在基于硬件的虚拟化的帮助下,现在也支持完全虚拟化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.KVMKVM是在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组件层