程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 關於存儲控制器的多路徑機制

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

編輯:JAVA綜合教程

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


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控制器的端口。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved