[云计算]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,直接在VMM中运行,由Hypervisor接受所有指令
-
半虚拟化
- 需要修改Guest OS,才能将Guest OS运行在半虚拟化的VMM中
(缺点:只能对开源的OS进行修改)
- 需要修改Guest OS,才能将Guest OS运行在半虚拟化的VMM中
-
硬件辅助虚拟化
- 使虚拟机Guest OS处于Ring 0级别但属于非Root模式,并利用Root模式下的CPU来减轻Hypervisor的负担
内存虚拟化
- 物理机OS认为
- 内存都是从物理地址0开始的
- 内存都是连续的
- 虚拟化后出现的问题
- 从0开始:物理地址0只有一个,无法同时满足所有的VM从0开始的要求
- 地址连续:虽可以分配连续的物理地址,但是效率不高,缺乏灵活性(内存共享等)
- 解决方法
- 通过内存映射解决虚拟机内存的问题
- 内存复用的三种技术
- 内存共享,写时复制
- 虚拟机共享同一物理内存空间此时只对内存做只读操作
当需要写操作的时候,需要另开辟内存空间,并修改映射
- 虚拟机共享同一物理内存空间此时只对内存做只读操作
- 内存气泡
- hypervisor通过Tools创建气泡进程
欺骗空闲虚拟机已占用进程大小的内存空间
当其他虚拟机空闲下来了后气泡进程缩小,归还内存空间,提高内存利用效率
- 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穿透,直接分配给虚拟机物理设备,例如直接分配一个硬盘或网卡给虚拟机,需要硬件支持