使用 ipmitool 远程管理服务器

使用 ipmitool 实现 Linux 系统下对服务器的 ipmi 管理

简介: IPMI 是一种可扩展的标准,它定义了如何监控硬件和传感器、控制系统部件以及记录重大事件,随着 ipmi 技术在服务器中的应用,利用 ipmi 的众多优势就成为服务器管理特别是集群管理中不可缺少的部分。本文首先介绍了 ipmi 的一些基本概念,然后给出了如何利用 ipmitool 这一工具实现 linux 系统中ipmi 管理的具体步骤和方法。

1.简介

IPMI(Intelligent Platform Management Interface)即智能平台管理接口是使硬件管理具备“智能化”的新一代通用接口标准。用户可以利用 IPMI 监视服务器的物理特征,如温度、电压、电扇工作状态、电源供应以及机箱入侵等。Ipmi 最大的优势在于它是独立于 CPU BIOS 和 OS 的,所以用户无论在开机还是关机的状态下,只要接通电源就可以实现对服务器的监控。Ipmi 是一种规范的标准,其中最重要的物理部件就是BMC(Baseboard Management Controller 如图1),一种嵌入式管理微控制器,它相当于整个平台管理的“大脑”,通过它 ipmi 可以监控各个传感器的数据并记录各种事件的日志。

图 1

ipmitool 是一种可用在 linux 系统下的命令行方式的 ipmi 平台管理工具,它支持 ipmi 1.5 规范(最新的规范为 ipmi 2.0),通过它可以实现获取传感器的信息、显示系统日志内容、网络远程开关机等功能。Ipmitool 有两种使用方式(如 表1)

表 1

2. 使用 ipmi 的先决条件

想要实现对服务器的 ipmi 管理,必须在硬件、OS、管理工具等几个方面都满足:

2.1 服务器硬件本身提供对 ipmi 的支持

目前惠普、戴尔和 NEC 等大多数厂商的服务器都支持 IPMI 1.5,但并不是所有服务器都支持,所以应该先通过产品手册或在 BIOS 中确定服务器是否支持 ipmi,也就是说服务器在主板上要具有 BMC 等嵌入式的管理微控制器。

2.2 操作系统提供相应的 ipmi 驱动

通过操作系统监控服务器自身的 ipmi 信息时需要系统内核提供相应的支持,linux 系统通过内核对 OpenIPMI(ipmi 驱动)的支持来提供对 ipmi 的系统接口。

2.3 ipmi 管理工具

本文选择的是 Linux 下的命令行方式的 ipmi 平台管理工具 ipmitool

3. 实现对 Linux 服务器的 ipmi 管理

利用 ipmitool 实现对服务器的 ipmi 管理有两种方式:①通过 OS 监控本地服务器;②通过网络监控远程服务器。本文针对这两种监控方式分别给出了利用 ipmi 本地获取 cpu温度和远程控制电源的例子。

3.1 实现对本地服务器的管理

3.1.1 系统结构(如图 2)

图 2

特点(如表2)

表 2

3.1.2 配置本地操作系统支持 ipmi

文中采用的 OS Redhat 9.0 在内核中已经提供了对 ipmi 的支持,这里只需完成如下步骤:

① 载入支持 ipmi 功能的系统模块

注意:必须先载入模块,这样内核才能在②中识别 ipmidev 设备

② 创建字符设备 node,使 ipmitool 可以通过驱动程序访问 ipmi 系统接口

3.1.3 安装 ipmitool,获取 cpu 温度信息

①依次执行如下命令,安装 ipmitool

② 通过 ipmitool 命令获取 cpu 温度

3.2 实现对远程服务器的管理

3.2.1 系统结构(如图 3)

图 3

特点(如表 3)

表 3

3.2.2 在被监控服务器端,把 ip 地址写入 bmc 芯片中

ipmi 的远程监控是通过向与 bmc 相连的网络接口(如图 1:②)发送 udp 数据包实现的,udp 数据包的定位是通过把 ip 地址写入 bmc 芯片来实现,而这需要通过本地的 ipmi 系统接口来完成连。先通过 3.1.2 与 3.1.3 节的步骤在服务器端实现本地 ipmi 系统接口并安装 ipmitool 管理工具。

通过 ipmitool-1.5.9.tar.gz 附带的 bmcautoconf.sh 脚本(默认安装位置 /usr/local/bin/)配置被监控服务器的 ipmi 网络接口(IPMI-over-LAN),并把 ip 地址等信息写入 bmc 中,过程如下:

①用 ipmitool 确定服务器的 LAN channel

从结果可以看出“Channel Medium Type : 802.3 LAN”,channel 7 是 LAN channel

注意:Intel SHASTA SPSH4 服务器的 channel 7 是对应 eth0 网卡的,所以网络连接时必须选择 eth0(100M网卡)进行 ipmi 管理。

②根据确定的 LAN channel 号和网卡修改 bmcautoconf.sh 脚本

注意:上述改动是根据①中确定的LAN channel、对应的 nic 以及 ipmitool 的具体安装位置进行的。

③运行 bmcautoconf.sh,把 ip 等信息写入 bmc

④确定 bmcautoconf.sh 的结果

⑤设置网络访问密码

注意:完成了上述步骤后,被监控服务器上就不再需要 ipmi 系统接口了,可以把 3.1.2 节中的模块卸载,甚至可以重装一个全新的无ipmi 支持的操作系统。

3.2.3 在监控客户端安装 ipmitool,并远程操作服务器电源

①依次执行如下命令,安装 ipmitool

②通过 ipmitool 命令远程控制服务器电源

注意:通过 ipmitool 还可以监控风扇、机箱等众多相关信息,具体的使用方式见 ipmitool manpage

参考资料

关于作者

崔涛,现从事高性能服务器方面的研发工作,对集群、Linux 方面都很有兴趣。您可以通过email: taocui@163.com与他取得联系。

IPMItool 远程管理 HMC 的配置方法

简介: 本文主要讲述如何配置 HMC(Hardware Management Console) 的 BMC(Baseboard Management Controller) 与 OS(Operating System) 内核参数 , 激活 SOL(Serial-over-LAN) 功能 , 以实现运用 IPMItool 远程管理 HMC。

运用 IPMItool 进行 HMC 远程管理是一种非常有效的系统管理方法;它充分利用了当前 HMC 都带有 BMC 的硬件优势,可以不必关心 HMC 操作系统是否处于停机,而远程进行 HMC 开关机与查看其开机后的启动过程;这将不仅大大地减少管理人员奔赴机房的次数,而且更重要的是在很大程度上加强了硬件设备被远程控制的能力。

一般来说,带有 BMC 硬件控制器的设备都可以采用了 IPMItool 进行远程管理。本文将重点介绍 IPMItool 远程管理 HMC 的配置方法,希望对读者能起到一些抛砖引玉的作用。

几个关键概念

HMC、BMC、SOL、 IPMI 与 IPMItool 是当前基于 x86 架构的服务器中经常遇到几个非常重要概念,应该说要想很好地知道 system p 服务器是如何被管理的,理解这几个概念是必不可少的,现在就让我对它们进行逐一地介绍:

HMC

HMC 硬件控制台(Hardware Management Console for pSeries)是基于 Intel 芯片的工作站,它安装了 Linux 的操作系统和 i5 的管理软件。每一台 HMC 除了有内存、硬盘、DVD-RAM、以太网口等,还可以选择不同的显示器、键盘等设备。它提供的一系列功能用来管理 Power System 系列服务器以及服务器上 LPAR 分区的配置。

BMC

BMC(Baseboard Management Controller) 是一种专用芯片 / 控制器 ( 叫做服务器处理器或基板管理控制器 (BMC)),是基于 IPMI 系统的心脏;在 IPMI 管理平台中,系统管理软件对各个被管理器件的管理,都是通过与 BMC 通信来实现的.

BMC 并不依赖于服务器的处理器、BIOS 或操作系统来工作,它有自己的固件、电源、MAC 地址与网络接口,可谓非常地独立,是一个单独在系统内运行的无代理管理子系统。

即便在 HMC 操作系统停机的情况下,BMC 也处于运行状态,它主要支持三种系统接口方法:(1) KCS (Keyboard Controller Style)(2) SMIC(System Management Interface Controller) 与 (3) BT (Block Transfer),具体采用哪种方法是由 SMBIOS 表决定的.

SOL

PMI 2.0 中定义了 SOL(Serial Over LAN) 指令,利用它们可改变 IPMI 会话过程中本地串口传送数据方向,从而实现对远程服务器的 Pre-os 访问、BIOS 设置,提供了通过 LAN 远程查看、启动、诊断和维修故障的标准方式。

其实现原理为:用户在控制端通过 LAN 连接远端服务器(控制端需要根据 SOL 定义指令设计软件来实现监控,远端服务器上 BMC 硬件连线及底层代码需要根据 SOL 定义连线、指令做相应设计),即可在控制端通过安装的软件监控到远端服务器 POST 整个过程,并可以实现远程接管,进入并修改 BIOS 设置。远端服务器主板上必须有 BMC 芯片(或通过外插卡上 BMC 芯片),BMC 芯片和网卡芯片间有 SMBus 连接,控制台通过网络连接,从 BMC 获取 POST 信息。

IPMI

IPMI(Intelligent Platform Management Interface) 是一项标准开放的硬件管理能力接口规范,由 Intel、HP、Dell 和 IBM 公司在 1998 年共同提出,其主要经历过版本 1.0 与 1.5 两代,目前最新版本为 2.0。

利用此接口规范有助于在不同类服务器系统硬件上实施系统管理,使不同硬件平台的集中管理成为可能。它的主要提供了以下几种通用的系统组件访问接口:

  1. 环境感应器 ( 温度,电压 )
  2. 电源控制与识别
  3. 系统事件日志
  4. 看门狗定时器 ( 系统崩溃时发送告警 )

IPMI 良好的自治特性便克服了以往基于操作系统的管理方式所受的限制,例如操作系统不响应或未加载的情况下其仍然可以进行开关机、信息提取等操作。

在工作时,所有的 IPMI 功能都是向 BMC 发送命令来完成的,命令使用 IPMI 规范中规定的指令,BMC 接收并在系统事件日志中记录事件消息,维护描述系统中传感器情况的传感器数据记录。在需要远程访问系统时,IPMI 新的 LAN 上串行 (SOL) 特性很有用。SOL 改变 IPMI 会话过程中本地串口传送方向,从而提供对紧急管理服务、Windows 专用管理控制台或 Linux 串行控制台的远程访问。BMC 通过在 LAN 上改变传送给串行端口的信息的方向来做到这点,提供了一种与厂商无关的远程查看启动、操作系统加载器或紧急管理控制台来诊断和维修故障的标准方式。

IPMItool

IPMItool 是一种管理与配置支持 IPMI1.5/2.0 规范的设备的工具,它提供了一个与设备内 BMC 部件进行通信的简单命令行接口;它能读取传感器数据与域可替代单元信息,打印其值,显示系统事件记录,设置 LAN 配置参数,并且能执行远程机架电源控制。

配置 HMC, 激活 SOL

该部分主要是介绍如何进行 IPMItool 远程管理 HMC 的配置方法;一般来说,该功能的实现需要由 HMC BIOS 与 OS 内核两方面的共同支持,因此它的配置方法也就很自然而然地由 (1) 设置 BIOS 参数与 (2) 设置 OS 参数两大块组成:

设置 BIOS 参数

为了支持 SOL 功能,HMC 的 BIOS 参数设置主要包括 (1) 设置 BMC 网络参数,(2) 使能远程 Console 重定向与 (3) 进行 BMC 设置等。

  1. 设置 BMC 网络参数

    主要在 BMC 配置中设置 IP 地址,子网掩码与缺省网关等网络参数.具体请看下面的实例:

     ********************************************************** 
     ********* BMC Network Configuration ********************** 
     * BMC ***************************************************** 
     * BMC * BMC MAC Address 00*14*5E*F9*50*A9 * * 
     * BMC * Host Name [ HMC2BMC ] * * 
     * * DHCP Control [ Use Static IP ] * * 
     * BMC * * * 
     * BMC * IP Settings * * 
     * Syst* IP Address [ 192.168.000.242 ] * * 
     * BMC * Subnet Mask [ 255.255.255.000 ] * * 
     * Rebo* Gateway [ 192.168.000.250 ] * * 
     * Powe* * ] * 
     * BMC * * * 
     * BMC * Save Network Settings in BMC * * 
     * BMC ******************************************** * 
     * User Account Settings * 
     ********************************************************** 
    
  2. 使能远程 Console 重定向

    为了使能远程 Console 重定向的功能,需要在 HMC 的 BIOS 中设置如下参数:

     ******************************************** 
     * Devices and I/O Ports * 
     ******************************************************** 
     * Remote Console Redirection * 
     ******************************************************** 
     * Remote Console Active [ Enabled ] * 
     * Remote Console COM Port [ COM 1 ] * 
     * Remote Console Baud Rate [ 19200 ] * 
     * Remote Console Data Bits [ 8 ] * 
     * Remote Console Parity [ None ] * 
     * Remote Console Stop Bits [ 1 ] * 
     * Remote Console Text Emulation [ VT100/VT220 ] * 
     * Remote Console Keyboard Emulation [ VT100/VT220 ] * 
     * Remote Console Active After Boot [ Enabled ] * 
     * Remote Console Flow Control [ Hardware ] * 
     ******************************************************** 
     * System MAC Addresses * 
     ******************************************** 
    
  3. 进行 BMC 设置

    为了使能 BMC 功能,其配置应该进行如下设置:

     ********************************************************** 
     * Baseboard Management Controller (BMC) Settings * 
     ********************************************************** 
     * BMC Firmware Version 01.20 * 
     * BMC Build Level GFBT32E * 
     * BMC Build Date 11*01*06 * 
     * * 
     * BMC POST Watchdog [ Disabled ] * 
     * BMC POST Watchdog Timeout [ 5 Minutes ] * 
     * System*BMC Serial Port Sharing [ Enabled ] * 
     * BMC Serial Port Access Mode [ Dedicated ] * 
     * Reboot System on NMI [ Enabled ] * 
     * Power Restore Policy [ Always On ] * 
     * BMC Fan Acoustic Mode [ Standard ] * 
     * BMC Network Configuration * 
     * BMC System Event Log * 
     * User Account Settings * 
     ********************************************************** 
    

设置 OS 参数

为了支持 SOL 功能,设置 OS 参数主要包括 (1) 激活串行 Console 功能与 (2) 使能 OS 内核支持串行端口。主要是在下列两个文件中添加红色部分的内容.

  1. 激活串行 Console 功能
    cdlhmc2:~ # vi /etc/inittab
    s0:345:respawn:/sbin/agetty ttyS0 19200 vt100
    
  2. 使能 OS 内核支持串行端口
     cdlhmc2:~ # vi /boot/grub/menu.lst 
     kernel /boot/bzImage ro root=/dev/sda2 clock=pmtmr vga=0x317 apm=power-off 
     psmouse.proto=bare console=ttyS0,19200 
    

    以上配置是否正确,有待在第三章中进行检验,假如 ipmitool 能从 HMC 上获取到想要的信息,则说明上面的配置正确;否则,请进一步检查。

IPMItool 远程管理 HMC

在一台 Linux 远程控制站上安装上 IPMItool 软件包,当然假如你的远程控制站是 AIX 系统,请先将 IPMItool 源代码进行相应的修改,重新 AIX 编译器进行编译,再进行安装.

借助 ipmitool 命令 man page,弄清楚它的主要参数的意义,然后进行下面这些实例的尝试:

  1. 远程查看 HMC 系统状态
     #lookup HMC's status 
     [root@p5n09 ~]# ipmitool -I lanplus -H 192.168.0.242 -U USERID -P PASSW0RD 
     chassis power status 
     
     Chassis Power is on 
    
  2. 改变 HMC 系统状态
     # power off HMC 
     [root@p5n09 ~]# ipmitool -I lanplus -H 192.168.0.242 -U USERID -P PASSW0RD 
     chassis power off 
     
     Chassis Power Control: Down/Off 
     # power on HMC 
     [root@p5n09 ~]# ipmitool -I lanplus -H 192.168.0.242 -U USERID -P PASSW0RD 
     chassis power on 
     
     Chassis Power Control: Up/On 
     # reboot HMC 
     [root@p5n09 ~]# ipmitool -I lanplus -H 192.168.0.242 -U USERID -P PASSW0RD 
     chassis power reset 
     
     Chassis Power Control: Reset 
    
  3. 远程登陆 HMC
     # login to HMC 
     [root@p5n09 ~]# ipmitool -I lanplus -H 192.168.0.242 -U USERID -P PASSW0RD 
     sol activate 
     
     [SOL Session operational. Use ~? for help] 
     Welcome 
     cdlhmc2 login: hscpe 
     Password: 
     Last login: Thu Nov 19 15:00:25 CST 2009 on ttyS0 
     hscpe@cdlhmc2:~> 
    

小结

管理 HMC 的方法有很多,本文主要介绍了运用 IPMItool 远程管理 HMC 所需的配置方法,并给出其中所需关键步骤的具体实例;希望能给读者的学习与工作带去一点点的帮助.

关于作者

吴志勇,IBM 中国软件开发中心 HPC 部门的软件工程师,主要从事集群系统管理软件的相关研发工作。在业余时间喜欢关注 Linux Kernel community 与 Linux KVM project,学习并阅读其相关源代码。

发表评论