问题描述
使用 长稳脚本持续构造sensor告警产生与消除 sel容量满后没有覆盖 自动清空sel容量了
环境信息
-
操作系统:[如 欧拉23.20]
-
软件版本:[如 OpenUBMC2509]
-
硬件配置:[如 鲲鹏S920等]
重现步骤
-
[第一步]

-
[第二步]
-
[第三步]
期望结果
实际结果
[实际发生了什么,包含错误信息]
尝试过的解决方案
[列出您已经尝试过的解决方案及结果]
使用 长稳脚本持续构造sensor告警产生与消除 sel容量满后没有覆盖 自动清空sel容量了
操作系统:[如 欧拉23.20]
软件版本:[如 OpenUBMC2509]
硬件配置:[如 鲲鹏S920等]
[第一步]

[第二步]
[第三步]
[实际发生了什么,包含错误信息]
[列出您已经尝试过的解决方案及结果]
答案内容由AI生成,仅供参考:
在执行长时间稳定性测试时,通过脚本持续构造传感器告警(产生与消除),发现当SEL(System Event Log)容量满后,并未按照预期进行新日志覆盖旧日志的循环记录行为,而是触发了自动清空SEL日志的操作。这表明系统的日志管理策略并非采用“循环覆盖”机制,而是采取了“满则清空”的处理方式。
根据提供的执行日志和界面截图,关键现象如下:
在第999次循环中出现了以下关键事件:
7d0 | 01/22/2026 | 02:06:52 | Event Logging Disabled #0x05 | Log full | Asserted
该事件表示 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 日志在满后被清空重置,而非启用循环覆盖模式。
BMCSet_SEL_Mode根据知识图谱信息:
BMCSet_SEL_Mode是一个配置参数,用于决定IPMI SEL的存储模式:
可选值为:ClearAfterFull(默认)或RotateAfterFull
ClearAfterFull:当日志满时,清除所有记录,重新开始写入。RotateAfterFull:启用循环覆盖模式,新事件覆盖最老的事件。
当前行为(清空日志)正是
ClearAfterFull模式的典型表现。
结合文档和实际行为可判断:
当前BMC系统中 BMCSet_SEL_Mode 的设置为默认值 ClearAfterFull,并未开启 RotateAfterFull(循环覆盖)模式。
| 实体 | 描述 |
|---|---|
| SEL (System Event Log) | IPMI标准组件,记录硬件事件,包括传感器告警、电源状态等。 |
| BMCSet_SEL_Mode | 控制SEL日志行为的配置项,默认为 ClearAfterFull。 |
| RotateAfterFull | 一种日志存储模式,允许日志满时自动覆盖最老条目,实现循环写入。 |
| Event Logging Disabled #0x05: Log full | 标准IPMI事件,表示SEL已满,触发日志禁用。 |
同时,在Web界面中虽提供了“●线性记录 ○循环记录”选项,但实际底层配置未生效或未正确映射到 BMCSet_SEL_Mode。
| 项目 | 期望行为(循环覆盖) | 实际行为(当前情况) |
|---|---|---|
| 日志满后处理方式 | 新日志覆盖最老日志 | 清空所有日志,重新开始 |
| 日志连续性 | 保持最近N条历史记录 | 历史记录全部丢失 |
ipmitool sel info 显示 |
Entries稳定在最大值附近,Percent Used ≈100% | Entries骤降至0,Percent Used为0% |
| Overflow标志 | true(表示溢出并覆盖) | false,且存在Last Del Time |
| 是否删除日志 | 否 | 是(日志区域被重置) |
RotateAfterFull 模式修改BMC配置,将SEL模式从 ClearAfterFull 改为 RotateAfterFull,以实现真正的循环覆盖功能。
# 示例命令(具体取决于BMC实现)
ipmitool raw 0x0a 0x42 0x01
注:
0x0a 0x42是“Set SEL Time”或“Set SEL Entry”相关命令组,具体需查阅BMC厂商文档。
或者通过Redfish API或OEM接口设置:
{
"Oem": {
"Huawei": {
"BMCSet_SEL_Mode": "RotateAfterFull"
}
}
}
注意:并非所有BMC版本都支持此功能。例如OpenBMC开源项目中部分版本仅支持Clear模式。
若无法启用循环模式,可通过运维脚本实现“软性循环”:
# 定期导出SEL日志并保留最新N条
ipmitool sel list > /backup/sel_$(date +%Y%m%d_%H%M%S).log
ipmitool sel clear # 手动清空(可选)
建议结合
Log Rotation机制,如使用logrotate工具管理。
若SEL容量过小导致频繁写满,可在CSR阶段调整SEL分配单元数量:
# 配置示例(CSR配置)
"SEL": {
"NumAllocUnits": 4000, # 增加分配单元数
"AllocUnitSize": 16 # 每单元16字节
}
总容量 = 4000 × 16 = 64KB,可容纳更多事件。
| 类别 | 内容 |
|---|---|
当前BMC使用的SEL模式为默认的 ClearAfterFull,日志满后会清空并重置,而非循环覆盖。 |
|
检查并修改 BMCSet_SEL_Mode 参数,设置为 RotateAfterFull 以启用真正的循环覆盖机制。 |
|
使用 ipmitool sel info 观察:• Entries 应接近最大值 • Percent Used ≈100% • Overflow = true(若支持) |
|
| 修改SEL模式可能影响日志审计合规性,需评估业务需求是否允许旧日志被覆盖。 |
可以查询BMC对IPMI SEL命令的支持情况:
ipmitool mc info
输出中应包含:
Additional Device Support:
SEL Device
表示支持SEL功能,但是否支持滚动模式还需看固件实现。
查看是否支持 Reserve SEL 和 Partial Add 操作,是实现循环写入的基础。
结论:
当前BMC日志“自动覆盖”功能未生效,实际为“清空重置”,根本原因是使用了默认的 ClearAfterFull 模式。应通过配置 BMCSet_SEL_Mode = RotateAfterFull 来实现期望的循环覆盖行为。
相关链接: