后置背板的硬盘被分配到前置背板槽位

问题描述

当前现象为后置2x2.5寸背板的两个ssd硬盘被分配到前置12x3.5寸背板的disk0/1槽位,前置背板的硬盘集体后移,原10/11槽位变为后置背板的40/41槽位;按槽位点灯时则能点到正确的槽位灯

查看日志,Component_Drive0_010102属于前置背板(后置背板后缀为0101020501),却加载了后置背板的硬盘sn

/bmc/kepler/Systems/1/Components/Component_Drive0_010102 bmc.kepler.Systems.Component

.Name

signature: s

value: “Disk0”

flags: emits-change

readonly: false

.NodeId

signature: s

value: “Disk0”

flags: -

readonly: true

.PreviousSN

signature: s

value: “S6KLNN1W721122”

flags: emits-change

readonly: true

环境信息

  • 软件版本:ibmcv3 5.05.12.53

  • 硬件配置:920B

期望结果

12x3.5前置背板上的硬盘分配0-11槽位,2x2.5后置背板上的硬盘分配40-41盘位

分析结论

查看拓扑信息发现2x2.5后置背板是由12x3.5前置背板的Connector_SEU_Inner_1_010102加载Connector_SEU_Inner_12Drive_01010205加载的,是否与此有关?

├─Connector_SEU_1_0101
│ ├─Connector_SEU_Inner_2_010102
│ └─Connector_SEU_Inner_1_010102
│ ├─Connector_SEU_Inner_24Drive_01010205
│ └─Connector_SEU_Inner_12Drive_01010205

日志超过10m无法上传,如需日志辅助请留言我发送到邮箱

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

项目 当前状态 正确做法
后置背板识别 :cross_mark: 被前置背板接管 :white_check_mark: 独立Component树
StartSlot 配置 :cross_mark: 缺失或错误 :white_check_mark: 设置为40
硬盘ID生成 :cross_mark: 共用前置序列 :white_check_mark: 独立编号
拓扑结构 :cross_mark: 混合加载 :white_check_mark: 层级分离

最终目标:实现 “物理位置 ↔ 软件ID ↔ 报警信息” 三者严格一致

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

后置背板硬盘错误分配至前置槽位问题分析报告

:pushpin: 问题概述

当前系统存在硬盘槽位映射错误的问题:
后置2x2.5寸背板的两个SATA SSD被错误地识别并分配到了前置12x3.5寸背板的Disk0和Disk1槽位,导致前置硬盘信息整体后移,部分前置硬盘(Disk10、Disk11)被错误显示为后置Disk40、Disk41。

尽管通过BMC命令点灯时能正确点亮物理槽位的指示灯(说明底层硬件控制正常),但软件层面的槽位与硬盘信息绑定严重错乱


:bar_chart: 实际现象详述

:small_blue_diamond: 硬件连接情况

背板类型 设备型号 容量 数量 实际接入位置
前置背板 SEAGATE ST20000NM002H-3KV133 20T 12块 Disk0 ~ Disk11
后置背板 SAMSUNG MZ7L3480HCHQ-00B7C 480G 2块 Disk40 ~ Disk41

:small_blue_diamond: BMC 软件识别结果(错乱)

物理槽位 BMC显示硬盘(SN) 实际应为硬盘(SN) 亮灯结果
Disk0 SAMSUNG 480G SSD (21122) SEAGATE 20T HDD (ZYD37XHS) 点亮 Disk0 物理灯
Disk1 SAMSUNG 480G SSD (0937) SEAGATE 20T HDD (ZYD2QRZQ) 点亮 Disk1 物理灯
Disk40 SEAGATE 20T HDD (ZYD2N40A) SAMSUNG 480G SSD (21122) 点亮 Disk40 物理灯
Disk41 SEAGATE 20T HDD (ZYD3AFHQ) SAMSUNG 480G SSD (0937) 点亮 Disk41 物理灯

:warning: 点灯控制正确,表明硬件通信正常,问题出在软件层ID映射逻辑


:magnifying_glass_tilted_left: 根本原因分析

1. StartSlot 配置错误或缺失

根据知识库中的 bmc.kepler.Systems.HddBackplane 模块定义:

StartSlot 是一个只读U8类型属性,用于指定硬盘起始槽位号

  • 前置背板通常设置 StartSlot = 0
  • 后置背板应基于前置数量设定,如 StartSlot = 12 或更高(如标准中提到的40)

然而日志显示:

Component_Drive0_010102 属于前置背板(后缀010102),却加载了后置背板的硬盘SN

这表明:
:right_arrow: 后置背板未被正确识别为独立背板,其硬盘被前置背板组件错误接管。


2. 拓扑结构异常:后置背板由前置背板加载

查看拓扑关系发现:

├─Connector_SEU_Inner_1_010102
│ └─Connector_SEU_Inner_12Drive_01010205

→ 后置2×2.5背板通过 Connector_SEU_Inner_12Drive_01010205 被加载
→ 该连接器属于前置背板分支(后缀 010102 vs 后置应为 0101020501

:pushpin: 结论
后置背板并未拥有独立的FruData或Component树节点,而是被当作“前置背板的一个扩展”进行管理,导致其硬盘被纳入前置Component_Drive序列中,并从Disk0开始编号。


3. 未正确配置 StartSlot 偏移

依据 CSR配置字典之HddBackplane类 指导:

  • 前置背板:StartSlot 通常为 0
  • 后置背板:StartSlot 应根据前置硬盘数量设置
  • 示例:前置8个硬盘 → 后置背板StartSlot = 8

但在本系统中:

  • 后置硬盘本应在 Disk40Disk41
  • 实际却因未配置独立StartSlot,导致其ID从0开始叠加

此外,命名规范明确指出:

Name 格式为 Disk + Id,其中 Id = HddBackplaneStartSlot + RelativeSlot

:cross_mark: 当前系统未实现此逻辑 → 导致ID冲突和混乱。


:file_folder: 相关配置项与技术依据

配置项 说明 来源
StartSlot 指定硬盘背板的起始槽位编号 文档#2、#9
RelativeSlot 单块硬盘相对于背板起始槽位的偏移量 文档#4
Id = StartSlot + RelativeSlot 硬盘唯一标识计算公式 文档#4
Container 字段 用于更新硬盘背板名称及槽位归属 文档#2
Connector 拓扑 决定组件加载路径和父子关系 文档#8

:white_check_mark: 解决方案建议

:white_check_mark: 1. 为后置背板创建独立的FruData和Component树节点

  • 创建新的 FruData_SEU_Rear 或类似对象
  • 使用正确的UID后缀(如 0101020501)标识后置单元
  • 确保其独立于前置背板的Connector_SEU_Inner_1_010102

:white_check_mark: 2. 正确配置后置背板的 StartSlot = 40

{
  "HddBackplane_Rear": {
    "StartSlot": 40
  }
}

理由:现有系统将后置盘位设为Disk40/41,说明设计意图即为此范围。

:white_check_mark: 3. 修正 Component_Drive 的命名和加载逻辑

  • 确保后置硬盘的Component_Drive对象使用独立命名空间(如 Component_Drive40_...
  • 通过CSR配置确保 Id = StartSlot + RelativeSlot
  • 避免前置背板组件加载后置硬盘SN

:white_check_mark: 4. 验证并修复拓扑连接关系

  • 修改 Connector_SEU_Inner_12Drive_01010205 所属层级
  • 将其移至后置专用分支下,或为其重新定义独立Connector

:white_check_mark: 5. 重启BMC后验证结果

  • 检查 /bmc/kepler/Systems/1/Components/ 下的组件树是否清晰分离
  • 验证 Disk40/Disk41 是否正确绑定后置SSD序列号
  • 执行点灯测试,确认ID与物理位置一致

:puzzle_piece: 风险提示

:warning: 若不修复,可能引发以下问题:

  • 存储配置错误(RAID构建异常)
  • 故障定位困难(报警显示Disk0,实为后置盘)
  • 运维误操作(拔错盘)
  • 日志追踪失效(事件记录与实际设备脱节)

:white_check_mark: 总结

项目 当前状态 正确做法
后置背板识别 :cross_mark: 被前置背板接管 :white_check_mark: 独立Component树
StartSlot 配置 :cross_mark: 缺失或错误 :white_check_mark: 设置为40
硬盘ID生成 :cross_mark: 共用前置序列 :white_check_mark: 独立编号
拓扑结构 :cross_mark: 混合加载 :white_check_mark: 层级分离

最终目标:实现 “物理位置 ↔ 软件ID ↔ 报警信息” 三者严格一致


:wrench: 建议动作:根据 《扩展板CSR配置指导书》《整机PSR配置指导书》,重新定义后置背板的CSR配置,确保其独立性与StartSlot正确性,并提交验证用例回归测试。

邮箱 huangminghao4@huawei.com,日志发来看看,或者你看下一键收集日志中,这两个硬盘背板的CSR中Drive对象的Id怎么配置的,还有HddBackPlane对象的StartSlot怎么配置的

已发送;前背板drive的对象id按0-11配置,StartSlot为0;后背板drive的对象id为${Slot} |> expr($1 == 3 ? 40 : 42)、${Slot} |> expr($1 == 3 ? 41 : 43),StartSlot为${Slot} |> expr($1 == 3 ? 40 : 42)

实际槽位为3

点灯对应槽位亮灯说明硬盘槽位和csr里的配置是匹配的,这个问题感觉是丝印匹配错误,bma将硬盘信息报到别的槽位的硬盘上了,需要检查下丝印文件和硬盘背板csr中个的pcieaddrinfo对象是否正确

image
看一下bma传过来的这个diskx(phyid)与silkscreen里的HddbackPlaneX,与silkconfig.json里的配置是否正确

用silkconfig.json里的配置发不通,而且上级也没有

路径:cd /opt/huawei/ibma/lib/common/config
路径可能不一样,逐层查看
第三行改为:“^/redfish/v1/_SmsID.*”
强制保存退出
然后重启BMA:systemctl restart iBMA
开启白名单后,redfish接口可以查看ibma资源

查了一下,bma传过来disk里的SlotId都是null,请问这个问题出在哪里?

麻烦看一下/redfish/v1/Sms/1/Systems/1/Storage/1/Drives/PCH_0000:32:04.0_disk13 接口的 SilkScreen 属性是什么值?

顺便进到OS内,收集 /opt/huawei/ibma/log/ 目录下所有文件,发送到我的邮箱: zhouzijia2@huawei.com

/redfish/v1/Sms/1/Systems/1/Storage/1/Drives/PCH_0000:32:04.0_disk13 接口的 SilkScreen 属性是"SilkScreen": “HDDPlaneDisk0”

日志已发送至邮箱

先确认下我理解的问题是否跟你描述的一致?

当前问题是 “图片显示的PCH_0000:32:04.0_disk13,SN为ZYD3AFHQ 硬盘,实际槽位是 disk41,而iBMA上报的丝印是HDDPlaneDisk0” ?

实在不好意思,当时改了url看错了,实际图片显示的PCH_0000:32:04.0_disk13,SN为ZYD3AFHQ 硬盘,实际物理槽位应该是 disk11,而iBMA上报的丝印是HDDPlaneDisk13

需要提供在OS内执行 ll /sys/block 命令的结果,看盘的PCI路径

命令返回值:
总用量 0
lrwxrwxrwx 1 root root 0 3月 31 15:17 dm-0 → ../devices/virtual/block/dm-0
lrwxrwxrwx 1 root root 0 3月 31 15:17 dm-1 → ../devices/virtual/block/dm-1
lrwxrwxrwx 1 root root 0 3月 31 15:17 dm-2 → ../devices/virtual/block/dm-2
lrwxrwxrwx 1 root root 0 3月 31 15:17 nvme0n1 → ../devices/pci0000:c0/0000:c0:00.0/0000:c1:00.0/nvme/nvme0/nvme0n1
lrwxrwxrwx 1 root root 0 3月 31 15:17 nvme1n1 → ../devices/pci0000:c0/0000:c0:02.0/0000:c2:00.0/nvme/nvme1/nvme1n1
lrwxrwxrwx 1 root root 0 3月 31 15:17 nvme2n1 → ../devices/pci0000:c0/0000:c0:04.0/0000:c3:00.0/nvme/nvme2/nvme2n1
lrwxrwxrwx 1 root root 0 3月 31 15:17 nvme3n1 → ../devices/pci0000:c0/0000:c0:06.0/0000:c4:00.0/nvme/nvme3/nvme3n1
lrwxrwxrwx 1 root root 0 3月 31 15:17 sda → ../devices/pci0000:32/0000:32:04.0/host3/port-3:0/expander-3:0/port-3:0:0/end_device-3:0:0/target3:0:0/3:0:0:0/block/sda
lrwxrwxrwx 1 root root 0 3月 31 15:17 sdb → ../devices/pci0000:32/0000:32:04.0/host3/port-3:0/expander-3:0/port-3:0:1/end_device-3:0:1/target3:0:1/3:0:1:0/block/sdb
lrwxrwxrwx 1 root root 0 3月 31 15:17 sdc → ../devices/pci0000:32/0000:32:04.0/host3/port-3:0/expander-3:0/port-3:0:2/end_device-3:0:2/target3:0:2/3:0:2:0/block/sdc
lrwxrwxrwx 1 root root 0 3月 31 15:17 sdd → ../devices/pci0000:32/0000:32:04.0/host3/port-3:0/expander-3:0/port-3:0:3/end_device-3:0:3/target3:0:3/3:0:3:0/block/sdd
lrwxrwxrwx 1 root root 0 3月 31 15:17 sde → ../devices/pci0000:32/0000:32:04.0/host3/port-3:0/expander-3:0/port-3:0:4/end_device-3:0:4/target3:0:4/3:0:4:0/block/sde
lrwxrwxrwx 1 root root 0 3月 31 15:17 sdf → ../devices/pci0000:32/0000:32:04.0/host3/port-3:0/expander-3:0/port-3:0:5/end_device-3:0:5/target3:0:5/3:0:5:0/block/sdf
lrwxrwxrwx 1 root root 0 3月 31 15:17 sdg → ../devices/pci0000:32/0000:32:04.0/host3/port-3:0/expander-3:0/port-3:0:6/end_device-3:0:6/target3:0:6/3:0:6:0/block/sdg
lrwxrwxrwx 1 root root 0 3月 31 15:17 sdh → ../devices/pci0000:32/0000:32:04.0/host3/port-3:0/expander-3:0/port-3:0:7/end_device-3:0:7/target3:0:7/3:0:7:0/block/sdh
lrwxrwxrwx 1 root root 0 3月 31 15:17 sdi → ../devices/pci0000:32/0000:32:04.0/host3/port-3:0/expander-3:0/port-3:0:8/end_device-3:0:8/target3:0:8/3:0:8:0/block/sdi
lrwxrwxrwx 1 root root 0 3月 31 15:17 sdj → ../devices/pci0000:32/0000:32:04.0/host3/port-3:0/expander-3:0/port-3:0:9/end_device-3:0:9/target3:0:9/3:0:9:0/block/sdj
lrwxrwxrwx 1 root root 0 3月 31 15:17 sdk → ../devices/pci0000:32/0000:32:04.0/host3/port-3:0/expander-3:0/port-3:0:10/end_device-3:0:10/target3:0:10/3:0:10:0/block/sdk
lrwxrwxrwx 1 root root 0 3月 31 15:17 sdl → ../devices/pci0000:32/0000:32:04.0/host3/port-3:0/expander-3:0/port-3:0:11/end_device-3:0:11/target3:0:11/3:0:11:0/block/sdl
lrwxrwxrwx 1 root root 0 3月 31 15:17 sdm → ../devices/pci0000:32/0000:32:04.0/host3/port-3:0/expander-3:0/port-3:0:12/end_device-3:0:12/target3:0:12/3:0:12:0/block/sdm
lrwxrwxrwx 1 root root 0 3月 31 15:17 sdn → ../devices/pci0000:32/0000:32:04.0/host3/port-3:0/expander-3:0/port-3:0:13/end_device-3:0:13/target3:0:13/3:0:13:0/block/sdn

iBMA通过盘的pci路径,获取phy id。以sdn为例:

查询到的路径是 `/sys/devices/pci0000:32/0000:32:04.0/host3/port-3:0/expander-3:0/port-3:0:13/end_device-3:0:13/target3:0:13/3:0:13:0/block/sdn`

iBMA将查询 /sys/devices/pci0000:32/0000:32:04.0/host3/port-3:0/expander-3:0/port-3:0:13/phy*路径,获取冒号后的数字作为phy id。

如路径为/sys/devices/pci0000:32/0000:32:04.0/host3/port-3:0/expander-3:0/port-3:0:13/phy-3:13,则phy id为13。

再根据从BMC获取到的丝印文件内容,phy id 为13的盘,丝印为Disk41。

请先帮忙确认sdn盘的phy id。

如果iBMA获取的phy id无误,且确认丝印配置正确。需要BIOS侧确认生成phy id(或pci路径)是否正确?