AC后,RAID卡下硬盘概率性出现定位灯关灯失败,长时间闪烁

问题描述

博通RAID卡下接若干硬盘,服务器AC下电,等上电后查看硬盘定位灯,会概率性出现定位灯关灯失败现象,长时间闪烁。

之前2512的920BS也出现过,切换成2603后三次未复现。

环境信息

  • 软件版本:OpenUBMC2512、OpenUBMC2603

重现步骤

1、BS机型,BMC版本基于2512,测试50次,80%出现
2、BS机型,BMC版本基于2603,测试三次没复现
3、青春版机型,BMC版本基于2603,测试10次,50%出现

搭配背板

1、BS是12exp
2、青春版是8sas/SATA兼容4nvme、16nvme

期望结果

硬盘识别完毕后,定位灯停止闪烁

实际结果

概率性出现有硬盘的定位灯一直闪烁

尝试过的解决方案

刷成华为BMC和CSR版本,十次未复现,CSR大都是基于华为版本,没有做关于硬盘的修改,感觉大概率是软件问题,需要看26.01.22.25版本和社区版本的有无差异。因为未复现,硬件觉得和硬件本身无问题,需软件分析。

分析结论

hwproxy通过Hisport访问Chip_RaidChip_0101010302时写失败/空响应,导致后面的STOP_LOCATE 关灯命令失败

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

知识库中记录的解决方案

软件层面优化(来自文档2【2】)

  • 串行化硬盘日志收集:将多个硬盘的SMART日志收集由并行改为串行,每盘间隔10s,减轻I2C总线竞争。
  • 增加I2C交互等待时间:每次I2C交互后的等待时间由3ms增加到5ms,避免发送过快导致错误报文影响通信效率。
  • 减少poll任务占用:将storlib库中的poll interval修改为30分钟,降低该任务对总线的占用。
  • 异常处理优化:当dbus返回超时错误时,不产生RAID卡通信丢失告警,减少不必要的后续重试压力。

硬件层面建议

  • BCU支持两路I2C master并行:将多个博通RAID卡接在不同riser下,避免单一总线争用(文档2【2】)。
  • 升级背板CPLD固件:参考NVMe定位灯问题(文档9【9】),CPLD固件版本过旧可能导致LED控制命令被过滤或拒绝。

结论与建议

核心结论
AC后定位灯关灯失败是 I2C总线争用导致关灯命令超时/空响应 的典型表现,与RAID卡下硬盘数量、日志收集策略、软件版本及背板硬件均有关系。

推荐处理建议(源自知识库):

  1. 应用上述软件优化(串行收集、增加等待时间等)。
  2. 检查并升级背板CPLD固件至最新版本。
  3. 若条件允许,按硬件建议调整BCU总线拓扑,实现多master并行。
  4. 持续跟踪OpenUBMC社区对storage组件的I2C调度改进(如PR#318、#319、#327【2】)。
点击此处查看详细分析解答

根据提供的知识库信息,您描述的“AC后RAID卡下硬盘定位灯关灯失败”问题根本原因在于RAID卡与BMC之间的I2C通信出现超时或空响应,导致STOP_LOCATE关灯命令未能成功执行。以下是基于知识库的综合分析:


问题根因分析

1. 通信链路超时与总线争用

  • 博通RAID卡通过 I2C over Localbus 与BMC通信(参见文档2【2】)。
  • 当RAID卡下挂大量硬盘时,硬盘的周期日志收集(如SMART数据)会长时间独占I2C总线,导致其他访问(如定位灯控制)发生超时。
  • 知识库中记录了一个典型的超时场景:
    storage WARNING: service[bmc.kepler.storage] request timeout:
    remote service[bmc.kepler.hwproxy],
    path[/bmc/kepler/Chip/Complex/Chip_RaidChip_0101010302],
    method[PluginRequestEx], used time[33s]
    
    (文档3【3】)
    该路径正对应RAID卡芯片,超时直接导致后续的关灯操作(STOP_LOCATE)失败,定位灯无法熄灭。

2. Hisport访问失败/空响应

  • 知识库中“V3硬件访问错误排查指南”指出,Hisport访问会出现报错(文档4【4】),与您分析中“hwproxy通过Hisport访问Chip_RaidChip_0101010302时写失败/空响应”一致。
  • 这种失败通常源于总线被占用、硬件未响应或拓扑配置问题,在AC后系统重新初始化的过程中概率性发生。

3. 版本差异与硬件配置影响

  • OpenUBMC2512 上出现概率高达80%,而 2603版本 在BS机型上三次未复现,但在青春版机型上仍有50%概率。说明软件版本优化(如I2C访问调度)对问题有改善,但根本问题未彻底消除。
  • 不同背板(12Exp、8SAS/SATA兼容4NVMe、16NVMe)的CPLD逻辑差异也可能影响点灯命令的响应成功率。

知识库中记录的解决方案

软件层面优化(来自文档2【2】)

  • 串行化硬盘日志收集:将多个硬盘的SMART日志收集由并行改为串行,每盘间隔10s,减轻I2C总线竞争。
  • 增加I2C交互等待时间:每次I2C交互后的等待时间由3ms增加到5ms,避免发送过快导致错误报文影响通信效率。
  • 减少poll任务占用:将storlib库中的poll interval修改为30分钟,降低该任务对总线的占用。
  • 异常处理优化:当dbus返回超时错误时,不产生RAID卡通信丢失告警,减少不必要的后续重试压力。

硬件层面建议

  • BCU支持两路I2C master并行:将多个博通RAID卡接在不同riser下,避免单一总线争用(文档2【2】)。
  • 升级背板CPLD固件:参考NVMe定位灯问题(文档9【9】),CPLD固件版本过旧可能导致LED控制命令被过滤或拒绝。

结论与建议

核心结论
AC后定位灯关灯失败是 I2C总线争用导致关灯命令超时/空响应 的典型表现,与RAID卡下硬盘数量、日志收集策略、软件版本及背板硬件均有关系。

推荐处理建议(源自知识库):

  1. 应用上述软件优化(串行收集、增加等待时间等)。
  2. 检查并升级背板CPLD固件至最新版本。
  3. 若条件允许,按硬件建议调整BCU总线拓扑,实现多master并行。
  4. 持续跟踪OpenUBMC社区对storage组件的I2C调度改进(如PR#318、#319、#327【2】)。

0x1001报错是SML_ERR_I2C_READ_WRITE_FAILED,I2C链路问题
麻烦收集一份完整日志分片发送到邮箱wangtianyi34@huawei.com