VMware ESXi 修改「虚拟闪存」容量拯救小磁盘
不学无术 暂无评论

最近折腾软路由,因此给迷你小主机联想 M73 Tiny 装了 ESXi 用于提供底层虚拟化。

其实还是为了更好地利用资源,毕竟 4C8G 只安装一个 LEDE 或者 OpenWrt 就有点浪费了。

差池

磁盘空间NaN

▲ 制盘、安装一条龙,进入系统控制面板后发现磁盘空间 NaN 可用空间为空。

以为是磁盘镜像有问题,于是重新制作启动盘,并且使用 PE 格式化分区,重新安装发现问题复现。

仔细观察 DiskGenius 分区表,可以看到磁盘被划分成了四个分区,除了标准的 EFI 引导分区外还有三个分区,两个 4G 大小的系统空间和一个巨大的未知分区。

溯源

搜索后发现已经有完美解决方案了,问题在于自 ESXi 7.0 版本后会自动划分 120GiB 磁盘给「虚拟闪存」。虚拟闪存类似于 Windows 的虚拟内存,提供更大的交换空间,为虚拟机提供读缓存,提升虚拟机的存储性能。

参见新版(7.0)的 ESXi硬件要求 可知:

ESXi 7.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 卷中的一个文件。

因磁盘使用的是英特尔 S3500 80G 拆机硬盘,不足 142GB ,新版本会自动将磁盘分区为引导磁盘和 ESX-OSData 卷(即 Virtual Flash 分区),默认没有 VMFS 数据存储卷,也就导致图1中的问题。

解决

对于服务器上巨大的磁盘来说,如此策略当然没有问题,还可以免费提升虚拟机性能,何乐而不为,但是作为家用软路由就很是浪费了,但是注意:此分区不能直接使用磁盘分区工具进行删除等硬性操作,会导致系统崩溃或者虚拟机无法正常创建或引导

引导选项

▲ 在启动显示以上界面时在3秒内按下 SHIFT+O 组合键(字母O不是数字0)即可修改引导选项。

在最后加上 autoPartitionOSDataSize 参数即可定制虚拟闪存大小。

<ENTER: Apply options and boot>
> cdromBoot runweasel autoPartitionOSDataSize=8192
注意:默认已有 cdromBoot runweasel 段,务必需要在后面加上空格分隔参数!!默认单位为 MB ,例子为分配 8G,毕竟磁盘只有可怜的 80GB 容量。

然后一路安装即可,在部分主机上使用 DP 接口可能无法看到此界面,可以在按电源后一直按着组合键或者尝试使用 VGA 接口显示器(如果有的话)。

恢复正常

▲ 重新安装后即可看到虚拟闪存已经变成 8 GiB ,存储空间已经恢复正常。


附录

参考链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。