【vSAN】无 vCenter 命令行部署 vSAN
这篇文章记录在没有 vCenter 的情况下,仅通过 ESXi Shell / SSH 命令行把一个 vSAN 实验环境搭起来的过程。场景是 VMware Workstation 16 Pro 里跑嵌套 ESXi,更偏实验室和学习用途,不建议直接照搬到生产环境。
实验环境
环境为 VMware Workstation 16 Pro 嵌套 ESXi。
| 组件 | IP | 版本 | 配置 |
|---|---|---|---|
| :---: | :---: | :---: | --- |
| ESXi_01 | 192.168.204.129 | 7.0.3.19482537 | 2vCPU,10GB RAM ,128GB(系统盘)+100GB(容量盘)+80GB(缓存盘) |
| ESXi_02 | 192.168.204.130 | 7.0.3.19482537 | 2vCPU,10GB RAM ,128GB(系统盘)+100GB(容量盘)+80GB(缓存盘) |
| ESXi_03 | 192.168.204.131 | 7.0.3.19482537 | 2vCPU,10GB RAM ,128GB(系统盘)+100GB(容量盘)+80GB(缓存盘) |
笔记本内存只有 16GB。如果因为内存不足导致虚拟机无法开机,可以在 VMware Workstation 首选项里允许使用更大的交换空间。


部署思路
整个过程可以分成四步:
- 给每台
ESXi配置vSAN VMkernel - 创建集群并让其他主机加入
- 把缓存盘和容量盘加入
vSAN - 补齐
Unicast Agent信息,确认集群通信正常
开始部署
先在所有 ESXi 主机上开启 SSH。
创建 VMkernel
esxcli vsan network ip add -i vmk0

创建 vSAN 集群
esxcli vsan cluster new
检查集群状态
esxcli vsan cluster get

记录下 Sub-Cluster UUID,后面其他主机加入集群时要用到。
其他主机要加入这个集群
主机加入集群
esxcli vsan cluster join -u 5274c825-a79e-13f3-c15e-ca33c07cc635


主机数变成2

主机数变成3

将主机硬盘添加到 vSAN 存储
查看主机磁盘
vdq -q

先查看磁盘是否具备加入 vSAN 的条件,再执行添加操作。
esxcli vsan storage add -s t10.NVMe____VMware_Virtual_NVMe_Disk________________VMWare_NVME_0000____00000002 -d mpx.vmhba0:C0:T0:L0
其中-s t10.NVMe____VMware_Virtual_NVMe_Disk是添加SSD磁盘,
-d mpx.vmhba0:C0:T0:L是添加HDD磁盘,但是因为我这个b

这里之所以报错,是因为实验环境底层是 NVMe SSD,系统把磁盘都识别成了闪存设备,所以需要手动定义容量盘角色。
esxcli vsan storage tag add -t capacityFlash -d mpx.vmhba0:C0:T0:L0
然后再加入vSAN
esxcli vsan storage add -s t10.NVMe_VMware_Virtual_NVMe_DiskVMWare_NVME_0000___00000002 -d mpx.vmhba0:C0:T0:L0
加入的时候会有点卡


因为几台主机都是克隆出来的,磁盘结构基本一致,所以相同命令也要在其他主机上各执行一遍。
配置 Unicast Agent 信息
把其他主机的 UUID 加入到本机。
查看本机的存不存在其他主机的UUID
esxcli vsan cluster unicastagent list

使用cmmds-tool whoami查看本机的UUID信息和其他主机UUID信息

添加其他主机的UUID信息到本机
esxcli vsan cluster unicastagent add -t node -u 62c9064e-0c8f-0b60-3a8a-000c296902e4 -U true -a 192.168.204.131 -p 12321
其中 -u 后面是主机的 UUID,可以通过 cmmds-tool whoami 查看;-a 是主机 IP,-p 是端口号。
依此类推所有主机都要存在其他两个主机的UUID。



验证结果
最后检查 vSAN 容量和数据存储状态,确认集群已经可用。


总结
无 vCenter 命令行部署 vSAN 的重点,不是命令本身多复杂,而是要清楚每一步分别在解决什么问题:
VMkernel负责vSAN网络cluster new / join负责建立集群关系storage add / tag add负责磁盘角色unicastagent负责节点间通信
对于实验环境来说,这样做非常适合理解 vSAN 的底层组成;但如果是正式环境,还是建议优先通过 vCenter 管理,容错和运维体验都会更好。