IPMI(Intelligent Platform Management Interface)是服务器带外管理的标准协议,独立于操作系统运行,即使服务器宕机也能远程监控硬件状态、查看日志、控制电源。Linux服务器运维中,IPMI带外管理通过BMC(Baseboard Management Controller)芯片实现硬件级远程管控,是数据中心高可用运维的基础设施。
IPMI带外管理架构与BMC芯片工作原理
BMC是集成在服务器主板上的独立微控制器,拥有独立网口或共享NIC实现网络通信。BMC固件运行独立的Linux系统,通过I2C/SMBus总线连接温度传感器、风扇控制器、电源模块、内存ECC寄存器等硬件组件。IPMI协议定义了BMC与外部管理工具之间的通信标准,支持IPMI 1.5(串口/局域网)和IPMI 2.0(新增Serial-over-LAN和加密通信)。
带外管理(Out-of-Band Management)与带内管理的核心区别:带外管理不依赖主机OS和网络栈,主机蓝屏或内核崩溃时BMC仍可正常工作。BMC通过专用物理网口(如Dell iDRAC、HP iLO、Supermicro IPMI)或NC-SI共享主机网卡实现网络连接。
ipmitool工具安装与基础命令操作
在Linux系统中安装ipmitool并加载内核模块:
# 安装ipmitool
yum install -y OpenIPMI OpenIPMI-tools ipmitool
# 或
apt install -y ipmitool openipmi
# 加载内核模块
modprobe ipmi_devintf
modprobe ipmi_si
modprobe ipmi_msghandler
# 设置开机自动加载
echo "ipmi_devintf" >> /etc/modules-load.d/ipmi.conf
echo "ipmi_si" >> /etc/modules-load.d/ipmi.conf
# 验证模块加载
lsmod | grep ipmi
# 输出示例:
# ipmi_devintf 16384
# ipmi_si 65536
# ipmi_msghandler 53248
通过本地KCS接口直接操作BMC:
# 查看BMC硬件信息
ipmitool mc info
# 输出示例:
# Device ID : 32
# Device Revision : 1
# Firmware Revision : 2.14.0
# IPMI Version : 2.0
# Manufacturer ID : 10876 (Supermicro)
# 查看传感器读数(温度、电压、风扇转速)
ipmitool sensor list
# 输出示例:
# CPU1 Temp | 45.000 | degrees C | ok | 0.000 | 0.000 | 0.000
# CPU2 Temp | 42.000 | degrees C | ok | 0.000 | 0.000 | 0.000
# System Fan1 | 5200.000 | RPM | ok | 0.000 | 0.000 | 0.000
# Power Supply 1 | 0x01 | discrete | na | na | na | na
# PWR Consumption | 285.000 | Watts | ok | 0.000 | 0.000 | 0.000
# 查看系统事件日志(SEL)
ipmitool sel list
# 查看SEL详情
ipmitool sel elist
# 清空SEL
ipmitool sel clear
BMC网络配置与LAN通道远程访问设置
配置BMC管理网口IP地址,实现远程IPMI访问:
# 查看当前LAN配置(通道1通常是专用BMC网口)
ipmitool lan print 1
# 配置BMC静态IP
ipmitool lan set 1 ipsrc static
ipmitool lan set 1 ipaddr 192.168.10.100
ipmitool lan set 1 netmask 255.255.255.0
ipmitool lan set 1 defgw ipaddr 192.168.10.1
# 配置BMC MAC地址(如需修改)
ipmitool lan set 1 macaddr 00:25:90:01:02:03
# 设置BMC管理员密码
ipmitool user set password 2 "YourBmcPassword123!"
# 启用LAN通道的ARP响应
ipmitool lan set 1 arp respond on
# 设置SNMP团体字符串(可选)
ipmitool lan set 1 snmp community public
# 验证配置
ipmitool lan print 1
# 确认输出中:
# IP Address Source: Static Address
# IP Address: 192.168.10.100
# Subnet Mask: 255.255.255.0
# Default Gateway IP: 192.168.10.1
配置完成后,从远程管理机通过LAN接口访问BMC:
# 从远程机器查看传感器数据
ipmitool -I lanplus -H 192.168.10.100 -U root -P "YourBmcPassword123!" sensor list
# 远程查看系统日志
ipmitool -I lanplus -H 192.168.10.100 -U root -P "YourBmcPassword123!" sel list
# 远程电源控制
ipmitool -I lanplus -H 192.168.10.100 -U root -P "YourBmcPassword123!" chassis power status
ipmitool -I lanplus -H 192.168.10.100 -U root -P "YourBmcPassword123!" chassis power on
ipmitool -I lanplus -H 192.168.10.100 -U root -P "YourBmcPassword123!" chassis power off
ipmitool -I lanplus -H 192.168.10.100 -U root -P "YourBmcPassword123!" chassis power reset
ipmitool -I lanplus -H 192.168.10.100 -U root -P "YourBmcPassword123!" chassis power cycle
# 查看主机电源状态和启动顺序
ipmitool -I lanplus -H 192.168.10.100 -U root -P "YourBmcPassword123!" chassis bootparam get 0
# 设置下次从PXE启动
ipmitool -I lanplus -H 192.168.10.100 -U root -P "YourBmcPassword123!" chassis bootdev pxe
Serial-over-LAN远程串口控制台配置
SOL(Serial-over-LAN)通过BMC网络传输串口数据,在OS无响应时提供底层调试通道。首先在主机GRUB中启用串口控制台:
# 编辑GRUB配置
vi /etc/default/grub
# 添加串口控制台参数
GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
# 重新生成GRUB配置
grub2-mkconfig -o /boot/grub2/grub.cfg
# 或 Ubuntu:
update-grub
# 配置系统串口getty服务
systemctl enable serial-getty@ttyS0.service
systemctl start serial-getty@ttyS0.service
BMC端启用SOL通道:
# 在BMC端启用SOL(通道1)
ipmitool -I lanplus -H 192.168.10.100 -U root -P "YourBmcPassword123!" sol enable
# 设置SOL波特率(需与主机串口一致)
ipmitool -I lanplus -H 192.168.10.100 -U root -P "YourBmcPassword123!" sol set non-volatile-bit-rate 115200.0 1
ipmitool -I lanplus -H 192.168.10.100 -U root -P "YourBmcPassword123!" sol set volatile-bit-rate 115200.0 1
# 远程激活SOL会话
ipmitool -I lanplus -H 192.168.10.100 -U root -P "YourBmcPassword123!" sol activate
# 退出SOL会话: 按 ~. (波浪号+点)
# 查看SOL配置
ipmitool -I lanplus -H 192.168.10.100 -U root -P "YourBmcPassword123!" sol info 1
IPMI事件监控与告警自动化集成
将IPMI传感器数据接入Prometheus监控体系,实现硬件告警自动化:
# 使用ipmi_exporter采集BMC指标
# docker-compose方式部署
cat << 'EOF' > docker-compose-ipmi-exporter.yml
version: '3'
services:
ipmi-exporter:
image: prometheuscommunity/ipmi-exporter:latest
container_name: ipmi-exporter
network_mode: host
volumes:
- /etc/ipmi_exporter:/etc/ipmi_exporter:ro
command:
- "--config.file=/etc/ipmi_exporter/ipmi_exporter.yml"
restart: unless-stopped
EOF
# ipmi_exporter配置文件
cat << 'EOF' > /etc/ipmi_exporter/ipmi_exporter.yml
modules:
default:
driver: OpenIPMI
collectors:
- bmc
- ipmi
- dcmi
- chassis
- sel
remote:
driver: lan
collectors:
- bmc
- ipmi
- sel
timeout: 30
privilege: admin
user: root
password: "YourBmcPassword123!"
EOF
# Prometheus scrape配置
cat << 'EOF' >> /etc/prometheus/prometheus.yml
- job_name: 'ipmi'
static_configs:
- targets:
- 'localhost:9290'
- '192.168.10.101:9290'
- '192.168.10.102:9290'
params:
module: ['default']
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: localhost:9290
EOF
配置Grafana仪表盘和告警规则:
# Prometheus告警规则
groups:
- name: ipmi_alerts
rules:
- alert: HighCpuTemperature
expr: ipmi_temperature_celsius{sensor=~"CPU.*Temp"} > 75
for: 5m
labels:
severity: warning
annotations:
summary: "CPU温度过高 {{ $labels.instance }}"
description: "CPU温度: {{ $value }}C"
- alert: FanFailure
expr: ipmi_fan_speed_rpm{sensor=~"System.*Fan"} == 0
for: 1m
labels:
severity: critical
annotations:
summary: "风扇故障 {{ $labels.instance }}"
- alert: HighPowerConsumption
expr: ipmi_sensor_value{sensor="PWR Consumption"} > 500
for: 10m
labels:
severity: warning
annotations:
summary: "功耗超限 {{ $labels.instance }}"
IPMI带外管理在数据中心场景下可实现服务器硬件的无人值守运维。配合PXE网络启动和自动化装机脚本,新服务器从开箱到上架部署全流程可通过BMC远程完成,无需现场操作。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-ipmi-dai-wai-guan-li-yu-bmc-yuan-cheng-jian/