NVME盘出现is missing告警

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

问题描述

NVME盘出现is missing告警,查看sr发现该告警是Drive对象的Missing属性等于2产生,Drive Missing属性什么情况下会等于2。

环境信息

  • 操作系统:[如 Ubuntu 24.04]

  • 软件版本:[如 OpenUBMC2509]

  • 硬件配置:[如 CPU、内存等]

重现步骤

  1. [第一步]

  2. [第二步]

  3. [第三步]

期望结果

知道Drive Missing属性什么情况下会等于2

实际结果

[实际发生了什么,包含错误信息]

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

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

结论

Drive.Missing=2表示“无效值”,意味着系统未能成功获取NVMe盘的存在状态,常见于以下情况:

  • 通信失败(MCTP/SMBus)
  • 协议未适配
  • BMC重启后信息未恢复
  • SerialNumberBDF匹配失败

建议优先排查通信链路和协议适配性,并参考GitHub Issue #134 跟进类似问题的修复进展。

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

NVMe盘出现“is missing”告警问题分析

问题描述

NVMe盘出现“is missing”告警,经查该告警由Drive对象的Missing属性等于2触发。需要明确Drive对象的Missing属性在何种情况下会设置为2。


根本原因分析

根据知识库信息,Missing属性值为2代表“无效值”(invalid value),而非简单的“硬盘不在位”状态。以下是详细解析:

Missing属性取值定义

Missing属性是一个U8类型字段,其值具有以下含义:

  • 0:硬盘在位(正常状态)
  • 1:硬盘丢失/不在位
  • 2:无效值(表示状态未知或获取失败)

来源依据:文档 [{"id": 7, "title": "硬盘背板开发指南", ...}] 明确指出:
"Missing": 0, // 硬盘的missing状态,0:不在位,1:在位,255:无效值"
(注:部分文档中“0”和“1”的语义可能互换,但“2”或“255”均表示无效/未初始化)


Missing属性为何会等于2(无效值)?

虽然知识库未直接说明Missing=2的具体场景,但结合相关机制可推断出可能导致该状态的几种情况:

1. BMC重启后NVMe信息获取失败

  • NVMe盘在BMC重启后可能未能及时上报信息,导致系统无法确认其存在状态。
  • 相关Issue:https://gitcode.com/openUBMC/storage/issues/134 提到“NVMe磁盘插拔后概率性获取不到信息”,这会导致状态字段初始化失败,表现为无效值。

2. 协议或通信异常(NVMe-MI/SMBus/MCTP)

  • 若使用MCTP over SMBus通信失败,会导致无法读取NVMe盘的VPD信息,进而无法完成设备识别和状态更新。
  • 典型表现:mctp over smbus建链失败 → 未进入SMART信息更新流程 → 状态字段保持默认/无效值。

来源依据:文档 "【NVME盘获取不到smart信息】" 中提到因“mctp over smbus建链失败”导致信息获取中断。

3. 固件不支持或未正确配置协议文件

  • 新型号NVMe盘若未适配NVMe-MISSD-Format协议,系统将无法解析其状态。
  • 必须通过SR配置文件(如14140224_PROTOCOL_0.sr)加载对应协议支持,否则状态获取失败。

来源依据:硬盘管理手册指出:“全新的未适配过的NVMe盘可能需要适配NVME-mi/SSD-Format协议。”

4. Drive对象与NVMe物理设备建链失败

  • NVMe对象通过slotDrive对象建立关联。
  • 如果SerialNumberBDF等关键标识无法匹配,则Drive对象无法正确绑定物理盘,导致状态字段无法更新,保留为无效值。

来源依据:c_handler_nvme:find_object函数依赖SerialNumber进行匹配,若data.SerialNumber为空则返回nil。


验证建议

为确认具体原因,建议执行以下操作:

  1. 检查日志中是否存在MCTP通信超时或建链失败记录

    mctp_engine: request timeout
    
  2. 确认是否成功加载NVMe-MI协议相关对象

    • 检查Chip_TempChip_SSD等对象是否创建成功。
  3. 查看BMC重启后是否存在短暂状态异常

    • 是否在系统启动初期出现Missing=2,随后恢复为0或1?
  4. 确认SR配置文件是否包含对应NVMe厂商的调速策略和协议支持


解决方案建议

问题原因 解决方案
协议未适配 为对应NVMe型号添加NVMe-MISSD-Format协议SR文件
MCTP通信失败 检查SMBus物理连接、地址冲突或驱动问题
序列号获取失败 确保BIOS/BMA正确上报SerialNumber至BMC
BMC重启后状态丢失 优化NVMe信息恢复逻辑,增加重试机制

结论

Drive.Missing=2表示“无效值”,意味着系统未能成功获取NVMe盘的存在状态,常见于以下情况:

  • 通信失败(MCTP/SMBus)
  • 协议未适配
  • BMC重启后信息未恢复
  • SerialNumberBDF匹配失败

建议优先排查通信链路和协议适配性,并参考GitHub Issue #134 跟进类似问题的修复进展。

1 个赞

该告警的场景是 raid卡管理的硬盘,bmc侧在位,但raid卡返回的pdlist中无该硬盘
你们出该告警的情况下,nvme盘是在raid卡管理下吗

是的,都在raid卡下管理

1 个赞

带内raid卡查看这种硬盘也在raid卡下吗

是的,带内查看也在,AC之后就没告警了