虚拟化系列介绍(二)

举报
开发者学堂小助 发表于 2017/09/14 11:23:04 2017/09/14
【摘要】 在《虚拟化系列介绍(一)》文章里,主要介绍了程序虚拟化(常见的就是Java虚拟机);混合虚拟化(常见的有微软的Virtual PC;VMware的VMware Workstation;VirtualBox等)和裸金属架构虚拟化(常见的有VMware ESX Server,微软的Hyper-V(微软2003年收购Connectix后获得的技术发展而来

对上节虚拟化技术的补
        在《虚拟化系列介绍(一)》文章里,主要介绍了程序虚拟化(常见的就是Java虚拟机);混合虚拟化(常见的有微软的Virtual PC;VMware的VMware Workstation;VirtualBox等)和裸金属架构虚拟化(常见的有VMware ESX Server,微软的Hyper-V(微软2003年收购Connectix后获得的技术发展而来),思杰收购的XenServer(源于英国剑桥大学计算机实验室开发的一个Xen虚拟化开源项目),Redhat,大华为等推荐的KVM)。
        后来有人问及还有全虚拟化,半虚拟化,操作系统虚拟化等,然后说我是不是搞错了,搞混了。其实我想说你们没有错,多种名词和说法都可以,我的那种说法也是对的——问题的主要原因,是“横看成林侧成峰,远近高低各不同”,“仁者见仁,智者见智”,也就是说看法和角度不同而已。

             下面我们再聊一下全虚拟化,半虚拟化,操作系统寄生虚拟化等。

        至于虚拟化中细分的CPU虚拟化,内存虚拟化和 I/O虚拟化,还有二进制代码翻译,Hypercall,VT-x,影子页表,页表写入法,EPT,VT-d等技术细节或名词术语,作者也没什么研究,我们大多数情况下了解知道大概即可。
        程序虚拟化和混合虚拟化,一般都不能用在服务器、数据中心层面的,为什么:效率太低,依赖性太大,安全隔离不足,不用多说。
        能用在服务器、数据中心层面的虚拟化技术,硬要分类,可以说有裸金属架构虚拟化(典型的代表就是常见的有VMware ESX Server,微软的Hyper-V,思杰的XenServer)和寄生内核虚拟化(典型代表是KVM,Kernel-based Virtual Machine,意为基于内核的虚拟机;2008年9月,红帽收购了名叫Qumranet的以色列公司得到KVM的虚拟化技术;VMWare现在也朝着内核寄生架构走,因为他的Hypervisor需要管理),两者区别简单表示如下图九所示。
                
        (图九、裸金属架构虚拟化和寄生内核虚拟化,以下个别图,懒得打水印了)
       同时由于KVM仅是一个内核模块,用户无法直接操作内核空间,所以需要一个用户空间的模拟工具QEMU来模拟各种硬件外设,可见,这种基于内核的虚拟化技术性能稍低前者,因为至少多了一层开销,并且由于Linux Kernel的原因图形和多媒体方面表现实在一般(我想很多开源技术贡献者和粉丝不太认同这点,那我建议有条件可以去公平客观的测试比较一下)。

        同时我也谈及VMware ESX Server由于把底层物理硬件的驱动程序整合到Hypervisor管理层中,所以管理层显得比较胖,我们不妨称其为胖虚拟化。这种架构对于底层物理硬件的要求比较高,兼容性和安全性的挑战比较高。
        微软的Hyper-V,Hypervisor管理层仅用于管理CPU和内存,而不包含底层物理硬件的驱动程序,所以管理层显得比较瘦,我们不妨称其为瘦虚拟化。由于不包含硬件驱动,所以代码量比较小,安全性更高、兼容性也更好。
        也就是说,从Hypervisor层来看,又可分为胖虚拟化和瘦虚拟化。

        另外,从支持的来宾操作系统和性能上来说,又可以分为半虚拟化,全虚拟化。进一步介绍如下。
半虚拟化(ParaVirtulization)
        简介:它利用CPU的虚拟化技术来实现Hypervisor对底层硬件的共享访问,但是由于在Hypervisor 上面运行的来宾操作系统已经集成与半虚拟化有关的代码,使得来宾操作系统能够非常好地配合Hyperivosr来实现虚拟化。通过这种方法将无需重新编译或捕获特权指令,使其性能非常接近物理机,其最经典的产品就是微软的Hyper-V,思杰的Xen,可见对应上面的廋虚拟化。
        优点:这种模式和全虚拟化相比,架构更精简,而且在整体速度上有一定的优势。
        缺点:需要对来宾操作系统进行修改,所以在支持的来宾操作系统方面比较少。

            代表XEN:

        (图十、XEN架构)

全虚拟化(FullVirtulization)
        简介:它与半虚拟化有一些类似,它也利用Hypervisor在客户操作系统和硬件之间捕捉和处理那些对虚拟化敏感的特权指令,使客户操作系统无需修改就能运行,速度会根据不同的实现而不同(它有借助CPU硬件的技术实现,也有软件完全模拟的部分),大致能满足用户的需求。这种方式有KVM,VMware ESX,可见对应上面的胖虚拟化。。
        优点:无需修改就能支持几乎所有的来宾操作系统,也就是说兼容性不错。
        缺点:因为某些部分有模拟的功能,所以I/O和性能方面相对前者较差。

            代表KVM


        (图十一、KVM)

            额的个神,上面两张图看得有点头晕,我们能不能简化一下,用大伙都能理解的语言说?答案是能,并简化如下:

            两者的差别,最简化可以用下图十二和图十三表示。

            
        (图十二、半虚拟化)

            
        (图十三、全虚拟化)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:hwclouds.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。