關於儲存控制器的多路徑機制(轉載)

tonglei2000發表於2015-02-16

關於儲存控制器的多路徑機制

 

什麼是ALUA多路徑機制?

ALUA即“Asymmetric Logical Unit Access(非同步邏輯單元訪問)”的縮寫,它是前端控制器多路徑機制之一。前端控制器多路徑機制一定程度上決定儲存的讀寫效能和可靠性,現有的前端控制器多路徑機制可分為三大類:

A/A:Symmetric Active/Acivie,對於特定的LUN來說,在它的路徑中,兩個儲存控制器的目標埠均處於主動/最佳化(active/optimized)狀態。兩個控制器之間實現高速互聯的通訊,一個IO發到控制器端,兩個控制器可同時參與處理;當一個控制器繁忙,系統不需要主機端的負載均衡軟體參與就可以自動實現負載均衡。

ALUA:Asymmetric Active/Active,對於特定的LUN來說,在它的路徑中,一個控制器的目標埠處於主動/最佳化(active/optimized)狀態,另一個控制器的目標埠處於主動/非最佳化(active/unoptimized)狀態。在某一個時刻,某個LUN只是屬於某一個控制器,要想實現兩邊的負載均衡,就是將任務A扔給控制器A,將任務B扔給控制器B,對於同一個任務來說,任何時候只有一個控制器在控制。

A/P:Active/Passive,對於特定的LUN來說,在它的路徑中,一個控制器的目標埠處於主動/最佳化(active/optimized)狀態,另一個控制器的目標埠處於備用(standby)狀態。其負載均衡及任務處理方式與ALUA類似。

Active/optimized、Active/unoptimized、Standby和Unavailable是目標埠的四種訪問狀態,在相應訪問狀態下,裝置伺服器(即陣列控制器)只能回應相應的命令標準(命令標準由ISO/IEC 14776-453檔案Part 453:SPC-3制定),這就決定了在某一時刻是否可以透過某個目標埠訪問邏輯單元。

目標埠的狀態可以轉換,目標埠從一個狀態轉換到另一個狀態的過程稱為過渡。

Active/optimized:目標埠有能力立即訪問邏輯單元。

Active/unoptimized:只能回應相應的命令標準,可以過渡到Active/optimized。

Standby:只能回應相應的命令標準,可以過渡到Active/optimized。

Unavailable:只能回應有限的命令集,不可以過渡到其他三種狀態。

在A/A陣列中,管理員無需指定每個LUN的預設所有者,當路徑出現故障,將離線故障路徑並重定向IO到其他路徑,IO重定向期間,儲存控制器會充分考慮負載平衡等因素並選擇最合適的路徑。對於應用程式,路徑切換過程是透明的的,幾乎不會有延遲(延遲時間一般為幾秒)。

在ALUA或A/P陣列中,管理員需指定每個LUN的預設所有者,設定一些LUN的預設所有者為控制器A,另外一些LUN的預設所有者為控制器 B, 人為在兩個控制器之間進行負載均衡;如果路徑發生故障,將重新分配IO流量到其他可用的路徑,同時,停止故障路徑上的IO。對於應用程式,路徑切換過程是透明的,然而,會有延遲(延遲時間一般為幾十秒)。

在制定負載平衡策略時,必須同時兼顧多路徑軟體功能及儲存陣列的多路徑機制(A/A-ALUA-A/P)。

我司的MS3000/MS5000屬於ALUA陣列,H公司的IX3000屬於A/P陣列,HDS推出的AMS2000屬於A/A陣列。從理論上來說,對於不同的多路徑機制,最直觀的表現是路徑切換的延時不同,A/A機制最優且幾乎無延時,ALUA機制稍差且有延時,A/P機制最差且延時更大。

 

        儲存裝置有兩個I/O控制器,每個I/O控制器上有兩個連線主機的埠。儲存裝置中還有n個磁碟,並假定每個磁碟對應一個LUN。對於儲存裝置中的LUN,可以有幾種不同的多路徑訪問方式: 

Active-Active(A/A):如果對於儲存裝置的同一個LUN的I/O請求訪問可以同時在兩個I/O控制器,或者某一個控制器的兩個埠上同時進行,則稱之為active-active(A/A)型的儲存裝置。 
Active-Passive(A/P)。如果儲存裝置只在一個(primary)I/O控制器(埠)上接受和執行對LUN的I/O請求,但是,它可以被切換,或者fail over,到從另一個(secondary)I/O控制器(埠)來訪問這個LUN,則它稱為active-passive(A/P)型的儲存裝置。這種切換,稱為LUN failover,或者LUN trespass。 
Active-Active型的儲存裝置又進而分為兩種: 

對稱型(A/A-S)和非對稱型(A/A-A):在active-active儲存裝置中,LUN可以同時透過兩個I/O控制器 或者埠來訪問,唯一的限制在於透過兩個控制器(埠)訪問LUN的效能是否有差別。如果透過secondary控制器或者埠對LUN進行I/O的效能要比透過primary控制器(埠)低得多,則為非對稱型;如果兩者效能相同,則為對稱型。 
Active-Passive型的儲存裝置又可分為不同的型別: 

隱式failover型和顯式failover型:隱式failover型儲存裝置根據針對I/O請求接收的路徑不同來觸發LUN failover,即它在secondary路徑上接收到對LUN的請求時,會自動從primary I/O路徑failover到secondary路徑。因為LUN failover(也稱為trespass)是一個慢操作,會影響到效能,在A/P儲存裝置上如何有效管理LUN trespass是一個關鍵課題,要使得在給定時刻對某個LUN的所有I/O應該只流向其中一個I/O控制器(埠)。而顯式failover型儲存裝置只是在從主機上接收到特定的SCSI命令時才進行fail over。顯式failover提供了A/P儲存裝置用在叢集環境(即多個主機可以直接對LUN發起I/O請求)中實現高效能所需的控制。如果沒有顯式failover能力,叢集軟體必須在發起隱式failover之前,仔細同步所有主機對LUN的訪問,防止來自多個主機的I/O請求導致持續的failover。 
LUN failover型和LUN組failover型:如果各個LUN獨立地從一個I/O控制器(埠)fail over到另一個I/O控制器(埠),則稱為LUN failover型。但是,某些active-passive儲存裝置可以透過管理將多個LUN配置成LUN組,並且實現組中LUN同時fail over,即在組中一個LUN的所有primary I/O控制器(埠)故障時,將組中所有LUN都fail over到secondary I/O控制器(埠),具有這種能力的儲存裝置稱為組failover型。組failover要比單個LUN的fail over快得多,可以降低I/O控制器(埠)故障對應用程式的衝擊,尤其在儲存裝置存在大量的磁碟(LUN)的情況下。 
如果同時考慮I/O控制器和埠,則還存在一種多路徑併發型Active-Passive(A/P-C)的訪問方式。這時,儲存裝置可以在同一個I/O控制器的兩個埠同時接收並執行針對某個LUN的I/O請求,只是在當這個I/O控制器,或者說這個I/O控制器的兩個埠,出現故障之後,它會failover到另一個I/O控制器的埠。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13337857/viewspace-1437169/,如需轉載,請註明出處,否則將追究法律責任。

相關文章