BMC sel容量满后没有覆盖问题分析
更新时间: 2026/05/28
在Gitcode上查看源码

问题背景

  • 单板类型:NA;
  • 软件版本:OpenUBMC2509;
  • 涉及功能: 日志自动覆盖功能;
  • 触发条件:使用 长稳脚本持续构造sensor告警产生与消除 sel容量满后没有覆盖 自动清空sel容量了。
  • 业务表现:预期日志满了后,需要实现新产生的日志滚动覆盖最早的日志;实际日志满了后没有自动覆盖,自动清空sel内容了。

问题复现步骤

在执行长时间稳定性测试时,通过脚本持续构造传感器告警(产生与消除),发现当SEL(System Event Log)容量满后,并未按照预期进行新日志覆盖旧日志的循环记录行为,而是触发了自动清空SEL日志的操作。

关键日志信息

脚本长时间执行结果如下: web页面显示如下:

告警日志:

text
7d0 | 01/22/2026 | 02:06:52 | Event Logging Disabled #0x05 | Log full | Asserted

在第999次循环中出现了以下关键事件,该事件表示 SEL日志已满,触发了日志记录功能的禁用状态。

定位过程

SEL日志容量满的事件被记录

在第999次循环中出现了以下关键事件:

7d0 | 01/22/2026 | 02:06:52 | Event Logging Disabled #0x05 | Log full | Asserted

该事件表示 SEL日志已满,触发了日志记录功能的禁用状态。

后续日志显示SEL区域被重置,在Web界面查看系统事件时,出现信息

SEL Status - Asserted - Log area reset/cleared(SEL区域被重置/清除)
SEL Status - Deasserted - Log almost full
这表明:当SEL写满后,并没有启用循环覆盖,而是清空了整个日志区域并重新开始记录。

ipmitool sel info 输出佐证

Entries        : 5
Percent Used   : 0%
Overflow       : false
Last Del Time  : 01/22/2026 02:07:32
```
- Entries: 5:当前仅有5条记录。
- Percent Used: 0%:使用率为0%,说明日志区域刚被清空。
- Overflow: false:系统认为没有发生溢出,说明是主动清空而非持续写入导致溢- 出。
- Last Del Time 存在:表明有删除操作发生。

这些数据证明:SEL 日志在满后被清空重置,而非启用循环覆盖模式。

问题原因

当前BMC日志“自动覆盖”功能未生效,实际为“清空重置”,根本原因是使用了默认的 ClearAfterFull 模式。

解决方案

通过配置 BMCSet_SEL_Mode = RotateAfterFull 来实现期望的循环覆盖行为。

具体可通过web打开日志的循环记录模式: 打开循环记录模式后,在进行脚本测试,可看到日志被覆盖。