經過數年的發展後,iSCSI已成為IP SAN的代名詞,大幅促進了儲存區域網路(SAN)的普及應用。但相較於FC SAN,iSCSI雖然有建置價格低的優點,但也被認為存在著許多不足,包括易受攻擊、可用頻寬低,且缺乏高可用性的冗餘存取機制等。

事實上,若有適當的環境配合,iSCSI也能實現多路徑I/O(Multi-Path Input/Output,MPIO)與多重連結(Multiple Connections per Session,MC/S)兩種多重路徑存取的機制,可建立負載平衡、故障失效切換等頻寬聚合應用,提供更可靠的儲存網路環境。

SCSI的2種多路徑存取機制
MPIO與MC/S都是利用多條實體存取通道,在伺服器(iSCSI Initiator段)與儲存設備(iSCSI Target端)之間建立邏輯通道,可透過輪替的存取動作,避免單一實體通道中斷時,連帶導致存取中斷;或是平衡多個實體通道間的傳輸負載,避免傳輸負荷集中在單一實體通道上。但2種機制間又有所不同:

多重路徑MPIO
MPIO可允許1個iSCSI Initiator透過多個Session登入同1個iSCSI Target設備,以便利用多張網路卡或iSCSI HBA啟用負載平衡與故障失效切換機制,也可稱作Multiple Sessions per Initiator。

一作業階段多重連接MC/S
MC/S可允許在同一個Session中,在iSCSI Initiator與iSCSI Target間建立多個TCP/IP連接,同樣也能讓使用者利用多張網路卡或iSCSI HBA啟用負載平衡與故障失效切換機制。

簡而言之,MPIO是在更高的網路堆疊層上運作(即在iSCSI層上的SCSI指令層),且多條存取路徑間的負載平衡機制,是針對1個指定的獨立邏輯磁碟機(LUN)運作;而MC/S則是iSCSI RFC中所定義的方法,是在iSCSI層上運作,具有更好的傳輸驗證能力(Error Recovery Levels),另外MC/S的負載平衡是「同時」針對所有的邏輯磁碟機運作,這點也與MPIO不同。

實現多路徑存取的3種方式
iSCSI的底層是IP與乙太網路,理論上可直接從網路卡下手,利用Port Trunking/Teaming/Link Aggregation的方式,將主機上的多張網路卡綑綁在1個IP下,再連接到iSCSI儲存設備上,搭配iSCSI儲存設備傳輸埠上的對應設定,從而實現實體多路徑連接。但問題在於,不是所有網路卡都能支援這種方式。

另外,有一些儲存廠商提供的SAN路徑管理軟體,也能協助使用者建立iSCSI多路徑存取環境,如EMC PowerPath、HDS的Hitachi Dynamic Link Manager、NetApp SnapDrive、Infortrend EonPath等,但這些軟體通常都只支援特定廠牌型號的iSCSI設備。

不過我們也可跳過網路卡這一層,亦無須使用路徑管理軟體,直接利用iSCSI Initiator軟體配合iSCSI設備建立多路徑存取。要利用這種方式建立MPIO還是MC/S,都必須滿足一定條件:

(1)iSCSI Initiator端需有多張網路卡或網路埠連接到Target端。

(2)iSCSI Initiator軟體需支援MPIO或MC/S。

(3)iSCSI Target設備需支援MPIO或MC/S。

其中第1項是最基本的條件,主機若沒有2個以上的網路埠(或2張以上網路卡/iSCSI HBA)可用,自然談不上多路徑存取,不過目前多數伺服器都內建了至少2組GbE網路埠,這點通常不會成為太大問題。

第2項條件則視不同環境而定,目前各主要作業系統廠商提供的iSCSI Initiator軟體中,目前以Windows的支援較為齊全,如微軟的iSCSI Initiator 2.06版以後就能支援MPIO與MC/S;Sun則有OpenSolaris MPxIO程式可支援Solaris環境的MPIO;Linux環境同樣也能支援MPIO。

而就第3點來說,目前MPIO遠比MC/S普及,大多數iSCSI儲存設備都能支援MPIO,只要能允許同一個iqn建立的session即可。

但能支援MC/S的產品就少了許多,在軟體式的iSCSI Target方面,目前能支援的也不多,如微軟的iSCSI Target、Sun的Solaris iSCSI Target都不支援。


點小圖看大圖利用微軟iSCSI Initiator建立多路徑存取
我們以最普及的微軟iSCSI Initiator軟體為例,說明如何建立多路徑存取。2.0版以後的微軟iSCSI Initiator軟體都能支援MPIO與MC/S機制,兩種機制都可提供幾種多路徑機制:

(1)Failover Only:除了指定的現用(active)路徑外,其餘路徑均為待命狀態,沒有負載平衡功能。當現用路徑失效時,系統將依循環配置方式尋找可用路徑。

(2)負載平衡:有4種模式可選:

● Round Robin(循環配置資源):所有路徑皆為active,系統會嘗試將收到的存取請求,均衡分散至所有路徑。

● Round Robin with subset(帶有子集的循環配置資源):僅在現用的路徑上執行循環配置資源原則。當所有現用路徑無效時,再嘗試按照循環配置資源方式,去尋找與使用備用路徑。

● Least Queue Depth (最小佇列深度):將較多的 I/O 請求分散給負載較輕的處理路徑,以補償不平衡的負載。這個模式只適用於MC/S,在MPIO下不支援。

● Weighted Paths(加權路徑):可讓使用者指定每個路徑的相對處理負載,加權數字越大,意味著路徑優先順序排的越後面。

設定時,須先將Initiator端伺服器的2個網路埠直接或透過交換器連上iSCSI儲存設備,並於iSCSI儲存設備上建立1個磁碟區、掛載到Initiator端伺服器,然後再從微軟iSCSI Initiator執行相應的設定即可。

如果只需要故障失效切換,則負載平衡政策設定上選擇Failover Only即可,若想要提高傳輸效率,則可選擇同時啟動所有可用的網路埠,則選用Round Robin,若有更精細的政策設定需求,可選擇其他模式。

MPIO與MC/S設定差異
MPIO與MC/S在設定程序的前半段是完全相同的,同樣都是在iSCSI儲存設備上建立1個磁碟機,然後再讓iSCSI Initiator登入儲存設備的Target Portals。但接下來的程序便有所差異:

MPIO
(1)首先必須將iSCSI儲存設備的iSCSI埠加入iSCSI Initiator的Portal群組。

啟動微軟iSCSI Initiator,在Discovery選單的Target Portals中,將iSCSI儲存設備2個埠的IP位址加入Target Portals。

(2)替iSCSI儲存設備的iSCSI埠與前端主機網路埠建立多路徑傳輸的對應關係。

到iSCSI Initiator的Target選單, Log On進已找到的Target,在跳出來的對話框中點選Enable Multi-Path選項。再進入對話框的Advanced選項,設定來源端與Target端的IP埠位置。這個程序須進行2次,以把伺服器上的2個網路埠分別配置給iSCSI儲存設備上的2個iSCSI埠。

(3)最後是設定負載平衡模式。

回到iSCSI Initiator的Target選單選取Details功能項,接下來在Target屬性對話框選擇Devices選單的Advance選項,從跳出的Device Details對話框中選擇負載平衡模式,就完成了設定。

回到Windows的磁碟管理介面中重新尋找磁碟,此時抓取到的新磁碟就是以MPIO運作。

MC/S
(1)一開始同樣是要把iSCSI儲存設備加入Initiator的Portal群組,但只要將儲存設備的1個埠加入Target Portals即可。

(2)設定傳輸對應關係。

到iSCSI Initiator的Target選單Log On已找到的Target,在跳出來的對話框中直接點選Advanced選項(不可啟動Enable Multi-Path選項),將主機端第1個網路埠配置給iSCSI儲存設備的第1個iSCSI埠。

(3)選擇負載平衡模式。

回到iSCSI Initiator的Target選單選取Details功能項,接下來在Target屬性對話框選取Session選單的Connections選項,從Session Connections對話框中上方的負載平衡政策中選擇需要的模式,再於對話框下方的「The device has the following path…」選單中,選取Add,於跳出來的選單中選取Advanced,把主機的第2組網路埠與iSCSI設備的第2個iSCSI埠加入,即完成了設定。

接下來回到Windows的磁碟管理介面,重新搜尋新磁碟,此時系統抓取到的iSCSI設備提供的所有磁碟機,便都是透過MC/S連接,並執行我們剛剛設定的負載平衡政策的磁碟機。文⊙張明德


利用微軟iSCSI initiator軟體建立iSCSI MPIO環境

我們以HP StorageWorks MSA2012i iSCSI磁碟陣列為對象,示範建立多路徑存取的步驟。由於MSA2012i只支援MPIO,而借測的這臺MSA2012i也只有1組控制器與2個iSCSI埠,故此處只進行單一控制器的MPIO設定。

首先,我們為測試平臺微星X2-106S3R的2個網路埠分別設定192.168.123.184與192.168.123.191的IP位址。然後為MSA2012i上的2組iSCSI埠(Port 0與Port 1)分別設定192.168.123.150與192.168.123.151的IP位址。主機與儲存設備上的2個埠,最好是分別位於2個子網路中,不過我們這裡為了方便,仍設於同一個子網路。

然後登入MSA2012i的控制臺,建立1個100GB的Volume,並映射給測試平臺的iqn,同時設定這個Volume使它可同時接受Port 0與Port 1存取。

接下來在測試平臺上啟動微軟iSCSI Initiator,將測試主機的2個網路埠分別與MSA2012i的Port 0與Port 1各自建立1條通道。我們在測試中選擇Round Robin的負載平衡模式,以便同時啟用2條傳輸通道。

從測試結果可以看出:和只使用1條通道時的測試數據相比,Round Robin下啟用2條通道後,由於傳輸負載會輪替的分散到2條通道上,因此可用頻寬增加許多,得到的傳輸速率提高了50%。而且此時即使有1條通道中斷,測試平臺對MSA2012i的存取也不會中斷,仍可利用剩下的1條通道維持連接,無論效能或可靠性都提高了。



點小圖看大圖

熱門新聞

Advertisement