资源树上缺少BMA上报的硬盘信息

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

问题描述

系统下有五个硬盘,BMA也上报了,但是资源树上只有一个硬盘信息

os下可以查到硬盘信息

资源树上只有一个硬盘资源,Redfish接口也只能查到一个

BMA已经上报了

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

总结

项目 内容
问题本质 BMA 上报的硬盘信息因 BDF/Port/Silkscreen 不匹配,未被 BMC 成功关联到 Drive 对象
根本原因 PcieAddrInfo_SAS 配置的 BDF 与 OS 实际 BDF 不一致,导致匹配失败
表现形式 资源树和 Redfish 接口仅显示部分硬盘(仅匹配成功的)
解决方案 校准 PcieAddrInfo_SAS 配置,使 BMC 生成的 BDF 与带内一致
验证方法 检查 Redfish 接口 /redfish/v1/Sms/1/Systems/1/Storage/1/Drives 是否返回完整列表及 non-null Silkscreen

提示:建议优先对比成功识别的硬盘(BDF: 74:03.0)与其他未识别硬盘的配置差异,重点排查 Bus 编号是否错误(如 0f vs 38)。

点击此处查看详细分析解答

资源树上缺少BMA上报的硬盘信息:问题分析与解决方案

问题描述

系统中存在五个物理硬盘,BMA(Baseboard Management Application)已成功上报所有硬盘的丝印信息,但资源树中仅显示一个硬盘PCH_0000:74:03.0_ata10),其余硬盘信息缺失。相应地,Redfish API 接口也只返回了一个硬盘成员。

尽管操作系统(OS)侧可通过 /sys/block/ 正确识别所有硬盘设备(sda~sde),但在 BMC 侧的资源树和 Web 管理界面仅能观测到部分设备。


问题根本原因分析

根据提供的日志和上下文信息,可定位问题核心为:BMC 无法将 BMA 上报的硬盘信息与资源树中的 Drive 对象进行正确匹配,导致信息无法更新

1. BMA 正确上报了硬盘丝印信息

从 BMA 日志可见,DrivesSilkScreen 模块成功读取并上报了以下映射关系:

{
  "0000:74:03.0": {"Port10": "HDDPlaneDisk0"},
  "0000:0f:00.0": {"Port1": "HDDPlaneDisk1", "Port2": "HDDPlaneDisk2", "Port4": "HDDPlaneDisk3"},
  "0000:10:00.0": {"Port5": "HDDPlaneDisk4"}
}

这表明:

  • 所有硬盘的 RootBDFPhyId(Port) 均已被正确检测。
  • 丝印标签(Silkscreen)如 HDDPlaneDisk0 ~ HDDPlaneDisk4 已生成并准备上传至 BMC。

2. 存在 BDF 不一致导致匹配失败

关键问题在于 BMC 资源树生成的 BDF 与带内(OS 层)实际使用的 BDF 不一致

一个典型例证来自知识库中的案例(reference_id: 5):

“iBMA返回的信息里SilkScreen是空的,bmc没有接收到硬盘信息。定位到是带内的直通盘的BDF是74:03.0,bmc丝印生成的BDF是38:05.0 与带内丝印不一致,导致没有匹配上硬盘槽位。”

虽然当前日志未直接显示冲突,但现象完全一致:BMA 上报了多个设备,仅一个被识别。这说明其余硬盘因 BDF 或 Port 映射不一致 而未被 BMC 的 host_agent 组件匹配到对应的 Drive 对象。

3. Silkscreen 属性为空引发信息更新失败

文档块 reference_id: 6 提供了决定性证据:

“但是hostagent的silkscreen还是null,请问这是为什么?”
Redfish 查询结果显示:"Silkscreen": "null"

这表明,尽管 BMA 已提供 Silkscreen 数据,但该数据 未能正确挂载到资源树的 Drive 对象 上。最终导致 BMC 的 Storage 组件无法使用这些信息更新 Disk1~Disk4 的状态。

根据流程:

  1. BMA 基于 rootBDF 获取硬盘丝印;
  2. 将信息挂载至 /bmc/kepler/.../Drives/<drive_id>
  3. storage 组件通过 SilkScreen 字段匹配 Drive 对象并更新信息。

若上述任一环节 BDF/Port/Silkscreen 不一致,则匹配失败,不生成有效信息。


完整匹配机制解析

根据 reference_id: 3 和 KG 实体描述,完整流程如下:

graph TD
    A[BMA] -->|基于 rootBDF 查询| B(硬盘丝印)
    B --> C[生成 BDF→Port→SilkScreen 映射表]
    C --> D[BMA 将信息挂载到资源协作路径]
    D --> E[host_agent 构建资源树 Drives 列表]
    E --> F[storage 组件根据 Silkscreen 匹配 Drive]
    F --> G{匹配成功?}
    G -->|是| H[更新 Disk 信息到 Redfish]
    G -->|否| I[信息丢失,显示为空]

当前问题出在 E→F 环节:资源树的 Drive 对象所关联的 BDF/Port 与 BMA 上报的不一致,导致无法建立映射。


解决方案建议

:white_check_mark: 方案一:校准 PcieAddrInfo_SAS 配置(首选)

确保 PcieAddrInfo_SAS 对象中定义的 Bus, Device, Function 与 OS 实际使用的 BDF 完全一致

操作步骤:

  1. 在 OS 中执行:

    lspci -t -v | grep -i ata
    

    获取每个 ATA 控制器的真实 BDF(如 0000:0f:00.0, 0000:10:00.0)。

  2. 检查或创建 PcieAddrInfo_SAS_X 对象,例如:

    {
      "PcieAddrInfo_SAS_1": {
        "Bus": 15,
        "Device": 0,
        "Function": 0,
        "SlotID": 1,
        "PortID": 1,
        "ControllerType": 2
      },
      "PcieAddrInfo_SAS_2": {
        "Bus": 15,
        "Device": 0,
        "Function": 0,
        "SlotID": 2,
        "PortID": 2,
        "ControllerType": 2
      }
    }
    
  3. 确保 SlotID 和 PortID 与 BMA 上报的 PortX 一致

:white_check_mark: 方案二:检查并修复 M.2 转接卡或背板适配

若部分硬盘连接在 M.2 转接卡上(如 KG 中提及的 Disk50 使用 M.2 转接卡时误报为 Disk0),需注意:

  • 转接卡需正确配置 CSR(Control and Status Register)。
  • 必须适配 PCIe 地址映射逻辑,避免多个设备映射到同一 BDF。

参考案例中修复方式:

“需要配置转接板的 CSR 里 PcieAddrInfo_SAS 对象的 Bus、Device、Function 与带内一致。”

:white_check_mark: 方案三:开启白名单调试模式验证数据源

参考建议(reference_id: 1):

“可以打开bma白名单,查看 /redfish/v1/Sms/1/Systems/1/Storage/1/Drives 接口返回信息确认是 host agent 组件还是 bma 提供的问题。”

若接口返回无 Silkscreen,则问题在 host_agent 构建阶段未包含该字段,需检查:

  • host_agent组件 是否构建了完整的 Drives 资源树节点。
  • OEM.Huawei.Silkscreen 字段是否被正确注入。

总结

项目 内容
问题本质 BMA 上报的硬盘信息因 BDF/Port/Silkscreen 不匹配,未被 BMC 成功关联到 Drive 对象
根本原因 PcieAddrInfo_SAS 配置的 BDF 与 OS 实际 BDF 不一致,导致匹配失败
表现形式 资源树和 Redfish 接口仅显示部分硬盘(仅匹配成功的)
解决方案 校准 PcieAddrInfo_SAS 配置,使 BMC 生成的 BDF 与带内一致
验证方法 检查 Redfish 接口 /redfish/v1/Sms/1/Systems/1/Storage/1/Drives 是否返回完整列表及 non-null Silkscreen

提示:建议优先对比成功识别的硬盘(BDF: 74:03.0)与其他未识别硬盘的配置差异,重点排查 Bus 编号是否错误(如 0f vs 38)。

ibma只上报了一个盘的资源

为什么只会上报一个,这个问题该如何排查呢

能否收集下bma日志和OS日志?

BMA日志收集:
1)cd /opt/ibma OS后台进入到iBMA目录下(以实际bma安装路径为准)
2)tar -zcf ibma_log.tar.gz log/ config/
收集ibma_log.tar.gz 压缩包

有条件也收一下/var/log/message 日志

收集后可以发到 zhangxiangyun1@h-partners.com 邮箱

已发送,麻烦帮忙看看,感谢!



和客户进一步了解 发现硬件还有些特殊,4个盘是pcie转sata出来的,会不会是bma不支持这种设计?

当前不支持,因为丝印会对不上。从日志里面也能查到有4个盘没有获取到信息,上报的硬盘{‘0000:74:03.0’: {‘Port10’: ‘HDDPlaneDisk0’} 是从bmc获取到的丝印能对应的那块盘。

1 个赞