什么是BMC

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

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

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

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

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

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

一般我们的电脑不会带BMC,因为用处不大,一些温度、电源等的管理,CPU来控制就够了。

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

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

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

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

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

云服务器bmc是什么(服务器Bmc)(图1)

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是其中最重要的一个部分,此外还有一些”卫星“控制器通过IPMB与BMC相连,这些”卫星“控制器一般控制特定的设备。

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

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

云服务器bmc是什么(服务器Bmc)(图2)