ESXi 7 安装时缩小系统分区并释放 datastore 空间

摘要:记录安装 ESXi 7 时,通过
systemMediaSize=min将系统存储调整为最小布局、为 VMFS6 datastore 释放更多空间的方法。
大家好,我是云核筑梦家,来自成都。
在一块 400GB SSD 上安装 ESXi 7.0U3d 后,ESXi 实际识别容量为 372.61GB,但默认创建的 datastore1 只有约 244.5GB。查看磁盘分区后可以发现,ESXi 给 VMFSL/ESX-OSData 系统分区分配了约 119.9GB。
如果希望减少系统分区占用,关键不是安装完成后再调整,也不是使用 Linux 自定义分区,而是必须在 ESXi 安装器第一次启动时传入:
systemMediaSize=min无论使用 U 盘、物理光盘、iDRAC/iLO 虚拟介质、PXE 还是自动装机平台,原理都一样:必须让这个参数在安装器开始分区之前生效。
一、默认分区为什么占用这么大
本次测试环境如下:
默认分区大致如下:
这不是硬盘识别不完整,也不是存在一块可以直接划给 datastore 的未分配空间。VMFSL/ESX-OSData 用于保存系统状态、日志、组件、缓存和转储等内容。
从 ESXi 7.0 开始,系统存储布局发生了变化。对于容量足够的本地 SSD 或 HDD,安装器默认最多会为系统存储使用约 138GB 的十进制容量。
二、systemMediaSize 参数说明
从 ESXi 7.0 Update 1c 开始,官方提供了安装器启动参数 systemMediaSize,用于限制系统存储分区容量。
对于本次 400GB SSD,设置 systemMediaSize=min 后,VMFS6 datastore 正常情况下可以增加到约 340GB。实际容量会因十进制与二进制单位换算、对齐方式及具体版本存在少量差异。
官方说明:Boot option to configure the size of ESXi system partitions
三、最重要的操作原则
systemMediaSize=min 必须作为 ESXi 安装器启动参数,在安装器第一次启动、尚未创建磁盘分区时传入。
不同安装方式只是参数注入位置不同:
所以,“必须在装系统第一步设置”是对的,但不一定每次都要人工输入。批量部署时可以预先写进启动配置,最终只要安装器实际收到该参数即可。
四、手动安装操作方法
本方法适用于 U 盘、物理光盘、iDRAC/iLO 虚拟光驱等直接启动 ESXi 安装介质的场景。
1. 从 ESXi 安装介质启动
服务器从 ESXi ISO、U盘或虚拟光驱启动后,会进入 ESXi 安装器加载界面。
2. 在启动首屏按 Shift+O
在启动倒计时结束前按:
Shift+O进入启动参数编辑界面。
3. 在原参数最后追加 systemMediaSize=min
不要删除原有参数,在最后先输入一个空格,再追加:
systemMediaSize=min例如原参数为:
runweasel cdromBoot修改后应为:
runweasel cdromBoot systemMediaSize=min确认大小写和空格正确后按 Enter,继续安装。
五、PXE或自动安装操作方法
PXE 自动安装通常会加载远程 boot.cfg 和应答文件,例如:
Loading http://服务器地址/pxe/file/boot.cfg启动参数中可能包含:
ks=http://服务器地址/pxe/file/ks.cfg在 PXE 安装器启动首屏按 Shift+O,保留原有的 ks=、ksdevice= 和其他硬件兼容参数,在命令末尾追加:
systemMediaSize=min例如:
ks=http://服务器地址/pxe/file/ks.cfg ksdevice=7c:d3:0a:55:d8:2c systemMediaSize=min输入完成后按 Enter 继续安装。
如果需要长期批量使用,可以把参数直接加入 PXE 实际加载的 boot.cfg 或自动装机平台的 ESXi 启动模板中,避免每次手工输入。
六、PXE提示找不到MAC地址怎么办
如果启动界面提示:
Network boot: MAC address not found.
Add "BOOTIF=01-aa-bb-cc-dd-ee-ff" manually to the boot options.需要根据实际 PXE 启动网卡的 MAC 地址补充 BOOTIF。
例如网卡 MAC 为:
7c:d3:0a:55:d8:2c对应参数为:
BOOTIF=01-7c-d3-0a-55-d8-2c最终命令末尾可以写成:
ksdevice=7c:d3:0a:55:d8:2c BOOTIF=01-7c-d3-0a-55-d8-2c systemMediaSize=minBOOTIF 只用于帮助 PXE 安装器识别启动网卡,与磁盘容量设置不是同一个功能。如果界面没有相关警告,一般不需要额外添加。
七、使用自定义ISO自动带入参数
如果希望直接使用 ISO 安装,又不想每次按 Shift+O,可以修改 ISO 中 BIOS 和 UEFI 对应的两个配置文件:
/boot.cfg
/efi/boot/boot.cfg找到:
kernelopt=runweasel cdromBoot修改为:
kernelopt=runweasel cdromBoot systemMediaSize=min修改后需要重新生成可启动 ISO。需要注意:如果服务器实际使用 PXE 启动,PXE 可能重新加载网络上的 boot.cfg,此时 ISO 内的修改不会参与本次安装,仍应修改实际的 PXE 启动参数。
八、安装完成后验证
安装完成并登录 ESXi Web 管理界面后,依次进入:
存储 → 设备 → 选择系统硬盘 → 分区详情重点检查 VMFSL 和 VMFS 的容量。
对于本次 400GB SSD:
systemMediaSize=min 控制的是整个 ESXi 系统存储布局,不是单独把 VMFSL 设置为 33GB。因此,最终看到的单个 VMFSL 分区小于 33GB 属于正常现象。
九、常见错误
1. 安装完成后再尝试缩小 VMFSL
已经创建的 VMFSL 不能通过 ESXi Web 页面安全缩小。Broadcom 不支持安装完成后缩小 ESXi 系统分区,强行修改可能导致系统异常或无法启动。
2. 在本地硬盘启动界面添加参数
如果参数行中只有类似下面的内容:
autoPartition=FALSE bootUUID=xxxxxxxx说明当前是在启动已经安装好的 ESXi,而不是启动安装器。在这里添加 systemMediaSize=min 不会重新划分硬盘。
3. 使用 Linux 自定义分区
ESXi 不使用 EXT4、XFS 或 Linux LVM 作为系统分区和 VMFS6 datastore。即使把名称填写成 VMFSL 或 VMFS,也不会因此变成 VMware 分区。
4. 只修改 ISO,但实际从 PXE 启动
PXE 可能从网络重新加载 boot.cfg,导致 ISO 内的修改没有被使用。判断时应以启动界面实际显示的配置来源和参数为准。
5. 使用 autoPartitionOSDataSize=6144
网上可以看到通过下面参数把 OSDATA 压缩到约 6GB的做法:
autoPartitionOSDataSize=6144当前官方推荐的可控方案是 systemMediaSize=min,系统存储约 33GB。生产环境不建议为了多释放十几GB空间而把系统区压缩得过小,以免影响日志、补丁、组件和转储文件。
十、风险提醒
重新安装 ESXi 通常会清除目标硬盘上的系统、虚拟机和 datastore 数据。操作前务必确认:
已备份所有重要虚拟机和配置。
选择的是正确的目标硬盘。
安装方式会清除旧分区,而不是保留旧的 VMFS 布局。
systemMediaSize=min已经出现在本次安装器的实际启动参数中。
如果服务器对稳定性要求较高,更推荐使用独立的小容量高耐久 SSD 安装 ESXi,再将其他硬盘全部用于 VMFS6 数据存储。
总结
无论通过哪种方式安装 ESXi 7,只要希望减少 ESX-OSData 系统存储占用,都必须在安装器第一次启动、创建分区之前传入:
systemMediaSize=min手动安装可以在启动首屏按 Shift+O 输入;PXE 或自动安装可以写入实际使用的 boot.cfg 或启动模板;自定义 ISO 也可以预先修改 boot.cfg。三种方式本质完全相同,都是把参数传给 ESXi 安装器。
参数生效后,400GB SSD 的 VMFS6 datastore 通常可以从约 244GB增加到约 340GB,同时保留官方支持的最小系统存储布局。
评论