[Virtualization]ESXi体系结构与内存管理(一)体系结构

充分了解ESXi的内存管理机制是开展VMkernel系统漏洞挖掘和研究虚拟机逃逸等技术的必备基础知识。希望此文能够帮助曾被或仍被ESXi复杂内存管理机制虐心的同学们。


虚拟化技术的发展与应用极大地降低了企业成本(管理和资金成本),也改变了我们的工作方式:它的普及不仅让运维人员管理规模从一个机房降到一个机柜,还让测试人员使用十几台主机压缩到一台服务器。在虚拟化技术发展中诞生了众多新技术,内存组织与管理无疑是其中最精彩绝伦的技术之一。本文首先介绍了ESXi的体系结构和关键组件,然后介绍了三种内存分配与控制方法,最后介绍了五种高级内存管理技术。

1 ESXi组成体系

VMware ESXi是一款行业领先、专门构建的裸机hypervisor(摘自VMware官方简介),是运行在物理服务器和操作系统之间的软件中间层。ESXi支持在一个物理机上同时运行多个客户机操作系统(虚拟机),统一调度分配CPU、内存、网络和磁盘等硬件设备,极大提高硬件使用效率,实现所有硬件资源共享。

笔者参考VMware官方文档,结合个人理解绘制ESXi体系结构如图 1所示,图中将ESXi体系划分成三层:硬件层、核心管理层和辅助管理层。硬件层主要包括CPU、内存等硬件设备;核心管理层主要包括由类POSIX操作系统VMkernel提供的各类功能服务;辅助管理层主要包括VMkernel辅助用户监控管理虚拟机的多个代理和守护进程。下面将依次介绍核心管理层和部分辅助管理层组件(参考文献[1]Components of ESXi 和文献[2]Chapter 2 The ESXi Hypervisor)。

[Virtualization]ESXi体系结构与内存管理(一)体系结构_第1张图片

图 1 ESXi体系结构图(参考文献[1]Figure1,3)

1.1 VMkernel

VMkernel是由VMware设计开发的64位微内核类POSIX操作系统,是ESXi的构建基础。VMkernel类似于其它通用操作系统,提供进程管理、文件管理等底层基础,同时为了更好地支持多虚拟机运行,还丰富改进了CPU资源调度、内存分配管理、磁盘和网络输入输出堆栈控制、设备驱动维护等。VMkernel使用简单的内存文件系统来存储ESXi的配置文件、日志文件和补丁等,使用专为虚拟磁盘和交换文件等大型文件设计和优化的群集文件系统VMware虚拟机文件系统(VMFS)存储虚拟机。

1.2 Worlds

Worlds是运行在VMkernel操作系统上的进程。和其它操作系统上的进程类似,每个Worlds拥有独立受保护的内存空间,分时使用CPU资源和基本的权限控制等特性。在VMkernel上可以将Worlds划分为三类:System Worlds、VMM Worlds和User Worlds,具体介绍如下。

1.2.1 System Worlds

系统Worlds(System Worlds)是运行在特殊的内核模式下的Worlds,它可以在系统权限下运行进程。例如idle和helper都是系统Worlds。

1.2.2 VMM Worlds

虚拟机监控Worlds(Virtual Machine Monitor Worlds)是用户空间的抽象,它允许每个客户机操作系统都能使用虚拟的x86硬件,为每个虚拟机分配调度必要的BIOS、处理器、内存、磁盘和网卡等硬件资源。

1.2.3 User Worlds

用户Worlds(User Worlds)是运行在一般的用户模式下的Worlds,它利用VMkernel提供的系统调用实现与虚拟机和系统的交互。例如hostd、vpxa和syslog都是用户Worlds。

1.3 ESXi代理

为了便于对物理服务器和虚拟机的综合监控和管理,VMkernel还同时运行着多个代理和守护进程。

1.3.1 hostd

hostd是ESXi的主要管理进程。vSphere客户端和远程API调用利用hostd实现对VMkernel的管理控制。

1.3.2 vpxa

vpxa是vCenter与hostd的中间代理。vCenter利用首次连接ESXi服务器时创建的vpxuser账户和vpxa服务实现与hostd的通信,进而实现对VMkernel的监控管理。

1.3.3 syslog

syslog依据用户配置,记录ESXi服务器操作报警等信息至本地或远程日志服务器。

1.3.4 DCUI

直接控制台用户界面(Direct Console User Interface,DCUI)是显示在ESXi系统控制台上的本地用户界面。管理员利用DCUI可以对ESXi服务器进行修改密码、配置网络、查看日志、重启与关机等基本操作。

你可能感兴趣的:(#,虚拟技术)