虚拟化是云计算的底层支撑技术。以前一台主机的各种硬件设备只能被操作系统管理、使用。有了虚拟化技术(VMM/Hypervisor 虚拟机监控器、QEMU、Intel-VT...),一台主机的各种硬件设备可以“分割成”几个部分分别被运行在主机上的不同的(Guest)操作系统使用。
从不同的视角,虚拟化技术有不同的分类。
软硬件实现的角度
软件虚拟化
QEMU,完全由软件模拟 VMM 层。它实际是通过软件仿真出目标平台。目标平台指令-->QEMU 翻译-->宿主机平台指令。
硬件虚拟化
计算机硬件自身就提供让 guest os 使用能力,而无需(特殊情况需要)VMM 截获处理。2005,Intel VT。
Guest 是否与 VMM 协作
全虚拟化
Guest 环境里无需针对虚拟化安装任何程序/驱动,虚拟化的工作完全由 VMM/Hypervisor 截获并处理。Guest 完全不知道自己运行在虚拟硬件之上。
半虚拟化
需要在 Guest 环境里安装驱动与 VMM 协同工作来完成虚拟化,就是半虚拟化。因为你需要在 Guest 里运行特殊的用于虚拟化的程序,所以对 guest 来说是有侵入的。这不是很理想,但是好处是可以减轻 VMM 的复杂度。代表技术:virtio。
是否依赖操作系统
Type1
VMM/Hypervisor 直接运行在硬件之上,不依赖其它操作系统。代表产品 VMware ESXi、Xen。(其实 ESXi 就是一个精简的 linux...)
Type2
VMM/Hypervisor 运行在操作系统之上。比如 VMware Workstation。
有的文章把 KVM 算作 Type2。实际上它是以内核模块的方式实现了 VMM 的功能,同时硬件的管理也是依靠宿主操作系统的内核模块管理。从这个角度看其实 ESXi 只是定制得更狠些的 KVM 。。。