zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

计算虚拟化

2023-04-18 16:56:58 时间

一、计算虚拟化的介绍

1、什么是计算虚拟化

云计算1.0时代以虚拟化为主,并在此基础上进一步发展,因此,虚拟化也成为云计算的入门技术。我们再资源商又可以将虚拟化分为:计算虚拟化、存储虚拟化、网络虚拟化。

2、计算虚拟化的分类

从服务器组建角度来看,计算虚拟化可以分为CPU虚拟化、内存虚拟化、I/O虚拟化。CPU虚拟化的目标是保障CPU资源的合理调度以及虚拟机上的指令能正常高效的执行。内存虚拟化的目标是保障内存空间的合理分配、管理、隔离以及高效可靠地使用。I/O虚拟化的目标是保障虚拟机(VM)的输入输出隔离,可以正常高效地执行。

  • CPU虚拟化
  1. 分级保护域:Ring0:拥有最高权限,一般只有操作系统和驱动才会允许拥有此权限。Ring1Ring2Ring3:权限最低,所有程序都可以拥有此权限。
  2. 两种指令:特权指令、普通指令。还有一条敏感指令,能够修改虚拟机得到运行模式或宿主机状态的指令。
  3. 两个阶段:
  1. 大型机时代(PowerPC架构,精简指令集RISC计算架构)的CPU共享问题。缺陷:定时器中断机制。

解决方法:(1)特权解除:将虚拟机运行在非特权权限,VMM运行于最高级别权限。(2)陷入模拟:普通指令仍然直接在硬件上执行。当需要执行特权指令时,将指令陷入到VMM层模拟执行,再由VMM代替虚拟机到底层硬件执行相应指令,并返回结果给VM。

  1. X86架构(复杂指令集CISC计算架构)。缺陷:敏感指令集和特权指令集不重合。

解决方法:(1)全虚拟化:将所有的指令全部发送到VMM,由VMM进行二进制翻译,如果发现是特权指令或敏感指令,就陷入VMM模拟执行。好处:不需要修改虚拟机的操作系统,虚拟机支持的操作系统更多。缺点:性能消耗大,VMM开发难度大。(2)半虚拟化:将VM的操作系统进行修改,让虚拟机知道自己是虚拟化了的,VM可以通过“超级调用(Hypercall)”替换虚拟化中的敏感指令。好处:提供了与原始系统相近的性能。缺点:只有开源的操作系统才能修改,支持的操作系统少,可移植性差。(3)硬件辅助虚拟化:让物理硬件直接支持虚拟化功能,并且能够识别敏感指令。为CPU新增一个root模式,VMM运行于root模式,特权指令和敏感指令就可以直接发送到VMM执行。

  • 内存虚拟化
  1. 物理机如何使用内存:(1)内存地址从物理地址0开始(2)内存地址空间分配时要求连续(3)物理内存(4)虚拟内存
  2. 内存虚拟化:将物理机内存进行统一管理,引用一个新的内存空间,让虚拟机运行于新的内存空间中。四个内存地址:物理机的物理地址(HPA)、物理机的虚拟地址(HVA)、虚拟机的物理地址(GPA)、虚拟机的内存地址(GVA)。影子页表:从软件上实现GVA到HPA的转换,由Hypervisor将影子页表载入物理上的内存管理单元(MMU)。缺点:技术复杂、内存开销大
  • I/O虚拟化
  1. 全虚:VMM为虚拟机直接模拟出一个与真实设备相似的IO设备
  2. 半虚:建立一个特权级别的虚拟机,特权虚拟机(Dom0):安装原生驱动和后端驱动;普通虚拟机(DomU):安装前端驱动。
  3. IO透传:直接将IO设备安装给VM使用
  4. 硬件辅助虚拟化:直接将IO驱动安装在VM中