[云计算]HCIE-Cloud 计算虚拟化

计算虚拟化分类

  • I型 - 裸金属虚拟化

    • Xen
    • VMware的ESXi
    • 6.3版本前的FusionCompute
  • II型 - 宿主型虚拟化

    • KVM
  • VMware workstation

    • Oracle VM VirtualBox

区别

I型虚拟化性能高于II型

II型能够支持虚拟机嵌套

CPU虚拟化

  • Ring等级

    • Ring3 - 优先级最低(应用程序等)
    • Ring1&2 - 优先级次中 (操作系统服务)
    • Ring0 - 优先级最高(操作系统内核驱动程序)
  • 用户态和内核态

    • 用户态 Ring3

    • 内核态 Ring0

    • 系统调用

      • 定义:操作系统为在用户态运行的进程和硬件设备提供交互的一组接口(如Win32 API)

CPU虚拟化

  • Ring等级

    • Ring3 - 优先级最低(应用程序等)
    • Ring1&2 - 优先级次中 (操作系统服务)
    • Ring0 - 优先级最高(操作系统内核驱动程序)
  • 用户态和内核态

    • 用户态 Ring3

    • 内核态 Ring0

    • 系统调用

      • 定义:操作系统为在用户态运行的进程和硬件设备提供交互的一组接口(如Win32 API)
  • CPU指令

    • 特权指令

      • 具有特权权限的指令
        例如:清内存/重置时钟/分配系统资源/修改用户访问权限等
    • 用户指令

      • 可在各级别的状态下执行,即用户态下能够使用的非特权指令
    • CPU虚拟化需要解决的两个问题:

      一、如何模拟CPU指令(所有敏感指令)

      • 敏感指令:可以读写系统关键资源的指令叫做敏感指令

      • 特权指令:绝大多数的敏感指令是特权指令,特权指令只能在处理器的最高特权级(内核态)执行

      二、如何让多个VM共享CPU

      • 利用与Native操作系统类似的机制 --- 通过定时器中断,在终端时陷入VMM,从而根据调度机制进行调度

      • 解决方式:

        • 特权 - 解除
          (将Guest OS的Ring 0降级为RIng1&2)
        • 陷入 - 模拟
          (将Guest OS下发的特权指令由Hypervisor捕获并模拟相关操作)

平台虚拟化技术

  • 全虚拟化

    • 不用修改Guest OS,直接在VMM中运行,由Hypervisor接受所有指令
      (缺点:会加重Hypervisor的负担)
  • 半虚拟化

    • 需要修改Guest OS,才能将Guest OS运行在半虚拟化的VMM中
      (缺点:只能对开源的OS进行修改)
  • 硬件辅助虚拟化

    • 使虚拟机Guest OS处于Ring 0级别但属于非Root模式,并利用Root模式下的CPU来减轻Hypervisor的负担

内存虚拟化

  • 物理机OS认为
    • 内存都是从物理地址0开始的
    • 内存都是连续的
  • 虚拟化后出现的问题
    • 从0开始:物理地址0只有一个,无法同时满足所有的VM从0开始的要求
    • 地址连续:虽可以分配连续的物理地址,但是效率不高,缺乏灵活性(内存共享等)
  • 解决方法
    • 通过内存映射解决虚拟机内存的问题
  • 内存复用的三种技术
    • 内存共享,写时复制
      • 虚拟机共享同一物理内存空间此时只对内存做只读操作
        当需要写操作的时候,需要另开辟内存空间,并修改映射
    • 内存气泡
      • hypervisor通过Tools创建气泡进程
        欺骗空闲虚拟机已占用进程大小的内存空间
        当其他虚拟机空闲下来了后气泡进程缩小,归还内存空间,提高内存利用效率
    • 内存置换
      • 通过LRU将长时间未访问的内存内容置换到存储中(Windows叫虚拟内存,Linux叫swap交换空间),并建立映射,当虚拟机访问时再置换到内存中
      • 内存管理的页面置换算法
        • LRU,即:最近最少使用淘汰算法(Least Recently Used)。LRU是淘汰最长时间没有被使用的页面。
        • LFU,即:最不经常使用淘汰算法(Least Frequently Used)。LFU是淘汰一段时间内,使用次数最少的页面。

I/O虚拟化

  • 模拟(完全模拟)

    • 完全使用软件进行模拟,通过焦点捕获,那个主机捕获就被哪个主机使用,性能很差
  • 半虚拟化

    • 对硬件驱动,由前端(IO frontend)直接转到后端(IO backend)调用,通常仅适用于硬盘和网卡,性能高
  • IO-through

    • IO穿透,直接分配给虚拟机物理设备,例如直接分配一个硬盘或网卡给虚拟机,需要硬件支持
posted @ 2021-03-13 00:04  SkyBiuBiu  阅读(207)  评论(0编辑  收藏  举报