OpenBMC 是 Linux Foundation 组织里的一个项目,也是目前开源 BMC 里方案最成熟、社区最活跃的项目。日前,我们得知字节跳动系统部 STE 团队自研的 OpenBMC,已在内部成功上线,并稳定运行了两个多月。这也是字节跳动首次正式上线并初步产品化的 OpenBMC 方案。
为此,我们专访了字节跳动系统部 STE 团队工程师,他为我们分享了字节跳动自研 OpenBMC 的布局和推进过程。
BMC 是服务器上的管理模块,它包含独立的 SoC 以及 SoC 上运行的系统,完成对服务器的管理、监控、并对外提供服务。对于服务器来说是不可或缺的重要组成部分。
目前服务器 BMC 的方案里,部分厂商有完全自研的方案,部分厂商则会基于 IBV (Independent BMC Vendor) 的商业 BMC 进行定制化开发,但这些都是闭源的,服务器使用者无法掌控 BMC 的完整功能。
同时,商业 BMC 也具有诸多局限,比如一些不必要的功能,可能影响网络和系统稳定性;修复 bug、漏洞往往需要反馈 ODM 厂商,甚至需要 IBV 支持,这使得修复时间过长;部分 bug 只在特定环境下复现,更增加了修复的难度。
随着互联网的不断发展,数据中心的不断壮大,对数据中心服务的运维需求,也越来越呈现出精细化、定制化的趋势。
严重依赖各 ODM 厂商、IBV 的传统 BMC 开发模式,开发周期长,无法实时响应互联网多变的需求。一个更加开放、更加现代的 BMC 方案,成为当务之急。
OpenBMC 是 Linux Foundation 里的一个开源项目,它方案成熟、社区活跃,受到 IBM、Google、Facebook、Intel、Inspur 等国内外各大厂商的支持。
在架构方面,OpenBMC 支持 Aspeed、Nuvoton 等多种 BMC 芯片,以及 x86、ARM、OpenPOWER 等多种服务器架构,更是采用 Linux kernel 5.15、Systemd 249 (249.4+)、GCC 11.2.0、C++20 等最新的现代化技术架构。
OpenBMC 解决方案流程一览
但是 OpenBMC 最初是为了解决国外企业的数据中心需求设计开发的,无法完全适配国内互联网数据中心需求。基于 OpenBMC,结合字节跳动服务器管理和运维,开发自研版本,成为更理想的选择。
为了加快 OpenBMC 与字节跳动内部业务的适配,STE 团队调研了 OpenBMC 社区里,各个模块的技术方案,对比字节跳动内部对服务器的管理和运维,挑选出适用的方案。
OpenBMC 在字节跳动产品化过程示意图
对于能满足字节跳动内部需求的模块,STE 团队决定直接使用社区版本;对于额外的需求,则会基于社区模块,添加并增强功能,最终形成一个完整的解决方案,进行深度测试。
STE 团队工程师,为我们分享了具体的方案:
对于 x86 specfic 的模块,复用 Intel 的模块,例如 PECI,node-manager
对于 power control,复用x86-power-control
对于各类传感器,基于现有的entity-manager/dbus-sensors
/virtual-sensor
,添加 yaml 来定义需要的 sensor
对于风扇控制,复用phosphor-pid-control
并添加了单、双转子的检测和适配
对于 FRU,根据硬件情况改造相关代码,使其支持非标准 FRU 格式
对于 SEL,实现新的统一的 logging 方式,把 log entry 转化为标准 SEL
对于 code-update,基于phopsphor-bmc-code-mgmt
添加了 BIOS、CPLD、FPGA 等模块的支持
对于字节跳动内部的管理、运维,新增了代码来完成线上的适配工作
此外, STE 团队也在字节跳动内部搭建了 CI 服务器,完成了自动化的编译和测试,并且与开源社区的 Gerrit 打通:
对于内部的每一个 Push/MergeRequest,会跑 CI
对于每一次编译,都会通过 QEMU 来跑基本的测试
对于重要的 release tag,还会通过 HW CI 在实际服务器上验证
对于开源社区里meta-bytedance
的每一个改动,也会跑编译和 QEMU CI
据 STE 团队工程师介绍,OpenBMC 项目目前已经在两种不同配置的机器上顺利完成上线,并持续稳定运行了两个多月。
同时,STE 团队的工程师们,也在 OpenBMC 开源社区里提交了涉及新 feature 及 bug fix 的诸多 commits,目前已经成为了 OpenBMC Technical Oversight Forum (TOF) 的一员。
https://github.com/search?p=1&q=org%3Aopenbmc+bytedance.com&type=Commits
https://github.com/openbmc/docs/blob/master/tof/contract.md
未来,字节跳动系统部 STE 团队将在更多的平台上持续研发 OpenBMC,来更好、更快速地支持服务器的管理和运维。工程师还表示,在后续开发中,STE 团队希望能与更多厂商进行全方位、多维度的紧密合作共建,共同开发更符合国内互联网数据中心需求的开源 BMC 方案。
专访最后,STE 团队的工程师也充分表达了对于优秀人才的渴求,欢迎对新技术、开源感兴趣的小伙伴加入字节跳动系统部 STE 团队,用最新的 kernel、最新的编译器,写最 modern 的 C++。
关于字节跳动系统部 STE 团队:
字节跳动系统部 STE 团队 (STE=System Technologies & Engineering,系统技术与工程) 一直致力于操作系统内核与虚拟化、系统基础软件与基础库的构建和性能优化、超大规模数据中心的系统稳定性和可靠性建设、新硬件与软件的协同设计等基础技术领域的研发与工程化落地,具备全面的基础软件工程能力,为字节上层业务保驾护航。同时,团队积极关注社区技术动向,拥抱开源和标准。
更多招聘信息,可联系 [email protected] 获取。