本文分享自天翼云开发者社区《服务器通用背板管理(UBM)实现》,作者: 乘风

一 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组成

UBM 可用于在单个驱动器机架中创建支持所有三种协议的 SAS/SATA 背板、NVMe 背板或组合背板。 同样,UBM 规范可用于带有 SAS/SATA 扩展器和 PCIe 开关的背板。UBM 使支持 UBM 的主机(例如 CPU、RAID 或 HBA 卡或其他存储控制器)能够准确了解背板的功能,以及感知驱动器类型和存在。

UBM 系统的组件由 FRU 和 UBM 控制器组成,它们通过 2 线接口连接到主机。

2.1 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设备。

2.2 UBM FRU

提供将背板识别为支持 UBM 的子系统的方法,并通过 2 线接口连接到主机。UBM FRU 是具有 IPMI FRU 格式内容的 256 字节只读 NVRAM,负责上报静态背板信息,使用单字节 2Wire 寻址。

定义主机创建访问映射的端口路径信息描述符,该访问映射由面向驱动器的连接器 (DFC)、端口链路宽度、面向主机的连接器 (HFC) 和 HFC 起始通道组成。

指定连接到 HFC 的 UBM 控制器的 2 线地址,允许存储控制器访问。

2.3 UBM控制器

负责管理面向驱动器的连接器 (DFC),通过 2 线接受预先确定的命令序列,可分为以下几类:

控制器状态和身份:报告命令和控制器状态。

背板功能:反映 UBM 控制器实现支持的功能。

面向驱动器的连接器状态:允许 UBM 控制器报告每个面向驱动器的连接器中“安装了什么”的关键功能。

定义 PCIe 参考时钟预期、PCIe 复位预期、PwrDIS 信号支持和双端口支持。

背板 UBM 控制器固件更新

三 UBM操作

3.1 驱动器检测

驱动器类型识别是通过从驱动器中采样 PRSNT#、IFDET# 和 IFDET2# 引脚来执行的。 这些引脚的值通过 DFC 状态和控制描述符命令报告给主机。 驱动器引脚状态与背板映射数据结合使用,允许将适当的配置应用于连接到该驱动器的存储控制器 PHY。

3.2 端口分叉

支持从面向主机的连接器到面向驱动器的连接器的 x4 或 x2 连接的背板可分别重新用作 x2 或 x1 背板。 这是使用端口分叉字段完成的。 当从主机连接到背板的电缆不再直接映射,而是连接每个驱动器只有一条链路时,背板将以 DFC 的宽度分为两部分运行。 通过使用端口分叉字段,可以在两种配置中使用单个背板,从而减少所需的背板 SKU 数量。

3.3 LED 和电源控制

LED 和电源控制是使用 SES 阵列设备元素字段执行的,类似于 SAS 扩展器。 主机可以通过 UBM 控制器的 2 线接口请求以下操作:

禁用电源

灯识别 LED

显示“重建”LED 模式

显示“失败的阵列”LED

如果LED 闪烁模式超出了 UBM 规范的范围,可以遵循 IBPI 规范 SFF-8489,对应于主机与 UBM 控制器接口发出的信号。

3.4 复位、REFCLK 控制

FRU 通过定义以下内容来定义背板和主机之间的状态和控制信号接口:

PCIe 参考时钟预期

PCIe 重置预期

PwrDIS 信号支持

双端口支持(如果适用)

3.5 通过 BP_TYPE 支持 SGPIO

BP_TYPE 信号指示背板是否支持 SGPIO 或 2 线接口。 使用信号的状态,主机可以确定它是应该使用 SGPIO 还是继续进行 UBM 发现。

3.6 维护

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 地址。

服务器通用背板管理(UBM)实现的更多相关文章

  1. 解析大型.NET ERP系统 通用附件管理功能

    大型系统具备一个通用的附件管理功能,对于单据中无法清晰表达的字段,用一个附件图片或附件文档表示是最好的方法了.比如物料清单附加一张CAD图纸,销售订单评审功能中附加客户的各种表格,通用附件功能对系统起 ...

  2. 【原创】C#通用权限管理-程序安全检查,这些你一定要考虑到位

    接触通用权限已经一年,现在使用已经很熟练,分享通用权限管理下面的一些好的开发思想. 安全漏洞对于一个小项目来说,可能不是特别的重视,对于一个大项目来说,这是特别重要需要注意的,特别是在项目开发中的就要 ...

  3. C#通用权限管理-程序安全检查,这些你一定要考虑到位

    接触通用权限已经一年,现在使用已经很熟练,分享通用权限管理下面的一些好的开发思想. 安全漏洞对于一个小项目来说,可能不是特别的重视,对于一个大项目来说,这是特别重要需要注意的,特别是在项目开发中的就要 ...

  4. Winform开发框架之通用附件管理模块 --SNF快速开发平台3.3-Spring.Net.Framework

    最近项目太多都没有时间写文章了,实际项目需求一,CS端和windows平板都需要附件上传管理功能.以前做的都是BS的附件管理和上传功能.本来计划在Winform上嵌套一个浏览器直接用bs的附件上传功能 ...

  5. 使用 ipmitool 实现 Linux 系统下对服务器的 ipmi 管理

    http://www.ibm.com/developerworks/cn/linux/l-ipmi/ 1.简介 IPMI(Intelligent Platform Management Interfa ...

  6. winform快速开发平台 -> 通用权限管理之动态菜单

    这几个月一直忙APP的项目,没来得及更新项目,想想该抽出时间整理一下开发思路,跟大家分享,同时也希望得到宝贵的建议. 先说一下我们的权限管理的的设计思路,首先一个企业信息化管理系统一定会用到权限管理, ...

  7. 谈谈我的windows服务器运维管理

    我们开发的页游General War(http://gw.gamebox.com)上线运营也有半年多了,服务器的开发到运维基本都由我一手包办,在服务器上线之后我们又招了一个程序员接手后续功能的开发,而 ...

  8. 基于吉日嘎拉的通用权限管理Webform版老界面bug修复

    虽然弄了新界面<基于吉日嘎底层架构的通用权限管理Web端UI更新:参考DTcms后台界面>,但老界面的一点菜单显示的问题还是让我这种强迫症揪心,终于今晚可以美美的睡觉了. 老代码用了Ses ...

  9. 基于吉日嘎底层架构的通用权限管理Web端UI更新:参考DTcms后台界面

    经一周的研究学习,看了国内的H+.HUI等,国外的PaperDashboardPro.Make.Metronic BootStrap等,最终选定用一个轻量的,适合中国人的,来自DTcms的后台管理UI ...

  10. 使用本地服务器组来管理局域网或公网上的SQLSERVER

    使用本地服务器组来管理局域网或公网上的SQLSERVER 测试的两台机器 Windows7 64位   SQLSERVER2005 SP5 Windows7 64位   SQLSERVER2012 S ...

随机推荐

  1. 软件项目技术点(12)——绘制生成的图表到canvas

    AxeSlide软件项目梳理   canvas绘图系列知识点整理 插入图表 首先介绍我们的图表功能,点击插入图表弹出如下数据表格窗口,可以填写表格数据,点击确定,默认生成表格图 编辑图表 表格图选中, ...

  2. python爬虫利器之Playwright

    Playwright 是微软在 2020 年初开源的新一代自动化测试工具,它的功能类似于 Selenium.Pyppeteer 等,都可以驱动浏览器进行各种自动化操作.它的功能也非常强大,对市面上的主 ...

  3. 支付宝支付功能接入(PC)

    在使用支付宝支付功能开发的阶段, 可以在沙箱环境下进行开发, 开发完成之后, 到线上再进行相关参数的替换即可 一. 登陆支付宝开放平台(https://open.alipay.com/platform ...

  4. javascript 实现参数重载

    1.概要 在java中,同一个函数签名,比如 getUser,我们可以根据参数的不同,调用不同功能的方法.这也就是参数重载,如何在javascript也实现参数重载呢? 2.实现方法 function ...

  5. Postgresql——postgis安装

    PostGIS安装 PostGIS 是一个开源数据库拓展,它为 PostgreSQL 数据库增加了对地理空间数据的支持.PostGIS 使得空间数据的存储.查询和分析变得简单高效. PostGIS 是 ...

  6. React使用useRef调用子组件方法

    前情 公司前端主技术栈是react系,最近在提取组件的时候想到vue可以通过ref获取子组件,再调用子组件的方法,于是想在react中实现同样效果. 实现原理 父组件调用useRef获取ref对象,再 ...

  7. Mysql的整体架构设计

    整体分层 连接层 服务层 存储引擎层 连接层 客户端要连接到服务器 3306 端口,必须要跟服务端建立连接,那么 管理所有的连接,验证客户端的身份和权限,这些功能就在连接层完成. 服务层 连接层会把 ...

  8. CoFile 企业云盘大焕新啦!

    一.域名升级,更好记 俗话说的好,好记性不如字数少 cofile.net 指尖一敲,快乐来到 别拦着我,我就要用 CoFile 企业云盘 二.架构优化,不止更快 底层优化,加载提速,更快响应,加倍安全 ...

  9. Flutter GestureDector点击空白区域不响应

    GestureDector点击空白区域不响应 当GestureDector嵌套Container时,当Container子组件为Text时,点击空白区域不响应点击事件 GestureDetector( ...

  10. k8s备份恢复实践--velero

    k8s备份恢复实践--velero 使用Velero备份k8资源到minio,阿里云oss,七牛云Kodo 环境linux + kubectl #1.velero简介 Velero是用于Kuberne ...