适用于 Gen10 及以上 HPE Proliant 服务器的带外 RAID 配置

https://bugs.launchpad.net/ironic/+bug/1716329

本规范提出为 ILO 管理的 HPE Proliant 服务器实现带外 RAID 配置。

问题描述

在当前场景下,HPE Proliant 服务器上的 RAID 配置仅通过带内清理完成,基于 Ilo5 的 HPE Proliant Gen10 服务器提供支持以执行带外 RAID 配置,而 Gen9 及以下服务器则没有此支持。但是,RAID 的创建或删除只有在系统到达 POST 阶段后才会生效。因此,RAID 的创建或删除需要伴随重启操作。

提议的变更

本规范建议实现由父规范 [1] 描述的带外 RAID 配置。这将需要实现新的硬件类型 Ilo5Hardware 和一个新的 raid 接口,作为 ilo 的 IloRAID

OOB RAID 配置将是一个四步过程。1. delete_configuration - 删除系统中的当前 raid 配置。 2. read_configuration - 获取系统更新后的 raid 配置并相应地更新节点属性。 3. create_configuration - 创建用户在节点属性的 target_raid_config 中设置的 raid 配置。 4. read_configuration - 获取系统更新后的 raid 配置并相应地更新节点属性。

所需更改列表

  • 以下将是 Ilo5Hardware 的组成

    • 此硬件类型将受基于 ilo5 的 HPE Proliant 服务器的支持。

    • Ilo5Hardware 将继承父类 IloHardware 的所有接口。

    • Ilo5Hardware 将支持新的 RAID 接口 IloRAID

  • 以下将是 IloRAID 的组成

    • IloRAID 将继承基类的 RAIDInterface。

    • delete_configuration - 这将删除裸机节点上的 RAID 配置。

      • 由于需要重启才能使更改生效,此函数将用附加参数 reboot_required 装饰,其值设置为 True

      • 它将从 proliantutils 库创建一个 IloClient 对象,以对 iLO 进行操作。这将调用 proliantutils 库的 delete_raid_configuration 以删除系统上的逻辑驱动器。

    • create_configuration - 这将在裸机节点上创建 RAID 配置。

      • 由于需要重启才能使更改生效,此函数将用附加参数 reboot_required 装饰,其值设置为 True

      • 它将从 proliantutils 库创建一个 IloClient 对象,以对 iLO 进行操作。这将调用 proliantutils 库的 create_raid_configuration 以向固件发出请求,以在系统上创建逻辑驱动器。

    • read_configuration - 这将读取裸机节点上的 RAID 配置。

      • 它将从 proliantutils 库创建一个 IloClient 对象,以对 iLO 进行操作。这将调用 proliantutils 库的 read_raid_configuration 以获取系统上的逻辑驱动器。因此,它将在调用 create_configuration 之后使用实际的 RAID 配置更新节点属性,并在调用 delete_configuration 之后更新为 None

  • 以下将是 ironic 清理架构中为支持所需的后重启操作而进行的更新(如果需要任何清理步骤)。

    • 向 BaseInterface 的 clean_step 函数添加一个新的布尔位置参数 reboot_required。此参数的默认值设置为 False。注意:相同的做法已在需要重启的带内清理中使用。

    • 更新 ironic/conductor/manager.py:_do_next_clean_step(),对于每个步骤,如果 reboot_required 设置为 True 并且上一个命令接口.execute_clean-step() 的结果不是 clean wait,则调用 prepare_cleaning()。

备选方案

可以执行带内 raid 配置以达到相同的结果。但是,在这种情况下使用的 ramdisk 应该具有 proliant-tools 元素,该元素将用于 RAID 操作的 ‘ssacli’ 实用程序捆绑到镜像中。

数据模型影响

状态机影响

REST API 影响

客户端 (CLI) 影响

RPC API 影响

驱动程序 API 影响

Nova 驱动程序影响

Ramdisk 影响

安全影响

其他最终用户影响

可扩展性影响

性能影响

其他部署者影响

用户需要配置以下两件事才能在 HPE Proliant Gen10 服务器上使用 OOB RAID 配置。

  • 将新的硬件类型 ilo5 配置到 ([DEFAULT] enabled_hardware_types)。

  • 将新的 raid 接口 ilo5 配置到 ([DEFAULT] enabled_raid_interfaces)。

开发人员影响

实现

负责人

主要负责人:theanshuljain

工作项

  • 为 ilo 添加一个新的硬件类型 Ilo5Hardware,该类型继承 IloHardware。

  • 添加一个新的硬件接口 IloRAID,该接口继承 base.RAIDInterface。

  • 编写新的 OOB RAID 接口的单元测试用例。

依赖项

proliantutils 中对 OOB RAID 的支持正在开发中,尚未发布。

测试

将添加单元测试用例。将在第三方 CI 设置中进行测试。

升级和向后兼容性

文档影响

需要更新 iLO 驱动程序文档,以获取新的硬件类型和 RAID 接口。

参考资料

[1] Ironic 通用 raid 规范:https://review.opendev.org/173214