虚拟化的一些基本常识

本文从如下几个方面介绍虚拟化的一些常识:
虚拟化层次的分类及举例;
系统虚拟化简史;
VMM分类;
典型的虚拟化产品;
Xen。linux

虚拟化层次分类及举例

指令级虚拟化编程

Bochswindows

QEMU安全

硬件级虚拟化服务器

VMware网络

Xen架构

KVM编程语言

操做系统级虚拟化性能

Linux-VServer优化

OpenVZ

编程语言级虚拟化

JVM

.NETCLI

程序级虚拟化

Wine

系统虚拟化简史(硬件级虚拟化)

历史上第一个虚拟机是1965年左右IBM公司开发的system/360 model 40 VM。其最初的设计目的是将当时最早进的虚拟内存的概念延展到计算机的其余子系统,搭建一个时分共享的系统,运行多个单用户的操做系统,以实现多个用户对 昂贵的物理计算机资源的共享。

以后,随着时分多用户操做系统的发展,虚拟化技术真正成熟是在15年后的IBM VM/370系统中。做为一个标志性的系统,VM/370的许多原理至今还在IBM的z系统大型机上使用。VM/370运行在IBM System/370大型机上,并虚拟出同体系结构的System/370虚拟机。因为System/370硬件的优秀设计,对VM/370的实现提供了 完整而高效的支持,以VM/370为表明的虚拟机和系统虚拟化技术完整实现了虚拟机的思想。

VM/370上实现的是彻底虚拟化(Full Virtualization)他所抽象的虚拟计算机具备彻底的物理计算机特性。

在同一个时代,IBM M44/44x系统中,出现了半虚拟化(partial-virtualization)(某些书中将para virtualization称为半虚拟化,他们不是一个概念),半虚拟化(partial-virtualization)提供了对底层硬件的部分模 拟,以知足某些专门的软件的执行环境,可是不能运行全部可能运行在物理机上的软件。

伴随着硬件的发展,从20世纪90年代后期开始,台式计算机的性能逐渐达到支持多个系统同时运行的水平。在大型机上沉寂一时的虚拟化技术,在小型机 和微型机领域开始迅速升温。1997年,在斯坦福大学开发的Disco系统中探索了在共享内存的大规模多处理器系统上运行普通的桌面操做系统。基于 Disco系统的研究经验,Disco开发者们继续进行了我的计算机虚拟化技术的研究,以后就有了1998年的Vmware公司的诞生。

在我的计算机领域普遍使用x86体系结构的先天设计,存在对系统虚拟化的支持缺陷或虚拟化漏洞(virtualization hole)。 在x86体系结构上的虚拟化技术,都须要用软件的方法来弥补系统结构设计上的不足。例如,采用代码扫描或修补方法(Scan and patch)或二进制代码翻译(binary translation)技术来实现基于软件的彻底虚拟化,但这样作势必带来性能上的损失及很是大的软件复杂度。

这种状况下,学术界提出了另外一种思路来客服体系结构上的缺陷,叫类虚拟化技术(Para virtualization)(一些书上称半虚拟化)。其主要思想是经过客户机操做系统与虚拟化管理层的协同设计,由虚拟化管理层软件提供一个近似于原 物理系统,但又不彻底相同(与原系统)的虚拟平台,以免虚拟化漏洞和实现更高的虚拟化效率。虚拟化技术须要修改操做系统的源代码来与下层的虚拟化管理层 软件协同工做,从而避免体系结构上的缺陷。

美国华盛顿大学的Denali项目和原子英国剑桥大学的Xen项目都支持类虚拟化。

虽然上诉两种基于软件的方法都可以实现系统虚拟化,但他们各自存在不可回避的问题。基于软件的彻底虚拟化方法不可避免的致使性能的降低,同时伴随着一些兼容性上的损失(这里的兼容性是指?);而修改操做系统的方法对于现有系统的移植和伴随着内核升级的维护提出了要求 ,而且对于非开源的操做系统也有局限性。

从根本上解决系统结构上的缺陷,最好的方法是从体系结构自己入手。intel和AMD在2006年后都逐步推出了带有硬件虚拟化支持的处理器,从根 本上保证了x86架构是一个可虚拟化的架构。VMM软件能够利用这些硬件虚拟化技术,实现基于硬件的全虚拟化,这样操做系统不须要作任何修改就能够运行在 虚拟机上。

除了x86处理器架构加入了硬件虚拟化支持,IBM power 2001年,Sun SPARC 2005年也在处理器中加入了虚拟化的支持。但IBM和Sun都采用了基于硬件的类虚拟化策略,除了在硬件中加入了对虚拟化的支持,还在固件层加入了相应 的类虚拟化VMM层,上层的操做系统 须要根据 VMM层接口进行修改。提供了从处理器到固件层到操做系统层对虚拟化的全面协同支持。

今天的大部分服务器和台式机处理器都已经有了对虚拟化的支持,但只是解决了处理器层如何更好的支持虚拟化的问题,为了使虚拟化解决方案更加高效,计 算机系统各个层次都在逐渐加入对虚拟化的硬件支持,逐渐造成一个对虚拟化更好支持的虚拟化生态系统。以intel为例,除了处理器中的vt技术外,芯片中 开始提供针对I/O虚拟化功能的vt-d技术,网卡中也开始提供更好的网络虚拟化支持的多队列的VMDq技术。与此同时PCI标准组织也在积极的指定在 PCI设备级对虚拟化进行支持的单根PCI桥IOV和多跟PCI桥IOV标准。

从20世纪90年代发展至今,虚拟化软件取得了长足的发展。很是多的虚拟机软件涌现除了,如KVM、virtualbox、微软的virtual pc 、hyper-v、Sun的xVm、Oracle的Oracle VM。

VMM分类(硬件级虚拟化)

按虚拟平台分类

根据VMM所根据的虚拟平台类型能够将VMM分红两类:

第一类VMM虚拟的是现实存在的平台,而且在客户机操做系统看来,虚拟的平台和现实的平台是同样的,客户机操做系统察觉不到是运行在一个虚拟平台上。这样的虚拟平台能够运行现有的操做系统,无须对操做系统进行任何修改,所以这种方式被称为彻底虚拟化(full virtualization)。彻底虚拟化有软件辅助的彻底虚拟化硬件辅助的彻底虚拟化

第二类VMM虚拟的平台是现实中不存在的,而是通过VMM从新定义的,这样的虚拟平台须要对所运行的客户机操做系统进行或多或少的修改使之适应虚拟环境,所以客户机操做系统知道其运行在虚拟平台上,而且会去主动适应。这种方式被称为类虚拟化(para virtualization)。另外,一个VMM能够既提供彻底虚拟化的虚拟平台,又提供类虚拟化的虚拟平台。

按VMM实现结构分类

Hypervisor模型

在Hypervisor模型中,VMM能够看做是一个完备的操做系统,不过和传统操做系统不一样的是,VMM是为虚拟化而设计的,具有虚拟化功能。

在Hypervisor模型中,VMM同时具体物理资源的管理功能和虚拟化功能,所以,物理资源的虚拟化的效率会高一些,同时他不依赖于其余操做系统,虚拟机的安全只与VMM安全有关,不像宿主型的VMM,虚拟机的安全与VMM和操做系统相关。

一样因为Hypervisor模型中,VMM彻底拥有物理资源,所以须要对物理资源进行管理,包括设备驱动,这些开发的工做量是很大的。

宿主模型

物理资源由宿主机操做系统管理,宿主机操做系统是传统操做系统,VMM经过调用宿主机操做系统的服务来得到资源提供虚拟化服务。VMM建立出虚拟机以后,一般将虚拟机做为宿主机操做系统的一个进程参与调度。

宿主模型最大的优势是能够充分利用现有操做系统的设备驱动程序,VMM无须为各种I/O设备从新实现驱动程序,能够专一于物理资源的虚拟化。宿主模型也能够利用宿主机操做系统的调度、电源管理灯其余功能。

因为宿主操做系统设计开发之初并无考虑虚拟化的支持,所以VMM虚拟化的效率和功能会受到必定影响。另外虚拟机的安全会依赖于VMM和宿主机操做系统的安全。

混合模型

混合模型是上述两种模式的汇合体,VMM仍然位于最底层,用于全部物理资源。但与Hypervisor模型不一样的时,VMM不会控制大部分I/O设 备,会有一个运行在特权虚拟机中的特权操做系统控制大部分硬件,分担VMM的一些职责。处理器和内存的虚拟化由VMM完成,I/O的虚拟化则由VMM和特 权操做系统共同合做来完成。

典型的虚拟化产品

VMware ESX Server 3

基于Hypervisor模型,直接运行在物理硬件上,无须操做系统,是一款面向企业级应用的产品。既支持彻底虚拟化也支持类虚拟化,新版本中也开始采用了硬件虚拟化技术。

VMware Server

宿主模型,面向服务端入门级产品,宿主操做系统能够是windows或者linux。因为采用宿主模型,VMware Server支持的硬件种类要比ESX Server多,此外VMware Server是免费的。

VMware Workstation

也是宿主模型,是VMware面向桌面的主打产品。宿主操做系统能够是windows或者linux。VMware Workstation支持彻底虚拟化。与VMware Server不一样,VMware workstation专门针对桌面应用作了优化。

VMware Fusion

宿主模型,与VMware Workstation基本相同,VMware Workstation运行在Windows和Linux上,VMware Fusion运行在基于Intel Mac硬件平台的Mac OS X。

 Virtual PC

Miscrosoft 面向桌面的虚拟化产品,宿主模型,宿主操做系统是Windows,早期采用软件虚拟化方式,基于Binary Translation技术。新版本中已经支持硬件虚拟化技术。

Virtual Server

Miscrosoft 面向服务器的入门级虚拟化产品,也是宿主模型,宿主操做系统能够是Windows XP和Windows Server 2003等。新版本中也开始支持硬件虚拟化技术。

Windows Server 2008

2008是Miscrosoft 推出的新一代服务器操做系统,其中一项重要的新功能是虚拟化。Server 2008的虚拟化架构采用混合模型, 其重要的部件之一Hyper-V做为Hypervisor运行中最底层,Server 2008自己做为特权操做系统运行在Hyper-V之上。Server 2008采用硬件虚拟化技术,必须运行在支持Intel VT技术或者AMD-V技术的处理器上。Server2008的虚拟化功能是纯64位,只运行在Server 2008 64位版本中。客户机操做系统支持32位和64位,支持 对称多处理器的客户机操做系统等。

Xen

从技术角度来讲,Xen基于混合模型。特权操做系统(Domain0)能够是Linux、Sorlaris以及NetBSD。Xen 1.0 2.0实现了类虚拟化,3.0支持基于硬件技术的彻底虚拟化。

KVM

KVM采用的是基于Intel VT技术的硬件虚拟化方法。从架构上看,能够认为KVM是宿主模型,Linux是宿主操做系统。但随着愈来愈多的虚拟化功能被加入到Linux中,也有人认为Linux已是一个Hypervisor,所以KVM是Hypervisor 模型。KVM和Linux内核结合的很是好,但KVM还处在发展阶段。

Xen

Xen是一个虚拟化平台,它来之于一项学术研究成果,现已发展成一个重要的开源项目。

Xen的独特之处在于,当它第一次发布时,使用了半虚拟化(para virtualization)来运行像linux这样的常规操做系统。半虚拟化须要修改运行在Xen之上的操做系统,既提高了性能又简化了Xen自己。

通常来讲,操做系统内核是运行在计算机上的最有特权的软件,但在虚拟化的状况下,系统管理程序是最有特权的,操做系统内核是在相对较低的权限下运 行。若是操做系统如今试图执行一些特权指令,那他们会失败,失败的方式是相当重要的。若是他们引发系统管理程序会捕获的一个错误,系统管理程序能够恰当的 模拟这个指令并继续控制虚拟机。而后x86上存在一些默默失败而不触发系统管理程序的指令。对于虚拟化来讲这是坏消息,由于这妨碍了操做系统在虚拟机上适 当的工做。广泛的技术(至少在Xen以前)是在运行时扫描操做系统代码,寻找特定的指令并用直接调用系统管理程序的代码替换他们(什么技术?怎么实 现?)。虽然这具备理想的兼容性,但在性能上有很大的开销。

当发布Xen时,它代表,经过放弃理想的兼容性,性能会显著的提升。

半虚拟化的观点是移除一个架构(如x86)中难以虚拟化或若是进行虚拟化开销很大的全部特性,用于虚拟化层直接通讯的半虚拟化操做替换他们。

一个操做系统的半虚拟化就是重写与半虚拟化架构不兼容的全部代码。对linux内核,Xen只修改或增长2995行代码,就可使它能在Xen上运行。

Xen是原生式虚拟化的一个例 子。另外一种方式是宿主操做系统上运行一个系统管理程序。这种状况下,每一个虚拟机实际上成了宿主操做系统的一个进程。宿主式系统管理程序一般用于工做站的虚 拟化产品中,例如vmware。这种方式的主要优势在于:安装一个宿主式的系统管理程序就像安装一个新应用程序同样简单,反之,安装一个原生的系统管理程 序(如Xen)就像安装一个新的操做系统。所以宿主式虚拟化更适合非专业的用户。

另外一方面,原生式的系统管理程序的优势在于它能够得到更好的性能。宿主式虚拟机更容易用于桌面虚拟化。
Xen3.0版本开始支持基于intel vt和amd v硬件技术的全虚拟化。

   

原文连接:http://itblogs.ga/blog/20141217203759/
相关文章
相关标签/搜索