概述
简单描述一下情况,原6台服务器的虚拟化集群《记录联想开天 KR722h G3虚拟化平台部署实践》当初因为某些原因没能直接使用分布式存储,而这次需要基于当前的环境进行整改,且需要保证不影响当前正在运行的业务,没有多余的主机了,那么就只能从当前的集群中拆一部分主机来部署一个新的vSAN集群,待部署完成后通过跨集群的方式将当前的业务在线迁移至vSAN集群中,让数据不落地。
整个环境中的硬件没发生变化,此次部署的方式和深信服的HCI如出一辙,使用同一块HBA卡做RAID和JBOD共存,型号是:RAID 940-8i 4GB Flash PCIe Gen4 12Gb Adapter,计划使用3台主机部署最小生成环境,待部署完成后将业务虚拟机迁移完成后再逐步增加vSAN集群中的主机成员。
RAID卡的情况:
- VD:RAID 1 480GB*2 OS使用
- NVME 3.49 TB *2 缓存盘
- HDD 8TB*6容量盘
因为原来HDD做了RAID5,故在部署之前需要将其删除,再配置为JBOD模式。
JBOD配置
选中 Virtual Drive Management 回车进入,会列出当前所有 VD。

选中RAID5 那一条虚拟磁盘,回车,找到 Delete Virtual Drive 选项,执行删除。

按ESC回到主菜单 → Controller Management → Make JBOD

全部6块硬盘已经勾选,都是刚才删除RAID5释放出来的 Unconfigured Good 盘,没有包含RAID1系统盘。 直接选中OK回车确认,执行转换为JBOD。

最后再检查下,确认无误后按F10保存并重启。

磁盘组规划
vSAN 8.0 OSA单个磁盘组:最多7块HDD(容量盘),最少1块HDD;搭配1块SSD做缓存盘,单主机最多5个磁盘组,单主机最大容量盘总数:5×7=35 块。
附:vSAN ESA(新架构)不再使用磁盘组概念,是存储池,没有“1 缓存盘+多HDD” 这种混合磁盘组模式,ESA 不支持HDD作为容量盘。
现在实际环境中是有2块换成盘,所以如果只创建一个磁盘组的话那么就会闲置一块缓存盘,浪费了;所以这里将创建2个磁盘组:每台主机中使用3块HDD配1块缓存盘,各2个磁盘组。
网络规划
实际规划情况如表所示:


检查网络
使用vDS配置好之后最好通过vmkping对每个VMkernel测试一下,避免后续因网络问题导致部署过程不顺利。
虽然都是二层通信,但测试一下有备无患的
测试vSAN网络连通性
vmkping -I vmk2 192.168.204.1

测试管理网络连通性
vmkping -I vmk0 192.168.205.1
测试 vMotion 网络连通性
vmkping -I vmk1 192.168.203.1
参数补充:
| -I <vmknic> | 必须。指定源 VMkernel 接口。 |
| -c <次数> | 指定发送 Ping 包的次数(默认一直 ping,按 Ctrl+C 停止)。例如 -c 4 发送 4 个包。 |
| -s <字节数> | 指定发送的数据包大小(默认 56 字节)。测试大包或 MTU 时可以调整。 |
| -d | 设置 DF(Don’t Fragment)标志,用于测试路径 MTU 是否够大。 |
| -W <秒数> | 等待超时时间。 |
| -S <源IP> | 指定源 IP 地址(如果接口有多个 IP 时使用)。 |
擦除磁盘
由于原来的每块硬盘存在分区,在声明vSAN磁盘之前需要先手动将其擦除,避免后续声明磁盘的时候出错。
先获取本地磁盘的NAA 标识:
esxcli storage core adapter rescan --all
esxcli storage core device list | grep -i "naa\." | grep -i "Local"
如图所示:

记下所有本地盘的 NAA ID(例如 naa.5000c500...)。然后对每一块缓存盘和容量盘执行以下命令(将 <NAA_ID> 替换为实际值),这一步会强制重写分区表,清除所有残留信息:
partedUtil setptbl "/vmfs/devices/disks/<NAA_ID>" msdos
partedUtil setptbl "/vmfs/devices/disks/<NAA_ID>" gpt
如图所示:

创建集群
完成上述过程后将主机进入维护模式加入新建的集群,并开始声明磁盘。

磁盘声明完成之后运行状态显示不正常:

使用命令 esxcli vsan cluster get 查看vSAN集群状态,发现其中一台主机显示未正常加入集群。

因为未满足FTT=1的要求,这是 vSAN 的一个硬性要求,FTT=1 需要至少 3 个故障域。所以现在vSAN存储也无法正常使用:

说明:
FTT=1 代表:vSAN 允许集群中同时有1个故障域(通常指1台物理主机,或1块磁盘)发生故障,而数据不丢失,虚拟机仍能正常运行。
vSAN 通过副本(Replica)机制来实现容错。当FTT=1时,vSAN会为虚拟机数据保存2个完整副本(外加可能的见证组件)。
举个例子:
- 有一台虚拟机,它的某个虚拟磁盘(VMDK)被策略设置为
FTT=1。 - vSAN 会把这个磁盘的数据完整地写到两台不同的主机上(比如
esxi04和esxi06)。 - 如果
esxi04突然宕机或硬盘损坏,vSAN会立即检测到,并自动切换到esxi06上的副本继续提供服务。虚拟机不会中断,数据也不会丢失。
| FTT 级别 | 需要的副本数 | 最少主机数(故障域) | 容忍能力 |
|---|---|---|---|
| FTT=0 | 1 份 | 1 台 | 不允许任何故障,一旦故障数据丢失 |
| FTT=1 | 2 份 | 3 台 | 允许 1 台主机或 1 块磁盘故障 |
| FTT=2 | 3 份 | 5 台 | 允许 2 台主机或 2 块磁盘同时故障 |
| FTT=3 | 4 份 | 7 台 | 允许 3 台主机或 3 块磁盘同时故障 |
修复过程
要满足FTT=1的硬性要求,那么必须要有3台主机可用,目前01主机磁盘组不正常,必须先解决该故障情况。
将磁盘组从磁盘组中卸载并移除

将主机从vSAN集群中移除
esxcli vsan cluster leave
通过IPMI带外进入远程控制台,输入密码,将系统 Reset Systen Configuration,说白了就是重置下系统。

系统重启后用上面的过程重新配置下网络、擦除磁盘分区;然后将主机拖到加入vSAN集群中,或使用命令行加入:
esxcli vsan cluster join -u <Sub-Cluster UUID>
例如:
esxcli vsan cluster join -u 52d6f575-35b6-ebfe-a7d6-741b615105be
Sub-Cluster UUID 是通过 esxcli vsan cluster get 获取,如图所示:

再单独声明一下磁盘,状态也正常了,同时可以启用HA和DRS。

故障域创建:
前面说过FTT=1需要至少3个故障域,在该集群中也就是将每台主机独立创建一个故障域即可满足。

最后再检查下集群状态,主机01已经成功加入了集群,现在是一个健康的 3 节点 vSAN 集群了!
角色分配正常:
esxi06是MASTER(主节点)esxi04是BACKUP(备份节点)esxi01是AGENT(代理节点)
健康状态极佳:三台主机的 Local Node Health State 都是 HEALTHY。

至此,该vSAN集群已部署完成,后续将对该集群进行性能测试。
性能测试
HCIBench 代表“超融合基础设施基准测试”。它本质上是对广受欢迎且久经考验的开源基准测试工具 Vdbench 和 Fio 的自动化封装,使跨超融合基础设施 (HCI) 集群的自动化测试更加便捷。HCIBench旨在以一致且可控的方式简化和加速客户的概念验证 (POC) 性能测试。该工具可完全自动化部署测试虚拟机、协调工作负载运行、汇总测试结果、性能分析以及收集故障排除所需数据的端到端流程。
HCIBench不仅是专为vSAN设计的基准测试工具,还可以用来评估 vSphere 环境中各种超融合基础架构存储的性能,下载传送门:HCIBench
部署HCIBench
HCIBench 是一个以 OVA 形式发布的虚拟机
- 网络映射:HCIBench 有两个网卡,分别是 Management Network(用于 Web 管理)和 VM Network(用于与被测虚拟机通信)。测试环境中需要为测试虚拟机规划好网络,如果网络中没有 DHCP,需要确保 HCIBench 的 VM Network 能被正确映射,以便它能自己提供 DHCP 服务 。
- IP 配置:如果测试网络没有 DHCP,可以在部署时选择静态 IP,或者让 HCIBench 提供 DHCP 服务 。管理网络则建议使用静态 IP 。

访问 Web 界面并配置
部署完成后,在浏览器中访问 https://<HCIBench_IP> 并登录 。在配置页面,需要填写以下信息:
| 配置项 | 说明 |
|---|---|
| vSphere 环境信息 | vCenter 地址、用户名、密码、数据中心、集群和测试使用的数据存储名称 |
| 虚拟机规格 | 测试虚拟机的数量、每个虚拟机的 vCPU 和内存大小、数据磁盘数量和大小 |
| 网络设置 | 测试虚拟机使用的网络名称。如果该网络没有 DHCP,需要勾选由 HCIBench 提供 DHCP 服务的选项 |
| 测试参数 | 测试使用的工具(如 Vdbench 或 FIO)、工作负载参数 |
注意:不建议将HCIBench的OVA部署在要测试的vSAN数据存储中。如果vSAN在压测过程中出现性能波动或短暂不可用,HCIBench自身可能也会受影响,导致测试中断或结果不完整。正确的做法是部署在外部存储或其他独立存储上;本次我将其部署在本地磁盘中。

运行测试
在HCIBench界面中点击 开始测试 (Start Test),工具会自动部署测试虚拟机并在所有主机上并行运行压力测试 。测试过程分为两个阶段:首先部署测试虚拟机,然后开始运行工作负载。
查看报告与性能诊断
测试完成后,HCIBench会自动生成PDF格式的报告和Excel数据文件 。此外,还可以在 vSphere Client 中利用vSAN 性能诊断 (Performance Diagnostics) 功能,选择 HCIBench 测试的时间范围,进行更深入的性能问题分析。
磁盘阵列我都放弃了,其实对我个人来说也用不上
磁盘阵列真是难搞,我的nas改为debian后,将nas中的raid1好不容易用到新的系统,结果第二天启动不了了,只好再去掉那个自动挂载也一直没想到办法。