背景
HRDT(华瑞数鑫)D3100s/D4100t/H3100s 系列 RAID 控制器(PMC SmartRAID,TypeId=66~69)的热备能力超出存量接口表达能力:
| 能力项 | 存量 SetHotspareType 方法 | HRDT D3100s 系列 RAID 卡 |
|---|---|---|
| 热备类型 | 0=None、1=Global、2=Dedicated | 0=None、1=Global、2=Dedicated、3=AutoReplace(自动替换热备) |
| 专属热备关联逻辑盘 | VolumeId 单值(U16) | 一块热备盘可同时关联多个逻辑盘 |
问题场景:该系列卡上一块专属热备盘可同时为多个逻辑盘提供热备保护,且支持盘故障后自动顶替重建的 AutoReplace 热备;存量方法入参 VolumeId 为单值、热备类型无 AutoReplace 取值,北向无法完成上述设置。
当前差距:资源协作接口 bmc.kepler.Systems.Storage.Drive 仅有 SetHotspareType 方法;Web 侧 SpareforLogicalDrive 字段仅支持单个逻辑盘。
兼容性约束:存量 SetHotspareType 方法签名与语义不动,新增 V2 方法;北向 Web 仅将 SpareforLogicalDrive 由 string 扩展为 string 数组,无存量属性删除或语义变更。
关联 ISSUE
整体方案
- 资源协作接口
bmc.kepler.Systems.Storage.Drive新增方法 SetHotspareTypeV2:HotspareType 扩展取值 3=AutoReplace,VolumeIdList(U16)支持一块热备盘关联多个逻辑盘;存量 SetHotspareType 不变 - Web rest 接口
/UI/Rest/System/Storage/Drives/:idPATCH:SpareforLogicalDrive由单个 string 扩展为 string 数组,热备设置改调 SetHotspareTypeV2(HotspareType 枚举 None/Global/Dedicated/Auto Replace 沿用存量定义) - Redfish 适配:阵列成员盘视图剔除热备盘(HotspareType=2/3 不再计入 DiskArray 成员及相关阵列 Members),无新增 Redfish 属性与 Schema 变更
评审点1:变更资源协作接口
接口:bmc.kepler.Systems.Storage.Drive(路径 /bmc/kepler/Systems/:SystemId/Storage/Drives/:Id)仅新增方法:
SetHotspareTypeV2(批量设置物理盘是否为热备盘,权限 BasicSetting,DBus 签名 a{ss}yaq):
| 入参 | 类型 | 说明 |
|---|---|---|
| HotspareType | U8 | 驱动器的热备状态:0=None、1=Global、2=Dedicated、3=AutoReplace |
| VolumeIdList | U16 | 存储卷ID列表 |
出参:无。
入参约束:
- VolumeIdList 须为列表且逐项在 U16 范围内;None(取消热备)/Global(全局热备)不依赖逻辑盘列表;Dedicated/AutoReplace 要求列表非空;非法入参返回参数错误
- 局部热备关联集合调整(仅 PMC 卡):目标类型与当前状态相同时,不直接报错,按“先移除后追加”增量同步关联集合;两阶段设计——前台评估任一失败立即返回且不产生实际变更,实际执行异步完成
与存量方法关系:
- 存量 SetHotspareType(单 VolumeId、类型 0~2)签名与语义完全不变,前后兼容;V2 为超集,单卷设置场景两者行为等价
- 新方法仅对新接入的 PMC SmartRAID 控制器(TypeId=66~69)生效,其他控制器北向仍走存量方法
接口影响:不涉及重名、持久化、信号或错误消息变更。
评审点2:Web rest 接口
URI:/UI/Rest/System/Storage/Drives/:id(PATCH),权限沿用 BasicSetting:
| 字段 | 类型 | 变更 |
|---|---|---|
| HotspareType | string,枚举 None/Global/Dedicated/Auto Replace | 不变 |
| SpareforLogicalDrive | string(原 string) | 扩展为数组,支持一次关联多个逻辑盘 |
后端将列表解析为卷 ID 列表并调用 SetHotspareTypeV2;字段缺省表示不修改。
PATCH 请求示例(节选):
{
"HotspareType": "Dedicated",
"SpareforLogicalDrive": ["LogicalDrive1", "LogicalDrive2"]
}
其他
- 是否准备好 AI 预审:是
- 评审结论:(待评审)
- 遗留问题:(空)