文章目录
- 虚拟化简介
- 什么是虚拟化?
- Hypervisor
- 概念
- Hypervisor模型
- 虚拟化技术的分类
- 软件虚拟化和硬件虚拟化
- 软件虚拟化技术
- 硬件虚拟化技术
- 参考资料
虚拟化简介
什么是虚拟化?
CPU处理能力的飞速提升。 它的另一面也就意味着, 个人单独拥有一台计算机, 从资源利用效率角度来看, 被大大闲置了的。
硬件对于软件来说,就是一堆寄存器和资源的总和。
虚拟化技术是一种资源管理技术,它可以将计算机的各种实体资源(如CPU、内存、磁盘空间、网络适配器等)予以抽象、转换后呈现出来, 以达到最大化利用物理资源的目的。
并可供分割、组合为一个或多个计算机配置环境。虚拟化技术可以将一台物理计算机虚拟为多台逻辑计算机,每个逻辑计算机可以运行不同的操作系统,应用程序可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
eg:云服务,将100台服务器硬件,提供给300个用户使用。
要实现虚拟化技术,引入了VMM中间软件层的概念。
Hypervisor
概念
Hypervisor——一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。也可叫做VMM( virtual machine monitor ),即虚拟机监视器。
Hypervisors是一种软件,它可以控制物理计算机的硬件资源,并将适量的CPU、内存、磁盘空间、网络适配器等硬件资源分配给虚拟机。
Hypervisor模型
图 1 Hypervisor的两种模型
- Type1(类型1): Hypervisor也叫native或bare-metal Hypervisor(裸金属管理程序)。 这类虚拟化层直接运行在硬件之上, 没有所谓的宿主机操作系统。 它们直接控制硬件资源以及guest机。 典型地如Xen(见1.4.1节) 和VMware ESX。
注:物理主机如SMP Server,称为host机;虚拟机中的OS称为guest机。
- Type2(类型2): Hypervisor运行在一个宿主机操作系统之上, 如VMware Workstation; 或系统里, 如KVM。 这类Hypervisor通常就是宿主机操作系统的一个应用程序, 像其他应用程序一样受宿主机操作系统的管理。 比如VMware Workstation就是运行在Windows或者Linux操作系统上的一个程序而已。 guest机是在宿主机操作系统上的一个抽象, 通常抽象为进程(vCPU进程)。
今天要详细介绍的VMM(QEMU+KVM)是类型二的Hypervisor。
虚拟化技术的分类
软件虚拟化和硬件虚拟化
软件虚拟化技术
执行方式:软件虚拟化通过VMM(Virtual Machine Monitor)层纯软件的环境来模拟执行guest机里的指令。其中QEMU可以将使用guest机指令集的二进制代码转换为宿主机指令集的二进制代码,然后交给实际的物理平台执行。
guest二进制指令—>VMM截获—>转换为host指令集的二进制代码—>实际物理平台执行
图 2 软件虚拟化执行方式
guest机的每一条目标平台(x86、arm)指令都会被QEMU截取, 并翻译成宿主机平台(x86、arm)的指令, 然后交给实际的物理平台(x86、arm)执行。
缺点:由于每一条都需要这么操作一下, 其虚拟化性能是比较差的, 同时其软件复杂度也大大增加。
优点:可以呈现各种平台给guest机, 只要其二进制翻译支持。
硬件虚拟化技术
执行方式:硬件虚拟化技术就是指计算机硬件本身提供能力让guest机指令独立执行, 而不需要(严格来说是不完全需要) VMM截获重定向。
图 3 硬件辅助虚拟化执行方式
AMD-V技术,全称AMD Virtualization,是AMD为其处理器开发的一种硬件辅助虚拟化技术。AMD-V实现了完全的硬件虚拟化,将VMM(虚拟机监视器)从Hypervisor完全转移到硬件中,提高虚拟化效率。
Intel VT技术,即Intel公司的Virtualization Technology,也是为解决纯软件虚拟化解决方案在可靠性、安全性和性能上的不足而开发的硬件辅助虚拟化技术。与AMD-V不同,Intel VT仅支持部分特性和指令集,例如用于存放虚拟机状态和控制信息的VMCS(虚拟机控制结构)等。
后文着重介绍Intel VT
- Intel VT可以让一个CPU工作起来像多个CPU在并行运行
- 单CPU模拟多CPU并行,可以实现单机同时运行多操作系统。
- Intel VT虚拟化技术的实施需要处理器、芯片组、BIOS、VMM软件的同时支持,这些特定的硬件、软件必须全部到位。
优点:Guest二进制指令直接运行在物理CPU上,没有VMM截获转换,性能较高。
缺点:
- 实现复杂,硬件虚拟化需要支持虚拟化扩展的CPU硬件,实现相对复杂。
- 由于Guest二进制指令直接运行在物理CPU上,硬件虚拟化只能跑同架构的虚拟机。例如,基于x86硬件虚拟化的虚拟机软件不能运行在ARM架构上。
参考资料
什么是虚拟化