http://www.ibm.com/developerworks/cn/linux/l-ipmi/
http://my.oschina.net/davehe/blog/88801
1、IPMI(Intelligent Platform Management Interface): 即智能平台管理接口是使硬件管理具备“智能化”的新一代通用接口标准。用户可以利用 IPMI 监视服务器的物理特征,如温度、电压、电扇工作状态、电源供应以及机箱入侵等。ipmi最大的优势在于它是独立于CPU BIOS和OS的,所以用户无论在开机还是关机的状态下,只要接通电源就可以实现对服务器的监控。ipmi是一种规范的标准,由美国英特尔、惠普(Hewlett-Packard)、NEC、美国戴尔电脑和SuperMicro等公司制定。新的版本是IPMI2.0(http://www.intel.com/design/servers/ipmi/)。其中最重要的物理部件就是BMC(Baseboard Management Controller),一种嵌入式管理微控制器,它相当于整个平台管理的“大脑”,通过它ipmi可以监控各个传感器的数据并记录各种事件的日志。
新版本的IPMI可以通过串口、Modem以及Lan等远程环境管理服务器系统(包括远程开关机),同时在系统发生错误时能自动发出警告。要对服务器进行IPMI管理,需要被监控的系统具有支持IPMI的硬件设备。如果服务器具有底板管理控制器 (Baseboard Management Controller ,BMC),并且支持IPMI规范,则通过BMC与主机板上的不同传感器通信来监视系统是否有严重事件,并在某些参数超出其预置阈值时发出警报和日志事件。BMC具有以下功能:
(1)通过系统的串行端口进行访问。
(2)故障日志记录和SNMP警报发送。
(3)访问系统事件日志 (System Event Log ,SEL) 和传感器状况。
(4)控制包括开机和关机。
(5)独立于系统电源或工作状态的支持。
(6)用于系统设置、基于文本公用程序和操作系统控制台的文本控制台重定向。
(7)使用LAN访问Red Hat Enterprise Linux串行控制台界面。
2、使用ipmi的先决条件: 想要实现对服务器的ipmi管理,必须在硬件、OS、管理工具等几个方面都满足。
(1)服务器硬件本身提供对ipmi的支持。
(2)目前IBM、HP、Dell和NEC等大多数厂商的服务器都支持IPMI,但并不是所有服务器都支持,所以应该先通过产品手册或在BIOS中确定服务器是否支持ipmi,也就是说服务器在主板上要具有BMC等嵌入式的管理微控制器。
(3)操作系统提供相应的ipmi驱动。通过操作系统监控服务器自身的ipmi信息时需要系统内核提供相应的支持,linux系统通过内核对OpenIPMI(ipmi驱动)的支持来提供对ipmi的系统接口。
3、用IPMI管理工具对服务器进行管理: IPMI可以通过本地和远程两种方式来获取被监控服务器的监测信息,两种方式都需要相关的硬件,但是软件的安装和软件命令使用稍微有所不同。常用的管理工具是ipmitool,在http://ipmitool.sourceforge.net/。Linux下需要先安装OpenIPMI驱动并启动它,在http://sourceforge.net/projects/openipmi/。SourceForge上的ipmitool只支持Linux/Unix系列的OS,不过它有很多针对Windows的移植版本,比如Sun公司的一个版本。在http://www.sun.com/download/上点击Downloads A-Z,找到字母I的分类,可下载支持Windows平台的ipmitool,当前版本为1.8.10.2,集成的ipmi驱动有ism, ms, lan, lanplus, rmcp+lan等,其中ms表示Microsoft的ipmi驱动。注意驱动必须安装在服务器的OS中,管理工具可以安装服务器上(本地管理),或者远程的客户端上(远程管理)。
Linux上启动OpenIPMI驱动模块常用/etc/init.d/ipmi start。启动ipmi驱动后,通过cat /proc/devices | grep ipmidev获得设备号,比如得到的设备号是253,用mknod -m 600 /dev/ipmi0 c 253 0建立文件索引点。然后就可以在本地服务器上运行各种ipmi工具获取相应的服务器信息了。
4、使用ipmitool本地获取信息。
ipmitool本地监控使用命令: ipmitool �CI open command,其中-I open表示使用OpenIPMI接口,Windows下则常用-I ms。command有以下项:
a) raw:发送一个原始的IPMI请求,并且打印回复信息。
b) Lan:配置网络(lan)信道(channel)
c) chassis :查看底盘的状态和设置电源
d) event:向BMC发送一个已经定义的事件(event),可用于测试配置的SNMP是否成功
e) mc:查看MC(Management Contollor)状态和各种允许的项
f) sdr:打印传感器仓库中的所有监控项和从传感器读取到的值。
g) Sensor:打印详细的传感器信息。
h) Fru:打印内建的Field Replaceable Unit (FRU)信息
i) Sel:打印 System Event Log (SEL)
j) Pef:设置 Platform Event Filtering (PEF),事件过滤平台用于在监控系统发现有event时候,用PEF中的策略进行事件过滤,然后看是否需要报警。
k) Sol/isol:用于配置通过串口的Lan进行监控
l) User:设置BMC中用户的信息 。
m) Channel:设置Management Controller信道。
ipmitool �CI open sensor list命令可以获取传感器中的各种监测值和该值的监测阈值,包括(CPU温度,电压,风扇转速,电源调制模块温度,电源电压等信息)
ipmitool �CI open sensor get “CPU0Temp”可以获取ID为CPU0Temp监测值,CPU0Temp是sensor的ID,服务器不同,ID表示也不同。
ipmitool �CI open sensor thresh <id> <threshold> <setting>设置ID值等于id的监测项的各种限制值。
ipmitool �CI open chassis status查看底盘状态,其中包括了底盘电源信息,底盘工作状态等
ipmitool �CI open chassis restart_cause查看上次系统重启的原因
ipmitool �CI open chassis policy list 查看支持的底盘电源相关策略。
ipmitool �CI open chassis power on启动底盘,用此命令可以远程开机
ipmitool �CI open chassis power off关闭底盘,用此命令可以远程开机
ipmitool �CI open chassis power reset实现硬重启,用此命令可以远程开机
ipmi还可以设置系统启动boot的设备,具体见ipmitool帮助文档。
ipmitool �CI open mc reset 使BMC重新硬启动
ipmitool �CI open mc info 查看BMC硬件信息
ipmitool �CI open mc getenables 列出BMC所有允许的选项
ipmitool �CI open mc setenables <option>=[on|off],设置bmc相应的允许/禁止选项。
ipmitool-I open event 1 发送一个温度过高的消息到System Event Log中,可以发送的Event有:
(1) Temperature: Upper Critical: Going High
(2) Voltage Threshold: Lower Critical: Going Low
(3) Memory: Correctable ECC Error Detected
ipmitool-I open event命令可以用测试配置的IPMI中的snmp功能是否成功。
ipmitool -I open lan print 1 打印现咱channel 1的信息 。
ipmitool -I open lan set 1 ipaddr 10.10.113.95设置channel 1 的地址为10.10.113.95
ipmitool -I open lan set 1 snmp public设置channel 1 上snmp的community为public。
ipmitool -I open lan set 1 access on设置channel 1允许访问。
ipmitool -I open pef info打印Platform Event Filtering (pef)信息
ipmitool -I open pef status查看Platform Event Filtering (pef)状态
ipmitool -I open pef policy查看Platform Event Filtering (pef)策略设置
ipmitool -I open sdr list fru 读取fru信息并显示。
备注:PEF由BMC厂商的FIRMWARE设置,ipmitool(V1.8.8)不能进行设置。
Dell 系统底板管理控制器 (BMC) 通过与主板上的不同传感器通信来监视系统是否有严重事件,并在某些参数超出其预置阈值时发出警报和日志事件。 BMC 支持工业标准的 Intelligent Platform Management Interface (IPMI) 协议,可以实现远程配置、监测和恢复系统。 BMC 提供以下功能:
通过系统的串行端口和集成 NIC 进行访问
故障日志记录和 SNMP 警报发送
访问系统事件日志 (SEL) 和传感器状况
控制包括开机和关机在内的系统功能
独立于系统电源或工作状态的支持
用于系统设置、基于文本公用程序和操作系统控制台的文本控制台重定向
使用 LAN 上串行 (SOL) 访问 Linux Enterprise 服务器串行控制台界面。
二,环境检测
dell x9xx系列机器都支持ipmi 2.0协议,如果是在linux环境中,可以运行下面的命令来确认
[root@host ~]# dmidecode |sed -n '/IPMI/,+5p'
如果能看到IPMI信息,就说明支持ipmi,比如下面就是pe 2950 的输出,注意Version 是2.0
IPMI Device Information
Interface Type: KCS (Keyboard Control Style)
Specification Version: 2.0
I2C Slave Address: 0x10
NV Storage Device: Not Present
Base Address: 0x0000000000000CA8 (I/O)
同时需要启动ipmi服务,centos 4 默认安装了该服务执行
#/etc/init.d/ipmi start
如果启动成功就ok
注意:如果要通过网线来控制另一个机器的电源或者是bios重定向,需要满足的条件是这两个机器在同一个局域网或者vlan里面,所以在同一个机房,可能会有机器之间不能相互控制,因为不在同一个vlan或者局域网。
三,配置:
配置bmc可以有多种方法配置,比如开机时候按ctrl+E直接进入配置界面;或者是利用dell 的server admin (web界面)工具包配置,以及dell SDK光盘里面syscfg(CLI命令行)工具配置;还可以通过ipmitool工具进行配置,ipmitool是一个开源软件,这是最方便的配置方 式。考虑到多数机器都是在机房,所以这里主要演示利用ipmitool进行配置的方法。 其他配置方式参考dell文档光盘,有详细的傻瓜化文档。
1. 开启ipmi 服务
#/etc/init.d/ipmi start
2. 编译安装ipmitool 工具
从http://ipmitool.sourceforge.net/ 下载最新稳定版本,然后编译安装到/opt/app/ipmitool
,然后执行该文件自动安装.
3.具体的配置
ipmitool lan set <channel_no> ipsrc static
ipmitool lan set <channel_no> ipaddr x.x.x.x
ipmitool lan set <channel_no> netmask x.x.x.x
ipmitool lan set <channel_no> defgw ipaddr x.x.x.x
ipmitool bmc reset cold 重新加载下
dell和IBM的<channel_no>是1,hp的是2
#$ipmitool lan set 1 ipaddr 10.0.0.12
#$ipmitool lan set 1 netmask 255.255.255.0
#$ipmitool lan set 1 access on
#$ipmitool lan set 1 user
配置好网卡地址和访问权限。
修改一下root用户的密码
#$ipmitool user list 1
#$ipmitool user set password 2 secpass
本机的设置就完成了。
四,测试
然后在局域网的另一个机器上安装好ipmitool ,并且配置一个10.0.0.0/24网段内的地址到该机器上。
比如
# ip a add 10.0.0.11/24 dev eth0
然后测试一下是否能ping 通 10.0.0.12
# ping 10.0.0.12
如果网络通了,则开始下一步的操作
例如直接对服务器关机
#ipmitool -I lan -U root -P secpass -H 10.0.0.12 power off
开机
#ipmitool -I lan -U root -P secpass -H 10.0.0.12 power on
reset
#ipmitool -I lan -U root -P secpass -H 10.0.0.12 power reset
通过sol控制bios和查看linux启动的输出
#ipmitool -I lanplus -U root -P secpass -H 10.0.0.12 sol activate
输入~+. 中断链接,输入~+? 查看帮助
参考文档 http://www.ibm.com/developerworks/cn/linux/l-ipmi/index.html
5、使用ipmitool获取远程服务器信息。
ipmitool命令需要通过相应的interface来访问BMC,在本地获取信息时候采用的是-I open,即为OpenIPMI接口,IPMItool命令包含的接口有open、lan、lanplus。其中open是指的是OpenIPMI与BMC通信,lan是通过Ethernet LAN网用IPV4的udp协议与BMC通信。UDP的数据段包含了IPMI request/resoponse消息,消息具有一个IPMI session头和RMCP头。IPMI使用Remote Management Control Protocol (RMCP) 版本1支持操作系统关闭(pre-OS和OS-absent),RMCP把把数据发送到UDP的623端口。像lan接口一样,lanplus同样使用Ethernet LAN的UDP协议与BMC通信,但是lanplus使用rmcp+协议(在IPMIV2.0中描述)来通信,RMCP+允许使用改经的认证方式和数据完整性检查。Open端口用于本地监控系统使用的;lan/lanplus通过网络进行远程监控。
远程获取服务器监控信息时,需要加上远程服务器的地址。使用以下的命令格式:
ipmitool -H 10.6.77.249 -U root -P changeme -I lan command。
其中-H表示后面跟的是服务器的地址,-U表示后面跟着用户名,-P表示后面跟着用户密码,command与本地获取信息相同。
当提示:
[root@localhost ~]# ipmitool sdr
Could not open device at /dev/ipmi0 or /dev/ipmi/0 or /dev/ipmidev/0: No
such file or directory
Get Device ID command failed
Unable to open SDR for reading
需要添加如下:
unset HISTFILE
modprobe ipmi_watchdog
modprobe ipmi_poweroff
modprobe ipmi_devintf
modprobe ipmi_si
modprobe ipmi_msghandler
当添加ipmi_si时,提示:
FATAL: Error inserting ipmi_si (/lib/modules/2.6.9-5.ELsmp/kernel/drivers/char/ipmi/ipmi_si.ko): No such device
这是因为机器上没有IPMI设备而出现的报错。