记录一次不太顺利的vSAN部署过程

概述

简单描述一下情况,原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=01 份1 台不允许任何故障,一旦故障数据丢失
FTT=12 份3 台允许 1 台主机或 1 块磁盘故障
FTT=23 份5 台允许 2 台主机或 2 块磁盘同时故障
FTT=34 份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 形式发布的虚拟机

  1. 网络映射:HCIBench 有两个网卡,分别是 Management Network(用于 Web 管理)和 VM Network(用于与被测虚拟机通信)。测试环境中需要为测试虚拟机规划好网络,如果网络中没有 DHCP,需要确保 HCIBench 的 VM Network 能被正确映射,以便它能自己提供 DHCP 服务 。
  2. 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 测试的时间范围,进行更深入的性能问题分析。

2 评论

  1. 磁盘阵列真是难搞,我的nas改为debian后,将nas中的raid1好不容易用到新的系统,结果第二天启动不了了,只好再去掉那个自动挂载也一直没想到办法。

发表评论