虚拟化技术 KVM

2021/05/17 虚拟化 KVM 共 2155 字,约 7 分钟

虚拟化

在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分割、组合为一个或多个电脑配置环境。由此,打破实体结构间的不可切割的障碍,使用户可以比原本的配置更好的方式来应用这些电脑硬件资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理配置所限制。一般所指的虚拟化资源包括计算能力和资料存储。

历史

虚拟化技术起源于 20 世纪 60 年代末,美国 IBM 公司当时开发了一套被称作虚拟机监视器(Virtual Machine Monitor)的软件,该软件作为计算机硬件层上面的一层软件抽象层,将计算机硬件虚拟分割成一个或多个虚拟机,并提供多用户对大型计算机的同时、交互访问。

分类

系统、存储、网络、GPU、软件、硬件

关键字及扩展知识

虚拟化平台 VMM(Virtual Machine Monitor)

运行客户机 Guest VM(客户机)

X86 保护环:Ring0(内核、系统运行)、Ring1、Ring2、Ring3(各类应用程序)

虚拟化技术分类

纯软件仿真

通过模拟完整的硬件环境虚拟化来宾平台

产品:QEMU、Bochs、PearPC

缺点:效率低

虚拟化层翻译

全虚拟化(无硬件支持模式)

Hypervisor 运行在 Ring0,Guest VM 运行在 Ring1,客户机中的应用程序在 Ring3

这种模式下,Guest VM 无需修改(本身并不知道在虚拟化环境)

机制是进行 异常捕捉–> 捕获翻译,这个步骤本身有一定的消耗

半虚拟化(也称类虚拟化)

Hypervisor 运行在 Ring0,Guest VM 进行修改之后,也运行在 Ring0 中,客户机中的应用程序在 Ring3

Linux 系统可以做,开源,可修改源码;windows 不行。无代码。

全虚拟化(硬件辅助模式)

Inter VT 和 AMD-V 创建了 Ring -1 提供给 Hypervisor 使用,Guest VM 运行在 Ring0

容器

无需 Hypervisor ,对于操作系统来说,一个容器就是一个进程

虚拟化主流模型

Hypervisor 模型

在 hypervisor 模型中,VMM 是一个完备的操作系统,它除了具备传统操作系统的功能,还具备虚拟化功能。包括 CPU、内存和 I/O 设备在内的所有物理资源都归 VMM 所有,因此 VMM 不仅要负责虚拟机环境的创建和管理,还承担着管理物理资源的责任。

这种方式是比较高效的,然而 I/O 设备种类繁多,管理所有设备就意味着大量的驱动开发工作。在实际的产品中,厂商会根据产品定位,有选择的支持一些 I/O 设备,而不是对所有的 I/O 设备都提供支持。

Host 模型(宿主机)

在 host 模型中,物理资源由 host OS 管理,host OS 是传统操作系统(比如 Linux),这些传统操作系统并不是为虚拟化而设计的,因此本身并不具备虚拟化功能,实际的虚拟化功能由 VMM 来提供。

VMM 作为 host OS 中一个独立的内核模块,通过调用 host OS 的服务来获得资源,实现 CPU、内存和 I/O 设备的虚拟化。VMM 创建出虚拟机之后,通常将虚拟机作为 host OS 的一个进程参与调度。

Host 模型最大的优点就是可以充分利用现有操作系统的设备驱动程序,VMM 不需要为各种 I/O 设备重新实现驱动,可以专注于物理资源的虚拟化;缺点在于,由于 VMM 是借助 host OS 的服务来操作硬件,而不是直接操作硬件,因此受限于 host OS 服务的支持,可能导致硬件利用的不充分。

从架构上看,由 Qumranet 公司开发的 KVM(Kernel-based Virtual Machine)就是属于 host 模型的,kernel-based,顾名思义就是基于操作系统内核。KVM 于 2007 年被集成到 Linux 内核 2.6.20 版本,并于 2008 年被 Red Hat 收购。

随着越来越多的虚拟化功能被加入到 Linux 内核当中,Linux 已经越来越像一个 hypervisor 了,从这个角度看,KVM 也可以算是 hypervisor 模型了。

混合模型

在混合模型中,VMM 依然位于最底层,拥有所有的物理资源,但为了利用现有操作系统的 I/O 设备驱动程序,VMM 会将大部分的 I/O 设备交由一个运行在特权级别的虚拟机操作系统(Service OS)来处理,自己则主要负责 CPU 管理和内存管理。

混合模型可以说是结合了上述两种模型的优点,既不需要另外开发 I/O 设备驱动程序,又可以通过直接控制 CPU 和内存实现对这些物理资源的充分利用,以提高效率。

但它也是存在缺点的,当来自 guest OS 的 I/O 请求发送到 VMM 后,VMM 需要将这些请求转发到 service OS,这无疑增加了上下文的开销。混合模型的代表有 Xen,Intel 最近推出的 Acrn,以及我国工程师写的 minos。

上面介绍的这三种 VMM 实现模型和全虚拟化/类虚拟化的 guest VM 之间并没有直接的对应关系,比如 Xen 就既可以支持类虚拟化的 guest VM,也可以支持全虚拟化的 guest VM。

还有一种划分方法是将 VMM 分为基于 bare-metal 的 type-1 和基于 OS 的 type-2,从这个角度划分的话,hypervisor 模型和混合模型都是属于 type-1 的,host 模型则是属于 type-2 的。

文档信息

Search

    Table of Contents