此文章旨在帮助大家了解Redfish接口,总结如下几部分:
- Redfish接口介绍
- 标准规范文档介绍
- 各厂商规范资源链接
如有建议,请留言
Redfish接口介绍
Redfish 接口的规范文档是理解和实现数据中心硬件管理标准化的核心资源,其内容覆盖技术架构、操作规范及扩展机制。Redfish 是 DMTF 开发的开放标准,通过 RESTful API 实现对服务器、存储、网络设备的统一管理。其设计目标包括:
- 替代 IPMI:解决 IPMI 协议在扩展性、安全性和可读性上的局限,例如 IPMI 仅支持基础命令集且缺乏统一厂商扩展。
- 现代工具链兼容:采用 HTTP (S) JSON 和 OData v4 规范,支持直接与 DevOps 工具链集成。
- 混合 IT 环境覆盖:不仅管理传统服务器,还支持软件定义数据中心(SDDC)和可组合基础设施。
Redfish的资源按照如下规则进行组织:
- 资源分类:定义系统(Systems)、管理器(Managers)、机箱(Chassis)等核心资源类型,每个资源通过唯一 URI 标识(如
/redfish/v1/Systems/1)。 - 操作接口:基于 RESTful 语义,支持 GET(读取),PATCH(部分更新),POST(创建),DELETE(删除)等 HTTP 方法,并通过 JSON 格式传递数据。
- 数据模式:采用 OData v4 和 JSON Schema 双重定义,确保机器可读性与人类可读性的平衡。例如,
@odata.type属性指定资源类型,@odata.id提供资源 URI。
Redfish支持相关的安全与配置机制:
- 传输层安全:强制使用 HTTPS 加密通信,支持 TLS 1.2 及以上协议。
- 会话管理:通过
/redfish/v1/SessionService/Sessions接口创建会话,返回 X-Auth-Token 用于后续请求认证,支持权限分级(如管理员、只读用户)。 - ETag 机制:用于资源版本控制,防止并发修改冲突。客户端需在请求中携带
If-Match头匹配 ETag 值。
Redfish支持事件与监控资源:
- 事件订阅:支持通过
EventService订阅设备状态变更(如温度异常、电源故障),事件以 JSON 格式推送至指定目的地。 - 日志管理:
LogService提供系统操作日志查询,包括固件更新记录、用户登录日志等。
Redfish允许厂商自行扩展:
- 厂商扩展:允许在标准资源中添加
Oem字段实现自定义功能,例如戴尔 iDRAC 的/redfish/v1/Oem/Dell扩展接口。 - 协议映射:支持与其他标准(如 SNIA 的 Swordfish 存储管理、网络设备的 Yang 模型)集成,扩展管理范围至存储和网络域。
标准规范文档
-
官方文档下载
-
核心规范:DMTF 官网( REDFISH | DMTF )提供免费下载,最新版本为 1.22.0(2025 年 3 月发布),包含 PDF 和 HTML 格式。
规范下载建议下载DSP0268,此文档包含全量数据模型定义。
-
扩展规范:如《Redfish Interoperability Profiles》定义多厂商设备协同操作的一致性要求
-
-
厂商补充文档
-
主流厂商(如戴尔、IBM、HPE)在其开发者网站提供基于 Redfish 的 API 指南。例如:
- 戴尔 iDRAC 的 Redfish API 文档包含详细的资源路径和参数示例。
- IBM OpenBMC 文档说明如何通过 cURL 命令实现固件更新、用户管理等操作。
在开发新的Redfish接口时,可以多参考几家厂商的Redfish接口实现,如:
华为iBMC:https://support.huawei.com/enterprise/zh/doc/EDOC1000126991/e65977ca?idPath=23710424
惠普iLO:https://servermanagementportal.ext.hpe.com/docs/redfishservices/ilos/ilo7/ilo7_111/ilo7_resmap111/
-
-
社区与学习资源
-
技术白皮书:DMTF 发布《Redfish Technical Overview》概述架构设计,适合入门阅读。
-
实践案例:CSDN 等技术社区提供 Redfish 与 Python、PowerShell 结合的脚本示例,例如通过 Redfish 接口启用 UEFI 安全启动。
-
工具链:DMTF 开源工具 Redfishtool 可用于模拟 API 请求,验证资源响应格式。
-
Mock服务:DMTF标准规范提供了Mock工具,可以用来模拟服务器,接受Redfish请求
参考此处搭建Mock Server,可以使用Docker快速搭建:
-