背景
HRDT(华瑞数鑫)D3100s/D4100t/H3100s 系列 RAID 控制器(PMC SmartRAID,TypeId=66~69)的热备能力超出存量接口表达能力:
| 能力项 | 存量 SetHotspareType 方法 | HRDT D3100s 系列 RAID 卡 |
|---|---|---|
| 热备类型 | 0=None、1=Global、2=Dedicated、3=AutoReplace | 0=None、1=Global、2=Dedicated、3=AutoReplace(自动替换热备) |
| 专属热备关联逻辑盘 | VolumeId 单值(U16) | 一块热备盘可同时关联多个逻辑盘 |
关联 ISSUE
- [需求] LTS版本新增支持华瑞数鑫 D3100s/D4100t/H3100s RAID 控制器:[需求]: LTS版本新增支持华瑞数鑫 D3100s/D4100t/H3100s RAID 控制器-storage-AtomGit
- 原评审帖:【待评审】支持HRDT D3100s RAID卡热备盘关联多逻辑盘及自动替换热备设置
整体方案
- 资源协作接口
bmc.kepler.Systems.Storage.Drive新增方法 SetHotspareTypeV2:HotspareType 保持不变,VolumeIdList(U16 数组)支持一块热备盘关联多个逻辑盘;存量 SetHotspareType 不变(**已评审通过,见 topic 8117 **) - Web REST 接口
/UI/Rest/System/Storage/Drives/:idPATCH:存量字段不动,新增多逻辑盘 ID 列表参数,热备设置按控制器类型分流调用 SetHotspareTypeV2 / 存量 SetHotspareType - Redfish 接口
/redfish/v1/Chassis/:chassisid/Drives/:driveidPATCH:热备设置同步做 V1/V2 分流适配,无 Schema 变更
评审点1:Web REST 接口变更
URI:/UI/Rest/System/Storage/Drives/:id(PATCH),权限沿用 BasicSetting。
请求字段变更:
| 字段 | 类型 | 变更 |
|---|---|---|
| HotspareType | string,枚举 None/Global/Dedicated/Auto Replace | 不变(沿用存量枚举定义) |
| SpareforLogicalDrive | string(单值) | 不变:保留原单值语义,存量字段与存量解析逻辑完全不动 |
| SpareforLogicalDriveIds | string 数组(新增) | 新增独立参数:多逻辑盘 ID 列表,后端解析为卷 ID 列表,映射 SetHotspareTypeV2 的 VolumeIdList |
响应:无变更。字段缺省表示不修改。
新旧参数分工(按控制器分流):
| 控制器 | 调用方法 | 关联逻辑盘参数 | 行为 |
|---|---|---|---|
| PMC(TypeId 64~69) | SetHotspareTypeV2 | 新参数 SpareforLogicalDriveIds 数组 → VolumeIdList 全量下发 |
多逻辑盘关联/差集调整 |
| 非 PMC(LSI/HI1880) | SetHotspareType(存量) | 旧参数 SpareforLogicalDrive 单值 → VolumeId |
完全存量逻辑,零改动 |
PATCH 请求示例(节选):
PMC 卡多逻辑盘(新参数):
{
"HotspareType": "Dedicated",
"SpareforLogicalDriveIds": ["LogicalDrive1", "LogicalDrive2"]
}
单值设置(存量语义,新老前端通用,行为不变):
{
"HotspareType": "Dedicated",
"SpareforLogicalDrive": "LogicalDrive1"
}
截图:
评审点2:Redfish 接口适配(新增)
URI:/redfish/v1/Chassis/:chassisid/Drives/:driveid(PATCH)
Redfish 侧自始使用数组字段 Oem/{{OemIdentifier}}/SpareforLogicalDrives(元素为对象,@odata.id 携带 /LogicalDrive[0-9]{1,5}$ 正则校验),无 Schema 变更。本次仅将 PATCH 热备设置由存量 SetHotspareType(单卷,仅取数组首个元素)升级为按控制器分流,与 Web REST 通道同构:
- 新增插件函数
is_pmc_controller(redfish orchestrator drives 插件):按盘所属控制器 TypeId 64~69 判定; - 映射层处理:热备请求先经 Property 步骤补读盘对象 RefControllerId;数组解析为卷 ID 数字列表(V2 参数);三个存量热备调用点各拆分为 V2/V1 互斥对:
| 调用组 | 触发条件 | PMC → V2 | 非 PMC → V1 |
|---|---|---|---|
| 局部热备带列表 | HotspareType=“Dedicated” 且列表存在 | 全量卷 ID 列表 | 首个元素(存量语义) |
| 热备设置不带列表 | HotspareType 存在且列表缺省 | 空列表(None/Global 忽略;Dedicated/AutoReplace 显式报错) | 硬编码卷 ID 0(保留存量行为) |
| 自动替换热备带列表 | HotspareType=“Auto Replace” 且列表存在 | 全量卷 ID 列表 | 首个元素(存量语义) |
