天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、cdn、云电脑、大数据及ai等全线产品和场景化凯发app官方网站的解决方案。
分类: 服务器与存储
2023-04-13 15:43:19
本文分享自天翼云开发者社区《服务器通用背板管理(ubm)实现》,作者: 乘风
通过sgpio 进行 sas 和 sata 背板管理的 scsi 机箱服务 (ses) 标准于 2003 年首次推出。该规范提供主机控制 led,并允许主机检测槽位和已安装驱动器的存在,以及槽位编号方案。该规范提供了驱动器活动和故障指示,同时控制器可以通过协议自动识别设备类型、分支和速度。 sgpio 自 2006 年以来一直保持不变。此后,许多创新增加了背板管理的复杂性,超出了 ses 和 sgpio 的能力。
现代存储产品包括多通道驱动器和第三种驱动器协议,即 nvme。为了确保相同级别的存储功能,需要更智能的背板。这种需求产生了通用背板管理 (ubm) 标准。
universal backplane management (ubm)为主机提供了一个通用背板管理框架,以确定 sas/sata/pcie 背板功能、drive facing connector (dfc) 状态和控制信息,并读取背板的面向驱动器的连接器(dfc)到面向主机的连接器host facing connector (hfc) 的端口路径。
采用 ubm 标准可实现背板管理的两个关键方面:
在服务器内构建一套完全可互换的背板,无论背板与主机的接口或背板支持的介质如何变化。在各种存储架构中使用 ubm 是通用的,它可以避免手动配置的复杂性和错误配置的成本。
能够创建支持驱动器槽位内完全可互换的存储介质类型的背板,包括在系统运行时在 nvme 和 sas/sata 之间进行切换。
ubm 可用于在单个驱动器机架中创建支持所有三种协议的 sas/sata 背板、nvme 背板或组合背板。 同样,ubm 规范可用于带有 sas/sata 扩展器和 pcie 开关的背板。ubm 使支持 ubm 的主机(例如 cpu、raid 或 hba 卡或其他存储控制器)能够准确了解背板的功能,以及感知驱动器类型和存在。
ubm 系统的组件由 fru 和 ubm 控制器组成,它们通过 2 线接口连接到主机。
ubm使用边带信号定义sas,其他的标准定义使用2线模式。服务器主板的bmc提供到背板的2wire主接口,可以实现对于背板的统一管理和远程控制,固件更新等功能。2wire主接口定义 了ubm 背板管理功能和主机到背板的端口通路信息。该2wire主接口会与背板上的ubm 控制器2wire从接口和ubm fru 2wire接口互联。ubm 控制器2wire从接口,提供背板点灯功能和 dfc 状态和控制描述符。连接到同一个 2wire从接口的 ubm fru 为一个nvram,实现了一个格式化的ipmi fru 。同时,为了支持pcie设备,例如nvme ssd硬盘,该2wire接口还会连接到mux bridge,用于2wire接口扩展,以实现同一2wire接口管理多个pcie ssd设备。
提供将背板识别为支持 ubm 的子系统的方法,并通过 2 线接口连接到主机。ubm fru 是具有 ipmi fru 格式内容的 256 字节只读 nvram,负责上报静态背板信息,使用单字节 2wire 寻址。
定义主机创建访问映射的端口路径信息描述符,该访问映射由面向驱动器的连接器 (dfc)、端口链路宽度、面向主机的连接器 (hfc) 和 hfc 起始通道组成。
指定连接到 hfc 的 ubm 控制器的 2 线地址,允许存储控制器访问。
负责管理面向驱动器的连接器 (dfc),通过 2 线接受预先确定的命令序列,可分为以下几类:
控制器状态和身份:报告命令和控制器状态。
背板功能:反映 ubm 控制器实现支持的功能。
面向驱动器的连接器状态:允许 ubm 控制器报告每个面向驱动器的连接器中“安装了什么”的关键功能。
定义 pcie 参考时钟预期、pcie 复位预期、pwrdis 信号支持和双端口支持。
背板 ubm 控制器固件更新
驱动器类型识别是通过从驱动器中采样 prsnt#、ifdet# 和 ifdet2# 引脚来执行的。 这些引脚的值通过 dfc 状态和控制描述符命令报告给主机。 驱动器引脚状态与背板映射数据结合使用,允许将适当的配置应用于连接到该驱动器的存储控制器 phy。
支持从面向主机的连接器到面向驱动器的连接器的 x4 或 x2 连接的背板可分别重新用作 x2 或 x1 背板。 这是使用端口分叉字段完成的。 当从主机连接到背板的电缆不再直接映射,而是连接每个驱动器只有一条链路时,背板将以 dfc 的宽度分为两部分运行。 通过使用端口分叉字段,可以在两种配置中使用单个背板,从而减少所需的背板 sku 数量。
led 和电源控制是使用 ses 阵列设备元素字段执行的,类似于 sas 扩展器。 主机可以通过 ubm 控制器的 2 线接口请求以下操作:
禁用电源
灯识别 led
显示“重建”led 模式
显示“失败的阵列”led
如果led 闪烁模式超出了 ubm 规范的范围,可以遵循 ibpi 规范 sff-8489,对应于主机与 ubm 控制器接口发出的信号。
fru 通过定义以下内容来定义背板和主机之间的状态和控制信号接口:
pcie 参考时钟预期
pcie 重置预期
pwrdis 信号支持
双端口支持(如果适用)
bp_type 信号指示背板是否支持 sgpio 或 2 线接口。 使用信号的状态,主机可以确定它是应该使用 sgpio 还是继续进行 ubm 发现。
ubm 规范允许通过 ubm 控制器固件更新过程更新控制器代码。
ubm可以实现hfc通过x1、x2、x4或其它lane带宽连接多个dfc,还可以支持多个面向主机的连接器。但是,对于同一背板,ubm 控制器实现应在同一背板内提供唯一的面向主机的连接器标识字段,指示相同的背板编号字段。 多个面向主机的连接器不应将其 2wire 接口与其他面向主机的连接器 2wire 接口互连。
下图的 ubm 系统部署视图显示了主机(例如,适配器、pcie 交换机、sas 扩展器)和背板之间的连接关系。 服务器机箱内可以只有一个背板,也可能存在多个背板。 支持直接连接主机或存储控制器的 u.2 nvme 和 sas/sata。每个面向主机的连接器支持两个 x4/x2/x1 u.2 nvme 驱动器或 4 个 x1 sas/sata 驱动器。ubm 控制器位于背板上,用于管理来自驱动器的控制和状态信号。高速电缆和边带 i/o 信号用于与背板通信。ubm fru 应在 0xae 的固定 8 位地址上进行 2wire 寻址。 ubm fru 提供主机与底板上的 ubm 控制器通信所需的 ubm 控制器 2wire 地址。