BMCRedfish简述
Posted jiangwei0512
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BMCRedfish简述相关的知识,希望对你有一定的参考价值。
Redfish是什么
Redfish是一个规范,由DMTF(Distributed Management Task Force)这个组织维护。
Redfish是一种基于HTTPs服务的管理标准,利用RESTful接口实现设备管理。
Redfish使用了很多互联网的概念,上面提到的RESTful就是其中使用的一个概念。RESTful是一个形容词,表示的是符合REST(Representational State Transfer)这一原则的程序或者设计。RESTful程序或者设计使用一种简单的形式来完成数据传输,具体操作只有下面的几种:
操作 | 说明 |
---|---|
POST(Create) | 创建新资源或执行指定资源的方法。 |
GET(Read) | 返回所请求的资源描述。 |
PATCH(Update) | 修改当前资源属性。 |
DELETE(Delete) | 删除指定资源。 |
每个Redfish操作传输的数据格式也是标准的,有几种类型,比较常用的如JSON格式。
Redfish使用的另一个互联网概念就是Service-Client,如下图所示:
Redfish最早是使用在服务器设备上的,此时服务器(通常是服务器上的BMC)就是Redfish Server,而Redfish Client可以是你的电脑,或者更确切得说是电脑中的Redfish程序,通过该程序,你可以访问、修改、更新、删除服务器上的资源。
Redfish的规范可以在REDFISH | DMTF下载到,到写本文时的最新版本是1.16。
Redfish用来做什么
通常一台服务器包含若干强劲的CPU、若干GPU卡、硬盘、网卡等等,你可以用这台强大的服务器完成各种工作,比如数据运算,动画渲染,等等。一般情况下,服务器能够正常工作,可是还是存在各种异常的情况,比如服务器风扇坏了一个,导致设备过热产生异常。
当服务器异常之后,就需要去排查和解决问题。通常服务器会放在一个独立的房间,因此你需要到这个房间去做问题的定位。由于散热的问题,房间里面通常不是过热就是过冷,更可怕的是,为了散热,服务器通常安装有强劲的风扇,它们产生的噪音会让你定位的过程充满身体的不适。如果只是一台服务器还能够忍受,而当你有一个房间的服务器时,情况会变得更难以忍受。
此时你会想到,是否可以远程来定位呢,这样就不需要在冷气和噪音都过大的房间里面呆着。通常情况下,在服务器上安装的操作系统都存在远程工具(比如SSH),所以远程操作还是可以实现的,所以我们可以在服务器操作系统中增加各种功能,用于监控温度、风扇,等等。但是这样还是存在一些问题:如果服务器的问题实在太大导致操作系统都挂掉了怎么办?还有如果让服务器操作系统做这些监控的工作,是否浪费了大量的算力了呢,尤其是这些工作对于CPU来说实在是大材小用了(监控的都是慢速设备,对于高速的CPU来说,效率上存在的浪费)。
为了解决这个问题,一个办法就是引入额外的组件来做监控操作。有了个想法之后,各大服务器厂商就联合起来,引入了一个平台管理(Platform Management)的概念。它通过一个额外的基板管理芯片(Baseboard Manager Controller,简称BMC)来完成所有的监控工作,当然除了监控工作,我们还希望它能完成其它的基本操作,比如服务器开关机、日志记录、监控异常后告警,等等,这样对于问题的发现、定位和解决会有更多的帮助。
到这里硬件上已经有了,还需要有软件上的实现。这里厂商又推出了一个规范,称为IPMI(Intelligent Platform Management Interface)。IPMI规范定义了外部设备(主要是服务器中的各种组件)与BMC交互的接口,这也是能够理解的,因为BMC需要监控服务器的其它设备的话,肯定需要一个通信的方式。通信的硬件接口,可以是普通的I2C、UART、PCIe、USB、网卡等,也可以是特定的KCS、IPMB等BMC特定的硬件接口,而其上传输的数据就需要满足IPMI规范定义的格式。这些数据格式定义的操作能够满足基本的服务器操作,比如服务器开关机、传感器数据获取、日志获取,等等。
到这里,虽然还有很多的功能和细节没有提及,但是服务器的平台管理功能基本上就完善了。不过,说了一大堆,本文的主角Redfish却还没有提及。Redfish的出现实际上是为了代替IPMI。在使用了一段时间的IPMI之后(IPMI在1998年推出,Redfish在2014年推出),服务器厂商发现了一些问题,首先是IPMI规范虽然定义了很多的操作,但是最初的版本中并没有定义足够多的操作,导致在发展的过程中,各个服务器各自使用了很多的自定义操作,由于IPMI的操作是按照(NetFn/Cmd)的格式定义的,导致对于同一个(NetFn/Cmd),不同的厂商提供的服务器可能对应不同的操作。然后是IPMI设计之初对于安全方面的考虑就不够,导致当前存在不少的安全漏洞,修复代价巨大。所以到2013年退出2.0版本的IPMI规范之后就不再更新了,而是转到了Redfish。
Redfish基于HTTPs,所以安全上有保证。且Redfish使用的RESTfull接口和JSON数据格式简单易用又易读,还便于扩展。所以成为了IPMI的替代者。目前的服务器基本都实现了Redfish接口。
到这里,所以Redfish在本文中的出场机会不多,但是通过前面的说明,应该也已经能够明白Redfish的作用了吧。
如果要说到实际的体验,你可以通过浏览器登录到BMC上,比如下面这样(示例来自虚拟的OpenBMC,并非真的服务器):
通过浏览器进行的操作,背后就可能包含Redfish实现。这是一个间接的示例,你可能还看不到Redfish的身影,另一个例子就是使用postman工具,其中可以看到Redfish传输的JSON数据数据,下面就是一个例子:
以上是关于BMCRedfish简述的主要内容,如果未能解决你的问题,请参考以下文章