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 –I 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 –I open sensor list命令可以获取传感器中的各种监测值和该值的监测阈值,包括(CPU温度,电压,风扇转速,电源调制模块温度,电源电压等信息)
ipmitool –I open sensor get “CPU0Temp”可以获取ID为CPU0Temp监测值,CPU0Temp是sensor的ID,服务器不同,ID表示也不同。
ipmitool –I open sensor thresh <id> <threshold> <setting>设置ID值等于id的监测项的各种限制值。
ipmitool –I open chassis status查看底盘状态,其中包括了底盘电源信息,底盘工作状态等
ipmitool –I open chassis restart_cause查看上次系统重启的原因
ipmitool –I open chassis policy list 查看支持的底盘电源相关策略。
ipmitool –I open chassis power on启动底盘,用此命令可以远程开机
ipmitool –I open chassis power off关闭底盘,用此命令可以远程开机
ipmitool –I open chassis power reset实现硬重启,用此命令可以远程开机
ipmi还可以设置系统启动boot的设备,具体见ipmitool帮助文档。
ipmitool –I open mc reset 使BMC重新硬启动
ipmitool –I open mc info 查看BMC硬件信息
ipmitool –I open mc getenables 列出BMC所有允许的选项
ipmitool –I 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设备而出现的报错。