ESXi内核是什么?ESXi是Linux内核吗?

ESXi内核是什么?ESXi是Linux内核吗?

VMware的ESXi是一个备受关注的产品。许多人常常混淆ESXi与Linux内核之间的关系。

最常问到的问题是:

ESXi的内核其实就是Linux吗?

先说结论:曾经是,现在不是。

  1. 古老版本的ESX内核的确是用Linux内核(注意这个ESX没有i)。
  2. 转向新的ESXi后,Linux内核的依赖关系已经不存在。
  3. ESXi有自己的内核,称为vmkernel。

在这篇博文中,我们将深入探讨ESXi的架构及其与Linux内核的关系。一起来了解下ESXi的内核的历史。


ESXi的架构和内核的历史

ESXi是一种裸机(bare metal)虚拟化解决方案,它直接运行在硬件之上,而无需依赖操作系统,这一点与其他VMware产品有所不同。ESXi包含自己的内核,称为vmkernel。值得注意的是,在早期的VMware ESX版本中,Linux内核首先被启动,然后用于加载各种专用的虚拟化组件,包括vmkernel组件。可以说,当时的Linux内核是主要的虚拟机,由服务控制台调用。在正常运行时,vmkernel直接运行在物理计算机上,而基于Linux的服务控制台作为第一个虚拟机运行。

然而,自从VMware在4.1版本后停止开发ESX并转向ESXi后,ESXi中完全不再包含Linux内核。这个变革就意味着ESXi完全依赖于vmkernel来进行虚拟化管理,而不再需要Linux内核的支持。

截取来自VMworld 2017的ESXi架构图

vmkernel的角色

vmkernel是一个微内核,它提供了三个主要接口:硬件接口、客户系统接口和服务控制台(Console OS)接口。

硬件接口

vmkernel直接处理CPU和内存,使用扫描前执行(SBE)技术来处理特殊或特权的CPU指令,并利用系统资源分配表(SRAT)来跟踪已分配的内存。

模块访问

对于其他硬件(如网络或存储设备)的访问,则通过模块进行处理。这些模块中至少有一些是从Linux内核模块派生而来的。为了访问这些模块,vmkernel包含一个名为vmklinux的附加模块,它实现了Linux模块接口。根据README文件的说明,“这个模块包含vmkernel使用的Linux仿真层”。

ESXi内核VMkernel的示意图,可以看到像hostd,vpxd等关键模块

总结:ESXi不是用Linux内核,ESXi的内核是vmkernel

虽然早期的VMware ESX依赖于Linux内核作为其服务控制台,但自从转向ESXi后,这种依赖关系已经不存在。ESXi的vmkernel独立于Linux内核运行,直接管理硬件资源,并通过专用的模块处理硬件访问。

目前的ESXi来说,尽管某些模块借鉴了Linux内核模块的设计,但这并不意味着ESXi本身包含或依赖于Linux内核。所以说,ESXi是一种独立的、专用的虚拟化解决方案,与Linux内核有着清晰的分界。

图书推介 - 京东自营

24小时热门

需要协助?或者只是想技术交流一下,直接联系我们!

推荐更多

VMware快速入门

如何使用ESXCLI命令删除VMware ESXi上的软件包

这篇文章介绍了如何在VMware ESXi上移除VIB包,VIB包是用于扩展ESXi功能的软件组件。通过正确的方法删除不需要的VIB包,可以帮助优化系统性能并确保兼容性。