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

2023-11-22 15:20

本文主要是介绍使用 ipmitool 实现 Linux 系统下对服务器的 ipmi 管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

developerWorks
文档选项
<script language=JavaScript type=text/javascript> </script>
将打印机的版面设置成横向打印模式

打印本页

<script language=JavaScript type=text/javascript> </script>
将此页作为电子邮件发送

将此页作为电子邮件发送


级别: 初级

崔涛 (taocui@163.com), 软件工程师

2004 年 7 月 01 日

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



参考资料

  • ipmitool manpage , http://ipmitool.sourceforge.net/manpage.html

  • openipmi help , http://openipmi.sourceforge.net/


关于作者

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


<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(500) | 评论(0) | 转发(0) |
0

上一篇:『天涯杂谈』衣食住行小窍门

下一篇:北京自助游信息大全

相关热门文章
  • linux 常见服务端口
  • 【ROOTFS搭建】busybox的httpd...
  • 什么是shell
  • linux socket的bug??
  • linux的线程是否受到了保护?...
  • 请教想查12个月的数据条数,看...
  • new/delete 和malloc/free 有...
  • ubuntu下hadoop环境的搭建...
  • 求助:如何用Linux架设ISATAP...
  • redhat图形界面不出先登录界面...
给主人留下些什么吧!~~
评论热议

这篇关于使用 ipmitool 实现 Linux 系统下对服务器的 ipmi 管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/411066

相关文章

MySQL更新某个字段拼接固定字符串的实现

《MySQL更新某个字段拼接固定字符串的实现》在MySQL中,我们经常需要对数据库中的某个字段进行更新操作,本文就来介绍一下MySQL更新某个字段拼接固定字符串的实现,感兴趣的可以了解一下... 目录1. 查看字段当前值2. 更新字段拼接固定字符串3. 验证更新结果mysql更新某个字段拼接固定字符串 -

java实现延迟/超时/定时问题

《java实现延迟/超时/定时问题》:本文主要介绍java实现延迟/超时/定时问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java实现延迟/超时/定时java 每间隔5秒执行一次,一共执行5次然后结束scheduleAtFixedRate 和 schedu

Java Optional避免空指针异常的实现

《JavaOptional避免空指针异常的实现》空指针异常一直是困扰开发者的常见问题之一,本文主要介绍了JavaOptional避免空指针异常的实现,帮助开发者编写更健壮、可读性更高的代码,减少因... 目录一、Optional 概述二、Optional 的创建三、Optional 的常用方法四、Optio

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

springboot filter实现请求响应全链路拦截

《springbootfilter实现请求响应全链路拦截》这篇文章主要为大家详细介绍了SpringBoot如何结合Filter同时拦截请求和响应,从而实现​​日志采集自动化,感兴趣的小伙伴可以跟随小... 目录一、为什么你需要这个过滤器?​​​二、核心实现:一个Filter搞定双向数据流​​​​三、完整代码