深入解析VMware ESXi软件架构
深入解析VMware ESXi软件架构
VMware ESXi是VMware公司推出的一款基于Hypervisor架构的虚拟化平台,它可以直接在服务器硬件上运行,为虚拟机提供资源调度和管理功能。本文将详细介绍ESXi的软件架构,包括其核心组件、文件系统、网络管理、用户权限以及管理模型等关键部分。
VMkernel
VMkernel是VMware开发的操作系统,拥有常见操作系统的功能,例如进程创建和控制、信号处理、文件系统等功能。它是专门为密集运行多台虚拟机而设计,并提供以下核心功能:
- 资源调度
- I/O堆栈(网络与存储IO堆栈)
- 硬件设备驱动程序
文件系统
VMkernel内部的文件系统包含两部分,分别是内存文件系统和VMFS分布式文件系统。
内存文件系统
VMkernel使用简单的内存文件系统来分别保存ESXi配置文件、日志文件和临时的修补程序。由于是内存文件系统,当ESXi重启后该文件系统不保存原有数据,相当于内存文件系统所在目录重启就会被清空。以下是VMkernel中内存文件系统对应的路径:
- 配置文件路径:/etc/vmware
- 日志文件路径:/var/log/
- 修补程序路径:/tmp/
VMFS分布式文件系统
VMFS文件系统主要用来储存虚拟机。在ESXi中使用VMFS文件系统存放虚拟机的存储空间称为VMFS Datastore,它可以由主机本地硬盘或者网络共享存储创建,是可支持多主机共享访问的文件系统。
VMkernel文件系统特点
- 远程登录的命令行可以同时管理内存文件系统和VMFS文件系统
- ESXi可以支持网络存储启动,如采用网络存储启动,服务器本机不需要要配置硬盘
- 由于日志文件存放在内存文件系统,不支持永久保存,如需要保存日志文件必需配置远程的syslog server
用户和组
ESXi允许在系统内部定义用户和组,当使用Virtual Infrastructure Client/Web Client、SSH或者the VIM API访问ESXi时可通过不同用户和组来区分身份。
- ESXi组一般包含多个用户,支持以组为单位去控制权限,ESXi有一些内置的组和用户,可作为辨别VMkernel中运行的多个进程的手段。
- ESXi用户和组的配置文件存放路径:/etc/passwd, /etc/shadow, /etc/
标准虚拟交换机
vSphere Standard Switch(VSS)的工作模式类似物理交换机。虚拟机连接到虚拟交换机,实现虚拟机之间的通讯。vSphere Standard Switch可以通过物理网卡连接到物理交换机并通过上联链路链接到物理网络中。
Standard Port Group Network
虚拟机并不是直接连接到虚拟交换机的,而是通过port groups连接到虚拟交换机。一般来说一个vSphere Standard Switch拥有一个或者多个port groups。用户可以为port group指定一些参数,例如:为每个不同port group设置带宽控制和vLAN标签等等。那么连接到这个port group的所有虚拟机的网络都会继承这个port group的网络属性。
Vmkernel Network
顾名思义,是与vmkernel相关的网络,用于连接虚拟交换机和主机的网络。主要用途包括管理网络IP,IP存储(NAS和iSCSI client ip)、vMotion、FT等相关的网络设置。
User World
User world功能类似POSIX,但它不是为运行通用应用程序而设计的机制,仅仅是为在hypervisor环境下运行的进程提供的足够框架。User world具备以下特性:
- 一部分信号被限制
- 是POSIX的子集
- 严格限制使用/proc
Swap文件
- 单个swap文件可以被整个user world进程使用
- ESXi有本地磁盘的情况下,系统在vfat分区中自动创建swap文件
- ESXi没有本地磁盘的情况下,可以指定swap文件挂载到一个远程的VMFS Datastore之上。
DCUI
The Direct Console User Interface (DCUI)是在ESXi本地的用户界面,界面操作有点类似BIOS,主要用途是提供配置管理以及故障处理功能。包括以下功能:
- 设置管理员密码
- 设置网络信息
- 简单网络连通性测试
- 查看日志
- 重启代理程序
- 还原系统状态
ESXi一般在系统安装后通过DCUI配置网络,后面就通过vCenter或者远程工具访问ESXi。
User World上的其他进程
ESXi移除了Service Console,VMware的一些管理功能从Service Console移植到user world上运行。
- hostd
hostd进程为VMkernel提供编程接口,VI client和VI API可以直接使用hostd - vpxa
vpxa进程是用于连接vCenter的agent,该进程使用系统内置用户vpxuser的身份运行。vpxa实际上作为hostd与vCenter之间的代理角色 - HA agent
vCenter HA代理 - syslog daemon
当配置了远程syslog server后,syslog daemon负责发送日志到syslog server - iSCSI发现
用于初次发现和处理iSCSI Target,后续所有操作都由VMkernel来处理。 - NTP synchronization
NTP时间同步代理 - SNMP
SNMP监控代理
ESXi管理模型
ESXi管理模型设计的核心思想
- 可集中式管理,包括运维操作和策略
- 计算基础架构是无状态的,可切换到不同设备上运行
- 系统使用定义优良的标准化API进行通讯,取代难以定位和审计的非结构化的交互式会话
ESXi的管理模型由CIM、VI API和SSI等几个机制组成,下面将简要介绍各个机制的原理
System State Information(SSI)机制
- 使用少数几个配置文件保存ESXi系统状态信息
- 配置文件同时保存在内存,并复制到持久化存储,即使服务器突然掉电,重启后会自动载入最后一份存储的配置文件进行启动
- 可通过下载配置文件进行备份系统配置
- 可将配置文件复制到其他ESXi服务器上使用
以上机制可保证ESXi系统与配置解耦,系统配置更容易备份与还原。任意安装了ESXi系统的主机都可以成为无状态的载体,通过导入配置,快速地就绪并提供服务。
Common Information Model
The Common Information Model (CIM)是一个开放的标准,用于展示和管理计算资源。这个是无代理的软件框架。主要包含两种组件:
- CIM providers
CIM providers主要用作底层硬件和设备驱动的管理入口,服务器厂商和硬件设备厂商可以依照CIM标准编写providers,用于监控和管理硬件。VMware自身也会提供providers,用于监控服务器,存储以及其他特定的虚拟化资源。 - CIM broker
CIM broker收集所有providers的信息后,通过标准的API(包括WS-MAN协议)展现给外界。
VI API
VMware Virtual Infrastructure API为开发集成VMware Infrastructure程序提供了強大的接口。它允许的你的程序调用vCenter上的vCenter Web Service接口功能管理和控制ESXi。
- VI Client可用通过VI API访问vCenter以及直接管理ESXi主机
- vCenter与ESXi之间的通讯是通过vCenter私有协议
VI API与CIM标准共同提供一种远程中心管理ESXi的方案
方案优势:
- 无代理,避免底层硬件改变、重新安装或者更新而引起的代理程序调整,所有监控和管理相关的程序都可以放在外部。
- 管理多个主机更加简单(比起管理多个代理)
- 无代理,使得ESXi变成一个无状态的实体,虚拟机可以无需调整地在不同服务器上运行。
ESXi分区说明
ESXi系统所在磁盘根据功能需要被分成多个区域,下面将简要介绍各个区域的用途
- 引导分区
容量为4MB,用于ESXi系统引导 - 活动系统分区
容量为250MB,用于储存操作系统及相关文件,其中Core Hyprevisor(VMkernel)占用32MB,其余是用于存放服务器制造商定制程序(CIM providers)。 - 备用系统分区
容量与活动系统分区一样(250MB),该分区初始状态为空白,当ESXi系统执行升级,升级操作将写入备用系统分区,保留原来版本在活动系统分区,升级成功后,备用系统分区转为活跃分区进行启动。当新升级的分区无法正常启动,则可使用原来版本分区进行启动,可有效防止系统升级失败导致无法启动的问题。 - 存储分区
容量为286MB,主要用于存放各种操作系统对应的VMtools软件。 - 日志分区
容量为4GB,当系统需要导出VM-Support日志时,该目录作为导出日志存放路径。 - 第一Core Dump分区
容量为110MB,用于存放ESXi系统Crash日志,主要用于故障分析 - 第二Core Dump分区
容量为2.5GB,作为第一Core Dump分区的扩展,当第一Core Dump分区日志已满,自动写入第二Core Dump分区。