允许 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 需要相关的文档说明。
参考资料¶
https://bugs.launchpad.net/os-brick/+bug/1370226 (此修复的 Launchpad 错误)
https://review.openstack.org/#/c/146233/ (nova 中的相应代码)
http://www.open-iscsi.org/docs/README (第 5.1 节 iSCSI iface 设置)
http://red.ht/1BJxsjL (配置 iSCSI 卸载的 iface,RedHat 文档)