《从半空看虚拟化》

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

原文地址:https://www.cnblogs.com/stellar/p/7920651.html