去年在OCP峰会上,我们发布了OpenBMC,这是一款低级的基板管理软件,可以为BMC芯片提供灵活性和快速开发。
开源TOR交换机Wedge,是我们数据中心中首款支持OpenBMC的硬件,接下来就是我们的模块化交换机6-pack。
六个月前,我们将OpenBMC的支持扩展到服务器,这改变了我们接触多节点1S服务器的基板管理方式。
如今,我很高兴地宣布OpenBMC对存储的支持,更具体地说,它将支持我们基于NVMe的存储平台Lightning,这意味着OpenBMC软件开始支持Facebook数据中心的所有硬件。
为什么要移植OpenBMC到Lightning
Lightning是Open Vault Storage解决方案的PCIe版本,专为OCP的Open Rack构建。它支持通过Gen3 PCIe链接到外部主机或多达四台主机(服务器)连接的多达60个固态硬盘(SSD)。每个托盘上都有一个PCIe交换机,最多支持2个x16上行端口,总共32个上行通道,交换机下游多达30个SSD设备(每个设备x2)。
我们知道,NVMe标准相对较新,与SCSI机箱管理(SES)不同,还没有一个定义良好的NVMe机箱管理标准。Lightning设计需要一些控制器,不仅用于机箱管理,还用于附件管理。每个托盘都有一个BMC通过I2C接口和PCIe接口与PCIe交换机连接。
OpenBMC接口
Lightning平台上的BMC设计不是传统的设计。传统上,BMC通常使用共享网卡NCSI接口连接。但Lightning上BMC设计没有任何这样的网卡,这在管理端需要加入一个进口。另外一些挑战是,Lightning机箱需要作为单独的系统进行管理,而不是服务器系统的一部分,所有的安全和配置工具都将运行在Lighting BMC的低端CPU上。这些挑战面临着基础设施方面的其他问题。
不采用NCSI,我们使用以下接口访问Lightning上的OpenBMC:
- Host 与 Lightning BMC之间的USB Bus(带内)
- Host 与 Lightning BMC之间的I2C Bus
- Host 与 Lightning BMC之间的PCIe x1 (Gen1)接口(带内)
USB接口
USB通道指从Host USB到Lightning USB之间的定制的mini SAS HD cable。OpenBMC使用Ethernet over USB接口连接Host USB和Lightning BMC USB设备。这使得主机操作系统能够通过SSH和REST API客户端与OpenBMC进行通信。这个连接是Host 与Lightning BMC之间的主要通信模式。
I2C接口
Lightnint BMC通过I2C直接连接到一个或多个Host BMC。但是在我们目前的Lightning设计中,我们只使用一台Host。两个BMC之间的I2C总线用作IPMB通道。Host BMC软件使用IPMI标准的消息桥接机制。这个“桥接”功能应能够在带内和/或带外接收IPMB命令,并将它们发送到IPMB通道上的Lightning BMC,并提供响应。在这种情况下,Lightning BMC可以通过Host进行带内访问,甚至在Host CPU断电时进行带外访问。
PICe接口
从PCIe交换机到BMC有一个PCIe x1 Gen1链路。 我们计划在OpenBMC中添加对MCTP的支持。
特性
在以前平台的开发过程中,我们将所有常用的实用程序代码移动到了一个通用目录(meta-openbmc/common/),这使得我们可以轻松地在OpenBMC中增加对更多平台的支持。我们已经重用了大部分的常用工具,包括“fruid-util”,“sensor-util”,“gpio-util”。我们增加了对新功能的支持,例如:
- 'fscd',一个守护进程,用来控制基于OCP FSC(风扇速度控制)的风扇。它支持用户提供的线性和非线性fsc表。
- 'log-util',它捕获连接到Lightning BMC的从属设备(传感器,SSD,PCIe交换机等)的所有事件/错误日志。
- 'flash-util'可读取基于NVMe管理接口标准(NVMe-MI)的SSD边带状态信息(如温度,错误数量等),可重置PCIe交换机,并可更新其固件和配置I2C。
注意:Lightning硬件和OpenBMC针对Lightning的功能仍处于开发阶段。上述大多数功能都由使用IPv6 over USB接口的SSH或RESTful API支持。
在Facebook基础设施中的使用
随着OpenBMC对存储设备的支持,我们将在我们的基础架构中为OpenBMC提供对所有类型硬件的支持。数据中心的配置一直是来自不同制造商的硬件的一个挑战,因为它们拥有专有的工具。这些工具也会对灵活的硬件配置造成限制。另一方面,OpenBMC可以在所有工具和事件/错误日志中实现一致性,这将为改善硬件管理和硬件故障分析(FA)提供机会。跨网络,计算和存储平台运行OpenBMC是构建更灵活可靠的基础设施的又一步。
如果您仍然对OpenBMC感到好奇或者对于任何功能有任何疑问,可以查看我们在GitHub上的最新更新。