先自我检讨一下,执行力太差,拖了这么久才写一篇文章。该打该骂。

    上回把BMC是个什么东西做了个概述,不知道大家是否都清楚了,简言之就是管控服务器的。我个人怀疑最早的服务器上是没有BMC的,后面为了保证安全运维,逐渐增加了这个器件,并赋予了越来越多的功能。前面的“功能概述”里说了两个事情,一个硬件BMC芯片,一个是BMC芯片上运行的IPMI协议固件。所以一般提BMC也是包括这两部分。这次我就先聊聊BMC的软件。

      为啥先聊BMC的软件呢?对于一个研发项目来说,要先有客户需求,搞一通RR、IR、SR、AR之类的东西,这都是不愿写文档的工程师的噩梦。而BMC软件就是客户直接接触的层面,最能体现客户的需求,所以从需求来讲BMC可能更易懂一些。

在上一次提到BMC有如下主要的功能:

     设备信息管理:记录服务器型号、制造商、日期、各部件生产和技术信息、机箱信息、主板信息等、BMC信息(服务器主机名、IP、BMC固件版本等信息);

     状态监测管理:对服务器各个部件(CPU、内存、硬盘、风扇、机箱等)的温度、电压等健康状态进行检测;

     远程控制管理:服务器的开关机、重启、维护、固件更新、系统安装等;

     运行维护管理:日志管理、用户管理、BIOS管理、告警管理等。

    首先是设备信息,这些是要给客户看到的。怎么显示出来呢,当然首选是网页界面了。那BMC软件要有Web功能吧,还有网络通信功能,例如TCP/IP、SSH、SNMP之类的。还有些信息是通过主板上存储器存储的,例如eeprom之类的,这些存储器的接口是I2C、SPI、UART、I3C等,所以这些接口功能要在BMC软件中实现。当然这些接口功能不仅仅体现在设备信息管理功能中,在状态监测管理功能中也会用到。

    状态监测管理,主要对服务器各个部件进行物理状态监控,那和这些部件的通信就是各种接口,在软件中都要实现对应的功能。

   还有远程控制管理功能中,如服务器开关机、重启等功能都要软件参与,当然个人认为软件这方面相对功能不复杂,但要起到客户和硬件之间的桥梁作用。还有固件更新、系统安装、SOL等功能,软件就要做些事情了,毕竟涉及到大的数据量和一些其他协议解析,例如有些板卡需要的MCTP协议。

    还有运行维护管理的一些工作,日志怎么存储,用户管理怎么分级、记录密码等,告警管理涉及到阈值设置、怎么告警、怎么记录等等。

     BMC软件还有个重要功能,也是BMC软件必须实现的功能,甚至说只要提到BMC就不得不提的协议,那就是实现IPMI协议。什么是IPMI协议呢?某度百科这么写的:“IPMI(智能平台管理接口),Intelligent Platform Management Interface 的缩写。原本是一种Intel架构的企业系统的周边设备所采用的一种工业标准。IPMI亦是一个开放的免费标准,用户无需支付额外的费用即可使用此标准。IPMI 能够横跨不同的操作系统、固件和硬件平台,可以智能的监视、控制和自动回报大量服务器的运作状况,以降低服务器系统成本。”用我个人通俗的话说,就是服务器处理器的老大Intel(这个老大最近有点“衰老”了)在服务器管理方面定了一个通信标准,大家逐渐认可并按此标准执行。所以无论谁搞BMC,都要搞定IPMI协议。这样也挺好的,有了golden的模型,我们按照人家去实现就行了。调试的时候,可以直接用IPMItools了。IPMI现在的版本是2.0,不过到2.0就没有了,后面IPMI要被Redfish代替。要说Redfish有什么好处呢,就是比IPMI更安全可靠吧,毕竟BMC本身主打的就是安全监控。当然,作为在服务器厂商的BMC软件开发工作者,无论IPMI协议还是Redfish原则上都不用自己去实现,因为都有现成的软件基础(codebase)实现,这个会在后面再聊聊。

         这个作业补得时间比较晚了,该睡觉了,下次咱们继续聊。

更多推荐