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数据数据,下面就是一个例子:

【BMC】Redfish简述相关推荐

  1. 【BMC系列】redis 数据库 命令手册 速查

    在BMC redfish相关的开发中,会用到redis: redis 命令手册 命令目录(使用 CTRL + F 快速查找): Key(键) DEL DUMP EXISTS EXPIRE EXPIRE ...

  2. bmc控制卡_服务器BMC技术调研

    BMC(Baseboard Management Controller)即基板管理控制器,是IPMI(Intelligent Platform Management Interface)协议即智能平台 ...

  3. 简述BIOS与BMC通信常用的几种方案及优劣势

    1. LPC通信(包含KCS.BT):应用范围最广.成熟可靠.传输速度适中.   KCS接口是受支持的BMC到SMS接口之一.KCS接口仅为短信指定.BMC和SMI处理程序之间的SMM消息通常需要一个 ...

  4. 【UEFI实战】Redfish的BIOS实现1

    Redfish的BIOS实现 EDK2提供了Redfish框架,用来实现带外的BIOS配置,其基本框架如下: 通过RedfishPkg中提供的Driver,可以实现BIOS与BMC或者其它的软件进行通 ...

  5. BMC 历史漏洞汇总

    刚开始接触 BMC 以为研究的人比较少,感觉一般人也没有机会接触到.尤其是服务器风扇的声音,一般人也不想去碰.去查了一下 CVE 之后,发现有不少漏洞,还挺多人玩的.近期也在研究这一块,把 BMC 曾 ...

  6. Python:requests + bmc开机、关机、优雅重启、强制重启

    简介:BMC,执行伺服器远端管理控制器,英文全称为Baseboard Management Controller. 为基板管理控制器.它可以在机器未开机的状态下,对机器进行固件升级.查看机器设备.等一 ...

  7. BMC——服务器运维管理利器

    一.什么是BMC? 在介绍BMC之前需要了解一个概念,即平台管理(platform management). 平台管理表示的是一系列的监视和控制功能,操作的对象是系统硬件.比如通过监视系统的温度,电压 ...

  8. 曙光(1620-G30)BMC带外地址配置

    一.简述 一般服务器主板通常会有3个网口,2个I350口和一个BMC管理口.BIOS中BMC有两个网口设置,dedicate lan和share lan.BMC的管理口就是dedicate lan,连 ...

  9. 服务器BMC、BIOS、IPMI、UEFI技术解析

    服务器BMC.BIOS.IPMI.UEFI技术解析 以BIOS为核心的固件产业,是信创产业链的重要组成部分,可被誉为信创产业的"山海关".在计算机体系中,BIOS 有着比操作系统更 ...

  10. 简述计算机科学的核心内容,北京大学-计算机科学与技术(2018秋)作业及复习

    59.(第十章)外排序是指在排序前后,数据在外存上,排序时数据调入内存进行的排序方法. 60.(第十章)在选择排序.冒泡排序.归并排序中, 归并排序是空间复杂度最大的. 三.简答和程序题(共10题,每 ...

最新文章

  1. parentViewController
  2. linux网络设备驱动结构体,Linux网络设备驱动之设备驱动的注册与注销(二)
  3. 简单的启动代码 IMPORT |Image$$RO$$Limit|
  4. Kibana停止kibana的方法命令:找到5601端口对应的进程ID 把此进程进行kill即可
  5. 视觉slam十四讲 pdf_视觉SLAM十四讲|第12讲 回环检测
  6. Linux 简单文本处理命令
  7. mysql varchar最多可以存多少汉字_MySQL定义char和varchar类型utf8编码最大值
  8. 计算机专业英语mooc,专业英语(软件)-中国大学mooc-题库零氪
  9. avg最多用多少列 mysql_使用MySQL中的AVG函数求平均值的教程
  10. ES6进阶Async与Await,你不知道的同步与异步
  11. Zookeeper-watcher机制源码分析(一)
  12. Lavas的简单入门
  13. Hdoj 1065题解
  14. html添加到购物车飞入动画效果,加入购物车的动画效果
  15. 2021年金属非金属矿山(地下矿山)主要负责人模拟考试题库及金属非金属矿山(地下矿山)主要负责人复审模拟考试
  16. python绘制散点图运行结果是_用python绘制散点图
  17. Dynamics CRM和企业微信集成(二)方案实现
  18. Linux系统开启wifi热点的方法
  19. SQLPLUS登录以及切换Oracle数据库实例和用户
  20. containsAll的用法

热门文章

  1. Systemd基础篇:systemd vs SysVinit
  2. 小说关于计算机名称,小说取名和人名取名太纠结了,感觉橙瓜码字的自动取名还不错...
  3. 什么是1号信令、7号信令和PRI信令?
  4. Unity轻松制作俯视角游戏插件TopDown Engine
  5. 英文java简历模板下载_java软件工程师英文简历模板下载
  6. 1、金融企业信息化建设的必要性
  7. windows同时安装jdk8和jdk11
  8. 华擎主板bios设置图解_华擎主板bios设置图解 如何进入bios设置 BIOS设置图解教程...
  9. k3刷机 重置_斐讯K3刷LEDE固件成功刷机教程
  10. axure rp编辑html模板,AxureRP教程—用模板封装UI标准