BMC 时钟为什么要单独校
BMC 有自己独立的实时时钟和电池,不会随操作系统或 hypervisor 的 NTP 自动校准。SEL 里所有事件的时间戳都取自这个时钟,一旦漂移,故障时间线就会与业务日志、告警记录对不上,排查时极易把两个不相干的事件关联起来。长效做法是让 BMC 自己走 NTP:在 iDRAC、iLO、iBMC 等管理界面配置 NTP 服务器并回读校验;确实不支持 NTP 的老机型,用周期性 sel time set 兜底。
基本信息
| NTP 支持 | 现代 iDRAC、iLO、iBMC 均在管理界面提供 NTP 配置 |
|---|---|
| 网络前提 | BMC 到 NTP 服务器可达,注意 UDP 123 与防火墙策略 |
| 回读命令 | sel time get 对比本机 date,量化偏差 |
| 兜底方案 | 不支持 NTP 的机型用 crontab 周期执行 sel time set |
| 时区口径 | 全公司统一,避免 UTC 与本地时间混用 |
| 核查指标 | BMC 时间与标准时间偏差超过阈值即告警 |
典型使用场景
- 新机上架:配置管理界面 NTP,纳入统一时间源
- 排障前先确认时间口径,避免按错误时间线推理
- 老机型补齐校时:不支持 NTP 时用周期任务兜底
- 巡检项:把 BMC 时间偏差写进日巡检,超阈值告警
- 事后取证:核对 SEL 事件时间与业务日志的先后顺序
校准与兜底
校准与兜底
# 读取 BMC 时间并与本机对比,量化偏差
ipmitool -I lanplus -H 10.0.0.10 -U admin -f /root/.ipmi_pass sel time get
date
# 手动设置(格式随机型语义有差异,先核对厂商文档)
ipmitool -I lanplus -H 10.0.0.10 -U admin -f /root/.ipmi_pass sel time set '10/13/2026 09:00:00'
# 不支持 NTP 的机型:crontab 每日兜底校时
# 0 3 * * * ipmitool -I lanplus -H 10.0.0.10 -U admin -f /root/.ipmi_pass sel time set "$(date '+%m/%d/%Y %H:%M:%S')"
# 设置后回读确认生效
ipmitool -I lanplus -H 10.0.0.10 -U admin -f /root/.ipmi_pass sel time get校时核对项
| 核对项 | 方法 | 判定要点 |
|---|---|---|
| 当前偏差 | sel time get 与本机 date 对比 | 秒级偏差可接受,分钟级必须处理 |
| 同步方式 | 管理界面 NTP 配置或周期任务 | 有 NTP 优先用 NTP,不要长期靠脚本 |
| 网络可达 | 从管理网测试到 NTP 服务器的连通性 | 专网环境常被 ACL 挡住 UDP 123 |
| 时区设置 | 管理界面时区与公司口径一致 | UTC 与本地混用会造成固定偏移 |
| 生效验证 | 配置后回读而非只看保存成功 | 部分机型需等一个同步周期 |
sel time set 的时间格式在机型间存在差异(日月年顺序与分隔符),脚本化前先在测试机上验证一次,避免把日期写错成未来的时间。
把 BMC 时间往回调可能造成 SEL 中事件时间倒序,历史记录的可信度下降:校时优先小步快跑,必要时保留校时前后的记录说明。