適用於 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 中建立的傳輸介面檔案。