hypervisor介绍_第1页
hypervisor介绍_第2页
hypervisor介绍_第3页
hypervisor介绍_第4页
hypervisor介绍_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、hypervisor : 一种运行在物理服务器和操作系统之间的中间层软件,可以允许多个操作系统和应用共享一套基础物理硬件。可以将hypervisor看做是虚拟环境中的“元”操作系统,可以协调访问服务器上的所有物理设备和虚拟机,所 以又称为虚拟机监视器(virtual machine monitor ) 。 hypervisor是所有虚拟 化技术的核心,非中断的支持多工作负载迁移是hypervisor的基本功能。当服务器启动并执行hypervisor时,会给每一台虚拟机分配适量的内存,cpu ,网 络和磁盘资源,并且加载所有虚拟机的客户操作系统。以下内容来自非常不错的介绍,分享给大家。hyper

2、visor之于操作系统类似于操作系统之于进程。它们为执行提供独立 的虚拟硬件平台,而虚拟硬件平台反过来又提供对底层机器的虚拟的完整访问。 但并不是所有hypervisor都是一样的,这是件好事,因为 Linux就是以灵活 性和选择性著称。本文首先简要介绍虚拟化和hypervisor ,然后探索两个基于Linux 的 hypervisor 。虚拟化和 hypervisor我们首先花一点时间理解为什么虚拟化很重要,以及hypervisor的扮演的角色。(要更多地了解这两个主题,请参见参考资料)。在本文中,虚拟化就是通过某种方式隐藏底层物理硬件的过程,从而让多个操作系统可以透明地使用和共享它这种架构

3、的另一个更常见的名称是 平台虚拟化。在典型的分层架构中,提供平台虚拟化的层称为 hypervisor (有时称为 虚拟机管理程序或VMM )。来宾操作系统称为虚拟机(VM ),因为对这些VM 而言,硬件是专门针对它们虚拟化的。图 1简单的展示了这个分层架构。图1.显示常用硬件虚拟化的简单分层架构GuesIVirtual hancMare HypervisorPlattonm Hardware)Physical hardware平台虚拟化的好处很多。美国环境保护署(EPA)报告的一组有趣的统计数 据就证明了其好处。EPA研究服务器和数据中心的能源效率时发现,实际上服 务器只有5%的时间是在工作的

4、。在其他时间,服务器都处于 “休眠”状态。 在单个服务器上的虚拟化平台能够改善服务器的利用率,但是减少服务器的数量 才是它的最大功用。减少服务器数量意味着减少不动资产、能耗、冷却和管理成 本。使用更少的硬件还能提高可靠性。总之,平台虚拟化不仅带来技术优势,还 能创造成本和能源优势。在图1中可以看到,hypervisor是提供底层机器虚拟化的软件层(在某些 情况下需要处理器支持)。并不是所有虚拟化解决方案都是一样的,您可以在参 考资料中了解更多的虚拟化方式。继续讨论进程,操作系统将对机器的底层资 源的访问虚拟化为进程。hypervisor也做一样的事情,但其对象不是进程,而 是整个来宾操作系统h

5、ypervisor 分类hypervisor 可以划分为两大类。首先是类型1,这种hypervisor 是直接运行在物理硬件之上的。其次是类型2,这种hypervisor运行在另一个操作系 统(运行在物理硬件之上)中。类型 1 hypervisor 的一个例子是基于内核的虚 拟机(KVM它本身是一个基于操作系统的hypervisor )。类型2hypervisor 包括 QEMU 和 WINE。hypervisor 的构成hypervisor (不管是什么类型)仅是一个从其来宾操作系统抽象机器硬件的 分层应用程序。通过这种方式,每个来宾操作系统看到的仅是一个VM而不是真实的硬件机器。我们大致看

6、一下hypervisor的内部组成,以及它在VM (来 宾操作系统)上的表示。在较高级别上,hypervisor需要少量设施启动来宾操作系统:一个需要驱 动的内核映像、一个配置(比如IP地址和所需的内存量)、一个磁盘盒一个网 络设备。磁盘和网络设备通常映射到机器的物理磁盘和网络设备(如图2所示)。最后,需要使用一组来宾操作系统工具启动和管理来宾操作系统。图2.在假设hypervisor中的最小资源映射然后,一个简化的hypervisor架构实现最后的关键功能,从而使来宾操作 系统可以和宿主操作系统同时运行。实现这个功能需要一些特定的要素,如图3一个所示。首先,类似于将用户空间应用程序和内核函数

7、连接起来的系统调用,通常可用的虚拟化调用(hapercall , hypervisor对操作系统进行的系统调用) 层允许来宾系统向宿主操作系统发出请求。可以在内核中虚拟化I/O ,或通过来宾操作系统的代码支持它。故障必须由hypervisor亲自处理,从而解决实际的 故障,或将虚拟设备故障发送给来宾操作系统。hypervisor还必须处理在来宾操作系统内部发生的异常。(毕竟,来宾操作系统发生的错误仅会停止该系统, 而不会影响hypervisor 或其他来宾操作系统)。hypervisor的核心要素之一 是页映射器,它将硬件指向特定操作系统(来宾或 hypervisor )的页。最后, 需要使用

8、一个高级别的调度器在 hypervisor和来宾操作系统之间传输控制。图3,简化的基于Linux 的hypervisorAppSGuestHypercall interfaceI/OimermptsPage mapperSctiedulerHypervisor elements§悟血MLinux kern elPlatform (Hardar&jLinux hypervisor本文探索两个基于 Linux的hypervisor 解决方案。首先是 KVM ,它是 首个被集成到Linux内核的hypervisor解决方案,并且实现了完整的虚拟化。其次是Lguest ,这是一个实验

9、hypervisor ,它通过少量的更改提高准虚拟化。KVMKVM针对运行在x86硬件硬件上的、驻留在内核中的虚拟化基础结构。KVM是第一个成为原生 Linux内核(2.6.20 )的一部分的 hypervisor ,它是 由Avi Kivity 开发和维护的,现在归 Red Hat所有。这个hypervisor 提供x86虚拟化,同时拥有到 PowerPC? 和IA64的 通道。另外,KVM最近还添加了对对称多处理(SMP)主机(和来宾)的支持, 并且支持企业级特性,比如活动迁移(允许来宾操作系统在物理服务器之间迁 移)KVM是作为内核模块实现的,因此 Linux只要加载该模块就会成为一个h

10、ypervisor 。KVM 为支持hypervisor 指令的硬件平台提供完整的虚拟化(比 如 Intel? Virtualization Technology Intel VT 或 AMD Virtualization AMD-V产品)。KVM还支持准虚拟化来宾操作系统,包括 Linux和 Windows?。这种技术由两个组件实现。第一个是可加载的 KVM模块,当在Linux内 核安装该模块之后,它就可以管理虚拟化硬件,并通过 /proc文件系统公开其 功能(见图4) o第二个组件用于 PC平台模拟,它是由修改版 QEMU提供 的。QEMU作为用户空间进程执行,并且在来宾操作系统请求方面与

11、内核协调。图4. KVM hypervisor 的高级别视图kvm的实用程序),它就成为宿主操作系统的一个进程,因此就可以像其他进程一样调度它。但与传统 的Linux进程不一样,来宾操作系统被 hypervisor标识为处于“来宾”模 式(独立于内核和用户模式)。每个来宾操作系统都是通过/dev/kvm设备映射的,它们拥有自己的虚拟地 址空间,该空间映射到主机内核的物理地址空间。如前所述,KVM使用底层硬 件的虚拟化支持来提供完整的(原生)虚拟化。I/O请求通过主机内核映射到在 主机上(hypervisor )执行的 QEMU 进程。KVM在Linux环境中以主机的方式运行,不过只要底层硬件虚

12、拟化支持, 它就能够支持大量的来宾操作系统。您可以在 参考资料部分找一个到受支持的 来宾操作系统的列表。Lguest(以前的 lhype )Lguest hypervisor由澳大利亚旧M 的Rusty Russell开发,它采用完全不同的方式实现虚拟化。Lguest并没有为运行任意操作系统提供完整的虚拟化 支持,而是为支持x86的Linux来宾操作系统(也称为Linux-on-Linux 虚拟 化)提供轻量级准虚拟化。这意味着来宾操作系统知道自己正在被虚拟化,并且这同时还会改进性能。但是,Lguest不需要QEMU提供平台虚拟化(像在 KVM中一样)来改进性能。使用Lguest这种方法还减少

13、了总代码需求,仅需 在来宾操作系统和宿主操作系统中使用一个瘦层。现在,我们探索这些变化,并查看Lguest环境的高级别架构。如图5所示,来宾操作系统包含一个 Lguest代码瘦层(根据定义,就是 准虚拟化)。这段代码提供许多服务。在最高的级别,有一些代码可以决定正在 启动的内核是否被虚拟化。止匕外,还有一个通过虚拟化调用将特权操作发送给宿 主操作系统的抽象层(通过paravirt_ops实现)。例如,来宾操作系统不能禁用 中断,以使这些请求在宿主操作系统中执行。您还可找到一个为来宾操作系统实 现设备抽象的总线,以及一组实现控制台、虚拟块驱动器和虚拟网络驱动器 (允 许与其他来宾通信)的简单驱动

14、器。图5,实现x86准虚拟化的Lguest的架构内核部分被实现为可加载的模块,即Ig.ko o这个模块包含来宾操作系统通向宿主内核的接口。第一个组件是切换器,它实现一种方法,让来宾操作系统在执行时根据上下文进行切换。这个模块还实现/proc文件系统代码(针对/dev/lguest),该代码实现到内核和驱动器(包括虚拟化调用)的用户空间接口。还有一些代码通过使用影子页表(shadow page-table )和管理x86区段 来提供内存映射。最后,内核中的Documentation子目录包含启动实用程序(lguest),用于启动新的来宾操作系统实例。这个文件负责两项任务,即使用和记录。Lgues

15、t从2.6.23 (2007年10月)开始就成为主流内核,并且由RustyRussell开发和维护。它大约包含 5000行源代码,包括用户空间实用程序。尽管Lguest很简单(据说是这样的),但它能提供真正的准虚拟化。不过简 单性往往与局限性相随。例如,Lguest仅虚拟化其他支持Lguest的来宾操作 系统,并且目前仅能用于 x86架构。尽管存在这些限制,Lguest仍然提供一种有趣的虚拟化方式,并且对任何希望研究Rusty的代码的人员公开Linux hypervisor 的益处使用Linux作为内核开发hypervisor有实实在在的好处。最明显的是, 以Linux为基础开发hypervi

16、sor 受益于稳步前进的 Linux ,以及为改进 Linux投入的大量工作。从典型的优化、bug修复、调度和内存管理创新到支 持不同处理器架构,Linux都是一个不断进步的平台(引自 Salisbury市的 John的“站在巨人的肩膀上”一文)。不久前已经证明,通过向 KVM添加一个内核模块,就可以将 Linux内核 转变为hypervisor。Lguest进一步改进了这种方法,并且通过受限制的准虚 拟化进一步简化了该解决方案。使用Linux作为平台的另一个奇特好处是,除了可以将该平台用作 hypervisor 之外,您还可以将其用作操作系统。因此,除了可以在Linuxhypervisor上

17、运行多个来宾操作系统之外,您还可以在该级别上运行其他传统 的应用程序。所以,不必担心带有新的应用编程接口( API)的新平台,因为您 拥有用于开发应用程序的标准 Linux平台(如果需要监控应用程序或 hypervisor )。标准协议(TCP/IP)和其他有用的应用程序(Web服务器)和 来宾操作系统都是可用的。回顾一下讨论KVM时的图4:除了来宾操作系统之外,还使用了修改了 KVM的QEMU。这是一个标准进程,并展示了 Linux 作为hypervisor的强大之处。KVM在平台虚拟化中利用 QEMU ,并使用 Linux作为hypervisor ,因此实现了这个构思,即让来宾操作系统能够和其他Linux

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论