SP686Craid卡下硬盘异常问题分析
更新时间: 2026/05/28
在Gitcode上查看源码

问题背景

  • 单板类型:NA
  • 软件版本:NA
  • 涉及功能:raid卡下硬盘点灯。
  • 触发条件:对raid下sata盘进行热插拔后,手动给未在raid下的盘点灯。
  • 业务表现:预期raid下sata盘热插拔后盘序正常显示;实际raid下显示了未接raid的nvme盘序号。

问题复现步骤

  1. raid下有五个sata盘:Disk0,1(sata)组了个raid0,Disk2,4,5(sata)是jbod。Disk8-11是nvme,没有接raid。
  2. Disk0,1(sata)组了个raid0。

  1. 对Disk0 (RAID0的一个sata)进行热插拔之后,手动给其他盘点灯会报错,并且Disk0的盘序被错误显示成Disk8。

  1. 重启BMC也不会恢复。

关键日志信息

对Disk0 (RAID0的一个sata)进行热插拔之后,手动给其他盘点灯会报错,并且Disk0的盘序被错误显示成Disk8。

定位过程

目前发现Disk8对应的Drive的SlotNumber被赋值为和Disk4相同的pd.slot。是下面这个流程异常:

点灯流程中,不能手动点其他盘的定位灯,会干扰定位流程,定位流程每次只会点一个盘的灯,并读取盘的定位灯状态来确定是否bmc侧的盘和带内raid卡的管理的盘是同一个,之所以重启bmc也未恢复是因为映射关系做了复位持久化,在os下电情况下,raid卡定位过的盘依然能显示在raid卡下。

问题原因

在执行map_allowed时,手动对nvme8进行了点灯,导致映射关系建立错误。

解决方案

  • 快速解决方案:

    需要AC一下:BMC侧cli命令(此命令在装备调试版本才可以使用):

    bash
    ipmcset -t maintenance -d accycle
  • 长期规避方案:

    1. 防止定位流程中,用户手动点灯干扰了定位。
    2. 错误定位了后,除了AC,可以通过拔盘恢复。