美文网首页
一、计算虚拟化简介

一、计算虚拟化简介

作者: gg大宇 | 来源:发表于2019-06-12 17:32 被阅读0次

    虚拟化只是云计算的入门技术。
    不要把虚拟化和云计算搞混了
    计算虚拟化发展史:


    image.png

    名词概念:


    image.png

    虚拟化分类:


    image.png

    在I型中是不需要Host OS的,VMM可以直接调用硬件资源,或者说VMM就是一个定制的host OS。hypervisor作用:1、识别、捕获 响应虚拟机发出的CPU的特权指令2、负责处理虚拟机的队列和调度,并将物理硬件处理结果发送给虚拟机。
    优点:虚拟机不依赖操作系统,支持多种操作系统以及多种应用
    缺点:虚拟化层的内核开发难度大
    例如:xen、kvm、funshioncompute
    II型虚拟化
    VMM是Host OS上一个普通的应用程序
    优点:简单 易于实现,安装和应用依赖主机操作系统对设备的支持
    缺点:管理开销大,性能损耗大
    虚拟化特点:


    image.png

    分区:在单一物理服务器上可同时运行多个虚拟机,按需使用硬件资源池中的资源
    隔离:每个虚拟机之间都是隔离的,业务互不影响
    封装:整个虚拟机的环境封装在独立的文件中,可以通过移动复制这些文件来移动和复制该虚拟机
    独立:相对于硬件独立,虚拟机无需任何修改,可以在任何物理服务器上运行,实现虚拟机的热迁移。
    热迁移:虚拟机保存和恢复通常是将整个虚拟机的运行状态完整保存下来,同时可以快速的恢复到原有硬件平台,甚至是不同硬件平台上,恢复以后虚拟机仍旧平滑运行。用户不会查到任何差异。
    CPU虚拟化:
    CPU的分级保护域,CPU被分为了几个环,就是Ring0-3。 Ring0权限最高,Ring3 权限最低。
    Ring0的权限可以直接操纵硬件,一般只有操作系统或者驱动才有Ring0的权限。
    Ring3权限最低,普通的所有的程序都可以有Ring3的权限。

    敏感指令:只有在虚拟化才会有的这个,全虚拟化和半虚拟化
    全虚拟化:Guest OS在执行这个敏感指令的时候 Hypervisor也会得到这个消息,然后Hypervisor去翻译这个指令,去调用硬件,并把返回结果给Guest OS。整个过程中Guest OS并不知道自己是一个虚拟机,他就认为自己执行了敏感指令,在整个过程中等于是敏感指令被执行了两次。hypervisor也去执行了,但同时Hypervisor也要翻译这个敏感指令,是需要消耗硬件资源的,所以全的效率没有半虚拟化高。
    半虚拟化:虚拟机知道自己是虚拟机,应用在看到虚拟机执行敏感指令直接调用了hypercall,然后用hypervisor去执行,把结果返回给虚拟机,等于只执行了一次。半虚拟化缺陷:某些闭源虚拟化是不支持的。
    硬件虚拟化:CPU把保护域分为了root和非root,都有ring0-3,guestOS运行在非root下的Ring0-3


    image.png image.png

    内存虚拟化
    采用地址映射,让客户机觉得自己运行在真实物理机上,VMM把虚拟机内存映射给物理机。每个虚拟机都认为自己的内存是连续的,而映射到物理机上其实是零散的。


    image.png

    I/O虚拟化


    image.png

    模拟没有半虚拟化性能好。
    IO透传不经过hypervisor层,性能最好。需要硬件支持。

    主流虚拟化技术:


    image.png

    KVM简介:
    KVM是linux内核的一个模块,当一个安装linux操作系统的物理机,安装了KVM模块,他就变成了hypervisor,同时还不会影响原先在物理机上运行的程序。而且他的每个虚拟机都是一个进程,可以在linux界面使用kill命令,把进程杀掉。
    一个普通的linux安装了KVM会增加三个运行模式。
    1、Guest mode 主要指虚拟机(CPU\内存、磁盘等虚拟设备)一种受限的cpu模式
    2、user mode 主要运行QUMU,模拟虚拟机实现I/O类的操作请求。
    3、kernel mode 可以真正的硬件操作。


    image.png

    KVM体系架构


    image.png

    管理工具中Virsh和Virsh-install是命令行模式
    Virt-manager和Virt-viewer是图形化模式
    KVM的Kernel和 QEMU是核心组件。组成了整个虚拟化的解决方案。所有的硬件交互都需要使用QEMU
    KVM用来做CPU内存虚拟化, QEMU用来做IO设备虚拟化,比如网卡啊,硬盘等模拟虚拟化。QEMU+KVM就是一套完整的解决方案了。
    Libvirt
    是一个开源的项目,可以直接管理KVM,向上提供了各个语言的接口


    image.png

    KVM I/O操作流程(默认)
    可以看出来 无论是请求还是返回的结果都会经过KVM,KVM是没有对这个请求做什么处理的。


    image.png

    KVM I/O操作流程-Virtio
    不经过KVM,把请求和返回的结果都放在vring这。提升了IO虚拟化的性能,这就是半虚拟化。


    image.png

    FusionCompute架构
    FusionCompute的管理工具是VRM,可以提供一个WEB的图形化界面,可以看到各种状态。


    image.png

    优势


    image.png

    组件


    image.png

    相关文章

      网友评论

          本文标题:一、计算虚拟化简介

          本文链接:https://www.haomeiwen.com/subject/gmylfctx.html