Home

【vSAN】无 vCenter 命令行部署 vSAN

这篇文章记录在没有 vCenter 的情况下,仅通过 ESXi Shell / SSH 命令行把一个 vSAN 实验环境搭起来的过程。场景是 VMware Workstation 16 Pro 里跑嵌套 ESXi,更偏实验室和学习用途,不建议直接照搬到生产环境。

实验环境

环境为 VMware Workstation 16 Pro 嵌套 ESXi

组件IP版本配置
:---::---::---:---
ESXi_01192.168.204.1297.0.3.194825372vCPU,10GB RAM ,128GB(系统盘)+100GB(容量盘)+80GB(缓存盘)
ESXi_02192.168.204.1307.0.3.194825372vCPU,10GB RAM ,128GB(系统盘)+100GB(容量盘)+80GB(缓存盘)
ESXi_03192.168.204.1317.0.3.194825372vCPU,10GB RAM ,128GB(系统盘)+100GB(容量盘)+80GB(缓存盘)

笔记本内存只有 16GB。如果因为内存不足导致虚拟机无法开机,可以在 VMware Workstation 首选项里允许使用更大的交换空间。

部署思路

整个过程可以分成四步:

  1. 给每台 ESXi 配置 vSAN VMkernel
  2. 创建集群并让其他主机加入
  3. 把缓存盘和容量盘加入 vSAN
  4. 补齐 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 管理,容错和运维体验都会更好。

VMware 网络 存储