概念

● 虚拟化技术目前分为“基于虚拟机”和“基于容器”两种,前者已经有数十年成熟历史,本文讨论前者。
● 虚拟机又分为两种,一种是直接安装在裸机上,另一种是安装在操作系统上。
(1)裸机上的虚拟机,虚拟化层(图中的虚拟化软件)直接运行在系统硬件上,创建硬件全仿真实例,被称为“裸机”,也称为“裸金属架构”,如下图。

(2)操作系统上的虚拟机,虚拟化层(图中的虚拟化软件)运行在传统操作系统之上,同样创建的是硬件全仿真实例,被称为“托管”,也称为“宿主架构”,如下图。
虚拟机中应用程序调用硬件资源时需要经过:虚拟机操作系统内核->虚拟化软件的 Hypervisor->宿主机操作系统内核 ,导致性能是三种虚拟化技术中最差的。

● 虚拟化软件的核心是 Hypervisor,也叫虚拟机监视器(Virtual Machine Monitor,简称 VMM),它是运行在硬件(物理硬件或虚拟硬件)和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础硬件,可以将其看作是虚拟环境中的“元操作系统”,由它协调虚拟机访问所有硬件。

常见示例

◆ 常见的裸金属型(裸机型)
(1)VMware vSphere,其核心是 ESX(新产品称 ESXi),ESX 的 hypervisor 组件称为 VMKernel,VMkernel 会从 LinuxKernel 完全接管对硬件的控制权,而该 Linux Kernel 作为 VMkernel 的首个虚拟机,用于承载 ESX 的 serviceConsole,实现本地的一些管理功能。vSphere 虚拟机与物理机架构对比如下:

物理机架构
vSphere 虚拟机架构
ESX 架构

(2)Microsoft Hyper-V,有独立版(如 Hyper-V Server 2008)和内嵌版(如 Windows Server 2008)两种发布版本。
(3)Xen,由剑桥大学开发,开放源代码的虚拟机,支持更广泛的 CPU 架构,前两者只支持 CISC 的 X86/X86_64 CPU 架构,XEN 除此之外还支持 RISC CPU 架构,如 IA64、ARM 等。
(4)KVM(Kernel-based Virtual Machine),字面意思是基于内核的虚拟机,它利用了 CPU 的硬件辅助虚拟化能力,并重用了 Linux 内核的诸多功能,使得 KVM 本身是非常瘦小,从严格意义来说,KVM 本身并不是 Hypervisor,它仅是 Linux 内核中的一个可装载模块,其功能是将 Linux 内核转换成一个裸金属的 Hypervisor。这相对于其它裸金属架构来说是非常特别的,有些类似于宿主架构,有人称其是“半裸金属架构”。一个普通的 linux 进程有两种运行模式:内核和用户, KVM 增加了第三 种模式:客户模式(有自己的内核模式和用户模式),这使得 Linux 内核可以将主机进程和虚拟机进行统一的管理和调度。KVM 与 Xen 一样支持非 X86 CPU 架构。

◆ 常见的宿主型(主机型):
(1)VMware Server,可运行在 Windows 和 Linux 上。
(2)VMware Workstation,运行在 Windows 和 Linux 上。
(3)Fusion,只能运行在苹果的 Mac OS 上。