适用于 Linux 的 Chelsio S3 iSCSI 驱动程序¶
简介¶
基于 Chelsio T3 ASIC 的适配器(S310、S320、S302、S304、Mezz 卡等系列产品)支持 iSCSI 加速和 iSCSI 直接数据放置 (DDP),其中硬件处理昂贵的字节触摸操作,例如 CRC 计算和验证,以及直接 DMA 到最终主机内存目标。
iSCSI PDU 摘要生成和验证
在传输时,Chelsio S3 硬件计算并将标头和数据摘要插入 PDU。在接收时,Chelsio S3 硬件计算并验证 PDU 的标头和数据摘要。
直接数据放置 (DDP)
S3 硬件可以直接将 iSCSI Data-In 或 Data-Out PDU 的有效负载放置到预先发布的目的主机内存缓冲区中,基于 Data-In 中的 Initiator Task Tag (ITT) 或 Data-Out PDU 中的 Target Task Tag (TTT)。
PDU 传输和恢复
在传输时,S3 硬件从主机驱动程序接受完整的 PDU(标头 + 数据),计算并插入摘要,如有必要将 PDU 分解为多个 TCP 段,并将所有 TCP 段传输到线路上。 它会根据需要处理 TCP 重传。
在接收时,S3 硬件通过重新组装 TCP 段、分离标头和数据、计算和验证摘要来恢复 iSCSI PDU,然后将标头转发到主机。 如果可能,有效负载数据将直接放置到预先发布的主机 DDP 缓冲区中。 否则,有效负载数据也将发送到主机。
cxgb3i 驱动程序与 open-iscsi 发起程序接口,并通过 Chelsio 硬件提供 iSCSI 加速(如果适用)。
使用 cxgb3i 驱动程序¶
需要采取以下步骤来加速 open-iscsi 发起程序
加载 cxgb3i 驱动程序:“modprobe cxgb3i”
cxgb3i 模块向 open-iscsi 注册一个新的传输类“cxgb3i”。
在重新编译内核的情况下,cxgb3i 选择位于
Device Drivers SCSI device support ---> [*] SCSI low-level drivers ---> <M> Chelsio S3xx iSCSI support
为新的传输类“cxgb3i”创建一个位于 /etc/iscsi/ifaces/ 下的接口文件。
该文件的内容应采用以下格式
iface.transport_name = cxgb3i iface.net_ifacename = <ethX> iface.ipaddress = <iscsi ip address>
如果指定了 iface.ipaddress,则 <iscsi ip address> 必须与 ethX 的 ip 地址相同,或者与同一子网上的地址相同。 确保该 ip 地址在网络中是唯一的。
编辑 /etc/iscsi/iscsid.conf MaxRecvDataSegmentLength (131072) 的默认设置太大; 替换为不大于 15360 的值(例如 8192)
node.conn[0].iscsi.MaxRecvDataSegmentLength = 8192
如果 MaxRecvDataSegmentLength 太大,则正常会话的登录将失败。 格式为“cxgb3i: ERR! MaxRecvSegmentLength <X> too big. Need to be <= <Y>.”的错误消息将被记录到 dmesg。
要将 open-iscsi 流量直接发送到 cxgb3i 的加速路径,需要使用大多数 iscsiadm 命令指定“-I <iface file name>”选项。 <iface file name> 是在步骤 2 中创建的传输接口文件。