允许 brick 支持除 TCP 之外的其他 iSCSI 传输

包含您的 Launchpad 蓝图的 URL

https://blueprints.launchpad.net/cinder/+spec/brick-add-open-iscsi-transport-support

目前 openstack 中的 open-iscsi 不允许使用卸载 iSCSI 传输 (cxgb4i, qla4xx, bnx2i 等) 或其他软件 iSCSI 传输 (如 iser)。此蓝图旨在添加对此的支持

问题描述

open-iscsi 具有硬件 iSCSI 传输支持。interface 参数指定用于该操作的硬件 iSCSI 接口。目前为 open-iscsi 提供硬件接口的任何硬件供应商都无法在 openstack 中使用它们,因为接口 (iface) 参数当前不受 iSCSI 驱动程序支持。

用例

使用此类 iSCSI 硬件传输需要提供相应的接口文件 (称为 iface),可以通过 iscsiadm 自动生成,但需要正确性检查,或者也可以根据要使用的 IP 地址、硬件地址和传输名称动态生成。iface 格式本身是通用的,无论使用何种传输,都不使用任何专有字段。

这些更改已在 nova 中实现,代码可以在这里查看:https://review.openstack.org/#/c/146233/

这将还允许通过 iSCSI 驱动程序直接使用 iSER,尽管本规范的目的不是弃用 iSER 驱动程序,并且可能首先禁用 iSER(也因为 iSER 需要目标支持,而硬件传输不需要)

提议的变更

在发起方,使用软件 iSCSI 和硬件 iSCSI 传输之间的唯一区别是接口标志(–interface=[iface])

例如:“iscsiadm -m discovery -t st -p ip:port -I <iface 文件>”

iface 文件可以自动为系统上所有受 open-iscsi 支持的硬件生成,方法是使用 ‘iscsiadm -m iface’。iface 文件名的默认格式为 <transport_name.hw_address>

默认 iface 名称为 ‘default’。不使用 -I 参数(open-iscsi 当前在 nova 中使用的就是这种方式)与指定

‘iscsiadm -m discovery -t st -p ip:port -I default’ 相同

需要进行的更改是

  • 添加一个新参数,用于指定在执行 iscsi 发现/登录时应使用哪个传输,如果操作不成功或未提供参数(-I default),则回退到 TCP

  • 卸载传输使用带有前缀 pci-0000:00:00.0- 的设备路径,更改相关代码以处理此问题

备选方案

使用 iscsi-targets 的手动发现,并在进行发现时提供 -I 参数。传输名称写入 open-iscsi 生成的记录中,但是这不能保证将使用硬件传输,因为这可能会根据 CLI 参数的构造方式被覆盖。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

实际的 iSCSI 性能通常可以通过使用比 iscsi_tcp 更好的传输来提高,没有其他影响。

其他部署者影响

这可用于弃用单独的 iSER 连接器,因为使用 iser 仅仅意味着向 iscsiadm 提供 -I iser 参数

开发人员影响

实现

负责人

主要负责人

anish7 <anish@chelsio.com>

工作项

  • 将 -I 参数添加到当前在 brick 中使用的所有 iscsiadm 登录/发现命令

  • 为 _get_device_path() 添加前缀支持

依赖项

没有特别之处。但是,如果未配置传输,则使用传输所需的最低信息是 IP、传输名称和硬件地址的 3 元组。

测试

当前的 iSCSI 测试将正常工作,可以使用虚假传输单独运行(open-iscsi 已经支持此功能)

文档影响

使用传输 iface 需要相关的文档说明。

参考资料