偶现raid卡 9560-8i通信异常触发告警,一段时间后又消除告警

// 此模板仅供参考,如果不适用可以修改

问题描述

操作日志中没有相关操作的情况下,偶现raid卡9560-8i通信异常触发告警,一段时间后又消除告警

500 |2026-01-12 07:10:38 |Major |0x08000096 |Deasserted |Communication between the iBMC and PCIe card 1 (9560-8i) failed (SN:SKD2911966).

499 |2026-01-12 06:32:30 |Major |0x2400002A |Deasserted |Self-check result of MCU MCUFlash on CPU board CPUBoard1 is abnormal (SN:1025BC909696).

498 |2026-01-12 06:31:38 |Major |0x24000029 |Asserted |Self-check result of MCU MCUFlash on CPU board CPUBoard1 is abnormal (SN:1025BC909696).

497 |2026-01-12 06:29:58 |Major |0x08000095 |Asserted |Communication between the iBMC and PCIe card 1 (9560-8i) failed (SN:SKD2911966).

触发告警前storage大量超时提示日志打印:

这是装备阶段发现的,定位时已无现场环境,storage版本为storage/1.80.117

是否和RAID卡的I2c概率性访问超时 - 交流互助区 - openUBMC 论坛 是同一个问题

@huangminghao

答案内容由AI生成,仅供参考:

关于MegaRAID 9560-8i RAID卡偶发通信异常问题的综合分析报告

根据您提供的问题描述、事件日志和系统环境信息,结合知识库中的相关技术资料,现对“MegaRAID 9560-8i RAID卡偶发通信异常并触发告警,随后自动恢复”这一现象进行系统性分析与总结。


1. 问题描述

在无任何操作日志的情况下,系统偶发性上报 Communication between the iBMC and PCIe card 1 (9560-8i) failed 严重告警(事件码 0x08000095),约数分钟后该告警自动消除。日志显示,在告警触发前后,storage 模块出现了大量 RequestTimeout 错误,涉及控制器信息获取、逻辑盘列表获取、硬盘日志转储等关键操作。

相关日志片段如下:

2026-01-12 06:29:00.727575 storage ERROR: controller_object.lua(1098): get_ctrl_ld_list failed and return kepler.hwproxy.RequestTimeout: table: 0x54ea4cd20e68
2026-01-12 06:29:00.742406 storage ERROR: drive_object.lua(1273): failed to dump log, and return: kepler.hwproxy.RequestTimeout: table: 0x54ea4cd255218
...
2026-01-12 06:29:58.385451 event NOTICE: System major count change 0 to 1 by [Event_PCIERaidComLossMntr_0101010301].

系统环境:storage 组件版本为 1.80.117


2. 问题定位分析

2.1 根本原因:I²C 通信链路偶发超时

综合所有信息,此问题的根本原因是 RAID卡与BMC之间的I²C通信链路出现偶发性访问超时(I2C Access Timeout),导致BMC无法在规定时间内从RAID卡获取状态信息,从而触发通信失败告警。

该现象具有以下典型特征:

特征 说明
偶发性(Probabilistic) 并非持续失败,而是周期性或随机发生,符合I²C总线信号干扰或负载过重的典型表现
批量超时 多个任务(get_ctrl_info, get_ctrl_ld_list, dump_log)同时失败,表明是底层通信通道问题而非单一功能异常
自动恢复 超时后重试成功,通信恢复正常,说明硬件未彻底损坏,属于瞬时故障
关联日志 RequestTimeout 错误明确指向 hwproxy 模块,即I²C通信代理层

:white_check_mark: 结论:此问题与 openUBMC 论坛中《RAID卡的I2c概率性访问超时 情况高度一致,属于同一类问题。**


2.2 通信超时的技术路径解析

根据知识库中 RAID卡适配指导CSR硬件监控防抖机制 的信息,BMC 与 RAID 卡之间的通信流程如下:

BMC (storage组件)
 └──> 调用 hwproxy 插件
      └──> 通过 I2C 总线发送命令
           └──> Hisport I2C 链路传输
                └──> RAID卡芯片响应

在您的日志中出现的 kepler.hwproxy.RequestTimeout 表明,storage 组件通过 hwproxy 请求访问RAID卡芯片时,在I2C链路上未能收到及时响应

文档 <5>(RAID卡适配指导)明确提到:

“9500-16i HBA卡适配,开启带外管理,发现日志报错Timeout,手动调用busctl方法访问RAIDChip,发现概率性超时,不像是器件本身的问题。”

这说明 I2C概率性超时是已知现象,尤其在多RAID卡、多硬盘复杂拓扑中更易发生


2.3 故障链路定位:Hisport I2C Link 不稳定

知识库中的实体明确指出:

hisport I2c 是用于BMC与PCIe卡之间数据传输的通信链路,且被报告为“显示 instability(不稳定性)”

此外,论坛问题 <6> 中用户提问:

“如何通过日志查看问题时的 hisport I2c 链路数据及状态?”

此问题本身就说明:hisport I2C 链路已被确认为潜在瓶颈,需专项排查

拓扑示例:

BMC → I2C7 → PCA9545 Mux → Hisport_18 → RAID卡

其中任一环节(Mux切换延迟、线路干扰、驱动阻塞)都可能引起瞬时通信失败。


3. 与已知问题的关联性分析

维度 当前问题 论坛问题《RAID卡I2C概率性访问超时》
RAID卡型号 9560-8i 9500-16i HBA(同类博通RAID卡)
现象 I2C访问超时,storage报RequestTimeout I2C访问超时,手动调用busctl也失败
日志特征 kepler.hwproxy.RequestTimeout service[bmc.kepler.storage] request timeout
是否器件故障 否(偶发) 否(用户排除器件问题)
是否链路问题 是(Hisport I2C不稳定) 是(建议排查I2C冲突)
是否同一类问题 :white_check_mark: 是,属于同一类I2C链路稳定性问题

:magnifying_glass_tilted_left: 特别说明:虽然具体型号略有差异(9560-8i vs 9500-16i),但二者均为 Broadcom(博通)出品的 MegaRAID 系列控制器,采用相同的 I2C 带外管理架构,因此故障机理完全一致。


4. 防抖机制与告警策略

虽然通信中断是瞬时的,但由于BMC监控系统的设计,仍会触发告警。

根据 CSR硬件监控防抖机制 文档,针对 RAID卡控制器通信丢失 使用的是:

contbin_H20L5 防抖机制

  • 高电平持续20次(即连续检测到故障20次)才认定为真故障
  • 低电平持续5次才清除告警

但在某些版本中(如1.80.117),若配置不当或负载过高,可能导致防抖阈值未能有效过滤瞬时故障,从而短暂触发告警。

:warning: 您的情况是“告警触发 → 短时中断 → 告警清除”,说明防抖机制最终生效,系统识别为瞬时事件。


5. 可能诱因分析

可能诱因 说明 支持证据
I2C总线负载过重 多个设备共享I2C总线,高并发访问导致拥塞 拓扑中使用PCA9545分时复用,存在竞争
信号完整性差 长距离布线、电磁干扰导致I2C信号畸变 常见于机箱内线缆布局不合理
固件/驱动兼容性问题 storage 1.80版本对9560-8i存在显示/通信兼容问题 KG: “9560-8i在Storage 1.80及以上版本存在显示问题”
电源波动或PG异常 瞬时电压跌落影响RAID卡I2C响应能力 知识库提及Riser卡PG监控
Mux切换延迟 PCA9545等I2C多路复用器切换耗时导致超时 多见于复杂拓扑

6. 解决建议与排查方向

:white_check_mark: 6.1 日志与状态核查

  • 收集完整 app.log, hwproxy.log, storage.log,重点搜索 Hisport, I2C, RequestTimeout
  • 使用 busctl 手动调用RAID卡信息接口,验证是否复现超时:
    busctl call bmc.kepler.storage /bmc/kepler/Systems/1/Storage/Controllers/Controller_X_XXXXXXXXXXXX bmc.kepler.Systems.Storage.Controller GetControllerInfo
    

:white_check_mark: 6.2 检查I2C链路拓扑与稳定性

  • 确认 I2C Mux(如PCA9545)工作正常。
  • 检查Hisport I2C线路是否存在物理损伤或虚焊。
  • 使用示波器抓取I2C波形,检查是否有毛刺、时钟拉伸、ACK丢失等问题。

:white_check_mark: 6.3 升级与版本兼容性

  • 升级 storage 组件版本:已知 9560-8iStorage 1.80以下版本工作正常,但1.80+存在显示和通信问题。建议升级至 1.80.131 或更高稳定版本 以修复已知兼容性问题。
  • 确保加载了正确的 RAID 卡 CSR 文件:vendor/Broadcom/Raid/14140130_100000e6_10004060.sr 必须存在。

:white_check_mark: 6.4 优化防抖配置

  • 审核 contbin_H20L5 防抖参数是否合理,可适当调高,避免瞬时中断误报。
  • 检查 hwproxy 的请求超时阈值是否过短。

:white_check_mark: 6.5 改善散热与电源

  • 确保RAID卡工作温度正常,高温可能影响I2C稳定性。
  • 排查是否存在电源瞬态跌落(PG异常)。

7. 结论

:pushpin: 本问题:“MegaRAID 9560-8i 偶发通信失败告警后自动恢复”,是由于 BMC与RAID卡之间的Hisport I2C链路出现概率性访问超时 导致的典型现象。

:pushpin: 此问题与 openUBMC 论坛中《RAID卡的I2c概率性访问超时》属于同一类问题,技术原理、日志特征、故障模式完全一致。

:pushpin: 根本原因:I2C链路不稳定性(可能由负载、干扰、Mux延迟、信号质量等引起)。

:pushpin: 解决方案建议

  1. 升级 storage 组件至 1.80.131 或以上版本
  2. 确保 CSR 文件正确加载
  3. 排查 I2C 链路物理与电气特性
  4. 优化防抖机制与超时阈值
  5. 加强电源与散热管理

请结合实际环境实施上述建议,并持续观测告警频率变化。如问题持续存在,建议联合硬件团队进行 I2C信号完整性测试,从根本上定位链路瓶颈。

相关链接:

  1. 【问题求助】Raid卡通信失败 & 上电后7分钟内Raid卡和Raid卡下的盘无温感
  2. 关于bmc web上关于对系统事件和传感器事件两种日志的疑问。
  3. RAID卡的I2c概率性访问超时
  4. SP686C-M-16i 4G Raid卡EEPROM is fault告警问题
  5. storage | 文档中心 | openUBMC

不过我看了下,原pr是多raid卡时触发的问题,

我这里是单raid

i2c传输速率比较慢,历史单博通raid卡也会出现超时,但一般一会连续超时40分钟这么久,超时时,可以通过mdbctl raidchip读一下

就是说和链接里的不是同一个问题么

读取raidchip是有什么怀疑方向么,我问下我们现场的同事能不能复现下发命令查看

而且分析app.log发现,大量storage调用i2c_chip:PluginRequestEx使用了太长时间的打印,这有什么可能异常的原因

PluginRequestEx 这个是与博通raid卡交互的接口,所有命令都会经过这个调用,队列里任务太多,执行不过来就会导致这个日志打印。 具体要分析是哪条命令耗时比较久,可以把函数名和耗时打印出来

是需要在哪里加打印,产生告警的时间节点附件并没有打印什么操作日志,是有什么后台动作在执行导致的?

已定位完成,补一下定位结果:

storage内有预收集日志的任务,会在系统重启后raid卡纳管硬盘时触发,当插多个盘时会有多个预收集任务并行触发,底层实现为串行且队列内执行,如果此时发起收集raid卡信息任务,调度不到,导致获取异常,触发告警,后续执行到任务后告警消除