Symptoms
- 在某些情况下,vSAN 主机在重新引导后可能无法重新加入 vSAN 群集。登录到 ESXi 主机 shell 检查群集成员资格后,主机将报告群集未启用。您会看到类似以下内容的输出: # esxcli vsan cluster getVirtual SAN Clustering is not enabled on this host
- 系统引导日志 (/var/log/boot.gz) 显示,vSAN 状态计算机在初始化后不久即关闭: 2016-12-05T17:11:55.932Z cpu2:36230 opID=d848dca4)CMMDS: CMMDSLogStateTransition:1217: Transitioning(56eb3316-74f3-b796-47ac-782bcb516e1f) from Invalid to Discovery: (Reason: State machine initialization) <additional messaging omitted> 2016-12-05T17:12:01.838Z cpu2:33403)CMMDS: CMMDSLogStateTransition:1217: Transitioning(56eb3316-74f3-b796-47ac-782bcb516e1f) from Agent to Invalid: (Reason: State machine deinitialization)
- 手动尝试重新加入群集导致出现 vsantraced 故障。您会看到类似以下内容的输出: # esxcli vsan cluster join -u 52924056-5029-3645-ad7f-ea237d36f577Failed to join the host in VSAN cluster (Failed to start vsantraced (return code 2))
Purpose
重新引导 VMware vSAN 主机后,该主机可能无法重新加入 vSAN 群集。
Cause
如果用于 vsantraces 存储的目录包含的文件超过 2,000 个(具体数量可能有所不同),则会出现此问题。vsantraced初始化进程会尝试确定目录的大小,如果文件参数列表太长,vsantraced进程将无法启动。vsantraced 初始化失败将导致无法重新加入 vSAN 群集。之所以发生此问题,是因为用于 vsantraces 存储的目录中保留了大量的 vSAN Observer 性能历史记录文件。
Resolution
与不断构建大量 vSAN Observer 性能历史记录文件有关的问题在 ESXi 6.0 Update 3(可从 VMware Downloads 获得)和 ESXi 6.5.0d(vSAN 6.6)(可从 VMware Downloads 获得)中已得到解决 如果遇到此问题,主机无法重新加入 vSAN 群集,以下过程将验证行为并提供权宜措施。要临时解决此问题,必须从 vsantraces 存储目录中删除旧文件。
注意 :如果已移除所有旧 vSAN Observer 文件,则在 vSAN Observer 创建新的性能数据之前,将不存在此主机的历史性能数据。这不会导致 vSAN 性能服务或 vCenter Server 中的性能数据丢失。
- 通过检查配置文件来确定当前的 vsantraces 存储位置:# cat /etc/vmware/vsan/vsantraced.conf |grep ^VSANTRACED_VOLUME例如:# cat /etc/vmware/vsan/vsantraced.conf |grep ^VSANTRACED_VOLUMEVSANTRACED_VOLUME=" /vmfs/volumes/Datastore1/scratch/vsantraces "
- 使用以下命令进入目录:cd "<directory>" 例如:cd "/vmfs/volumes/Datastore1/scratch/vsantraces"
- 使用以下命令确定目录中的文件数:# ls |wc -l 例如:# ls |wc -l5013 在此示例中,目录中包含 5,013 个文件。此数字至少需要减少约 3000 个文件。
- 使用以下命令确认文件属于 vSAN Observer:# ls |grep vsanObserver|wc -l 例如:# ls |grep vsanObserver|wc -l4986 在此示例中,目录中包含 4,986 个 vSAN Observer 文件。可以移除最早的文件。
- 将所需数量的 vSAN Observer 文件移至其他目录,或删除所需数量的 vSAN Observer 文件。 注意 :如果参数列表太长,通配符扩展(在参数中使用“*”)可能会失败。目录中包含的文件不应超过 2,000 个。建议将文件数减少至不到 2,000 个。重新运行第 3 步,以确定目录中的文件数量
- 通过重新引导主机或运行以下命令重新加入 vSAN 群集:# esxcli vsan cluster join -u <cluster uuid> 例如:# esxcli vsan cluster join -u 52924056-5029-3645-ad7f-ea237d36f577
Related Information
“解决办法”部分的第 6 步中命令的群集 UUID 可从 vSAN 群集中的其他主机获取:
- 登录到 vSAN 群集中其他主机的 ESXi shell
- 从 esxcli 获取群集信息:# esxcli vsan cluster get |grep "Sub-Cluster UUID" 这将返回“esxcli vsan cluster join”命令所需的 UUID。例如:# esxcli vsan cluster get |grep "Sub-Cluster UUID"Sub-Cluster UUID: 52924056-5029-3645-ad7f-ea237d36f577