重构 ISCSIDriver 以支持除 TCP 之外的其他 iSCSI 传输¶
https://blueprints.launchpad.net/nova/+spec/add-open-iscsi-transport-support
目前 openstack 中的 open-iscsi 不允许使用卸载 iSCSI 传输(cxgb4i, qla4xx, bnx2i 等)或其他软件 iSCSI 传输(如 iser)。此蓝图旨在添加对此的支持
问题描述¶
open-iscsi 具有硬件 iSCSI 传输支持。interface 参数指定用于该操作的硬件 iSCSI 接口。目前为 open-iscsi 提供硬件接口的任何硬件供应商都无法在 openstack 中使用它们,因为接口 (iface) 参数当前在 iSCSI 驱动程序中不受支持。
虽然这项工作由 Chelsio 进行,但目前的方法是使其足够通用,以支持所有受支持的 HBA(主机总线适配器)。
使用此类 iSCSI 硬件传输需要提供相应的接口文件(称为 iface),可以通过 iscsiadm 自动生成,但需要正确性检查,或者也可以根据要使用的 IP 地址、硬件地址和传输名称三元组动态生成。iface 格式本身是通用的,不使用任何专有字段,无论使用何种传输。
这还解决了 nova 中当前传输支持的第二个问题,即 iSER 驱动程序。它当前是普通 open-iscsi 驱动程序代码的完整副本,并额外设置了一个传输参数为“iser”
这将允许通过 iSCSI 驱动程序直接使用 iSER,尽管此规范的目的不是弃用 iSER 驱动程序,并且可能首先禁用 iSER(也因为 iSER 需要目标支持,而硬件传输不需要)。之前的相关规范如下
https://review.openstack.org/#/c/86637/
https://blueprints.launchpad.net/nova/+spec/add-transport-support-to-iscsi
https://blueprints.launchpad.net/cinder/+spec/add-transport-support-to-iscsi
预计后续蓝图将弃用单独的 iSER 驱动程序,并将功能整合到使用传输支持中。
用例¶
用户在其系统中安装了支持硬件 iSCSI 的 HBA。使用 open-iscsi 的硬件传输支持可以实现更高的 iSCSI 通信速度和更低的 CPU 使用率。
open-iscsi 当前支持的传输包括
Chelsio:cxgb3i, cxgb4i
QLogic:qla4xxx, bnx2i(以前是 Broadcom)
Emulex:be2iscsi, ocs
Mellanox 及其他:iser
使用任何这些传输都需要系统中存在适当的硬件,但 iSER 在一开始将不会被支持。
项目优先级¶
无
提议的变更¶
在发起端,使用软件 iSCSI 和硬件 iSCSI 传输之间的唯一区别是 interface 标志(–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
另一种(但更复杂)方法可能是从源 IP 地址推断 iface 名称。IP 地址可用于确定 hwaddress 和 PCI 设备 ID。PCI 设备 ID 提供传输名称,iface 名称的格式为 <transportname>.<hwaddress>
可选/未调研:在未来,可能值得研究是否可以将网络服务集成到 open-iscsi 传输中提供网络接口,但这超出了此规范的范围。
其他相关更改
在尝试使用所述传输之前,验证硬件是否存在。实现此的最佳方法是检查 PCI 供应商 ID/MAC 地址,如果 nova 愿意接受此类代码。
备选方案¶
使用 iscsi-targets 的手动发现,并在进行发现时提供 -I 参数。传输名称写入 open-iscsi 生成的记录中,但是这不能保证将使用硬件传输,因为这可能会根据 CLI 参数的构造方式被覆盖。
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
性能影响¶
iSCSI 性能得到显著提高,驱动程序中没有添加额外的命令,除了可能生成默认 iface 文件:“iscsiadm -m iface”
其他部署者影响¶
这可以用作最终替换和弃用 LibvirtISERVolumeDriver 的垫脚石,因为可以使用“iscsiadm -I iser”来实现 iSER 支持,而无需单独的驱动程序。
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
anish7 <anish@chelsio.com>
iSER 驱动程序弃用 & 后续规范 Assignee
aviramb <aviramb@mellanox.com>
nuritv <nuritv@mellanox.com>
工作项¶
将 -I 参数添加到 ‘nova/virt/libvirt/volume.py’ 中的所有 iscsiadm 登录/发现命令
将传输参数添加到配置选项,默认值为软件 iscsi,即 ‘-I default’
依赖项¶
没有特别的。但是,如果未配置传输,则使用传输所需的最低信息是 IP、传输名称和硬件地址的三元组。具有此功能的自动配置传输将是一个不错的选择。
测试¶
当前的 iSCSI 测试将正常工作。将在 Chelsio 硬件以及可以获得的任何其他支持传输硬件上进行测试。
文档影响¶
需要为新的传输参数编写相关文档。
参考资料¶
http://www.open-iscsi.org/docs/README (第 5.1 节 iSCSI iface 设置)
http://red.ht/1BJxsjL (配置 iSCSI 卸载的 iface,RedHat 文档)