使用 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

相关文章

Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

《SpringBoot整合Redis注解实现增删改查功能(Redis注解使用)》文章介绍了如何使用SpringBoot整合Redis注解实现增删改查功能,包括配置、实体类、Repository、Se... 目录配置Redis连接定义实体类创建Repository接口增删改查操作示例插入数据查询数据删除数据更

Java Lettuce 客户端入门到生产的实现步骤

《JavaLettuce客户端入门到生产的实现步骤》本文主要介绍了JavaLettuce客户端入门到生产的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录1 安装依赖MavenGradle2 最小化连接示例3 核心特性速览4 生产环境配置建议5 常见问题

使用python生成固定格式序号的方法详解

《使用python生成固定格式序号的方法详解》这篇文章主要为大家详细介绍了如何使用python生成固定格式序号,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录生成结果验证完整生成代码扩展说明1. 保存到文本文件2. 转换为jsON格式3. 处理特殊序号格式(如带圈数字)4

Java使用Swing生成一个最大公约数计算器

《Java使用Swing生成一个最大公约数计算器》这篇文章主要为大家详细介绍了Java使用Swing生成一个最大公约数计算器的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下... 目录第一步:利用欧几里得算法计算最大公约数欧几里得算法的证明情形 1:b=0情形 2:b>0完成相关代码第二步:加

linux ssh如何实现增加访问端口

《linuxssh如何实现增加访问端口》Linux中SSH默认使用22端口,为了增强安全性或满足特定需求,可以通过修改SSH配置来增加或更改SSH访问端口,具体步骤包括修改SSH配置文件、增加或修改... 目录1. 修改 SSH 配置文件2. 增加或修改端口3. 保存并退出编辑器4. 更新防火墙规则使用uf

Java 的ArrayList集合底层实现与最佳实践

《Java的ArrayList集合底层实现与最佳实践》本文主要介绍了Java的ArrayList集合类的核心概念、底层实现、关键成员变量、初始化机制、容量演变、扩容机制、性能分析、核心方法源码解析、... 目录1. 核心概念与底层实现1.1 ArrayList 的本质1.1.1 底层数据结构JDK 1.7

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.