在 ISCSIDriver 流程中支持 iSER 驱动

https://blueprints.launchpad.net/cinder/+spec/support-iscsi-driver

本 BP 的目的是避免 TGT 和 LIO 场景下类和参数的代码重复,并防止 iSER 驱动流程中的不稳定情况。

问题描述

  1. 目前 iSER 驱动仅通过 TGT 支持,没有 LIO 支持。

  2. 有一些 iSER 类继承自 iSCSI 驱动/目标类,但它们的大部分功能与 iSCSI 类相同。这种代码重复导致在向 iSCSI 驱动流程添加新功能或更改时,iSER 驱动代码变得不稳定。

用例

提议的变更

可以通过添加一个小修复来解决这两个问题,包括在 iSCSI Tgt/LIO 类中添加一个新的 enable_iser 参数。

在 TGT 和 LIO 场景下,要支持通过 iSER 的 RDMA,只需在卷创建阶段设置一个额外的参数即可。

将向 ISERTgtAdm 添加弃用警告,因为此更改将作为当前 iSER Tgt 代码的替代方案。

此规范的 Nova 部分在:https://review.openstack.org/#/c/130721/

备选方案

保持 ISERTgtAdm、LVMISERDriver、ISERDriver 和 iser_opts 不变,或者仅弃用其中一部分(但这将错失本次代码重构的目的)。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

添加一个新的“enable_iser”参数,默认设置为“False”。此参数将在 TGT 或 LIO 卷创建中用于设置基于 RDMA 的门户。

此单个参数将弃用所有 iser_opts 参数,这些参数是 iSCSI 参数的重复。

开发人员影响

此更改将简化 iSER 驱动流程的维护,因为将不再使用额外的类或重复的参数。

实现

负责人

Aviram Bar-Haim <aviramb@mellanox.com>

工作项

  1. 修复 bug https://bugs.launchpad.net/cinder/+bug/1396265 并添加正确的驱动程序参数,以及 VOLUME_CONF 和 VOLUME_CONF_WITH_CHAP_AUTH 的可配置值。

  2. 添加一个新的“enable_iser”参数,默认设置为 false。

  3. 在 TGT 场景的 TgtAdm 中,将驱动程序参数设置为 VOLUME_CONFs 模板。

  4. 根据“enable_iser”值,在 rtslib 的网络门户对象上添加 _set_iser(1),用于 LIO 场景。

  5. 根据“enable_iser”值,将 ISCSIDriver 的“driver_volume_type”设置为“iscsi”或“iser”值。

依赖项

测试

要测试通过 iSER 的卷附加,需要支持 RDMA 的硬件。

将添加一个新的单元测试,该测试使用新的 enable_iser 参数在 iSCSI 卷驱动程序上进行测试。

文档影响

添加新的 enable_iser 参数后,将向以下位置添加更新的 iSER 配置指南:

参考资料