概述

虚拟化(Virtualization)是一种资源管理技术,是将计算机的各种实体资源, 如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间 的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。通过虚拟化技术,用户可以最大限度的利用计算机资源,而不受地理、物理上的限制。

虚拟化技术发展

虚拟化介绍 虚拟化技术百科_虚拟化技术

虚拟化技术分类

现代计算机系统在实现时,自下而上被划分成了多个层次,每一个层次都向上一层次呈现一个抽象,并且每一层只需知道下层抽象的接口,而无需了解其内部运作机制。计算机系统的抽象层次和对应接口如下图所示:

虚拟化介绍 虚拟化技术百科_虚拟化_02

  • 硬件向上对软件提供的指令集抽象ISA通常分为系统ISA和用户ISA,其中,系统ISA提供特权操作,只能在操作系统内核态运行;用户ISA在用户态和内核态都可以使用;
  • 操作系统运行于硬件之上,向下管理硬件资源,向上提供系统调用接口。
  • 库函数调用提供系统运行时、系统公共服务和第三方程序,运行于用户态,以函数库的形式供应用程序调用。

不同抽象层次的虚拟化

本质上,虚拟化就是由位于下层的软件模块,通过向上一层软件模块提供一个与它原先所期待的运行环境完全一致的接口的方法,抽象出一个虚拟的软件或硬件接口,使得上层软件可以直接运行在虚拟的环境上。虚拟化技术可以应用于从硬件到软件的不同计算机系统层次上,硬件和软件资源在不同层次的抽象对应了不同的虚拟化技术:

虚拟化介绍 虚拟化技术百科_虚拟化_03

物理硬件层的虚拟化

硬件抽象层上的虚拟化是指通过虚拟硬件抽象层来实现虚拟机,为客户机操作系统呈现和物理硬件相同或相近的硬件抽象层,又称为指令集级虚拟化,实现在此层的虚拟化粒度是最小的。
实现在此层的虚拟化技术可以对整个计算机系统进行虚拟,即可将一台物理计算机系统虚拟化为一台或多台虚拟计算机系统,故又可称作系统级虚拟化。每个虚拟计算机系统(简称为虚拟机)都拥有自己的虚拟硬件(如CPU、内存和设备等),来提供一个独立的虚拟机执行环境。每个虚拟机中的操作系统可以完全不同,并且它们的执行环境是完全独立的。由于客户机操作系统所能看到的是硬件抽象层,因此,客户机操作系统的行为和在物理平台上没有什么区别。

操作系统层上的虚拟化

操作系统层上的虚拟化是指操作系统的内核可以提供多个互相隔离的用户态实例。这些用户态实例(经常被称为容器)对于它的用户来说就像是一台真实的计算机,有自己独立的文件系统、网络、系统设置和库函数等。
由于这是操作系统内核主动提供的虚拟化,因此操作系统层上的虚拟化通常非常高效,它的虚拟化资源和性能开销非常小,也不需要有硬件的特殊支持。但它的灵活性相对较小,每个容器中的操作系统通常必须是同一种操作系统。另外,操作系统层上的虚拟化虽然为用户态实例间提供了比较强的隔离性,但其粒度是比较粗的。

库函数层上的虚拟化

操作系统通常会通过应用级的库函数提供给应用程序一组服务,例如文件操作服务、时间操作服务等。这些库函数可以隐藏操作系统内部的一些细节,使得应用程序编程更为简单。不同的操作系统库函数有着不同的服务接口,例如Linux的服务接口是不同于Windows的。库函数层上的虚拟化就是通过虚拟化操作系统的应用级库函数的服务接口,使得应用程序不需要修改,就可以在不同的操作系统中无缝运行,从而提高系统间的互操作性。
例如,Wine就是在Linux上模拟了Windows的库函数接口,使得一个Windows应用程序能够在Linux上正常运行。

编程语言层上的虚拟化

另一大类编程语言层上的虚拟机称为语言级虚拟机,例如JVM(Java Virtual Machine)和微软的CLR(Common Language Runtime)。这一类虚拟机运行的是进程级的作业,所不同的是这些程序所针对的不是一个硬件上存在的体系结构,而是一个虚拟体系结构。这些程序的代码首先被编译为针对其虚拟体系结构的中间代码,再由虚拟机的运行时支持系统翻译为硬件的机器语言进行执行。

虚拟化架构分类

寄居虚拟化架构

寄居虚拟化架构指在宿主操作系统之上安装和运行虚拟化程序,依赖于宿主操作系统对设备的支持和物理资源的管理。(类似 Vmware Workstation 的程序)

虚拟化介绍 虚拟化技术百科_库函数_04

裸金属虚拟化架构

裸金属虚拟化架构指直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用,依赖虚拟层内核和服务器控制台进行管理。

虚拟化介绍 虚拟化技术百科_库函数_05

操作系统虚拟化架构

操作系统虚拟化架构在操作系统层面增加虚拟服务器功能。操作系统虚拟化架构把单个的操作系统划分为多个容器,使用容器管理器来进行管理。宿主操作系统负责在多个虚拟服务器(即容器)之间分配硬件资源,并且让这些服务器彼此独立。

虚拟化介绍 虚拟化技术百科_虚拟化介绍_06

混合虚拟化架构

混合虚拟化架构将一个内核级驱动器插入到宿主操作系统内核。这个驱动器作为虚拟硬件管理器来协调虚拟机和宿主操作系统之间的硬件访问。

虚拟化介绍 虚拟化技术百科_虚拟化技术_07

相关参考

*《系统虚拟化——原理与实现》
*《深入浅出系统虚拟化:原理与实践》

  • 虚拟化技术的分类及介绍:https://baijiahao.baidu.com/s?id=1655760893821661126&wfr=spider&for=pc