深入理解IPMITool: 揭秘BMC与IPMI的智能服务器管理(带外管理) |
您所在的位置:网站首页 › 华为存储5310v5修改带外管理地址 › 深入理解IPMITool: 揭秘BMC与IPMI的智能服务器管理(带外管理) |
目录
展开
一、前言
1.BMC和IPMI
2.BMC和IPMI的关系
3.BMC芯片图
4.BMC Web管理后台
5.IPMI管理工具
二、安装IPMITool
1.各大Linux发行版上安装
2.Windows安装
3.ESXi安装
1)设置软件安装等级
2)安装VIB文件
3)获取安装包信息
4)创建软链接
5)卸载
三、IPMI用法指南
0.写在前面
1.读取传感器监测值(sensor list)
2.获取指定ID的监测值(sensor get)
1)读取CPU温度
2)读取风扇转速
3)读取内存温度
3.查看底盘状态(chassis status)
4.启停服务器(chassis power on/off)
5.指定IPMI接口(-I)
6.查看BMC硬件信息(mc info)
7.显示BMC当前已启用选项的列表(mc getenables)
8.启用/禁用BMC选项(mc setenables)
9.查看/删除系统日志(sel)
1)查看系统日志(sel list/elist)
2)删除所有系统日志(sel clear)
10.查看/设置BMC时间(sel time)
1)显示当前BMC的时间(sel time get)
2)设置BMC的时间(sel time set)
11.发送事件消息到系统消息日志(event)
12.打印lan channel信息(lan print)
13.设置lan channel的IP地址和掩码(lan set)
14.BMC用户管理(user )
1)列举BMC的用户列表(user list)
2)修改BMC的用户密码(user set password)
3)统计当前用户数量(user summary)
15.设置风扇转速(raw)
16.读取传感器仓库条目(sdr)
0)和sensor的区别
1)读取CPU温度/风扇转速(sdr get)
2)按照Sensor类型读取(sdr type)
3)打印sdr信息(sdr info)
17.读取会话信息(session info)
18.从文件执行命令(exec)
19.提升输出的详细级别(-v)
20.以逗号分割输出字段(-c)
四、总结
一、前言
1.BMC和IPMI
BMC全称为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 H3CHDM 超微HPMI 联想XCC 华为iBMC IBMIMM 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。 二、安装IPMITool 1.各大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: 61e7f8f84df38b62fd167f408673b35f ipmitool.zip 3.ESXi安装如果ESXi作为物理机上的宿主机系统,在上面安装ipmitool后在使用ipmitool时无需键入用户名和密码即可系统内直接调用,其它宿主机同理,非宿主机的情况下,则需要键入用户名密码来连接。 点此下载安装包 MD5 checksums: 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)设置软件安装等级 esxcli software acceptance set --level=CommunitySupported 2)安装VIB文件将安装包解压缩到/tmp目录后: esxcli software vib install -v /tmp/ipmitool-1.8.11-2.x86_64.vib #注意这里vib文件要接绝对路径如果安装失败,加上–no-sig-check选项。 esxcli software vib install -v /tmp/ipmitool-1.8.11-2.x86_64.vib --no-sig-check 3)获取安装包信息 esxcli software vib get -n ipmitool 4)创建软链接二进制文件默认安装在/opt/ipmitool/路径,把它软链接到PATH路径下: ln -sf /opt/ipmitool/ipmitool /sbin/ipmitool-h参数查看帮助: ipmitool -h 5)卸载如需卸载,执行以下命令: esxcli software vib remove -n ipmitool 三、IPMI用法指南 0.写在前面以下命令都是在非IPMI所在物理机器上运行,因此需要携带-H、-U、-P参数来指定远程地址和用户名密码; 如果在IPMI物理机的宿主机系统本身运行,这些参数可以省略,比如宿主机是ESXi,后面直接跟命令参数即可: ipmitool sensor截图中的密码作为临时使用,在你看到这篇文章后已经被删除,因此没有打码用户名密码部分。 作为远程调用过程中,你不想直接在命令行上体现密码,把-P删掉即可,后面不接密码内容,将会在交互中shell中输入密码: 同时,也并不是所有主板都支持BMC管理,是否有BMC芯片,请自行查询主板厂商和型号支持情况,一般在服务器主板常用。ipmitool理解为一个客户端工具就行,不要误解为ipmitool装上后就能控制任意服务器,BMC才是大前提。 比如不支持BMC的主板,使用IPMITool的报错: 1.读取传感器监测值(sensor list)ipmitool发送信号给BMC芯片,读取主板上的硬件传感器当前值: ipmitool -H -U -P sensor list 2.获取指定ID的监测值(sensor get) 1)读取CPU温度sensor get后面接过滤的id名,比如,只读取CPU温度,可以是: ipmitool -H -U -P sensor get "CPU Temp" 2)读取风扇转速同理,读取风扇转速,接风扇的ID即可,譬如读取风扇1的转速: ipmitool -H -U -P sensor get "FAN1" 3)读取内存温度其中ABCD插槽为一个传感器,可以是: ipmitool -H -U -P sensor get "DIMMABCD Temp"EFGH插槽为一个传感器,可以是: ipmitool -H -U -P sensor get "DIMMEFGH Temp" 3.查看底盘状态(chassis status)使用chassis status来查看底盘状态,其中包括了底盘电源信息,底盘工作状态等: ipmitool -H -U -P chassis status 4.启停服务器(chassis power on/off)使用此命令,实现真正意义上的远程开关机,开机(硬开机): ipmitool -H -U -P power on远程关机(硬关机,直接切断电源): ipmitool -H -U -P power off同时还有power soft (软关机,即如同轻按一下开机扭)、power reset (硬重启)、power status (获取当前电源状态)。 5.指定IPMI接口(-I)涉及到远程连接-H参数时不指定-I的情况下默认使用lan,其中lan对应ipmi 1.5版本,lanplus对应ipmi 2.0版本,当你的密码长度大于16位的时候,请指定2.0版本使用: ipmitool -I lanplus -H -U -P通过wireshark抓包可以看到,使用-H远程连接时,不指定-I或者指定-I lan,都是使用IPMI 1.5版本: 通过RMCP协议传输,UDP端口623。 指定-I lanplus则使用IPMI 2.0版本: 6.查看BMC硬件信息(mc info) ipmitool -H -U -P mc info 7.显示BMC当前已启用选项的列表(mc getenables) ipmitool -H -U -P mc getenables 8.启用/禁用BMC选项(mc setenables)以AST2600的BMC为例,可接的选项如下: 选项 含义 recv_msg_intr 接收消息队列中断 event_msg_intr 事件消息缓冲区完全中断 event_msg 事件消息缓冲区 system_event_log 系统事件日志 oem0 OEM 0 oem1 OEM 1 oem2 OEM 2启用事件信息缓冲区可以是: ipmitool -H -U -P mc setenables event_msg=on那么禁用OEM 0可以是: ipmitool -H -U -P mc setenables oem0=off 9.查看/删除系统日志(sel) 1)查看系统日志(sel list/elist)sel即Sytem Event Log,系统事件日志,set list列举日志内容,按时间顺序从上到下排序: ipmitool -H -U -P sel listelist可以获取更详细的扩展日志信息: ipmitool -H -U -P sel elist同时也可以通过first、last,来指定最前面N条,或最近N条。比如指定最近10条和最早10条,可以是: ipmitool -H -U -P sel elist first 10 ipmitool -H -U -P sel elist last 10 2)删除所有系统日志(sel clear)清除所有系统日志,通过sel clear来实现清理: ipmitool -H -U -P sel clear 10.查看/设置BMC时间(sel time) 1)显示当前BMC的时间(sel time get) ipmitool -H -U -P sel time get 2)设置BMC的时间(sel time set)设置的时间格式为:MM/DD/YYYY HH:MM:SS,即月/天/年 时:分:秒,24小时制: ipmitool -H -U -P sel time set "MM/DD/YYYY HH:MM:SS" 11.发送事件消息到系统消息日志(event)可接的选项有: 选项id 含义 日志内容 1 温度过高 Temperature – Upper Critical – Going High 2 电压过低 Voltage Threshold – Lower Critical – Going Low 3 内存ECC错误 Memory – Correctable ECC发送事件一,可以是: ipmitool -H -U -P event 1进入BMC Web管理后台,可以看到我们刚刚发送的事件: 通过sel命令也可以获取到日志: 12.打印lan channel信息(lan print)在IPMI 1.5版本后提出了“Channel Model”的概念,通道分为基于会话和无会话,基于会话的通道在路由IPMI消息之前要先激活会话。 我们是基于局域网来远程管理的,打印lan channel信息可以是: ipmitool -H -U -P lan print 13.设置lan channel的IP地址和掩码(lan set)首先将IP类型改成静态: ipmitool -H -U -P lan set 1 ipsrc static再将lan channel 1的IP地址设置为某个IP: ipmitool -H -U -P lan set 1 ipaddr同理,lan set命令下的参数还有netmask、macaddr、alert、vlan id等,设置掩码、mac地址、告警、vlan等,使用lan set即可查看: ipmitool -H -U -P lan set以设置24位掩码为例,可以是: ipmitool -H -U -P lan set 1 netmask 255.255.255.0设置IPv6地址,可通过lan6 set实现: 14.BMC用户管理(user ) 1)列举BMC的用户列表(user list)显示BMC的账号信息,通过user list实现: ipmitool -H -U -P user list 2)修改BMC的用户密码(user set password)修改用户密码首先要知道用户的数字id是多少,上面的user list即可拿到用户id,之后修改密码,比如Rokas用户的id为3,修改密码则是: ipmitool -H -U -P user set password键入两次密码后,则修改成功,使用新密码连接成功。 如果不想在交互shell下设置密码,直接在命令行设置,后面接密码即可: ipmitool -H -U -P user set passworduser命令下面还提供设置用户权限、账户名、密码的能力: 3)统计当前用户数量(user summary) ipmitool -H -U -P user summary 15.设置风扇转速(raw)超微的风扇模式默认有四种: 这四种模式无法更精细化控制风扇转速,我们可以通过raw命令向bmc发送raw格式的控制命令,从而实现相对精细化的控制风扇。 以下面这个命令为例: ipmitool -H -U -P raw 0x30 0x70 0x66 0x01 0x01 0x02倒数第二个参数,0x00表示控制CPU ZONE,0x01表示控制IO ZONE;0x00代表系统区域,这个区域一般为负责CPU、GPU的风扇,对应风扇编号为FAN1,FAN2。0x00代表周边设备区域,对应风扇编号为FANA,FANB之类;倒数第一个参数0x02是转速百分比,范围在[0x01 – 0x64]之间,0x00表示最低转速,0x64表示最高转速。 首先需要把风扇模式调成FULL,如果不设置FULL模式,自定义的转速会被自动转速刷新覆盖,让我们的配置失效。 将风扇模式调成FULL: ipmitool -H -U -P raw 0x30 0x45 0x01 0x01倒是第一个参数表示FULL模式,模式的取值参考下表: 模式 十六进制取值 Standard Speed 0x00 Full Speed 0x01 Optimal Speed 0x02 Heavy IO 0x03此时风扇已经全速运行: 或者也可以直接在BMC Web后台管理修改为FULL模式: 通过grafana可以看到风扇转速有了明显的变化趋势: CPU、内存温度等也有了降低趋势: 接下来设置转速百分比,前面说过,最后一个参数表示风扇转速,范围在[0x01 – 0x64]之间,那么0x20表示转速百分比为32%: ipmitool -H -U -P raw 0x30 0x70 0x66 0x01 0x00 0x20 ipmitool -H -U -P raw 0x30 0x70 0x66 0x01 0x01 0x20可以明显看到风扇转速已经下来,BMC web后台依然为FULL模式: 16.读取传感器仓库条目(sdr) 0)和sensor的区别sdr用于打印传感器仓库中的所有监控项和从传感器读取到的值,sensor用于打印传感器信息。 1)读取CPU温度/风扇转速(sdr get)通过sdr get 可以读取指定sensor id的传感器数据,比如读取CPU温度: ipmitool -H -U -P sdr get "CPU Temp"同理,读取风扇转速,可以是: ipmitool -H -U -P sdr get "FAN1" "FAN2" 2)按照Sensor类型读取(sdr type)sensor类型可以通过sdr type list命令来列举: ipmitool -H -U -P sdr type list比如读取温度相关的传感器数据: ipmitool -H -U -P sdr type Temperature读取电压相关的传感器数据: ipmitool -H -U -P sdr type Voltage同理,读取风扇相关的传感器数据: ipmitool -H -U -P sdr type Fan其它类型不一一列举。 3)打印sdr信息(sdr info)输出sdr数据的详细信息: ipmitool -H -U -P sdr info 17.读取会话信息(session info)打印会话的所有信息: ipmitool -H -U -P session info all将会打印当前会话的权限、用户id、channel、会话类型等。 18.从文件执行命令(exec)类似于批处理文件或脚本,但是没有逻辑判断,只是从上到下按照顺序执行文件里面的内容。 比如commandlist文件写入三条命令: session info all # print sessin info sdr info # print sdr info sdr type fan # print fan speed‘#’号表示注释 使用exec来批量一次性执行: ipmitool -H -U -P exec commandlist 19.提升输出的详细级别(-v)通过sel elist输出最近一条日志为例,不加-v参数的情况和-v参数的情况: ipmitool -H -U -P sel elist last 1 ipmitool -v -H -U -P sel elist last 1可以是-v也可以是-vv、-vvv,5个v都没问题,v越多越详细,甚至可以把整个报文交互的16进制数据显示出来: 20.以逗号分割输出字段(-c)默认情况下会使用空格或者’|’作为分隔符,-c参数则通过使用逗号(CSV)进行结果分割,以最近一条日志为例: ipmitool -c -H -U -P sel elist last 1这并不会适用于所有命令,比如以表格形式输出的sdr info,-c是没效果的: 四、总结在本文中,我们深入探讨了 ipmitool 的重要性以及其在服务器管理中的关键作用。我们首先剖析了基板管理控制器(BMC)和 Intelligent Platform Management Interface(IPMI)的关系以及各平台如何正确安装ipmitool。 同时,详细介绍了ipmitool的用法,从监控传感器数据、系统日志管理、用户管理、控制风扇转速到远程启停服务器等,使其适用于不同硬件供应商和系统架构,从而为管理员提供了广泛的管理选择,实现真正意义上的带外管理。 总的来说,ipmitool 不仅是一种功能强大的工具,还是服务器管理中不可或缺的一部分。通过本文的介绍,读者可以更全面地理解和运用 ipmitool,提高系统管理的效率和可靠性。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |