本文將示範如何讓VMware vSphere ESXi 5.1來擔任iSCSI Initiator角色,並透過MPIO機制讓多片實體網路卡同時連接iSCSI Target儲存設備,完成這些設定後,平時就會把傳輸流量「負載平衡」到多片網路卡,若發生如網路卡損壞等意外時,也將提供「容錯移轉」功能。

目前企業運作環境中對於共用儲存設備的存取約略可以區分為三種方式:直接連接儲存(Direct Attached Storage,DAS)、網路連接儲存(Network Attached Storage,NAS)、儲存區域網路(Storage Area Network,SAN),如圖1所示。

▲圖1 DAS、NAS、SAN技術混合解決方案。

其中儲存區域網路SAN又因為所使用的傳輸媒體介質不同,可再區分為使用光纖作為傳輸媒介的(Fiber Channel SAN,FC-SAN)以及使用一般乙太網路的(iSCSI SAN,IP-SAN)。
網際網路工程任務小組(Internet Engineering Task Force,IETF)在2003年2月正式通過由Cisco與IBM一同發起網際網路小型計算機系統介面(Internet SCSI,iSCSI)的標準。
iSCSI SAN簡稱為IP-SAN,此項技術簡單來說是讓傳統上僅能用於本機傳輸的SCSI協定可以透過TCP/IP乙太網路承載,以達到資料高速傳輸的需求,如圖2所示。

▲ 圖2 iSCSI網路架構示意圖。圖片來源:VMware文件—iSCSI SAN Configuration Guide(http://0rz.tw/iUPcA)

iSCSI傳輸協定透過TCP/IP的Port 860及3260作為溝通管道,使得兩台主機之間(iSCSI Target、iSCSI Initiator)可以利用iSCSI協定來交換資料傳輸的SCSI指令集,讓主機間可以透過高速的區域乙太網路將位於遠端的儲存設備模擬為本地端的儲存設備。
此項技術最大的優點在於其使用的傳輸線材、網路交換器、網路卡皆可沿用企業原有的網路架構,這也是近幾年來iSCSI技術迅速竄紅的原因之一。
本次實作內容將設定VMware vSphere ESXi 5.1擔任iSCSI Initiator角色,透過設定MPIO(MultiPath Input/Output)機制,讓多片實體網路卡能夠同時連接iSCSI Target儲存設備,達成平時將傳輸流量「負載平衡」到多片網路卡之間,當發生災難如網路卡損壞、網路交換器損壞時,將具備「容錯移轉」之目的,如表1、圖3所示。
表1 實作環境

▲圖3 iSCSI MPIO實作網路架構圖。

iSCSI運作原理說明
iSCSI技術可以區分為iSCSI目標端(iSCSI Target)和iSCSI發起端(iSCSI Initiator),其中iSCSI Target可以區分為硬體式和軟體式兩種技術進行建置:
.硬體式iSCSI Target:儲存設備中的硬體控制器通常內含有可以同時處理TCP/IP封包進行I/O加速的TCP卸載引擎(TCP Offload Engine,TOE)以及專門用於處理iSCSI PDU封包晶片的磁碟陣列控制器所組合而成,因此不管是一般網路的TCP/IP封包或是傳送資料的iSCSI封包,其處理效能非常優異,但相對來說其設備費用較為昂貴。
.軟體式iSCSI Target:通常為基於成本因素考量,使用一般的伺服器配合作業系統及相關軟體套件來建置稱之,利用軟體式接收和處理iSCSI Initiator所傳輸過來的iSCSI指令集,以取代費用高昂的IP-SAN儲存設備,因此在TCP/IP封包和iSCSI封包處理效能上,與專用的儲存設備相比之下較為普通。

iSCSI Initiator也可以區分為硬體式、半硬體式和軟體式等三種技術:
.硬體式iSCSI Initiator:在主機上安裝一片iSCSI主機匯流排介面卡(iSCSI Host Bus Adapter,iSCSI HBA),此iSCSI HBA介面卡含有一般TCP/IP網路控制晶片,並加上專門處理iSCSI PDU指令集封包晶片,因此安裝此片介面卡的主機在運作時因為在介面卡部分就可以直接處理TCP/IP封包與iSCSI PDU指令集,所以配備此介面卡能夠有效減輕主機端的運算效能,但是在價格上與FC HBA相去不遠為其缺點,也是至今無法普及的原因。
.半硬體式iSCSI Initiator:與一般網路卡最主要不同的地方,在於其擁有TCP卸載引擎晶片(TCP Offload Engine,TOE),所以此介面卡可以直接處理TCP/IP封包,而主機端只要專心處理iSCSI PDU指令集封包即可。對於主機端的運算效能,可以在某些程度上有所減輕,其介面卡的價格約為一般網路卡的305倍。
.軟體式iSCSI Initiator:透過軟體模擬方式,將現有主機及一般網路卡進行模擬。此方式最大的優點在於費用便宜,並且使用原有的網路介面卡,但由於使用軟體模擬的方式,因此所有的TCP/IP封包和iSCSI PDU指令集的運算任務都將落在主機端上來負責封包的運算及處理,因此在主機端的效能表現上是三種技術中最差的。
圖4為將iSCSI Initiator的連接程序從最底層的實體介面、乙太網路、介面卡驅動程式、TCP/IP協定、iSCSI Layer、SCSI Layer至最上層的作業系統進行三種技術的比較,透過比較及圖表,讀者將更清楚採用何種介面卡和技術時對主機端效能有什麼影響。
.網路介面卡費用(高至低): 硬體式iSCSI HBA > 半硬體式TOE > 軟體式
.消耗主機效能(高至低): 軟體式 > 半硬體式TOE > 硬體式iSCSI HBA

▲圖4 不同的iSCSI Initiator所占用主機端運算效能影響比較表。

ESXi 5.1主機開啟SSH通訊協定
在此次的MPIO設定實作中,會分別說明如何在GUI圖形介面和CLI指令介面中進行設定。
可以使用VMware vSphere Client登入ESXi 5.1主機,然後依序點選「Configuration > Security Profile > Properties > SSH > Options > Start」便可以啟動SSH通訊協定,讓SSH Client端連上ESXi 5.1主機(圖5)。

▲圖5 VMware vSphere Client啟動ESXi主機SSH通訊協定。

或者,在ESXi 5.1主機的Console畫面內按下〔F2〕按鍵,然後依序輸入「ESXi Host管理帳號及密碼 > Troubleshooting Options > Enable SSH」即可,詳細資訊可參考VMware KB-1017910(http://0rz.tw/ttBXA)。
建立MPIO專用VMkernel Port
接著說明如何建立MPIO專用VMkernel Port,以下將分成GUI圖形介面與CLI圖形介面兩部分進行說明。
GUI圖形介面設定
在MPIO設定中,先建立一台虛擬交換器(Virtual Switch),名稱採用預設的「vSwitch1」,而安裝於VMware vSphere ESXi 5.1的實體網路卡為vmnic1、vmnic2,並且建立兩個VMkernel Port,分別為MPIO-1、MPIO-2進行對應。
其中,設定VMkernel Port的重點在於,對應的兩片實體網路卡中必須設為「Active」及「Unused」Adapters才行,並且給予固定IP位址「172.20.75.11」、「172.20.75.12」,整體設定結構如下:
Switch1(Virtual Standard Switch)v
MPIO-1(VMkernel Port):vmnic1(Active Adapters)、vmnic2(Unused Adapters)
IP Address(vmk1):172.20.75.11/255.255.255.0 MPIO-2(VMkernel Port):vmnic2(Active Adapters)、vmnic1(Unused Adapters)
IP Address(vmk2):172.20.75.12/255.255.255.0
使用VMware vSphere Client連接至ESXi 5.1主機,然後依序點選「Configuration > Networking > Add Networking > VMkernel」,建立vSphere standard switch,並且勾選該虛擬交換器採用的實體網路卡為「vmnic1」、「vmnic2」。
然後,填入第一個Port Group名稱「MPIO-1」,並且給予固定IP位址「172.20.75.11/255.255.255.0」後建立完成,如圖6所示。

▲圖6 建立vSwitch1及第一個VMkernel Port MPIO-1。

接著,再次按下「Add Networking」並選擇剛才建立的vSphere standard switch「vSwitch1」,然後填入第二個Port Group名稱為「MPIO-2」,並且給予固定IP位址「172.20.75.12/255.255.255.0」後建立完成,如圖7所示。

▲圖7 在vSwitch1中建立第二個VMkernel Port MPIO-2。

隨後設定在Port Group MPIO-1中vmnic1為Active Adapters、vmnic2為Unused Adapters,而Port Group MPIO-2中的vmnic2為Active Adapters、vmnic1為Unused Adapters。
緊接著,在剛才建立的vSwitch1中按下「Properties」進行修改。在彈出視窗內,先點選「MPIO-1」再按下〔Edit〕按鈕進行修改。
先勾選「Override switch failover order」項目,接著點選「vmnic2」網卡,再利用〔Move Down〕按鈕將其移動至Unused Adapters,最後按下〔OK〕按鈕即可完成設定,如圖8所示。

▲圖8 設定MPIO-1中vmnic1為Active,vmnic2為Unused。

同樣地,點選「MPIO-2」後按下〔Edit〕按鈕進行修改。先勾選「Override switch failover order」項目,接著點選「vmnic1」網卡,然後利用〔Move Down〕按鈕將其移動至Unused Adapters,最後按下〔OK〕按鈕以完成設定,如圖9所示。

▲圖9 設定MPIO-2中vmnic2為Active,vmnic1為Unused。

CLI指令介面設定
上述以GUI圖形化介面建立VMkernel Port、IP位址、指派Active/Unused Adapters的設定,其實還有別的辦法也行得通。可以使用SSH Client登入ESXi 5.1主機,然後透過如下指令達到同樣的設定效果:

啟用ESXi主機iSCSI Initiator功能
緊接著,必須啟用ESXi主機iSCSI Initiator功能。可以從GUI圖形介面或CLI圖形介面來設定。
GUI圖形介面設定
此次實作環境中ESXi主機所安裝的實體網路卡為一般網路卡,所以採用啟動「iSCSI Software Adapter」的方式來建立iSCSI Initiator。
請於VMware vSphere Client操作畫面中依序點選「Configuration > Storage Adapters > Add > Add Software iSCSI Adapter > OK」即可。
順利產生iSCSI Software Adapter(vmhba33)後,可以按下「Properties」確認Software Initiator Properties Status狀態欄位為「Enabled」即可,如圖10所示。

▲圖10 新增並啟動ESXi主機iSCSI Initiator功能。

CLI指令介面設定
也可以使用SSH Client登入ESXi 5.1主機後,透過如下指令來啟動iSCSI Initiator功能,並且在啟動完畢後執行掃描,得知iSCSI Software Adapter為vmhba33:

啟用vmknic-Based Multipathing機制
想要啟用vmknic-Based Multipathing機制,同樣可以透過GUI圖形介面或者是CLI圖形介面來進行設定。
GUI圖形介面設定
將一開始即新增的VMkernel Port與剛才啟用的iSCSI Initiator進行「Port Binding」的動作,同樣地,這裡會說明GUI圖形介面以及CLI指令介面的設定方式,但是,如果使用舊版的VMware vSphere ESXi(4.0或4.1),則只能使用CLI指令介面的設定方式。
請於VMware vSphere Client操作畫面當中依序點選「Configuration > Storage Adapters > vmhba33 > Properties」項目,接著切換到〔Network Configuration〕活頁標籤,並且按下其中的〔Add〕按鈕,將先前建立的「MPIO-1」、「MPIO-2」加入到VMkernel Port Bindings清單內,如圖11所示。

▲ 圖11 將MPIO-1、MPIO-2加入到VMkernel Port Bindings清單中。

CLI指令介面設定
同樣可以使用SSH Client登入ESXi 5.1主機後,再透過如下指令設定VMkernel Port Bindings:

連結iSCSI Target儲存設備
接著示範如何透過GUI圖形介面及CLI圖形介面來連結iSCSI Target儲存設備。
GUI圖形介面設定
完成MPIO機制設定後,便可以設定連結iSCSI Target儲存設備(請先於iSCSI儲存設備端確認ESXi主機的iSCSI Initiator名稱已在允許存取清單中)。
在VMware vSphere Client操作畫面中依序點選「Configuration > Storage Adapters > vmhba33 > Properties」項目,接著切換到〔Dynamic Discovery〕頁籤內並按下〔Add〕按鈕,分別將iSCSI Target儲存設備IP位址「172.20.75.101」、「172.20.75.102」加入到Send Targets清單中,如圖12所示。

▲圖12 新增iSCSI Target儲存設備IP位址。

當完成設定按下〔Close〕按鈕時,系統將會彈出Rescan重新掃描的提示視窗,請按下〔是〕按鈕進行重新掃描作業。掃描完成後,在vmhba33的Details區塊中便會看到存取到iSCSI Target所分享的儲存空間(此實作為100GB),如圖13所示。

▲圖13 順利存取iSCSI Target所分享的儲存空間。

CLI指令介面設定
除了以上的設定方式外,也可以使用SSH Client登入ESXi 5.1主機,然後執行以下指令連結iSCSI Target儲存設備:

掛載iSCSI Target儲存資源
順利連結iSCSI Target儲存資源後,在VMware vSphere Client操作畫面中依序點選「Configuration > Storage > Add Storage」,然後跟著精靈指示選擇「Disk/LUN > LUN0 > VMFS-5 > 輸入Datastore名稱」即可完成iSCSI儲存資源的掛載動作(圖14)。

▲圖14 ESXi主機掛載iSCSI儲存資源。

測試MPIO負載平衡及容錯移轉機制
VMware vSphere ESXi主機支援三種MPIO路徑方式,包括Fixed、MRU(Most Recently Used)、Round Robin,這三種路徑各有不同的負載平衡及容錯移轉運作機制:
.Fixed:具備「容錯移轉」機制,平常只走Preferred所指定的路徑,只有碰到主要路徑故障時才切換到備用路徑,但是當主要路徑恢復時會自動切換回來(FailBack),適用於Active-Active Storage。
.MRU(Most Recently Used):具備「容錯移轉」機制,使用最近走過的Preferred指定路徑,當主要路徑故障時才切換到備用路徑,而在主要路徑恢復時並不會切換回來(Non-FailBack),適用於Active-Standby Storage。
.Round Robin:具備「負載平衡及容錯移轉」機制,使用輪詢機制將流量自動平均分配進行負載平衡,當其中某個路徑故障時也不會影響到其他路徑的傳輸,而所有的可用路徑狀態皆為Active(I/O)。
測試Fixed容錯移轉機制
當MPIO機制設定完畢,預設會採用的路徑機制為「Fixed」,可以做個簡單的測試。首先建立一台VM虛擬主機,該VM虛擬主機儲存於剛才掛載的iSCSI Target儲存資源中,接著開始安裝作業系統。 此時,可以使用SSH Client連上ESXi主機,然後依序鍵入指令「esxtop > s > 2 > n」來查看網路卡流量資訊(每2秒更新數據),將會發現目前這兩個網路卡中只有vmnic2(vmk2)有流量,如圖15所示。

▲圖15 目前兩個網路卡中只有vmnic2(vmk2)有流量。

然後,將接於vmnic2的網路線拔除,或者透過VMware vSphere Client操作介面進入vSwitch1當中,將vmnic2網路卡移除,以便模擬該網路卡無預警損壞。

接著,回到SSH Client視窗查看vmnic1,發現已經自動進行容錯移轉機制接手原有的傳輸流量(vmnic2網路卡消失),如圖16所示。

▲圖16 vmnic1自動進行容錯移轉機制接手流量。

測試Round Robin負載平衡機制
將原先連接vmnic2網路卡上的網路線接回後,由於MPIO機制預設採用的路徑機制為「Fixed」,請於VMware vSphere Client操作介面中依序點選「Configuration > Storage Adapters > vmhba33 > Devices > Manage Paths」,並在Path Selection下拉式選單中選擇【Round Robin】項目,再按下〔Change〕按鈕,即可將MPIO路徑機制改為Round Robin,而每條路徑的狀態列都會變更為「Active(I/O)」,如圖17所示。

▲圖17 變更MPIO路徑機制為Round Robin。

接著,運用同樣的測試方式,可以看到傳輸的流量自動平均分配到vmnic1、vmnic2當中,達成流量負載平衡機制。當然,若有任何一條路徑發生災難斷線,也不會影響到其他條路徑的流量傳輸(圖18)。

▲圖18 MPIO路徑機制Round Robin流量自動平均分配。

結語
iSCSI儲存設備因為具備「資料區塊等級(Block Level)」,並且可以使用乙太網路進行流量傳輸(IP-SAN),因此所建置出來的運作環境與光纖通道(FC-SAN)相比之下,不但低廉許多卻又不失高效穩定的特性。
同時透過MPIO多重路徑機制的幫助,即便是1Gbps的網路運作環境,只要iSCSI儲存設備端與iSCSI Initiator端主機配置具備多個網路卡Port,不但平時可以達成流量負載平衡,當災難發生時也具備容錯移轉機制。更甚者,若採用的是10Gbps的網路環境,還能搭建出不亞於光纖通道的流量傳輸環境。
值得一提的是,一般使用者常常因為VMware vSphere ESXi具備NIC Teaming機制,而會不經意地使用NIC Teaming機制來連結iSCSI Target儲存資源,造成儲存於iSCSI Target上的VM虛擬主機運作不順。這是因為NIC Teaming機制設計為運用於「File Level」類型的儲存設備存取之用(如NAS/NFS),因此拿來存取Block Level的iSCSI Target時,當然就會發生問題或異常現象。
因此讀者只要參考本篇實作,為VMware vSphere ESXi主機設定MPIO多重路徑機制,便可以針對像iSCSI Target這種Block Level設計的儲存設備達到流量最佳化,並且具備負載平衡及容錯移轉的傳輸高可用性機制。

作者:
<王偉任,VMware vExpert及Microsoft MVP,網路暱稱Weithenn。由於工作關係經常碰觸不同的作業系統、網路架構、硬體設備、虛擬化技術等,因此希望能將一些技術心得分享給大家,擁有CCNA、NSPA、MCITP、RHCE、VCP等證照,個人網站:http://www.weithenn.org>

來源:http://www.netadmin.com.tw/article_content.aspx?sn=1305100002&jump=1

最後修改日期: 2014-08-03

作者

留言

撰寫回覆或留言