BMC 时间与 SEL 时间戳
SEL 里每条事件的时间戳都来自 BMC 自己的实时时钟:这个时钟与主机操作系统相互独立,不会随操作系统校时。结果就是,如果 BMC 时间偏差半小时,SEL 里的故障时间与业务日志就会整体错位,排查时很容易把不相干的两件事关联起来。校准方式有两种:支持 NTP 的机型在管理界面配置时间源,不支持的老机型用 sel time set 周期兜底。
基本信息
| 适用平台 | 支持 IPMI 的服务器 BMC |
|---|---|
| 读取命令 | sel time get 获取当前 BMC 时间 |
| 设置命令 | sel time set 写入时间(格式随机型有差异) |
| 时区约定 | 统一口径,避免 UTC 与本地时间混用 |
| 持久性 | 部分机型掉电后时钟漂移,需周期校准 |
| 验证方式 | 设置后回读并与本机时间对比 |
典型使用场景
- 排障前校准时间,确保 SEL 时间线可信
- 新机上架时纳入标准配置,避免后续逐台补做
- 周期性巡检:把时钟偏差作为一项检查指标
- 取证与复盘:向厂商提交日志前确认时间基准
- 老机型维护:为不支持 NTP 的机器建立兜底校时任务
读取与设置
读取与设置
# 读取 BMC 时间,并与本机时间对比量化偏差
ipmitool -I lanplus -H 10.0.0.10 -U admin -f /root/.ipmi_pass sel time get
date -u
# 设置 BMC 时间(格式随机型存在差异,先在测试机验证)
ipmitool -I lanplus -H 10.0.0.10 -U admin -f /root/.ipmi_pass sel time set '10/13/2026 09:00:00'
# 设置后回读,确认生效
ipmitool -I lanplus -H 10.0.0.10 -U admin -f /root/.ipmi_pass sel time get
# 巡检脚本化:把偏差结果写入台账,超过阈值即告警核对项
| 核对项 | 方法 | 判定要点 |
|---|---|---|
| 当前偏差 | sel time get 与本机时间对比 | 秒级可接受,分钟级必须处理 |
| 时区口径 | 确认界面与运维约定一致 | UTC 与本地混用会造成固定偏移 |
| 同步方式 | NTP 或周期任务 | 有 NTP 优先用 NTP,脚本仅作兜底 |
| 生效验证 | 设置后回读 | 未回读就不算配置完成 |
| 周期检查 | 纳入日巡检或周巡检 | 漂移是渐进的,需要周期性发现 |
可以把「BMC 时间与标准时间的偏差」写进日常巡检:超过阈值的机器自动生成工单,比事后追查时间线省事得多。
把 BMC 时间往回调会造成 SEL 中事件时间倒序,历史记录的可信度随之下降;校时优先采用渐进方式,并在记录中注明调整前后的时间。