虚拟化技术概览

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

虚拟化技术概览您的评价:收藏该经验阅读目录1.全虚拟化(FullVirtualization)2.半虚拟化(ParaVirtualization)1.KVM2.Xen3.Hyper-V4.VmwareESXI5.QEMU6.KVM和QEMU的关系1.Linux虚拟化技术Xen和KVM的优势特点对比2.虚拟化Xen和虚拟化KVM在Linux下的区别3.VPS选择本篇文章所有资料均收集自网上,本文仅做了一下梳理和汇总。本文首先介绍了虚拟化技术:全虚拟化和半虚拟化,然后介绍了KVM、Xen、Hyper-V、VMWAREEXSI的原理和架构,接着重点对KVM和Xen做了比较,并对两者的未来发展提供了一些业界人士的观点,最后对Google、Amazon、IBM、Microsoft的云计算产品进行了介绍。一、虚拟化技术:全虚拟化、半虚拟化1.全虚拟化(FullVirtualization)全虚拟化也成为原始虚拟化技术,该模型使用虚拟机协调guest操作系统和原始硬件,VMM在guest操作系统和裸硬件之间用于工作协调,一些受保护指令必须由Hypervisor(虚拟机管理程序)来捕获处理。全虚拟化模型全虚拟化的运行速度要快于硬件模拟,但是性能方面不如裸机,因为Hypervisor需要占用一些资源回到顶部2.半虚拟化(ParaVirtualization)半虚拟化是另一种类似于全虚拟化的技术,它使用Hypervisor分享存取底层的硬件,但是它的guest操作系统集成了虚拟化方面的代码。该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作。半虚拟化模型半虚拟化需要guest操作系统做一些修改,使guest操作系统意识到自己是处于虚拟化环境的,但是半虚拟化提供了与原操作系统相近的性能。二、KVM、Xen、Hyper-V、VMwareEXSI原理和架构回到顶部1.KVMKVM全称是Kernel-basedVirtualMachine,即基于内核的虚拟机。KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(IntelVT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。KVM虚拟化平台架构KVM是一个独特的管理程序,通过将KVM作为一个内核模块实现,在虚拟环境下Linux内核集成管理程序将其作为一个可加载的模块可以简化管理和提升性能。在这种模式下,每个虚拟机都是一个常规的Linux进程,通过Linux调度程序进行调度。回到顶部2.XenXen是第一类运行再裸机上的虚拟化管理程序(Hypervisor)。它支持全虚拟化和半虚拟化,Xen支持hypervisor和虚拟机互相通讯,而且提供在所有Linux版本上的免费产品,包括RedHatEnterpriseLinux和SUSELinuxEnterpriseServer。Xen最重要的优势在于半虚拟化,此外未经修改的操作系统也可以直接在xen上运行(如Windows),能让虚拟机有效运行而不需要仿真,因此虚拟机能感知到hypervisor,而不需要模拟虚拟硬件,从而能实现高性能。1)XEN的发展与现状XEN最初是作为剑桥大学的一个项目,目前XEN.ORG社区在负责它的开发及维护,它已经在开源社区中得到了极大的发展。XEN是一种直接运行在硬件上一层软件,它可以让电脑硬件上同时跑多个用户的操作系统。由于对x86,x86-64,Itanium,PowerPC,和ARM这些处理器的支持,所以XEN管理工具可以支持的操作系统有Linux,NetBSD,FreeBSD,Solaris,Windows和其他一些运行在XEN上的正常的操作系统。如下图所示XEN在系统中的位置:XEN在系统的位置Xen目前具有以下几种产品:XenHypervisor——后面会详细讲解,在此不作赘述。会导致转换有问题;XCI——种嵌入式管理工具,基于XenHypervisor的基础之上修改而来,相对于标准的XenHypervisor,它使用的库更小,目前主要用在笔记本以及一些移动设备上,可以使用Intel或者AMD的架构;XenCloudPlatform——目前它为ISVs和服务提供商提供了一套基于强大的管理栈的云架构平台,这个栈是基于开放的标准API;还有一些Xen.org上的项目,再此就不一一列举了。2)XEN体系结构XEN体系结构图一个XEN虚拟机环境主要由以下几部分组成:XENHypervisor;Domain0——DomainManagementandControl(XENDM&C);DomainUGuest(DomU)1.PVGuest2.HVMGuest下图显示除了各部分之间的关系:Xen三部分组成之间关系图XENHypervisor:XENHypervisor是介于操作系统和硬件之间的一个软件描述层。它负责在各个虚拟机之间进行CPU调度和内存分配。XENHypervisor不仅抽象出虚拟机的硬件,同时还控制着各个虚拟机的执行。XENHypervisor不会处理网络、存储设备、视频以及其他I/O.Domain0:Domain0是一个修改过的Linuxkernel,是唯一运行在XenHypervisor之上的虚拟机,它拥有访问物理I/O资源的权限,同时和系统上运行的其他虚拟机进行交互。Domain0需要在其它Domain启动之前启动。DomainU:运行在XenHypervisor上的所有半虚拟化(paravirtualized)虚拟机被称为“DomainUPVGuests”,其上运行着被修改过内核的操作系统,如Linux、Solaris、FreeBSD等其它UNIX操作系统。所有的全虚拟化虚拟机被称为“DomainUHVMGuests”,其上运行着不用修改内核的操作系统,如Windows等。3)XEN工作原理上面我们针对Xen的体系结构进行了简单的描述,我们知道Xen主要由XenHypervisor,Domain0,DomainU三部分组成。下面通过Domain0与DomainU的通信以及这三部分的交互来探讨一下Xen的工作原理。之前我们已经提到过DomainU分为PV客户系统和HVM客户系统两种,我们首先讨论一下PV客户系统,也就是半虚拟化操作系统工作原理。首先我们需要知道在Domain0中有两个驱动NetworkBackendDriver和BlockBackendDriver,它们分别用来处理来自DomainU的网络和本地磁盘请求。由于XenHypervisor不会支持网络和磁盘请求的,因此一个PV(半虚拟化)客户系统必须通过和XenHypervisor、Domain0通信,从而来实现网络和磁盘请求。由于Xen文档中已经探讨过PV客户系统如何将一个数据写到本地硬盘,下面我们就来讨论一下PV客户系统如何将一个数据发送到网络中去。在这之前我们首先要了解到一点,那就是DomainUPVGuest中也包括两个驱动“PVNetworkDriver”和“PVBlockDriver”,它们分别也是用来处理发送网络和本地磁盘请求用的,这与Domain0中的两个驱动是相对应的。当一个PV客户系统的网络设备驱动程序接收到一个发送数据请求的时候,并且通过XenHypervisor发送数据到本地网络设备(网卡之类的设备)中,这个网络设备是和Domain0共享的。在Domain0和DomainU之间存在一个事件通道(eventchannel),通过该通道二者进行异步的域间中断通信。Domain0会接收到一个来自XenHypervisor的中断,触发PVNetworkBackendDriver访问上述网络设备,读取来自PV客户系统的数据,然后将这些数据发送出去。下图中事件通道表示为连接Domain0与DomainU的一个区域,这是系统工作流的一个简化。事实上事件通道运行在XenHypervisor中,通过Xenstored(Xenstored维护一个信息档案,包括内存和建立在Domain0与DomainU之间的事件通道。Domain0通过改变这个档案来设置和其他虚拟机的设备通道)中的特定中断实现,提供Domain0与DomainU之间的快速共享网络设备,见下图。Domain0与DomainUPVGuest通信示意图上面我们已经分析了PV客户系统的工作原理,下面我们再简要的介绍一下HVM客户系统的工作原理。由于一个HVMGuests虚拟机中没有上面提到得PVdriver,所以Xen在Domain0中为每一个HVMGuest都启动一个守护进程Qemu-dm处理来自客户系统的网络和磁盘请求,所以当一个HVMGuest有相应的网络和I/O请求的时候,它就会直接与Domain0中和它相对应的Qemu-dm来进行交互,通过Domain0最终达到访问网络设备或者磁盘的目的。见下图:Domain0与DomainUHVMGuest通信示意图Xen虚拟机安装后在查看虚拟机时会发现有一个Domain-0的虚拟机。12#查看虚拟机#xmlist回到顶部3.Hyper-VHyper-V体系结构图Hyper-V是微软提出的一种系统管理程序虚拟化技术,采用微内核的架构,兼顾了安全性和性能的要求。Hyper-V底层的Hypervisor运行在最高的特权级别下,微软将其称为ring-1(而Intel则将其称为rootmode),而虚机的OS内核和驱动运行在ring0,应用程序运行在ring3下,这种架构就不需要采用复杂的BT(二进制特权指令翻译)技术,可以进一步提高安全性。从架构上讲Hyper-V只有“硬件-Hyper-V-虚拟机”三层,本身非常小巧,代码简单,且不包含任何第三方驱动,所以安全可靠、执行效率高,能充分利用硬件资源,使虚拟机系统性能更接近真实系统性能。Hyper-V支持分区层面的隔离。分区是逻辑隔离单位,受虚拟机监控程序支持,并且操作系统在其中执行。Microsoft虚拟机监控程序必须至少有一个父/根分区,用于运行64位版本的WindowsServer2008操作系统。虚拟化堆栈在父分区中运行,并且可以直接访问硬件设备。随后,根分区会创建子分区用于承载来宾操作系统。根分区使用虚拟化调用应用程序编程接口(API)来创建子分区。分区对物理处理器没有访问权限,也不能处理处理器中断。相反,它们具有处理器的虚拟视图,并运行于每个来宾分区专用的虚拟内存地址区域。虚拟机监控程序负责处理处理器中断,并将其重定向到相应的分区。Hyper-V还可以通过输入输出内存管理单元(IOMMU)利用硬件加速来加快各个来宾虚拟地址空间相互之间的地址转换。IOMMU独立于CPU使用的内存管理硬件运行,并用于将物理内存地址重新映射到子分区使用的地址。从系统的结构图,我们可以看出来Hyper-V与Xen的架构很相似。回到顶部4.VmwareESXIVmwareESXI体系结构图由上图我们可以看出来管理工具也是直接嵌入到了ESXivmKernel中,没有再分化出单独的管理工具,这一点与Xen是相区别的。回到顶部5.QEMUQEMU是一套由FabriceBellard所编写的模拟处理器的自由软件。它与Bochs,PearPC近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由kqemu这个开源的加速器,QEMU能模拟至接近真实电脑的速度。回到顶部6.KVM和QEMU的关系准确来说,KVM是Linuxkernel的一个模块。可以用命令modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是远远不够的,因为用户无法直接控制内核模块去作事情,你还必须有一个运行在用户空间的工具才行。这个用户空间的工具,kvm开发者选择了已经成型的开源虚拟化软件QEMU。说起来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个Po

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功