• 《从半空看虚拟化》


    1. 一虚多、多虚一

    Server
    Application
    Plat(Nv1)
    OS
    Hypervisor(1vN)
    Hardware

    Plat: Hadoop技术
    Hypervisor: KVM/XEN


    2. 申请虚拟机最基本的4要素:CPU/内存/硬盘/带宽
    虚拟化之后是两层OS:
    底层OS(VMM)负责虚拟机到硬件资源的调用和协调
    上层OS(GuestOS):所有业务应用都运行其上

    特权解除和陷入模拟(经典的虚拟化技术)
    VMM拥有超级特权,运行在ring0核心级别
    GuestOS运行在ring1~ring3的用户级别,取消其特权指令在核心级别直接运行的权利
    当GuestOS 运行特权指令时,这些指令产生异常并被VMM捕获到,VMM会在核心级别模拟执行,然后将执行结果返回给GuestOS

    对于x86的CISC指令集,存在17条非特权指令的敏感指令,这些指令会在GuestOS中的ring1级别直接执行,这样就无法产生异常而
    陷入ring0级别处理,也就导致无法使用经典的虚拟化技术

    关于虚拟化的分类以及不同的解决方案也就是为了解决以上问题而产生的(涉及3个对象:GuestOS/VMM/CPU指令集)
    1)只修改VMM --- 全虚拟化
    优点:兼容性强
    缺点:效率低

    全虚拟化有细分为3种主要方案:
    其中Emulation是根本解决方案,而其余两种可以理解为是Emulation在X86体系上使用的扩展实现方案
    a. Emulation
    主要思路:VMM将GuestOS的指令进行读取,不区分用户指令和敏感指令,一直运行在ring0级别,周而复始,逐条执行
    代表产品:Qemu

    b. Scan-and-Patch
    主要思路:将GuestOS的每条指令在执行前先扫描一遍,找出敏感指令替换为跳转指令并指向在VMM中生出的补丁指令,
    由补丁指令执行返回结果给GuestOS
    代表产品:VirtualBox

    c. Binary Translation
    主要思路:将GuestOS中的指令段在执行前进行整段翻译,将其中的敏感指令替换为ring0中执行的特权指令,在执行的同时
    在翻译下一段指令段,交叉处理
    代表产品:VMware Workstation

    2)修改GuestOS --- 半虚拟化
    优点:效率高
    缺点:windows不兼容
    代表产品:xen、hyper-v

    首先谈谈cpu半虚拟化
    基本原理:VMM公布一些称为hypercall的接口函数,然后在guestos中根据这些接口函数修改内核代码以代替17条敏感指令来
    执行系统调用,修改后的指令称为hypercalls,guestos可以通过hypercalls直接调用VMM进行系统调用,效率提高


    3)修改cpu指令集 --- 硬件辅助虚拟化
    优点:GuestOS无需改动,兼容windows和linux,VMM使用效率也高
    缺点:增加一些虚拟化指令和结构,导致cpu利用率下降,部分场景性能不如半虚拟化
    但随着intel/AMD对其支持,硬件辅助虚拟化已成为主流

    针对特权指令为CPU添加了一个执行模式,特权和敏感调用自动陷入hypervisor,不再需要二进制翻译或半虚拟化

    两个特性:
    a. 增加了VMCS(Virtual-Machine Control Structure)数据结构和13条专门对于VM的处理指令 --- 提升VM切换时的处理效率
    b. 引入root/non-root操作模式 --- 解决GuestOS敏感指令无法陷入的问题


    3. I/O虚拟化:
    1)将I/O服务和设备驱动都直接装载在hypervisor的MiniOS上
    优点:性能较高
    缺点:Hypervisor会变得很大;对新设备的驱动加载不够方便,有时需升级整个hypervisor

    2)通过加载一个服务系统(Domain0)来减小Hypervisor的负担,所有产品驱动都安装在服务系统上
    优点:便于其他外设硬件的管理和增加变化
    hypervisor越小越安全,降低故障风险
    缺点:资源调用需经过Domain0,性能会稍低

    前两种I/O虚拟化方案可对照cpu的FV和PV来分析

    3)从硬件层面对各个设备进行划分,分配给不通的GuestOS来使用,由每个GuestOS来自行维护使用的I/O和
    设备驱动,hypervisor只提供通道
    优点:VM可以达到最高的性能,hypervisor可以达到最小的代码量
    缺点:设备非完全共享,并且对VM迁移提出一定挑战


    4. 网卡虚拟化
    1)每个VM发出的流量有两种去向
    去向一:服务器外的网络
    虚拟化隔离,给每个VM一个专用通道,公用物理网卡资源
    去向二:访问本服务器内部的其他VM
    主流处理方式是在Hypervisor中建立Virtual Switch,内部软件转换,无需走到服务器外

    2)网卡虚拟化.PNG

    3)网卡硬件虚拟化
    VT-c
    SR-IOV

  • 相关阅读:
    VUE(vue对象的简单属性)
    使用Dockerfile封装Django镜像
    Django路由小知识
    字符编码小知识
    python值的引用传递和go语言的值传递
    centos输入正确的账号和密码登陆不进去
    迅为4412开发平台Zigbee模块在物联网智能家居中的应用
    全新升级4412开发板项目学习实战资料
    迅为4418开发板平台应用于智能门禁系统
    【分享】iTOP-iMX6UL开发板驱动看门狗 watchdog 以及 Linux-c 测试例程
  • 原文地址:https://www.cnblogs.com/stellar/p/7920651.html
Copyright © 2020-2023  润新知