iSCSI 效能分析和調整
這個程序為「網際網路小型電腦系統介面 (iSCSI)」主機效能問題提供解決方案,以確保主機連接至系統時的效能及能夠連接至網路交換器。
關於這項作業
- 傳輸控制通訊協定 (TCP) 延遲 ACK
- 乙太網路巨型訊框
- 網路瓶頸或超載
- iSCSI 階段作業登入平衡
- 網路上 iSCSI 的優先順序流程控制 (PFC) 設定和頻寬配置
程序
- 停用 TCP 延遲確認通知特性。 如果要停用此特性,請參閱 OS/平台說明文件。
這個問題的主要特徵:讀取效能明顯低於寫入效能。傳輸控制通訊協定 (TCP) 延遲確認通知是某些 TCP 實作為了提高網路效能而採用的一種技術。但在這個範例情節中,由於只有一個未完成的 I/O,這種技術會明顯降低 I/O 效能。
基本上,多個 ACK 回應可以合併成單一回應,以降低通訊協定協議負荷。如 RFC 1122 所述,主機傳送 ACK 回應時可以延遲最多 500 毫秒。此外,在一連串最大送入的區段中,每隔一個區段就必須傳送 ACK 回應。
重要: 主機必須重新開機,這些設定才會生效。有些平台(例如,標準 Linux 發行套件)無法停用此特性。但是,7.1 版已解決此問題,不需要變更主機配置來管理 TcpDelayedAck 行為。 - 為 iSCSI 啟用巨型訊框。
巨型訊框是大小超過 1500 位元組的乙太網路訊框。最大傳輸單位 (MTU) 參數用於測量巨型訊框的大小。
系統支援 9000 位元組的 MTU。請參閱 CLI 指令 cfgportip,以啟用巨型訊框。這個指令會造成干擾,因為鏈結會不平穩,而經由此埠的 I/O 作業會暫停。
網路必須支援端對端的巨型訊框才有效果。請傳送連線測試封包(遞送時不要片段化),以驗證網路是否支援巨型訊框。範例:- Windows:
ping -t <iscsi target ip> -S <iscsi initiator ip> -f -l <new mtu size - packet overhead (usually 36, might differ)>下列指令示範如何檢查 Windows 7 系統上是否正確設定 9000 位元組的 MTU:
以下是成功回覆的輸出範例:ping -t -S 192.168.1.117 192.168.1.217 -f -l 8964192.168.1.217: bytes=8964 time=1ms TTL=52 - Linux:
ping -l <source iscsi initatior ip> -s <new mtu size> -M do <iscsi target ip> - ESXi:
ping <iscsi target ip> -I <source iscsi initiator ip> -s <new mtu size - 28> -d
- Windows:
- 驗證起始器/目標埠所連接之交換器的埠統計資料,確定封包丟棄不嚴重。
檢閱網路架構,避免任何瓶頸和超載的情形。網路必須維持平衡,以避免任何封包丟棄情況;封包丟棄會明顯降低儲存體效能。請求網路支援來修正任何這種問題。
- 最佳化和利用所有 iSCSI 埠。 為了最佳化系統資源使用率,必須使用所有的 iSCSI 埠。
- 將每個埠指派給一個 CPU,並維持登入平衡,就可以將 CPU 使用率最大化,達到更好的效能。子網路最好配置為等於
系統節點上的 iSCSI 埠數目。使用不同子網路上的 IP 來配置節點的每一個埠,並且對其他節點保持相同。下列範例顯示理想的配置:
Node 1
Port 1: 192.168.1.11
Port 2: 192.168.2.21
Port 3: 192.168.3.31
Node 2:
Port 1: 192.168.1.12
Port 2: 192.168.2.22
Port 3: 192.168.3.33 - 避免有 50 台主機登入埠 1 但只有五台主機登入埠 2 的情況。
- 妥善劃分子網路,以維持階段作業數目和備援性之間的平衡。
- 將每個埠指派給一個 CPU,並維持登入平衡,就可以將 CPU 使用率最大化,達到更好的效能。子網路最好配置為等於
系統節點上的 iSCSI 埠數目。使用不同子網路上的 IP 來配置節點的每一個埠,並且對其他節點保持相同。下列範例顯示理想的配置:
- 對 PFC 設定的問題進行疑難排解。
您不需要在 系統上啟用 PFC。 系統會讀取資料中心橋接交換 (DCBx) 封包,並自動為 iSCSI 啟用 PFC(如果已在交換器上啟用)。在 lsportip 指令的輸出中,lossless_iscsi 和 lossless_iscsi6 欄位會顯示 [on/off],視系統上是否為 iSCSI 啟用 PFC 而定。
如果 lossless_iscsi 和 lossless_iscsi6 欄位顯示 off,可能是由於下列其中一個原因:- 沒有為該 IP 設定 VLAN。驗證下列檢查:
- 對於 IP 位址類型 IPv4,請檢查 lsportip 輸出中的 vlan 欄位。不得為空白。
- 對於 IP 位址類型 IPv6,請檢查 lsportip 輸出中的 vlan_6 欄位。不得為空白。
- 如果 vlan 和 vlan_6 欄位為空白,請使用為 iSCSI 配置 VLAN 來為 IP 類型設定 VLAN。
- 沒有為該 IP 設定主機旗標。驗證下列檢查:
- 對於 IP 位址類型 IPv4,請檢查 lsportip 輸出中的 host 欄位。必須是 yes。
- 對於 IP 位址類型 IPv6,請檢查 lsportip 輸出中的 host_6 欄位。必須是 yes。
- 如果 host 和 host_6 欄位不是 yes,請使用 cfgportip CLI 指令為 IP 類型設定主機旗標。
- 交換器上未正確設定 PFC。
如果已正確設定 VLAN,也設定主機旗標,但 lossless_iscsi 或 lossless_iscsi6 欄位仍顯示 off,表示某些交換器設定可能遺漏或不正確。
在交換器中驗證下列設定:
- 為 iSCSI 資料流量設定優先順序標籤。
- 為指派給 iSCSI CoS 的優先順序標籤啟用 PFC。
- 在交換器上啟用 DCBx。
查看適當的說明文件:- 查閱有關在特定交換器上啟用 PFC 的說明文件。
- 查閱有關在 Red Hat Enterprise Linux (RHEL) 和 Windows 主機上根據您的配置來啟用 PFC 的說明文件。
- 沒有為該 IP 設定 VLAN。驗證下列檢查:
- 確保在網路上分配適當的頻寬給 iSCSI。
您可以將頻寬劃分給各種不同的資料流量。為了維持良好效能,必須指派適當的頻寬。如果要指派頻寬給 iSCSI 資料流量,您必須先為 iSCSI 啟用優先順序流程控制。