【待评审】支持HRDT D3100s RAID卡热备盘关联多逻辑盘及自动替换热备设置

背景

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

整体方案

  1. 资源协作接口 bmc.kepler.Systems.Storage.Drive 新增方法 SetHotspareTypeV2:HotspareType 扩展取值 3=AutoReplace,VolumeIdList(U16)支持一块热备盘关联多个逻辑盘;存量 SetHotspareType 不变
  2. Web rest 接口 /UI/Rest/System/Storage/Drives/:id PATCH:SpareforLogicalDrive 由单个 string 扩展为 string 数组,热备设置改调 SetHotspareTypeV2(HotspareType 枚举 None/Global/Dedicated/Auto Replace 沿用存量定义)
  3. 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 预审:是
  • 评审结论:(待评审)
  • 遗留问题:(空)