Hypervisor 是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中 的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫 虚拟机监视器(Virtual Machine Monitor)。
Hypervisor 是所有虚拟化技术的核心。非中断地支持多工作负载迁移的能力是Hypervisor 的基本功能。当服务器启动并执行 Hypervisor 时,它会给每 一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统。
虚拟化技术架构
Hypervisor,常见的 Hypervisor 分两类:
Type-I(裸金属型)
指 VMM 直接运作在裸机上,使用和管理底层的硬件资源,GuestOS 对真 实硬件资源的访问都要 通过 VMM 来完成,作为底层硬件 的直接操作者, VMM 拥有硬件的驱动程序。裸金属虚拟化中Hypervisor 直接管理调用硬件资源,不需要底层操作系统,也可以理解为 Hypervisor 被做成了一个很薄的操作系统。 这种方案的性能处于主机虚拟化与操作系统虚 拟化之间 。代表是VMware ESX Server、Citrix XenServer 和 Microsoft Hyper-V,Linux KVM。
Type-II 型(宿主型)
指 VMM 之下还有一层宿主操作系统,由于 Guest OS 对硬件的访问必须 经过宿主操作系统,因而带来了额外的性能开销,但可充分利用宿主操作系统 提供的设备驱动和底层服务来进行内存管理、进程调度和资源管理等。主机虚 拟化中 VM 的应用程序调用硬件资源时需要经过:VM 内核->Hypervisor->主机内核 ,导致性能是三种虚拟化技术中最差的 。主 机虚拟化技术代表是VMware Server(GSX)、Workstation 和 Microsoft Virtual PC 、 Virtual Server 等。
由于主机型 Hypervisor的效率问题 ,多数厂商采用了裸机型 Hypervisor 中的 Linux KVM 虚拟化,即为 Type-I(裸金属型)。
KVM(Kenerl-based Virtual Machine)是基于 linux 内核虚拟化技术,自 linux2.6.20 之后就集成在linux 的各个主要发行版本中。它使用 linux 自身的 调度器进行管理,所以相对于 xen,其核心源码很少。
KVM 是基于硬件虚拟化扩展(Intel VT- X )和 QEMU 的修改版,KVM 属于 Linux kernel 的一个模块,可以用命令 modprobe 去加载 KVM 模块。加 载了该模块后,才能进一步通过工具创建虚拟机。但是仅有 KVM 模块是不够 的。因为用户无法直接控制内核去做事情,还必须有一个运行在用户空间的工具才行。这个用户空间的工具,我们选择了已经成型的开源虚拟化软件 QEMU,QEMU 也是一个虚拟化软件,它的特点是可虚拟不同的 CPU,比如说在x86的CPU 上可虚拟一个 power 的 CPU,并可利用它编译出可运行在 power 上的 CPU,并可利用它编译出可运行在 power 上的程序。KVM 使用了 QEMU的一部分,并稍加改造,就成了可控制 KVM 的用户空间工具了。这就是 KVM 和 QEMU 的关系。如下图:
一个普通的 linux 进程有两种运行模式:内核和用户。而 KVM 增加了第三 种模式:客户模式(有自己的内核和用户模式)。在 kvm 模型中,每一个虚拟 机都是由 linux 调度程序管理的标准进程。
总体来说,kvm 由两个部分组成:一个是管理虚拟硬件的设备驱动,该驱 动使用字符设备/dev/kvm作为管理接口;另一个是模拟 PC 硬件的用户空间组 件,这是一个稍作修改的 qemu 进程。
参考博客:
1、 KVM 虚拟化技术之Hypervisor 架构
2、https://zhuanlan.zhihu.com/p/69629212 虚拟化技术
3、https://zhuanlan.zhihu.com/p/69625751 虚拟化技术 - CPU虚拟化