祥积宫 无限进步

VMware vSAN 节点存储链路故障分析报告

一、事件概述

2026 年 4 月 3 日凌晨(UTC 06:09 起),vSAN 集群节点 esxi04 在运行过程中突发存储 I/O 链路级故障,导致直连 SAS 磁盘设备出现介质错误(Medium Error)、I/O 超时以及命令被强制取消等连锁反应。

由于该主机处于 vSAN 集群中,故障磁盘是 vSAN 分布式存储池的组成部分,本次事件不仅是单节点故障,更对整个 vSAN 集群的数据冗余保护和存储服务可用性构成了直接威胁。


二、故障时间线

时间(UTC+8)事件描述
14:09首次检测到 故障盘 A(slot 4)出现介质错误,sense key [0x04, 0x4c, 0xa7],LBA: 0
14:16同一设备出现 Medium Error(sense [0x03, 0x13, 0x0]),分区表读取失败(I/O Error),HPP 开始对该设备限流
14:17–14:19连续出现多起 Medium Error,涉及 LBA: 2 及 LBA: 3516328367(磁盘末端区域),分区表读取再次失败
14:19HPP 触发命令中止(TM Abort),故障盘 B(slot 7)也同步报介质错误(sense [0x04, 0x4c, 0xa7]),READ CAPACITY 失败
14:20–14:57两块设备交替出现 I/O 错误,HPP 持续限流(hppAction = 1 / 3),大量 SCSI 命令被取消
15:06故障盘 A 出现严重 I/O 超时,多条同步命令(opcode 0x28, 0x1a)完全超时(Expiry time occurred 3ms in the past),HPP 触发最高级别报警
15:27–15:30错误持续恶化,HPP 限流计数器不断刷新,Active 命令队列被强制清空,多个 VPD 查询超时
后续错误呈周期性重复出现,故障未自动恢复

三、故障根因分析

1. 硬件层面:SAS 磁盘介质损坏

日志中最核心的错误信息集中在两块 LUN:

Device: 故障盘 A (Enclosure Slot 4, Phy 4)
Device: 故障盘 B (Enclosure Slot 7, Phy 7)

两块磁盘均报告了 sense key 0x03(Medium Error) 和 sense key 0x04(Hardware Error),且错误发生在多个 LBA 位置(LBA: 0、LBA: 2、LBA: 3516328367),说明:

  • LBA 0 区域损坏:分区表所在扇区损坏,导致 VMFS 无法正常解析分区
  • LBA 3516328367 区域损坏:磁盘末端(接近最大 LBA)出现介质缺陷
  • 多个 LBA 受损:不是单点比特翻转,而是磁盘介质大面积失效

Sense Key 参考:

  • [0x03, 0x13, 0x00] → Medium Error,地址格式无效
  • [0x03, 0x11, 0x01] → Medium Error,数据同步错误
  • [0x04, 0x4c, 0xa7] → Hardware Error,逻辑块关联失败

2. 存储路径层:HPP 限流与命令中止

ESXi 的 HPP(High-Performance Path) 存储插件检测到持续错误后,触发了三层响应:

HPP Action含义触发条件
hppAction = 1标记错误,限流处理首次检测到有效 sense data
hppAction = 3强制取消命令,退出设备命令积压超过阈值(Active: 1~2)

多次出现的日志:

HPP: HppThrottleLogForDevice:1144: Error status H:0x0 D:0x2 P:0x0 Valid sense data: 0x3 0x11 0x1. hppAction = 1
ScsiDeviceIO: 4173: ... Medium Error, LBA: 3516328367
ScsiDeviceIO: 4160: ... Cancelled from driver layer. Cmd count Active:2

说明 HPP 的自动恢复机制未能奏效,设备进入持续降级状态。

3. 影响范围分析

从受影响设备的映射关系来看:

Enclosure Logical ID: (脱敏)
├── Slot 4 → 故障盘 A  ⚠️ 严重故障
└── Slot 7 → 故障盘 B  ⚠️ 同步故障

两块磁盘来自同一磁盘框(Enclosure) 的不同槽位,且属于同一 SAS 链路的两个 Phy(phy 4 和 phy 7),这暗示:

  • 可能是磁盘框背板或SAS 扩展器故障,波及多块磁盘
  • 也可能是两块磁盘同时到达寿命终点(写入量耗尽)
  • vSAN 环境:两块盘同时故障意味着 vSAN 分布式存储池中该节点的存储组件减少,可能触发 FTT(Failures To Tolerate)边界

4. vSAN 集群层面影响

以下分析针对 vSAN 环境特性。esxi04 是 vSAN 集群中的一个节点,该主机的 13 块磁盘共同组成了 vSAN 分布式存储池,供集群内所有虚拟机共享。

  • worldId: 2103895:ESXi 系统进程,持续处理超时和重试,CPU 资源异常消耗
  • worldId: 0x201a57:某虚拟机进程(world ID 在 vSAN 环境下对应具体的 VM),发出的 I/O 命令被 HPP 强制中止,该虚拟机可能已出现无响应或强制重启
  • vSAN 数据冗余风险:vSAN 默认按存储策略(FTT=1 或 FTT=2)将数据副本分布到不同节点。esxi04 上的两块故障盘可能导致:
    • 部分数据副本所在组件离线
    • 若 FTT=1,剩余副本所在节点承载压力增大
    • 若 FTT=0 或多块副本同时受影响,存在数据不可用甚至数据丢失的风险
  • vSAN 健康状态:建议检查 vSphere Client → vSAN → Physical Disk Health,确认是否有组件(Component)处于已降级(Degraded) 或已关闭(Absent) 状态
  • 集群整体存储性能下降:故障期间 vSAN 会触发数据重建(Resync),集群 I/O 性能将显著下降

四、影响与后果

vSAN 集群级影响

vSAN 环境特殊说明:esxi04 的 13 块磁盘均为 vSAN 存储池的成员,承担着为集群内所有虚拟机提供分布式存储的任务。任意磁盘故障的影响都会通过 vSAN 策略扩散到集群层面。

  1. vSAN 组件降级 / 重建
    • 两块盘故障直接导致 vSAN 存储池中该节点的 2 个磁盘组件离线
    • vSAN 会自动触发数据重建(Resyncing Objects),将受影响数据的副本同步到其他健康节点
    • 重建期间集群存储 I/O 性能将明显下降
  2. 存储策略边界风险
    • 若该集群的 FTT(Failures To Tolerate)设置为 1,故障期间数据仅剩 1 份有效副本,处于 FTT 边界状态
    • 若同时有其他节点出现波动或 FTT=0 的虚拟机,存在数据不可用甚至数据丢失风险
  3. HPP 路径阻塞 → vSAN 写入失败
    • HPP 持续限流和命令取消,意味着发往故障盘的写入请求全部失败
    • vSAN 分布式写入依赖所有组件确认才能完成,部分组件离线会导致写入超时或 I/O 报错
    • 受影响虚拟机的应用层可能出现:数据库事务失败、文件写入异常、快照操作超时
  4. 虚拟机可用性风险
    • 若故障盘承载了虚拟机的 vSWAP 或快照对象,相关 VM 可能出现无响应或蓝屏
    • worldId: 0x201a57 的 VM 发出的 I/O 命令已被强制中止,该 VM 大概率已受影响
  5. 数据完整性隐患
    • Medium Error 出现在 LBA: 0(分区表区)和 LBA: 3516328367(磁盘末端)两个极端区域
    • vSAN 存储对象校验和(Checksum)可能检测到不一致,进一步触发 vSAN 健康告警

五、故障影响截图

以下是故障期间 vSphere Client 监控界面截图,展示了存储路径告警和设备错误状态:


六、iDRAC 日志补充分析

1. iDRAC 系统信息

服务器型号: Dell PowerEdge R740xd
服务标签:   XXXXXXXX
iDRAC版本:  9 (Firmware 4.20.20.20)
存储控制器: Dell PERC H750 (NonRAID.Slot.4-1, FW 16.17.01.00)
磁盘框:    Enclosure.Internal.0-1:NonRAID.Slot.4-1 (内部 SAS 背板)
操作系统:   VMware ESXi (主机名: esxi04)
磁盘总数:  13块 (Disk.Direct.0 ~ Disk.Direct.11),均通过同一背板

2. SMART 数据关键发现

iDRAC TSR 收集包中,SmartLogs.json 仅记录了 2块处于异常状态的盘的 SMART 数据(Bay 0 和 Bay 7),其余 11 块健康盘的 SMART 数据未被纳入报告(这是 Dell TSR 收集机制——仅主动上报异常盘的 SMART,健康盘默认不输出):

属性Slot 4 (Bay 0) Disk.Direct.0Bay 7 Disk.Direct.1
磁盘型号Kioxia KPM5XVUG960GSeagate AL15SEB18EQY
通电时间37,979 小时 (~4.3年)37,985 小时 (~4.3年)
剩余寿命49%60%
Reallocated Block Count2(已有扇区重分配)0
volatileMemoryBackupSourceFailures12491375
exceptionModeStatus517 (Predictive Failure)515 (Predictive Failure)
uncorrectableErrorCount00
Current Pending Sector00
Media Write Count7,40150,227
Drive Temp30°C30°C

3. iDRAC 告警事件

  • mctpmed.c:rt_mpi2SendPacket 错误:iDRAC 与 PERC HBA 通信失败,累计 15,152 次,从 2026-04-02 22:12 CST 开始持续
  • Recover i2c bus for segment 6:iDRAC 反复执行 i2c 总线恢复,segment 6 是背板管理总线(磁盘框供电/状态监控)

4. HBA 故障分析

HBA(PERC H750)本身故障可能性极低,证据如下:

  • 其余 11块盘全部正常在线,无任何 I/O 错误
  • 如果 HBA 有问题,应该所有连接的盘都会受影响,而非只有 2块
  • 两块故障盘属于同一背板的不同物理槽位,不在同一 SAS 链路

5. 根因定位:磁盘背板(SAS Expander)

综合所有证据,根因指向磁盘背板的 SAS Expander 芯片局部故障,理由:

(a) 背板供电/管理异常

  • 两块盘的 volatileMemoryBackupSourceFailures 高达 1249 和 1375——这是 Dell 特有的 SMART 属性,记录磁盘断电保护电容失效次数
  • 高值说明背板对这两块槽位的电源管理信号异常,导致磁盘无法可靠地执行电容供电保护
  • 两块盘同时出现极高的相同属性,说明它们共用了背板上的同一路供电或管理通道

(b) Dell exceptionModeStatus 告警

  • exceptionModeStatus = 517/515 对应 Dell 内部定义的 Predictive Media Failure(预测性介质故障) 告警
  • 意味着 Dell 存储管理已独立检测到这两块盘即将失效

(c) i2c 背板管理总线持续恢复

  • Recover i2c bus for segment 6 反复出现:segment 6 是 R740xd 内部背板的管理总线
  • 持续恢复说明该总线存在硬件卡滞或信号完整性问题

(d) iDRAC ↔ PERC 通信中断

  • mctpmed.c 错误累计 15,152 次:iDRAC 通过 MCTP 与 PERC 通信的路径受阻
  • 这不是 HBA 挂了(ESXi 还能直接访问 SAS 设备),而是 iDRAC 到 HBA 的带外管理通道出现问题
  • 很可能也是背板 expander 局部故障引起的

(e) 两块盘为何同时损坏(vSAN 环境特殊关注)

  • 两块盘属于同一批 2020年8月生产的 Toshiba/Kioxia 盘(同批次采购)
  • 同批次盘的介质特性接近,同时到达寿命临界点的概率较高
  • 但背板供电异常(volatileMemoryBackupSourceFailures 高值)加速了它们的损坏进程
  • vSAN 环境中,同节点多盘故障的破坏力远大于传统存储:传统存储中一块盘故障只影响本地 VM,vSAN 中一块盘故障就可能导致集群级别的数据冗余降级

6. 根因结论

主机名 esxi04 的存储故障,根因不是 HBA 卡,而是内部磁盘背板(Backplane)的 SAS Expander 芯片局部故障,影响了 Bay 0 和 Bay 7 两槽位的电源管理和 i2c 通信,导致这两块同批老盘提前失效并产生介质错误。


七、建议处置措施

vSAN 环境紧急处置

vSAN 特殊性:esxi04 是 vSAN 集群节点,操作顺序至关重要——必须先确认集群状态,再对节点动手,避免触发级联故障。

  • 立即检查 vSAN 健康状态:vSphere Client → vSAN → Cluster → Health,确认是否有组件处于 Degraded / Absent 状态,记录受影响对象列表
  • 评估 FTT 边界:确认有多少虚拟机的存储策略 FTT=0 或 FTT=1 且当前已处于单副本状态,这些 VM 优先保护
  • 暂停非必要虚拟机:将可迁移的虚拟机 vMotion 到其他健康节点,降低故障节点承载压力
  • 不要立即强制重启或关闭 esxi04,先完成集群状态评估,避免在 vSAN 重建期间人为制造更多离线组件

故障节点处置

  • 第一优先:更换磁盘背板——联系 Dell 申请 RMA,在背板未更换前不要盲目换盘,新盘仍会受同样命运
  • 同步更换故障的两块盘(Bay 0 和 Bay 7):型号为 Kioxia KPM5XVUG960G 和 Seagate AL15SEB18EQY,新盘容量和型号必须与 vSAN 存储策略兼容
  • 收集故障盘日志后下电,避免反复通电极加速盘片进一步损坏
  • 检查其余 11 块盘的 exceptionModeStatus,确认无隐性故障盘混入存储池
  • 收集以下命令输出备用:
    • esxcli storage core device list
    • esxcli storage core path list
    • esxcli vsan storage list
    • esxcli vsan cluster get

根因验证

  • 检查 Dell PERC H750 的 PD(Physical Disk)状态:iDRAC → Storage → Physical Disks
  • 查看背板 FRU/序列号,联系 Dell 申请 RMA(背板本身需要更换)
  • 确认 SAS 线缆(背板到 PERC H750)是否老化,必要时一并更换
  • 检查 racadm GET System.Storage 确认其他 Bay 是否存在隐性异常

长期改进(vSAN 环境)

  • 更换背板后,在 iDRAC 中启用 Predictive Disk Failure Alerting,将 exceptionModeStatus 变化纳入监控
  • 部署每日 SMART 主动巡检告警,对 volatileMemoryBackupSourceFailures > 0 的盘提前预警——这是 vSAN 环境最有效的预防性告警
  • 对剩余 11 块同批次盘建立更换计划,该批 2020 年产盘已接近寿命末期,建议在 6~12 个月内分批更换;vSAN 支持热添加磁盘,可在线完成
  • 考虑升级 iDRAC 固件至最新稳定版(当前 4.20.20.20)
  • 评估将 FTT 从 1 提升到 2 的成本与收益,特别是在高价值业务 VM 上

八、总结

本次 vSAN 集群节点 esxi04 存储故障的根本原因是 Dell PowerEdge R740xd 内部磁盘背板的 SAS Expander 芯片局部故障,具体表现为 Bay 0(Kioxia KPM5XVUG960G)和 Bay 7(Seagate AL15SEB18EQY)两块盘的背板供电/i2c 管理信号异常,加速了这两块 2020年同批老盘的失效,最终导致 HPP 存储路径进入持续错误和命令中止的死循环。

HBA 卡本身故障的可能性已被排除——其余 11块盘全程正常在线,无任何 I/O 错误;故障仅集中在同一背板的不同槽位。

vSAN 环境特殊性:本次故障不是单台虚拟机的存储故障,而是整个分布式存储池中两个组件同时离线,可能导致集群处于 FTT 边界状态。vSAN 的自动重建会消耗大量集群 I/O 资源,并存在数据冗余降级的窗口期风险。

iDRAC 日志中最具诊断价值的三个信号:

  1. volatileMemoryBackupSourceFailures 高达 1249/1375(背板供电/i2c 信号异常)
  2. exceptionModeStatus = 517/515(Dell 预测性介质故障告警)
  3. iDRAC ↔ PERC 通信失败 15,152 次 + i2c 总线持续恢复(背板管理通道异常)

核心建议:更换磁盘背板(Backplane)是第一优先级,在背板未更换前不要盲目更换磁盘。同时优先评估集群 FTT 边界和受影响 VM 范围,避免在 vSAN 重建期间制造二次故障。


以上仅个人的分析以及未雨绸缪的储备,不代表本人实施,本人只分析日志

VMware 网络 存储 Python