Hypervisor,又称虚拟机监视器(英语:virtual machine monitor,缩写为 VMM)一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件(类似于进程的概念)。

Hypervisors是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括磁盘和内存在内的所有物理设备。Hypervisors不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行Hypervisor时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。

在虚拟化环境下,物理服务器的CPU、内存、硬盘和网卡等硬件资源被虚拟化并受Hypervisor的调度,多个操作系统在Hypervisor的协调下可以共享这些虚拟化后的硬件资源,同时每个操作系统又可以保存彼此的独立性。

Hypervisor虚拟化被分为两种类型:Bare-metal虚拟化方式(“裸机”虚拟化)和Host OS虚拟化方式(基于操作系统的虚拟化,宿主型虚拟化)

Host OS与Bare-metal类型的Hypervisor

Host OS类型将Hypervisor虚拟化层安装在传统的操作系统中,虚拟化软件以应用程序进程形式运行在Windows和Linux等主机操作系统中。典型的宿主型Hypervisor有VMware Workstation和VirtualBox。在Hypervisor虚拟化环境下,部署在物理服务器上的系统称为Host OS,而部署在Hypervisor上的虚拟机操作系统称为Guest OS。Hypervisor的安装:在物理服务器上安装Linux操作系统然后在操作系统上安装Hypervisor,然后部署虚拟机(Guest  OS)后通过Hypervisor来共享资源。

Bare-metal类型的Hypervisor虚拟化环境中无须完整的Host OS,直接将Hypervisor部署在裸机上并将裸机服务器的硬件资源虚拟化,也可以将Hypervisor理解为仅对硬件资源进行虚拟和调度的薄操作系统,其并不提供常规Host OS的功能,常见的Bare-metal类型(裸机)Hypervisor有IBM的PowerVM、VMware的ESX Sevrer、Citrix的XenServer、Microsoft的Hyper-V以及开源的KVM等虚拟化软件。

虚拟化技术又分为全虚拟化(Full  Virtualization,FV)、准虚拟化(Para Virtualization,PV)和主机操作系统虚拟化(Host OS Virtualization),其中PV和FV基于Bare-metal类型Hypervisor的虚拟化技术,而主机操作系统虚拟化基于Host OS类型Hypervisor的虚拟化技术。

X86权限层级架构

虚拟化技术中一个关键性的难题便是物理CPU的虚拟化。在X86架构的服务器体系中,存在一种称为保护环(Protection Ring)或层级保护域(Hierarchical Protected  Domain)的CPU指令特权架构,如上图所示。运行在X86架构上的操作系统(Operating System,OS)被设计为具有直接访问和控制硬件资源的权限。X86架构使用0、1、2和3四个权限Ring来控制管理硬件访问权限,其中用户应用程序运行在Ring3权限中。OS因为需要直接访问物理硬件资源而在Ring0中执行。X86架构下的这种层级授权机制也会被应用到虚拟机中。在虚拟环境中,Guest OS也需要具有Ring0权限才能访问硬件资源,但在实际中Guest OS却不能像传统Host OS一样直接获取Ring0权限,而是需要通过一系列的复杂方法才能获取Ring0权限,这些复杂的方法需要通过Hypervisor来完成,正是CPU指令赋权方法的复杂性,最终使得X86架构服务器底层虚拟化变得极为复杂。

CPU虚拟化的关键就在于如何对Guest OS的请求指令赋予不同层级的权限,而全虚拟化和准虚拟化也正是基于这种对Guest OS指令不同的赋权方法来进行划分的。

1) 在全虚拟化技术中,Guest OS之间通过Hypervisor来分享底层硬件资源。全虚拟化中,Hypervisor具备Ring0权限,Guest OS具备Ring1权限,如下图所示。

全虚拟化

全虚拟化中的Guest OS机器指令集被Hypervisor通过二进制转换方式转换为主机(Host OS)机器语言。当Guest OS(虚拟机)发出诸如访问设备驱动之类的授权指令请求时,Hypervisor便会发起对设备驱动访问的跟踪,由于Guest OS与Host OS间的差异被Hypervisor的转换机制屏蔽,因此要成为Guest OS的操作系统通常无须人为修改定制便可直接运行在虚拟机中,而如Windows这类非开源的商业操作系统在全虚拟化方式下也能正常运行,但是由于Hypervisor对Guest OS指令集的转换,使得全虚拟化方式的性能在一定程度上受其影响。

Intel的Intel-VT全虚拟化技术

为了改善全虚拟化中Hypervisor二进制指令集转换对Guest OS性能的影响,CPU芯片制造商,如Intel和AMD,也在不断改进CPU对虚拟化的支持,从而降低硬件层面的虚拟化负载。在Intel的Intel-VT虚拟化技术出现后,全虚拟化性能问题得到了极大改善,并能与准虚拟化技术相媲美(准虚拟化技术通常被认为具有更高的性能)。上图所示基于Intel-VT虚拟化技术的全虚拟化,注意Hypervisor处于Ring-1层级,而Guest OS处于Ring0层级。

2) 在准虚拟化中,当Guest OS执行授权指令时,指令会被一种称为hypercall的系统API调用传递到Hypervisor(而不是像全虚拟化一样先转换为Host OS的指令集), Hypervisor接收到来自Guest OS的hypercall之后,直接访问硬件资源并将结果返回给Guest OS,下图为XenServer的准虚拟化。

XenServer准虚拟化

在准虚拟化中,由于Guest OS可以直接控制访问CPU和内存等硬件资源,而不需经过中间的转换机制,因此准虚拟化在性能上要优于全虚拟化。但是,准虚拟化有个不切合实际的缺陷,需要更改客户机操作系统以使其能够使用hypercall这个系统API。因此,与全虚拟化不同,准虚拟化下Guest OS仅支持部分操作系统,像Windows这类商业非开源的操作系统将不能在准虚拟化的客户机上运行。为了支持准虚拟化,即使是Linux这类开源系统,也需要修改接近20%的内核代码。总体来说,准虚拟化不仅支持的Guest OS有限,而且对Guest OS进行内核级别的修改也需要专业的技术能力和大量的修改工作。

VMware的早期虚拟化软件采用的是全虚拟化方式,不过在VMware漫长的商业进化过程中,准虚拟化方式也慢慢被VMwrae支持,其原理图如下。

VmWare准虚拟化

3) 主机操作系统(Host OS)虚拟化是操作系统本身提供Hypervisor功能的虚拟化方式,原理图如下。

Host OS虚拟化

在Host OS虚拟化中,由于虚拟机实例之间不成熟的资源管理,以及性能和安全方面的问题,几乎很少使用主机操作系统虚拟化方式,例如,当运行Hypervisor的Host OS出现安全问题时,全部Guest OS都会受到影响。如果想要在个人PC上运行多个操作系统,使用Host OS的虚拟化方式是没有任何问题的,其中最为流行的当属VMware  Workstation系列产品。

4)  基于容器的虚拟化技术并不依赖传统的Hypervisor虚拟化引擎,而是在Host OS中配置虚拟服务器环境(Virtual Server  Environment,VSE),即无须在Host OS中配置Hypervisor,并且在容器虚拟化中,仅有Guest OS被仿真模拟,原理图如下。

容器虚拟化

由于容器虚拟化技术抛弃了较为复杂的,针对全部硬件资源进行虚拟化的Hypervisor,且是仅针对Guest OS的虚拟化,因此基于容器的虚拟化是一种“更轻”的虚拟化方式,也具有更好的性能。但是,这种基于容器的虚拟化技术在过去很少用于服务器虚拟化中,因为和Host OS虚拟化一样,在过去,容器虚拟化技术对虚拟机实例之间的资源和安全管理都不如Hypervisor虚拟化。

随着Docker等容器技术的发展,新的容器资源管理技术也不断涌现和成熟,如Mesos、CoreOS、Kubernetes、Swarm和Rocket等容器生态圈技术的发展,使得容器虚拟化技术在发展势头上有赶超OpenStack等主流开源云计算项目的趋势。

作者:robot_test_boy
链接:https://www.jianshu.com/p/b9900b9dec34

Hypervisor相关推荐

  1. QNX Hypervisor管理程序

    QNX Hypervisor管理程序 借助 QNX® 管理程序,可以将具有不同操作系统,不同可靠性和安全要求的多个嵌入式系统,整合到单个片上系统 (SoC) 中.可以轻松地将未修改的代码移动到最新的硬 ...

  2. hypervisor简介

    什么是hypervisor hypervisor为操作系统提供独立的虚拟硬件平台,而虚拟硬件平台反过来又提供对底层机器的虚拟的完整访问.hypervisor之于操作系统类似于操作系统之于进程. 虚拟化 ...

  3. linux 虚拟化之rhev Hypervisor 安装

    rhev hypervisor 必须要安装在真实物理机上,不能装在虚拟机上 rhev hypervisor 会重新配置物理机硬盘,上面的原有数据会全部损坏,所以如果硬盘有数据要先备份下来 每台hype ...

  4. Hyper-V备份:选择Hypervisor备份还是虚拟机备份

    TechTarget中国原创内容,原文链接:http://www.searchstorage.com.cn/showcontent.aspx?aid=54261&lg=t [TechTarge ...

  5. nova hypervisor接口添加host_ip字段

    云平台系统用户提出一个需求,要求根据物理机主机名或者IP查询其上虚拟机列表.根据主机名查询好办,nova的list接口提供了host参数:按主机IP查询就不那么直接了,需要先将IP反解析成主机名,然后 ...

  6. 渗透Xen hypervisor

    BLUEPILL和Vitriol都是目前比较流行的软件项目,可以在运行时给系统安装上恶意的hypervisor(系统管理程序).原本系统是 纯净的,什么都没有,但是这些软件可以即时的向系统中插入一段恶 ...

  7. 剖析 Linux hypervisor

    KVM 和 Lguest 简介 Linux® 的最重要创新之一就是转变为hypervisor(或运行其他操作系统的操作系统).现在涌现许多使用 Linux 作为内核的 hypervisor 解决方案. ...

  8. 遇到虚拟系统内存问题怎么办?Hypervisor帮你除bug

    服务器可靠性取决于识别错误并从错误中迅速恢复,否则可能导致服务器上所有虚拟机同时宕机的系统错误,内存错误就是其中一个重要的示例.很多内存错误是不容易重现的"软"错误,但如果没有及时 ...

  9. [Trustzone]-ARM Cortex-A Serial支持Trustzone和Hypervisor的总结

    思考: ARM有几种模式? 本文总结和列举了近些年Cortex-A系列对secure monitor和hypervisor支持的情况. 由下面这张图,也就能理解为什么有的书上说ARM有7种模式.也有说 ...

  10. [hypervisor]-ARMV8的hypervisor技术介绍–InProgress

    1.软件架构图 2.术语介绍: ➨partritions : partrition提供一种沙箱式的软件执行环境 ➨VMs和SPs :在normal叫VM,在secure叫SP(secure partr ...

最新文章

  1. java从入门到精通_想要开始学java?你要的java从入门到精通布列如下!
  2. BZOJ4671: 异或图
  3. 消除文法中一切左递归算法
  4. 在参加比赛之后一定要注意的事情
  5. 【SICP练习】57 练习2.27
  6. 有的时候不评价别人其实挺难的
  7. 第四次作业 孙保平034 李路平029
  8. 4x4矩阵键盘工作原理及扫描程序_基于复杂可编程逻辑器件实现键盘接口电路的设计...
  9. 漫步最优化四十四——基本拟牛顿法
  10. 20200702:最长公共子序列(leetcode1143)
  11. 360加固签名验证_android - 使用360加固的方法(需要在windows下面,先加固,再签名)...
  12. ECharts基础学习 (第二天)
  13. 微信小程序实现vtt视频字幕
  14. 开发小程序以及后台管理系统攥淘宝佣金
  15. 彻底理解面试难点之rb-tree(红黑树)续--对红黑树的插入和删除操作的一些理解!!!
  16. python爬取中国空气质量在线监测平台分析数据【已更新】
  17. 史上最全软件测试工程师常见的面试题总结【杭州多测师】【面试题】【杭州多测师_王sir】...
  18. Python+Wind:用Pyautogui轻松下载Wind数据
  19. flink生产环境参数配置
  20. 【个人积累】波束形成和DOA估计概念辨析

热门文章

  1. STM32F103X hal RTThread rtc驱动支持日期保存
  2. No.44-VulnHub-Pegasus: 1-Walkthrough渗透学习
  3. vue 上传视频到保利威视
  4. 你的电脑能装化学绘图软件ChemDraw吗?
  5. java语言中modifiers_Java基础——Modifier类
  6. 图像分类经典卷积神经网络—SENet论文翻译(中英文对照版)—Squeeze-and-Excitation Networks(挤压和激励网络)
  7. 前端 关于汇率的计算
  8. Qt Creator 8.0.1 (Community)创建项目出现No valid kits found怎么办?
  9. 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字
  10. MacFamilyTree 8 for Mac(家谱族谱制作)