作者:华从辉
长江计算BMC系统工程师,从事8年嵌入式软件开发,深耕鲲鹏生态,主导多款服务器BMC及整机柜RMC研发。
概述
在 AI 与大数据时代,海量数据的存储需求催生了高密度存储服务器的蓬勃发展。然而,当一台服务器容纳的硬盘数量从传统的十几块跃升至60甚至70块时,带外管理系统(BMC)便面临着前所未有的并发压力与性能挑战。
如何让 BMC 在如此庞大的硬件规模下依然保持高效、稳定、流畅的管理体验,成为产品化落地的关键一环。本文将分享我们基于 openUBMC 与社区协作,成功实现高密存储型服务器产品化的实践经验。
背景:当“盘多多”遇上 BMC 管理瓶颈
我们的目标产品是一款典型的高密存储服务器,其核心特点在于极致的存储密度:
-
双 RAID 卡管理高达 70 块硬盘:包括 60 块 3.5 英寸机械盘和 10 块 2.5 英寸盘。
-
复杂的硬件拓扑:4 个 15 盘位背板通过二级扩展架构连接,支持跨槽位即插即用。
-
独特的散热设计:采用双型号风扇分区调速,前置风扇负责主板/PCIe 卡散热,后置风扇专责 3U 硬盘仓散热。
在基于 openUBMC 进行开发初期,我们遇到了一个严重影响用户体验的核心痛点:首次上电或 OS 重启后,Web 界面刷新全部 60+ 块硬盘的带外信息需要长达 20 分钟以上! 对于运维人员而言,这意味着漫长的等待,极大地降低了服务器的可用性和管理效率。
挑战:多任务并发下的性能瓶颈
深入分析发现,这一痛点背后是多重挑战的叠加:
➣ 海量任务并发阻塞
-
现象:满配 70 盘时,BMC 需要同时处理超过 200 个并发任务,包括 RAID 信息刷新、硬盘点灯、SMART 信息读取等。
-
根因:有限的 I²C 总线带宽无法承受瞬间爆发的高并发通信压力,导致任务大量阻塞和超时。

60+盘场景,上电需要等待20分钟以上

任务阻塞超时
➣ 多 RAID 场景下的数据获取失败
-
现象:在双 RAID 卡场景下,BMC 概率性地无法获取完整的 RAID 数据。原生机制存在兼容性问题。
-
根因:该场景独特,强依赖于闭源组件,hwproxy 和 raid sdk,原生机制存在兼容性问题。
➣ 硬件适配与部署效率低下
-
现象:4 个相同的 15 盘背板需支持跨槽位即插即用,但传统方案需为每个槽位编写不同的 CSR 配置,物料成本高且部署繁琐。
-
现象:多部件(如扩展板、Riser 卡)的 CSR 包需独立升级,每次升级都伴随 BMC 重启,耗时费力。
方案:社区协作驱动的创新优化
面对这些挑战,我们采取本地(场景发现 + 开源优化)+ 社区(闭源优化)的协作模式,充分利用 openUBMC 的开放性和灵活性,实施了一系列针对性优化:
➣ 多任务并发访问优化
-
无效冗余优化:重构硬盘点灯逻辑,将非必要的“盘在位”判断优化为精准的“盘定位”,并减少点灯状态确认次数,单次操作节省数百毫秒,累积效应显著。
-
任务分级运行:对硬盘任务进行优先级划分,高优先级任务(如盘符匹配)优先执行,次要任务(如日志收集)延长刷新周期,有效降低瞬时 I²C 通信压力。
-
多任务隔离:在非首次上电场景下,优先完成 RAID 任务后再更新硬盘信息,避免任务相互干扰

➣ 自适应盘符机制
-
问题解决:利用 openUBMC 强大的 CSR 模型和字符串操作能力,设计了一套基于 Connector.Slot 与 SR 公式的自适应公式。
-
实现效果:无论 15 盘背板插入哪个槽位,系统都能根据物理链路自动计算并生成正确的对外盘符(如 Disk10-Disk24),真正实现了跨槽位即插即用,省去了硬件拨码开关的成本。

➣ 高效 CSR 部署
-
问题解决:借助社区推出的 BMC Studio 图形化工具,将多个独立的 CSR 包打包成一个 ALL-in-One 的升级包。
-
实现效果:部署方式从“多次升级、多次重启”转变为“一次升级、一次重启”,极大提升了多部件产品的部署效率。

价值:从 20 分钟级到 8 分钟的飞跃
我们的优化带来了立竿见影的效果,用数据证明了方案的有效性:
-
性能提升:60+ 盘信息刷新时间从 20+ 分钟 缩短至 8 分钟,效率提升 150%+。
-
稳定性增强:双 RAID 场景下 RAID 数据获取成功率从概率性失败提升至 100% 稳定获取。
-
部署提效:CSR 多部件部署时间大幅缩短,运维效率显著提升。
-
成本节约:自适应盘符机制节省了硬件拨码物料成本,并简化了现场运维部署流程。
此外,整个项目过程中,我们向 openUBMC 社区贡献了 38 条 经验总结与优化建议,形成了良性的社区共建循环。
共建:打造更强大的 openUBMC 存储生态
高密存储服务器的挑战只是 openUBMC 应用场景的一个缩影。我们相信,openUBMC 的未来在于每一位开发者的共同参与和贡献。
在此,我们诚挚邀请各位开发者、合作伙伴加入 openUBMC 社区:
-
如果您也在进行高密存储、AI 服务器或其他创新硬件的产品化开发,欢迎分享您的挑战与解决方案。
-
如果您对 openUBMC 的性能优化、硬件抽象、自动化部署等方向有独到见解,期待您的代码贡献。
-
让我们一同将“问题场景”前置为“需求场景”,推动社区基线版本更贴合产业实际,共同构建一个繁荣、高效、稳定的开源 BMC 生态!
-
社区官网:https://www.openubmc.cn
-
代码仓地址:https://gitcode.com/openUBMC
网硕互联帮助中心







评论前必须登录!
注册