服务器BMC与IPMI基础知识

2023-05-16

初识BMC与IPMI

什么是BMC?

BMC全名Baseboard management controller, 是一种嵌入式管理微控制器。

BMC全称为基板管理控制器(Baseboard Manager Controller,简称BMC),它通过监控系统的电源、温度等来保证系统处于正常运行的状态。

其实BMC就是一个管家的角色。能对整个系统的电源、温度等性能进行管理,在系统死机时还能充当看门狗的角色对CPU进行重启操作。

一般的电脑系统,比如我们自己用的PC,并不会带BMC,因为没必要,CPU能把BMC要干的活都干了。但复杂的服务器,就非常有必要引入BMC了。这就好比一般的家庭不会有管家,但大户人家,家大业大,所以管家是能分担家务活的。

BMC系统一般依赖于BMC芯片,目前常用的是ASPEED公司生产的AST2500。

AST2500是ASPEED公司生产的BMC芯片,用于服务器的远程管理,一般还兼用作服务器的显示芯片,输出VGA信号,显示功能很基础,但对于服务器而言足够了。


目前所知晓的绝大部分厂商(DELL、HP、联想、浪潮、曙光等)所使用的BMC芯片都是该公司所生产的,型号包括但不限于AST2050/2300/2400/2520,华为以前也使用该公司的BMC,为了保证信息安全,现在已逐步切换为自研BMC芯片。

BMC是实现IPMI通用接口规范的核心控制器。
在支持IPMI v1.5典型接口时,配置上需要有32K的RAM内存和128K的flash memory。当然,配置越高它的性能越强大。
那么BMC在系统中是怎么起到其作用的呢?下面是2001年Intel发布的IPMI v1.5的架构图:Picuture from:Intel INC.
从图中我们可以看到BMC对外通过System Interface连接系统总线,对内通过IPMB:Intelligent platform management Bus连接其他的component。
特别地说,BMC连接了两个网卡,一条本地连接,一条可提供远程连接网口。
这也就提供了远程使用ipmitool工具管理的可能。
除此之外,这些传感器的具体配置信息,如告警门限、事件触发是否允许等配置都保存在一组名为SDR(Sensor Data Record)的数据里面。而传感器产生的告警事件则保存在一组叫做SEL(Sensor Event Log)的数据里面。

什么是IPMI?

IPMI全称是Intelligent platform management interface。 由它的英文我们可以看出,它是一种接口,一种协议。
也就是说,它这个IPMI定义了什么接口可以让使用对应工具管理者看到。也就是说,我通过BMC来控制这些sensor,Fan,voltage,etc…并计算出结果告诉user一个这些参数的序列。
这些参数都可以通过BMC的功能来查询。
上面还提到BMC还可以通过内存和外存存储系统的数据以及事件日志,这些功能的实现有点类似于在微型计算机系统课上实现存储功能。当然其实现是需要汇编语言的。
IPMI的系统组件主要包括如下:

  • BMC:baseboard management controller;
  • IPMB:Intelligent Platform Management Bus;
  • ICMB:Intelligent Chassis management Bus;
  • SDR:Sensor Data Record;
  • SEL:System Event Log;
  • FRU:Field Replacement Unit

User可以通过三种方式使用IPMI查询:

  • Linux操作系统下通过命令行的方式查询;例如CPU温度等
  • 管理软件;
  • 浏览器,带Java虚拟机

什么是BMC

在介绍BMC之前需要了解一个概念,即平台管理(platform management)。

平台管理表示的是一系列的监视和控制功能,操作的对象是系统硬件。比如通过监视系统的温度,电压,风扇、电源等等,并做相应的调节工作,以保证系统处于健康的状态。

当然如果系统真的不正常了,也可以通过复位的方式来重新启动系统。

同时平台管理还负责记录各种硬件的信息和日志记录,用于提示用户和后续问题的定位。

下图是平台管理涉及到的功能概述:

以上的这些功能可以集成到一个控制器上来实现,这个控制器被称为基板管理控制器(Baseboard Manager Controller,简称BMC)。

需要说明的是,BMC是一个独立的系统,它不依赖与系统上的其它硬件(比如CPU、内存等),也不依赖与BIOS、OS等(但是BMC可以与BIOS和OS交互,这样可以起到更好的平台管理作用,OS下有系统管理软件可以与BMC协同工作以达到更好的管理效果)。

一般我们的电脑不会带BMC,因为用处不大,一些温度、电源等的管理,CPU(或者EC,这就是另外一个话题了)来控制就够了。

但是对于系统要求高的设备,比如服务器,就会用到BMC。

当然因为BMC是一个独立的系统,对于某些嵌入式设备,可能不需要其它处理器,光一个BMC就能完成工作。

说到底BMC本身也是一个带外处理器(一般都是ARM处理器)的小系统,单独用来处理某些工作也完全是可以的。

不过这里既然叫做BMC,那么总的来说重点还是在平台管理,所以本文主要说的是服务器中的BMC。

BMC在系统中的位置大致如下图所示:

BMC通过不同的接口与系统中的其它组件连接。

LPC、I2C、SMBUS,Serial等,这些都是比较基本的接口,而IPMI,它是与BMC匹配的接口,所有的BMC都需要实现这种接口,这里需要特别的介绍。

 

IPMI

IPMI的全称是Intelligent Platform Management Interface,智能平台管理接口。

看了名字也不需要特别介绍它用来干什么的了,关于它的详细介绍可以参看https://www.intel.com/content/www/us/en/servers/ipmi/ipmi-home.html,这里只做简单的说明。

IPMI就是对“平台管理”这个概念的具体的规范定义,该规范定义了“平台管理”的软硬件架构,交互指令,事件格式,数据记录,能力集等。而BMC是IPMI中的一个核心部分,属于IPMI硬件架构。下图灰色部分就是IPMI涉及的范围:

可以看到BMC在硬件的最底层,而上层白色部分是系统中的管理软件。

由于本文是介绍BMC的,所以这里只介绍BMC相关的IPMI硬件模块。

 

IPMI硬件模块

IPMI规定了很多的东西,BMC是其中最重要的一个部分,此外还有一些”卫星“控制器通过IPMB与BMC相连,这些”卫星“控制器一般控制特定的设备。

IPMB全称Intelligent Platform Management Bus,是一种基于I2C的串行总线,它用于BMC与”卫星“控制器的通信,其上传递的是IPMI命令。

对于相对简单的系统来说,BMC已经能够满足要求,但是当系统比较复杂,由多个子系统构成时,那么通过IPMB和“卫星”控制器,就能够更好地管理复杂系统。

下面的图描述了与IPMI有关的各个硬件模块:

下面简单的介绍各个部分。

 

MOTHERBOARD

首先是图中的左下角部分,名称写着Mother Board。

通常,在服务器中,这一部分是主角,它包含了CPU,PCH等主要的部件。

这里我们可以看到它连接除了数个组件:网卡,串口和IPMI总线,其实还有一个部分在图中最上面中间的PCI总线。

网卡:服务器需要用到网卡,这个本身没有什么好介绍的,重点其实在于BMC到网卡的连接,后续会介绍。

串口:串口用于输出服务器的调试信息,但是这里值得注意的是其中的Serial Port Sharing,它使得服务器的串口输出可以直接输出,也可以输出到BMC。至于为什么要输出到BMC,这里其实需要注意的是一种常用的场景。服务器位于机房,而工作人员通常不会直接在机房操作,而是通过网络(这也是为什么BMC会连接网卡的原因)进行操作,这个时候过需要获取服务器的串口信息,就不方便直接去机房,这个时候通过BMC来获取服务器串口信息就是一个好主意。

IPMI总线:这是BMC与服务器通信并进行控制的主体,当然少不了。

PCI总线:这个部分的作用跟串口很像。服务器除了输出串口信息,当然还需要输出图形界面之类的东西。从服务器端来看,它通过PCI连接的就是一个显卡,通过它来输出显示。

 

IPMB

再来到图中的右上角,其中描述的是通过IPMB连接的设备。

这些设备跟BMC类似,也是用来进行管理芯片。

它们是对BMC的补充,从而扩展BMC的功能。

 

Non-volatile Storage

我们知道BMC其实是一个独立的芯片,那么它肯定也需要运行系统。

通过BMC里面运行的是一个类Unix系统,而该系统就存放再Non-volatile Storage中,通常就是SPI Flash里面。

跟一般的存储介质没有本质的区别。

除了系统本身之后,还包含一系列BMC会存放的信息。

比如从服务器上面获取到的串口信息;系统本身的报警信息;FRU信息等。

 

Sensors & Control Circuitry

这一部分虽然图中只占很小的一部分,但却是BMC最基本的功能:获取信息和控制环境。

BMC会通过I2C/PECI等总线去获取设备的温度,然后根据预先设定的策略去调整温度。

调整的方式两种,一种就是调整风扇,属于主动降温;另一种是调整供电,比如CPU的P状态,或者关闭多余的硬盘等,属于被动降温。

 

FRU

FRU的全称是Field Replaceable Unit。

从图中也可以看出,类似内存条,CPU等就属于FRU,它们在服务器中通常是可以更换的。

BMC会检测这些设备并保存相关的信息。

当这些设备的在位情况发生变化时,BMC会发生相关的告警

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

服务器BMC与IPMI基础知识 的相关文章

  • px4 守护进程高频获取uorb消息

    任务 xff0c 需要通过后台进程持续的以一定频率 xff0c 获取uorb某个主题的数据 xff0c 因此必须通过守护进程的方式 xff0c 不能中断终端调用其他程序 守护进程可以参考module里面都是用守护进程的方式来跑功能的 xff
  • UDA/语义分割-ColorMapGAN: Unsupervised Domain Adaptation for Semantic Segmentation Using Color Mapping G

    ColorMapGAN Unsupervised Domain Adaptation for Semantic Segmentation Using Color Mapping Generative Adversarial Networks
  • 目标检测正负样本区分和平衡策略(anchor-based)

    最近看了一篇大佬写关于正负样本区分和平衡策略的博文 xff0c 研究了一下并且查了一下资料进行了补充 xff0c 加上个人的见解和解读 xff0c 在此做个总结 xff0c 欢迎大家补充指正 xff0c 侵权必删 大佬博文 xff1a 目标
  • voc旋转标注数据转dota类型

    voc旋转标注数据转dota类型 voc2dota pyListFilesToTxt pyroxml to dota py 在cv领域数据集的标注过程中 xff0c 用labelImg工具我们可以对数据进行标注 xff0c 标注生成的voc
  • CVPR2022: Oriented RepPoints论文模型实践(用dota数据集)

    CVPR2022 Oriented RepPoints论文模型实践 xff08 用dota数据集 xff09 论文 xff1a https arxiv org abs 2105 11111 github xff1a https github
  • DM365 adc学习笔记

    Data 2015 11 23 Author cjh Theme DM365 adc Note 数据手册并没有写明ADC 可采集电压的范围 xff0c 但是整个ADC模块的供电电压是1 8V xff0c 并且参照合众达的程序以及原理图 xf
  • python用PIL库批量裁剪指定大小的图像(自动填充裁剪不完的部分)

    概述 主要功能 xff1a 使用python代码裁剪批量图片 网上用python裁剪图片的代码有很多 xff0c 但是往往没有考虑到图片裁剪不完的情况 举个例子 xff0c 我有4096 1800的图片 xff0c 想把它批量裁剪成1024
  • 图像分割mask图上画出目标检测框

    概述 xff1a 最近在做跟语义分割有关的变化检测方向的工作 当遇到模型的输出是一张mask图的情况下 xff0c 单纯用肉眼看检测的效果可能不是很直观 这时我们可以利用python脚本 xff0c 调用opencv的cv2 connect
  • (深度学习)yolo(txt)与voc(xml)格式相互转换脚本

    提供了两个用来将voc格式的xml文件相互转换的简单脚本 xff0c 修改一下class类和文件目录即可使用 voc转yolo xff1a xml2txt py span class token keyword import span os
  • 【Pascal voc格式的xml文件与YOLO格式文件的互相转换图】

    一图了解xml格式与YOLO格式如何相互转换 xff1a 两种格式相互转换的代码可以参考我之前的文章 xff1a https blog csdn net SSSlasH article details 126927858 spm 61 10
  • 51单片机——LED点阵屏(显示滚动画面)

    目录 一 关于数码管 LED点阵屏显示的注意点 二 功能介绍 三 主要模块的介绍 3 1 74HC595模块和点阵屏显示函数 3 1 1 74HC595介绍 3 1 2 点阵屏显示函数MatrixLED 3 2定时器中断模块 四 程序实现
  • JAVA学习记录

    JAVA学习笔记 总结自how2j cn JAVA基础 HelloWorld 下载JDK 配置环境变量 检查配置是否成功java version 创建源文件 编写基础输出命令System out println 34 hello world
  • C# P2P实现点对点聊天

    P2P xff0c 英文Peer to Peer的缩写 xff0c 中译为对等互联或点对点技术 P2P技术可以让用户可以直接连接到其他用户的计算机 xff0c 进行文件共享与交换 xff0c 同时P2P在深度搜索 分布计算 协同工作等方面也
  • 目标检测自动标注python脚本

    在需要大量标注数据时 xff0c 可以先用少量样本训练一个模型 xff0c 在模型大致可以正常输出类别和位置坐标的情况下进行自动标注 xff0c 后续再进行少量的人工调整 xff0c 可以节省很大的精力 xff08 自动标注的格式仿照lab
  • 微博文本分类任务

    数据 借用了这位兄弟的数据 xff0c 4类文本分类问题 xff1a https blog csdn net qq 28626909 article details 80382029 代码参考 预处理工具torchtext学习参考了nlpu
  • Mac 安装Java反编译工具JD-GUI

    一 下载JD GUI软件 1 首先到Github下载JD GUI软件 xff1a github java decompiler jd gui Public 选择jd gui osx 1 6 6 tar 2 解压打开软件 xff0c 但是提示
  • Dm365 VPBE 后端模块讲解

    Data 2016 12 22 Author cjh Theme DM365 explain of VPBE 研一进来先是接触了TI的dm6437 一款DSP处理器 xff0c DaVinci系类主要用于图像及视频的相关处理 xff0c 和
  • ROS服务通信

    1 服务通信 服务通信也是ROS中一种极其常用的通信模式 xff0c 服务通信是基于请求响应模式的 xff0c 是一种应答机制 也即 一个节点A向另一个节点B发送请求 xff0c B接收处理请求并产生响应结果返回给A 比如如下场景 机器人巡
  • Action(动作通信Python)

    机器人导航到某个目标点 此过程需要一个节点A发布目标信息 xff0c 然后一个节点B接收到请求并控制移动 xff0c 最终响应目标达成状态信息 乍一看 xff0c 这好像是服务通信实现 xff0c 因为需求中要A发送目标 xff0c B执行
  • 键盘+moveit+rviz 控制六轴机械臂(仿真)

    首先下载代码 xff1a git clone https github com ssz160107 catkin ws arm git 打开文件夹如下图所示 打开一个终端运行mini 4wd six arm moveit config文件打

随机推荐