您的位置:首页 > 其它

虚拟化相关概念与技术整理(1)——关于VMM类型

2017-03-29 03:07 435 查看
做虚拟化相关的工作也有一段时间了,抽出时间把做过的项目和常用的技术梳理一下,能加深理解也能提高。

这篇文章本来打算和以前一样用英文来写,发现太过于耗费时间,毕竟不是母语写作,还是有点难度的。

这篇文章主要总结和介绍一下关于VMM的分类:

按照虚拟平台分类, 可以分为全虚拟化(Full Virtualization)和半虚拟化(Para Virtualization)。

1)全虚拟化:简单来说,就是无需对运行在虚拟化平台上的OS做任何修改;

1,软件辅助的全虚拟化

       常见做法就是优先级压缩(Ring Compression)二进制代码翻译(Binary Translation)。

      优先级压缩: 简单来说就是让guest OS跑在较VMM的ring 0 低的优先级ring 1 上,当需要执行特权指令时就触发异常,被VMM截获。

      二进制代码翻译:我的理解就是VMM对于guest的二进制代码,发现需要处理的guest指令就将其翻译成支持虚拟化的指令。

2,硬件辅助完全虚拟化

       软件辅助的虚拟化,就相当于在系统上打补丁,x86厂商尝试在硬件的层面来改善这个问题,就是在硬件本身加入足够的虚拟化功能,

可以截获操作系统对于敏感资源和敏感指令的操作,从而向VMM报告异常。

       比如说intel的VT-x, 在处理器中引入一个特殊的模式,操作系统一旦进入该模式,无法察觉该模式,但是任何操作都会被该模式报告VMM。

2)半虚拟化:在源码级别修改指令以回避虚拟化漏洞,简单来说,就是运行在虚拟化平台上的OS是被动过手脚的。

典型的做法就是修改OS的相关处理器代码,让出ring 0 ,或者定制指定的I/O协议,以期提高读写效率。

按照VMM的实现架构分类,可以分为Hypervisor模型、宿主模型和混合模型。

1)Hypervisor模型

       在这种架构里面,VMM可以视为一个具有虚拟化功能的操作系统,即管理物理资源和虚拟环境的创建、管理。

     

       优点: 效率高;  缺点:只支持部分型号设备,需要重写驱动或者协议。

典型产品:VMware ESX server3, KVM

2)宿主模型

       宿主机OS管理物理资源,VMM作为宿主机OS的一个独立的内核模块来提供虚拟化功能。

       VMM通过调用宿主OS的相关服务来获取资源,创建出来的虚拟机也作为宿主OS的一个进程来参与调度。

     

      优点:个人理解就是充分利用现有的OS的device driver,无需重写;物理资源的管理直接利用宿主OS来完成。

       缺点: 效率不够高,安全性一般、依赖于VMM和宿主OS的安全性。

典型产品: VMware server , VMware workstation,virtual  PC, virtual server,

3)混合模型

       顾名思义,混合模型就是上述两种模型的混合体。

       VMM处在最底层,拥有全部物理资源,但是与Hypervisor模型不同的是,大部分I/O设备是由一个运行在特权虚拟机中的特权OS来管理的。

       CPU和Memory的虚拟化依然由VMM来完成,而I/O的虚拟化则由VMM和特权OS来共同完成。

      混合模型集合了上述两种模型的优点,但是缺点就是经常需要在VMM与特权OS之间进行上下文切换,开销较大。

典型产品: window server 2008之hyper-v, Xen,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息