在ESXi7中,根据https://docs.vmware.com/cn/VMware-vSphere/7.0/com.vmware.esxi.install.doc/GUID-DEB8086A-306B-4239-BF76-E354679202FC.html的如下说明:
ESXi7.0 安装或升级的存储要求 要安装 ESXi 7.0,USB 或 SD 设备的引导设备至少需要为 8 GB,其他设备类型的引导设备至少需要为 32 GB。要升级到 ESXi 7.0,引导设备至少需要为 4 GB。从本地磁盘、SAN 或 iSCSI LUN 引导时,要求具有 32 GB 磁盘以便能够创建系统存储卷,其中包括引导分区、引导槽和基于 VMFS-L 的 ESX-OSData 卷。ESX-OSData 卷负责旧版 /scratch 分区、VM-tools 和核心转储目标的工作。 建议的 ESXi 7.0 安装选项如下所示: 8 GB USB 或 SD 以及额外的 32 GB 本地磁盘。ESXi 引导分区位于 USB 或 SD 上,ESX-OSData 卷位于本地磁盘上。 至少具有 32 GB 的本地磁盘。该磁盘包含引导分区和 ESX-OSData 卷。 本地磁盘为 142 GB 或更大。该磁盘包含引导分区、ESX-OSData 卷和 VMFS 数据存储。 ESXi 7.0 系统存储卷最多可占用 138 GB 的磁盘空间。仅当本地磁盘设备至少有 4 GB 的额外可用空间时,才会创建 VMFS 数据存储。要与本地 VMFS 数据存储共享引导设备,您需要使用 142 GB 或更大的本地磁盘。 如果找不到本地磁盘,则 ESXi 7.0 会在降级模式下运行,即某些功能处于禁用状态,且 /scratch 分区位于 RAM 磁盘上并链接到 /tmp。您可以重新配置 /scratch 以使用单独的磁盘或 LUN。为实现最佳性能和内存优化,请勿在降级模式下运行 ESXi。 升级到 ESXi 7.0 的过程会对引导设备重新进行分区,将原始核心转储、locker 和暂存分区整合到 ESX-OSData 卷中。如果未配置自定义核心转储目标,则默认核心转储位置为 ESX-OSData 卷中的一个文件。
按照官方文档,如果我们想用的硬盘既做系统分区,又想把剩余空间做Datastore,那么至少需要分配142GB空间。小于142GB时则不能创建Datastore。实测使用140G HDD硬盘时稍有出入,但可见Datastore空间VMFS只有12G左右,OSDATA Volume大概占用120G.
如果所用硬盘是SSD(我分配了128G),OSDATA Volume默认还是大概占用120G,文件系统是VFFS,在ESXi web控制台中查看被用作了虚拟闪存。
ESXi引入虚拟闪存已经好多年了,虚拟闪存用作ESXi主机交换缓存,从而提升在该主机上运行的虚拟机的性能,为虚拟机提供读缓存,提升虚拟机的存储性能。
在企业所用的服务器环境中,这点硬盘占用不算什么,但是对于一些使用比较小的硬盘来做ESXi的系统硬盘的home lab玩家,假如被占用如此多的空间来做系统分区或者虚拟闪存,那Datastore空间就会吃紧了。
解决办法:
官方没有提供给用户如何去不使用虚拟闪存的文档,但其实ESXi提供了autoPartitionOSDataSize这个启动参数用来调整ESXi的系统分区大小。调整的是OSDATA这个Volume的大小。我们来试试这个参数能否节省我们的硬盘空间。
先来试试HDD,我同样使用140G HDD,在如下启动界面,按下Shift+O,加上autoPartitionOSDataSize=8192,然后回车。
安装完成之后检查硬盘占用,VMFS Datastore大概有124G,OSDATA Volume仅占用8G左右(我们设置的8192)
再来试试SSD,我还是来分配128G,也加上autoPartitionOSDataSize=8192,安装完成后检查硬盘占用VMFS Datastore大概有112G, OSData Volume仅占用8G左右(我们设置的8192).
查看虚拟闪存仅占用8G左右
问题解决。
综合上面的测试,最根本的原因是ESXi7的系统分区OSData默认会占用120G左右硬盘空间,不管是HDD还是SSD,而当硬盘是SSD时,还会将此空间作为虚拟闪存,所以我们的解决方案就是调整系统的OSData分区大小。
此文参考了https://www.virtuallyghetto.com/2020/05/changing-the-default-size-of-the-esx-osdata-volume-in-esxi-7-0.html的相关内容和官方发行说明。
《如何不让ESXi7.0的虚拟闪存占掉你的小硬盘》有4个想法