ESXI 效劳器启动时,第一启动 Linux Kernel,通过那个操作系统加载虚拟
化组件,最重要的是 ESX 的 Hypervisor 组件,称之为 VMkernel,VMkernel
会从 LinuxKernel 完全接管对硬件的操纵权,而该 Linux Kernel作为 VMkernel
的首个虚拟机,用于承载 ESX 的 serviceConsole,实现本地的一些治理功能。
VMkernel 负责为所承载的虚拟机调度所有的硬件资源,但不同类型的硬件会有
些区别。
虚拟机关于 CPU 和内存资源是通过 VMkernel 直接访问,最大程度地减少
了开销,CPU 的直接访问得益于CPU硬件辅助虚拟化(Intel VT-x和AMD AMD-
V,第一代虚拟化技术),内存的直接访问得益于 MMU(内存治理单元,属于 CPU
中的一项特点)硬件辅助虚拟化(Intel EPT 和 AMD RVI/NPT,第二代虚拟化技
术)。
虚拟机关于 I/O 设备的访问那么有多种方式,以网卡为例,有两种方式可供
选择:一 是 利用 I/O MMU 硬件辅助虚拟 化 (Intel VT-d 和 AMD-Vi) 的
VMDirectPath I/O,使得虚拟性能够直接访问硬件设备,从而减少对 CPU 的开
销;二是利用半虚拟化的设备VMXNETx,网卡的物理驱动在VMkernel 中,在
虚拟 机中装载网卡的虚拟驱动,通过这二者的配对来访问网卡,与仿真式网卡
(IntelE1000)相较有着较高的效率。半虚拟化设备的安装是由虚拟机中 VMware
tool 来实现的,能够在 Windows 虚拟机的右下角找到它。网卡的这两种方式,
前者有着显著的先进性,但后者用得更为普遍,因为 VMDirectPath I/O 与
VMware 虚拟化的一些核心功能不兼容,如:热迁移、快照、容错、内存过量利
用等。