一、前言1.BMC和IPMIBMC全称为Baseboard Management Controller,基板管理控制器,是用于监控和管理服务器的专用控器,普通PC没有,服务器产品必配,相比于普通PC,服务器在稳定性、可靠性、安全性、性能、可管理性等方面都要求更高更严酷,这时候就需要BMC来管控服务器。
BMC的主要功能包括:
设备信息管理:记录服务器型号、制造商、日期、各部件生产和技术信息、机箱信息、主板信息等、BMC信息(服务器主机名、IP、BMC固件版本等信息);服务器状态监控管理:对服务器各个部件(CPU、内存、硬盘、风扇、机框等)的温度、电压等健康状态进行检测;服务器的远程控制管理:服务器的开关机、重启、维护、固件更新、系统安装等;维护管理:日志管理、用户管理、BIOS管理、告警管理等。IPMI全称是Intelligent Platform Management Interface,智能平台管理接口。它是由Intel、DELL、HP及NEC于1998年共同提出,同时,由IPMI论坛创建了IPMI标准依赖。各大厂商的IPMI接口叫法不一样:
厂商
IPMI的不同叫法
戴尔
iDRAC
浪潮
IPMI
惠普
iLO
H3C
HDM
超微
HPMI
联想
XCC
华为
iBMC
IBM
IMM
2.BMC和IPMI的关系IPMI包含了一个以BMC为主的控制器和其他分布在不同系统模块(被称为“卫星”控制器)的管理控制器,卫星控制器包含了相同的架构透过IPMB(Intelligent Platform Management Bus/Bridge) - 一个I²C(Inter-Integrated Circuit)加强实现的系统接口链接到基板管理控制器(BMC),基板管理控制器(BMC) 也能与远程管理控制协议(RMCP) , 一个在此规格内的特殊有线协议一同被管理,实现带外管理。
一个实地替换单元FRU拥有可替换设备的详细清单(如:供应者ID、制造商),一个感应器资料记录(SDR) 则记录了板上个别感应器提供的属性资料,例如:板上可能包含了感应温度、风扇速、电流的感应器。
如上图,通过IPMI接口发送信号给BMC芯片,达到控制和管理BMC芯片的目的。
3.BMC芯片图讲了这么多BMC的概念,那么它实际长啥样呢?以笔者正在使用的超微X12-SPL-F主板为例:
在主板的最左上方有一块黑色芯片,这就是BMC芯片,可以看到上面刻着ASPEED厂商名字,型号为AST2600,它是ASPEED的第7代服务器管理处理器。
4.BMC Web管理后台以超微为例,BMC后台管理视图长这样:
可以在这里远程管理服务器的启停,查看CPU温度、主板温度、风扇转速等:
5.IPMI管理工具介绍完BMC和IPMI后,接下来介绍如何使用IPMI工具进行远程(带外)管理。IPMI的管理工具有很多,比如IPMITool、IPMICFG、OpenIPMI、FreeIPMI,本文将讲述目前最为主流的IPMITOOL。
二、安装IPMITool1.各大Linux发行版上安装发行版
安装命令
Arch Linux
pacman -Sy ipmitool
CentOS/RHEL
yum install ipmitool
Debian/Ubuntu
apt install ipmitool
Gentoo
emerge --ask ipmitool
2.Windows安装Windows版本点此下载,解压到环境变量路径后在cmd窗口下使用。
MD5 checksums:
代码语言:bash复制61e7f8f84df38b62fd167f408673b35f ipmitool.zip3.ESXi安装如果ESXi作为物理机上的宿主机系统,在上面安装ipmitool后在使用ipmitool时无需键入用户名和密码即可系统内直接调用,其它宿主机同理,非宿主机的情况下,则需要键入用户名密码来连接。
点此下载安装包
MD5 checksums:
代码语言:bash复制444af4ce1dc68418583dba2926093980 ipmitool-esxi-vib-1.8.11-2.zip
44cb77cc8bd7f969b8e74eb33aec8d71 ipmitool-1.8.11-2-offline_bundle.zip #解压后的内容
173db5b9f205d9c10d9458ff76d8954b ipmitool-1.8.11-2.x86_64.vib # 解压后的内容将安装包wget下来,或者scp到ESXi后进行下面的安装步骤。
1)设置软件安装等级代码语言:bash复制esxcli software acceptance set --level=CommunitySupported2)安装VIB文件将安装包解压缩到/tmp目录后:
代码语言:bash复制esxcli software vib install -v /tmp/ipmitool-1.8.11-2.x86_64.vib #注意这里vib文件要接绝对路径如果安装失败,加上--no-sig-check选项。
代码语言:bash复制esxcli software vib install -v /tmp/ipmitool-1.8.11-2.x86_64.vib --no-sig-check3)获取安装包信息代码语言:bash复制esxcli software vib get -n ipmitool4)创建软链接二进制文件默认安装在/opt/ipmitool/路径,把它软链接到PATH路径下:
代码语言:bash复制ln -sf /opt/ipmitool/ipmitool /sbin/ipmitool-h参数查看帮助:
代码语言:bash复制ipmitool -h5)卸载如需卸载,执行以下命令:
代码语言:bash复制esxcli software vib remove -n ipmitool三、IPMI用法指南0.写在前面以下命令都是在非IPMI所在物理机器上运行,因此需要携带-H、-U、-P参数来指定远程地址和用户名密码;
如果在IPMI物理机的宿主机系统本身运行,这些参数可以省略,比如宿主机是ESXi,后面直接跟命令参数即可:
代码语言:bash复制ipmitool sensor截图中的密码作为临时使用,在你看到这篇文章后已经被删除,因此没有打码用户名密码部分。
作为远程调用过程中,你不想直接在命令行上体现密码,把-P删掉即可,后面不接密码内容,将会在交互中shell中输入密码:
同时,也并不是所有主板都支持BMC管理,是否有BMC芯片,请自行查询主板厂商和型号支持情况,一般在服务器主板常用。ipmitool理解为一个客户端工具就行,不要误解为ipmitool装上后就能控制任意服务器,BMC才是大前提。
比如不支持BMC的主板,使用IPMITool的报错:
1.读取传感器监测值(sensor list)ipmitool发送信号给BMC芯片,读取主板上的硬件传感器当前值:
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
5.指定IPMI接口(-I)涉及到远程连接-H参数时不指定-I的情况下默认使用lan,其中lan对应ipmi 1.5版本,lanplus对应ipmi 2.0版本,当你的密码长度大于16位的时候,请指定2.0版本使用:
代码语言:bash复制ipmitool -I lanplus -H
通过RMCP协议传输,UDP端口623。
指定-I lanplus则使用IPMI 2.0版本:
6.查看BMC硬件信息(mc info)代码语言:bash复制ipmitool -H
选项
含义
recv_msg_intr
接收消息队列中断
event_msg_intr
事件消息缓冲区完全中断
event_msg
事件消息缓冲区
system_event_log
系统事件日志
oem0
OEM 0
oem1
OEM 1
oem2
OEM 2
启用事件信息缓冲区可以是:
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
ipmitool -H
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
选项id
含义
日志内容
1
温度过高
Temperature - Upper Critical - Going High
2
电压过低
Voltage Threshold - Lower Critical - Going Low
3
内存ECC错误
Memory - Correctable ECC
发送事件一,可以是:
代码语言:bash复制ipmitool -H
通过sel命令也可以获取到日志:
12.打印lan channel信息(lan print)在IPMI 1.5版本后提出了“Channel Model”的概念,通道分为基于会话和无会话,基于会话的通道在路由IPMI消息之前要先激活会话。
我们是基于局域网来远程管理的,打印lan channel信息可以是:
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
14.BMC用户管理(user )1)列举BMC的用户列表(user list)显示BMC的账号信息,通过user list实现:
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
如果不想在交互shell下设置密码,直接在命令行设置,后面接密码即可:
代码语言:bash复制ipmitool -H
3)统计当前用户数量(user summary)代码语言:bash复制ipmitool -H
这四种模式无法更精细化控制风扇转速,我们可以通过raw命令向bmc发送raw格式的控制命令,从而实现相对精细化的控制风扇。
以下面这个命令为例:
代码语言:bash复制ipmitool -H
首先需要把风扇模式调成FULL,如果不设置FULL模式,自定义的转速会被自动转速刷新覆盖,让我们的配置失效。
将风扇模式调成FULL:
代码语言:bash复制ipmitool -H
模式
十六进制取值
Standard Speed
0x00
Full Speed
0x01
Optimal Speed
0x02
Heavy IO
0x03
此时风扇已经全速运行:
或者也可以直接在BMC Web后台管理修改为FULL模式:
通过grafana可以看到风扇转速有了明显的变化趋势:
CPU、内存温度等也有了降低趋势:
接下来设置转速百分比,前面说过,最后一个参数表示风扇转速,范围在0x01 - 0x64之间,那么0x20表示转速百分比为32%:
代码语言:bash复制ipmitool -H
ipmitool -H
16.读取传感器仓库条目(sdr)0)和sensor的区别sdr用于打印传感器仓库中的所有监控项和从传感器读取到的值,sensor用于打印传感器信息。
1)读取CPU温度/风扇转速(sdr get)通过sdr get 可以读取指定sensor id的传感器数据,比如读取CPU温度:
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
3)打印sdr信息(sdr info)输出sdr数据的详细信息:
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
18.从文件执行命令(exec)类似于批处理文件或脚本,但是没有逻辑判断,只是从上到下按照顺序执行文件里面的内容。
比如commandlist文件写入三条命令:
代码语言:bash复制session info all # print sessin info
sdr info # print sdr info
sdr type fan # print fan speed'#'号表示注释
使用exec来批量一次性执行:
代码语言:bash复制ipmitool -H
代码语言:bash复制ipmitool -H
ipmitool -v -H
20.以逗号分割输出字段(-c)默认情况下会使用空格或者'|'作为分隔符,-c参数则通过使用逗号(CSV)进行结果分割,以最近一条日志为例:
代码语言:bash复制ipmitool -c -H
四、总结在本文中,我们深入探讨了 ipmitool 的重要性以及其在服务器管理中的关键作用。我们首先剖析了基板管理控制器(BMC)和 Intelligent Platform Management Interface(IPMI)的关系以及各平台如何正确安装ipmitool。
同时,详细介绍了ipmitool的用法,从监控传感器数据、系统日志管理、用户管理、控制风扇转速到远程启停服务器等,使其适用于不同硬件供应商和系统架构,从而为管理员提供了广泛的管理选择,实现真正意义上的带外管理。
总的来说,ipmitool 不仅是一种功能强大的工具,还是服务器管理中不可或缺的一部分。通过本文的介绍,读者可以更全面地理解和运用 ipmitool,提高系统管理的效率和可靠性。