http://www.ibm.com/developerworks/cn/linux/l-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

参考资料

使用 ipmitool 实现 Linux 系统下对服务器的 ipmi 管理的更多相关文章

  1. linux系统下svn服务器操作命令

    linux系统下svn服务器操作命令 .输出指定文件或URL的内容.  svncat 目标[@版本]…如果指定了版本,将从指定的版本开始查找. svncat -r PREV filename > ...

  2. Linux系统下用户与组的管理

    Linux系统下用户与组的管理 一.用户及组基本概述 Linux 系统上,用户管理是基于用户名和密码的方式进行资源的分配. 1.uid(用户身份标识) (1)root用户 uid为0 (2)普通用户: ...

  3. 基于Linux系统下Apache服务器的安装部署

    企业中常用的web服务,用来提供http://(超文本传输协议). web系统是客户端/服务器模式的,所以应该有服务器和客户端里两个部分.常用的服务器程序时Apache,常用的客户端程序是浏览器.ww ...

  4. 详解Linux系统下PXE服务器的部署过程

    在大规模安装服务器时,需要批量自动化方法来安装服务器,来减少日常的工作量. 但是批量自动化安装服务器的基础是网络启动服务器(bootserver). 下面我们就介绍一下 网络启动服务器的 安装和配置方 ...

  5. linux系统下FTP服务器的安装和配置

    FTP是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.简单地说,支持FTP协议的服务器就是FTP服务器. PORT模式: 首先客户端开启一个非特权端口N(大 ...

  6. Linux系统下邮件服务器的搭建(Postfix+Dovecot)

    对于网站来说,发送各种例如注册通知的邮件是很基本的一个需求,之前我一直用的是腾讯的企业邮箱,感觉挺方便的,直接可以绑定QQ邮箱接收邮件,网站配置一下SMTP也就可以发出邮件. 但是在前几天由于有重要信 ...

  7. linux系统下本地搭建git服务器

    linux系统下如何搭建本地git服务器,用于存放团队的开发代码,如下步骤: 1.先用一台服务器来安装git,安装好linux以后,在这里选用的是Ubuntu 14.04.然后配置静态IP:172.1 ...

  8. linux系统下搭建自己的web服务器

    之前在windows 2008 server上搭建了一个用于测试的web服务器,但是在打开网站的时候特别的慢,尤其是图片的加载都会失败,当时以为是路径的问题,但是在服务器上自己打开都特别慢,自己实在找 ...

  9. BMC ipmitool 对linux服务器进行IPMI管理

    IPMI是智能型平台管理接口(Intelligent Platform Management Interface)的缩写,是管理基于 Intel结构的企业系统中所使用的外围设备采用的一种工业标准,该标 ...

随机推荐

  1. npm 与 package.json 快速入门

    npm 是前端开发广泛使用的包管理工具,之前使用 Weex 时看了阮一峰前辈的文章了解了一些,这次结合官方文章总结一下,加深下理解吧! 读完本文你将了解: 什么是 npm 安装 npm 更新 npm ...

  2. checkbox不显示,试试去掉-webkit-appearance这个样式

    目前在项目中发现一个大坑,搞的我找了好久不知道因为什么,自用的reset.css中加入了 -webkit-appearance: none;其他所有表单没有出现问题,但checkbox会不显示,值改为 ...

  3. Python数据类型-03.序列-列表和元组

    本文主要记录关于Python序列中列表和元组的定义特点和常用方法 1.序列(sequence) 1.1.序列的定义 序列是一组有顺序的元素的集合(其实是是对象的集合,后期会引入“对象”这个概念)序列包 ...

  4. 20155315 2016-2017-2 《Java程序设计》第八周学习总结

    教材学习内容总结 第14章 NIO与NIO2 1.认识NIO NIO使用频道(Channel)来衔接数据节点,在处理数据时,NIO可以让你设定缓冲区(Buffer)容量,在缓冲区中对感兴趣的数据区块进 ...

  5. InputStream,String和Reader之间的转换

    1.String –> InputStreamInputStrem is = new ByteArrayInputStream(str.getBytes());orByteArrayInputS ...

  6. 1028:Ignatius and the Princess III

    本题应该有两种方法: 1.母函数法 2.递推法 母函数不了解,待充分了解之后,再进行补充! 这里为递推实现的方法: 思路: 定义:n为要拆分的整数: k为拆分的项数: f[n][k]代表 n的整数拆分 ...

  7. Struts2自定义标签2自定义一个按班级id查询出该班级下的学生,存放进值栈,并遍历出来。

    Struts2自定义标签的流程概念: (1)需要两个类:标签类(继承相应的tag类),基本类(继承Component).标签类专门负责从客户端取得用户输入的一些属性,这个普通的jsp自定义标签一样,取 ...

  8. test20181024 ming

    题意 分析 考场做法 考虑二分答案,R开到1e9就能过了. 判断答案合法,就判断时间和是否超过拥有的时间就行了.但要把di从小到大排序,不然容易验证贪心是错的. 时间复杂度\(O(n \log n)\ ...

  9. Intellij Idea上Spring Boot编译报错:Error:(3, 32) java: 程序包org.springframework.boot不存在

    很尴尬,为了使用Spring Boot的Initializr,特意下了个Intellij Idea,刚按提示新建一个Spring Boot的Maven项目后,就出现红叉叉了.因为IDE是新的,开始是M ...

  10. SpringBoot2.0 url中出现特殊符号「带括号{}'"等等」时会抛出400错误

    访问 http://127.0.0.1:8080/api?method=taxiong.goods.list&params={"page":1,"pageSize ...