一種多路徑管理方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種多路徑管理方法和系統(tǒng),用于管理從主機(jī)路由IO到存儲系統(tǒng)的多個(gè)邏輯卷LUN的路徑,其中存儲系統(tǒng)的多個(gè)LUN被映射到主機(jī)上,該方法包括:將在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN劃分為一個(gè)LUN組;以及對一個(gè)LUN組中的所有LUN使用一個(gè)路徑選擇線程管理所述相同路徑。該方法和系統(tǒng)減少了路徑管理的工作量和所需要的資源量。
【專利說明】一種多路徑管理方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及存儲系統(tǒng),更具體地涉及一種多路徑管理方法和系統(tǒng)。
【背景技術(shù)】
[0002]存儲系統(tǒng)包括RAID陣列、RAID控制器、適配器、存儲管理服務(wù)器組成。存儲管理服務(wù)器和其它設(shè)備通過網(wǎng)絡(luò)相連,管理整個(gè)存儲系統(tǒng)的運(yùn)行。圖1示出了存儲系統(tǒng)的結(jié)構(gòu)框圖。RAID (Redundant Array of Independent (or Inexpensive)Disks)陣列,是由很多價(jià)格較便宜的磁盤,組合成一個(gè)容量巨大的磁盤組,利用個(gè)別磁盤提供數(shù)據(jù)所產(chǎn)生加成效果(additive effects)提升整個(gè)磁盤系統(tǒng)效能。存儲系統(tǒng)通過RAID控制器在內(nèi)部創(chuàng)建不同種類的RAID陣列。存儲系統(tǒng)在RAID陣列再創(chuàng)建邏輯卷(logical volume),也稱為LUN(logical unit number)。LUN再映射給主機(jī)(host),主機(jī)會把LUN當(dāng)成本地硬盤來使用。
[0003]主機(jī)與存儲系統(tǒng)之間通過光纖交換機(jī)(FC Switch)通信。主機(jī)端由主機(jī)總線適配器HBA (Host Bus Adapter)與光纖交換機(jī)相連,HBA在主機(jī)端稱為主機(jī)總線適配器,在光纖交換機(jī)端也稱為光纖接口卡(Fibre Channel interface card)或光纖適配器(FCadapter),存儲系統(tǒng)端也有光纖接口卡或光纖適配器與光纖交換機(jī)相連。圖2不出了主機(jī)、光纖交換機(jī)以及存儲系統(tǒng)之間的連接關(guān)系。在圖2中,王機(jī)I有4條路徑可以訪問到存儲系統(tǒng)上的LUN,即主機(jī)I的HBAl端口到存儲系統(tǒng)的光纖適配器端口 1,主機(jī)I的HBAl端口到存儲系統(tǒng)的光纖適配器端口 2,主機(jī)I的HBA2端口到存儲系統(tǒng)的光纖適配器端口 1,以及主機(jī)I的HBA2端口到存儲系統(tǒng)的光纖適配器端口 2。同樣,主機(jī)2有4條路徑可以訪問到存儲系統(tǒng)上的LUN。
[0004]主機(jī)有多條路徑通往存儲系統(tǒng),可以在主機(jī)上安裝多路徑軟件,來管理主機(jī)到存儲系統(tǒng)之間的多條路徑。多路徑軟件能夠均衡每條路徑的輸入和輸出(10);當(dāng)發(fā)現(xiàn)路徑故障時(shí),在路由10的時(shí)候規(guī)避故障路徑;當(dāng)路徑的故障被排除時(shí),主機(jī)和存儲系統(tǒng)的LUN之間的通信回歸到原來的路徑等。多路徑軟件采用的路徑選擇算法包括:
[0005]Failover:只選擇一條路徑路由10,只有在該路徑故障的情況下才會選擇其它路徑路由10 ;
[0006]Round Robin:在多條路徑上輪流路由10 ;
[0007]Load Balance:選擇負(fù)載較低的HBA上的路徑來路由10 ;如果HBA負(fù)載都一樣,就隨機(jī)選擇路徑。
[0008]當(dāng)存儲系統(tǒng)具有很多個(gè)LUN映射到主機(jī)上,例如主機(jī)有1000個(gè)或者更多個(gè)LUN映射到該主機(jī)上,并且該主機(jī)有6條或者更多路徑可以訪問到存儲系統(tǒng),則多路徑軟件將會管理6000條甚至多的路徑;另外,主機(jī)還需要開啟1000個(gè)多路徑選擇進(jìn)程來分別負(fù)責(zé)1000個(gè)LUN上的路徑選擇。多路徑軟件將會耗費(fèi)大量的主機(jī)資源(CPU和內(nèi)存)來管理這些路徑,會使得主機(jī)的效率大大降低,因此,當(dāng)前的多路徑軟件對每個(gè)LUN都不推薦配置很多路徑。
【發(fā)明內(nèi)容】
[0009]為了解決上述問題,本發(fā)明的一個(gè)目的是減少路徑管理的工作量和多需要的資源量。
[0010]根據(jù)本發(fā)明的一個(gè)方面,提供了一種多路徑管理方法,用于管理從主機(jī)路由1到存儲系統(tǒng)的多個(gè)邏輯卷LUN的路徑,其中存儲系統(tǒng)的多個(gè)LUN被映射到主機(jī)上,該方法包括:將在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN劃分為一個(gè)LUN組;以及對一個(gè)LUN組中的所有LUN使用一個(gè)路徑選擇線程管理所述相同路徑。
[0011]據(jù)本發(fā)明的另一個(gè)方面,提供了一種多路徑管理系統(tǒng),用于管理從主機(jī)路由1到存儲系統(tǒng)的多個(gè)邏輯卷LUN的路徑,其中存儲系統(tǒng)的多個(gè)LUN被映射到主機(jī)上,該系統(tǒng)包括:分組裝置,被配置為將在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN劃分為一個(gè)LUN組;以及路徑選擇裝置,被配置為對一個(gè)LUN組中的所有LUN使用一個(gè)路徑選擇線程管理所述相同路徑。
【專利附圖】
【附圖說明】
[0012]通過結(jié)合附圖對本公開示例性實(shí)施方式進(jìn)行更詳細(xì)的描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,在本公開示例性實(shí)施方式中,相同的參考標(biāo)號通常代表相同部件。
[0013]圖1示出了存儲系統(tǒng)的結(jié)構(gòu)框圖;
[0014]圖2示出了主機(jī)、光纖交換機(jī)以及存儲系統(tǒng)之間的連接關(guān)系;
[0015]圖3示出了適于用來實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器的框圖;
[0016]圖4示意性示出了多路徑管理方法的方法流程圖;
[0017]圖5不出了獲得在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN的一種實(shí)施方式的具體流程;
[0018]圖6示出了使用路徑選擇算法的【具體實(shí)施方式】流程;以及
[0019]圖7示出了一種多路徑管理系統(tǒng)的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0020]下面將參照附圖更詳細(xì)地描述本公開的優(yōu)選實(shí)施方式。雖然附圖中顯示了本公開的優(yōu)選實(shí)施方式,然而應(yīng)該理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施方式所限制。相反,提供這些實(shí)施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0021]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本公開可以具體實(shí)現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實(shí)施例中,本發(fā)明還可以實(shí)現(xiàn)為在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可讀的程序代碼。
[0022]可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀的介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號介質(zhì)或者計(jì)算機(jī)可讀存儲介質(zhì)。計(jì)算機(jī)可讀存儲介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算機(jī)可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤、硬盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0023]計(jì)算機(jī)可讀的信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括——但不限于——電磁信號、光信號或上述的任意合適的組合。計(jì)算機(jī)可讀的信號介質(zhì)還可以是計(jì)算機(jī)可讀存儲介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0024]計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于一無線、電線、光纜、RF等等,或者上述的任意合適的組合。
[0025]可以以一種或多種程序設(shè)計(jì)語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語言一諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設(shè)計(jì)語言一諸如”C”語言或類似的程序設(shè)計(jì)語言。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
[0026]下面將參照本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種虛擬機(jī),這些計(jì)算機(jī)程序指令通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。
[0027]也可以把這些計(jì)算機(jī)程序指令存儲在能使得計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計(jì)算機(jī)可讀介質(zhì)中,這樣,存儲在計(jì)算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出一個(gè)包括實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instruct1nmeans)的制造品(manufacture)。
[0028]也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,從而使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令能夠提供實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。
[0029]圖3示出了適于用來實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器12的框圖。圖3顯示的計(jì)算機(jī)系統(tǒng)/服務(wù)器12僅僅是一個(gè)示例,不應(yīng)對本發(fā)明實(shí)施例的功能和使用范圍帶來任何限制。
[0030]如圖3所示,計(jì)算機(jī)系統(tǒng)/服務(wù)器12以通用計(jì)算設(shè)備的形式表現(xiàn)。計(jì)算機(jī)系統(tǒng)/服務(wù)器12的組件可以包括但不限于:一個(gè)或者多個(gè)處理器或者處理單元16,系統(tǒng)存儲器28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲器28和處理單元16)的總線18。
[0031]總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲器總線或者存儲器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來說,這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC)總線,增強(qiáng)型ISA總線、視頻電子標(biāo)準(zhǔn)協(xié)會(VESA)局域總線以及外圍組件互連(PCI)總線。
[0032]計(jì)算機(jī)系統(tǒng)/服務(wù)器12典型地包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是任何能夠被計(jì)算機(jī)系統(tǒng)/服務(wù)器12訪問的可用介質(zhì),包括易失性和非易失性介質(zhì),可遷移的和不可遷移的介質(zhì)。
[0033]系統(tǒng)存儲器28可以包括易失性存儲器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存取存儲器(RAM)30和/或高速緩存存儲器32。計(jì)算機(jī)系統(tǒng)/服務(wù)器12可以進(jìn)一步包括其它可遷移/不可遷移的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲介質(zhì)。僅作為舉例,存儲系統(tǒng)34可以用于讀寫不可遷移的、非易失性磁介質(zhì)(圖3未顯示,通常稱為“硬盤驅(qū)動器”)。盡管圖3中未示出,可以提供用于對可遷移非易失性磁盤(例如“軟盤”)讀寫的磁盤驅(qū)動器,以及對可遷移非易失性光盤(例如CD-ROM,DVD-ROM或者其它光介質(zhì))讀寫的光盤驅(qū)動器。在這些情況下,每個(gè)驅(qū)動器可以通過一個(gè)或者多個(gè)數(shù)據(jù)介質(zhì)接口與總線18相連。存儲器28可以包括至少一個(gè)程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個(gè))程序模塊,這些程序模塊被配置以執(zhí)行本發(fā)明各實(shí)施例的功能。
[0034]具有一組(至少一個(gè))程序模塊42的程序/實(shí)用工具40,可以存儲在例如存儲器28中,這樣的程序模塊42包括——但不限于——操作系統(tǒng)、一個(gè)或者多個(gè)應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個(gè)或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。程序模塊42通常執(zhí)行本發(fā)明所描述的實(shí)施例中的功能和/或方法。
[0035]計(jì)算機(jī)系統(tǒng)/服務(wù)器12也可以與一個(gè)或多個(gè)外部設(shè)備14 (例如鍵盤、指向設(shè)備、顯示器24等)通信,還可與一個(gè)或者多個(gè)使得用戶能與該計(jì)算機(jī)系統(tǒng)/服務(wù)器12交互的設(shè)備通信,和/或與使得該計(jì)算機(jī)系統(tǒng)/服務(wù)器12能與一個(gè)或多個(gè)其它計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(1)接口 22進(jìn)行。并且,計(jì)算機(jī)系統(tǒng)/服務(wù)器12還可以通過網(wǎng)絡(luò)適配器20與一個(gè)或者多個(gè)網(wǎng)絡(luò)(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器20通過總線18與計(jì)算機(jī)系統(tǒng)/服務(wù)器12的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,可以結(jié)合計(jì)算機(jī)系統(tǒng)/服務(wù)器12使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動器、冗余處理單元、外部磁盤驅(qū)動陣列、RAID系統(tǒng)、磁帶驅(qū)動器以及數(shù)據(jù)備份存儲系統(tǒng)等。
[0036]下面,將參照附圖來描述本發(fā)明的實(shí)施例。
[0037]在本公開的一種實(shí)施方式中,提出了一種多路徑管理方法,用于管理從主機(jī)路由1到存儲系統(tǒng)的多個(gè)LUN時(shí)的路徑,其中存儲系統(tǒng)的多個(gè)LUN被映射到主機(jī)上。圖4示意性示出了多路徑管理方法的方法流程圖,根據(jù)圖4,在步驟S402,將在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN劃分為一個(gè)LUN組;在步驟S403,對一個(gè)LUN組中的所有LUN使用一個(gè)路徑選擇線程管理所述相同路徑。在一種實(shí)施方式中,還包括步驟S401,獲得在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN。步驟S401之所以是一種優(yōu)選的實(shí)施方式,是因?yàn)槟承r(shí)候,已經(jīng)通過其它方式得到主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN,例如在映射LUN到主機(jī)時(shí)已經(jīng)直接知道那些LUN屬于哪個(gè)物理存儲器,可以直接分組。
[0038]這樣,根據(jù)前面的例子,原來主機(jī)有1000個(gè)LUN映射到該主機(jī),主機(jī)有6條訪問存儲系統(tǒng)的路徑,則主機(jī)上的多路徑軟件將會管理6000條路徑,對應(yīng)每個(gè)LUN,使用一個(gè)路徑管理算法線程,則總共需要1000個(gè)路徑管理算法線程。假設(shè)使用本發(fā)明方法,LUN1-500來自存儲系統(tǒng)A,具有相同的存儲路徑;LUN501-1000來自存儲系統(tǒng)B,也具有相同的存儲路徑;則在主機(jī)端有兩個(gè)LUN組,LUN1-500被分為第一組,LUN501-1000被分為第二組。將一個(gè)LUN組的所有LUN綁定在該組所有LUN都使用的路徑上的結(jié)果是:第一組LUN有6條路徑;第二組LUN也有6條路徑,由于路徑是基于LUN組的中心管理,即對一個(gè)LUN組中的所有LUN使用一個(gè)路徑選擇線程管理所述相同路徑,則在第一組內(nèi)只需要使用一個(gè)路徑管理算法的線程管理這6條路徑,路徑管理線程在第一組內(nèi)對所有的LUN都使用這6條路徑,當(dāng)有1需要路由到該組內(nèi)的LUN時(shí),該路徑管理線程的線程在上述6條路徑中選擇一條可用的路徑;在第二組亦然,則主機(jī)端只有兩個(gè)路徑管理算法的線程,每個(gè)線程只要管理6條路徑,與現(xiàn)有技術(shù)相比,大大減少了路徑管理的工作量和需要的資源量。
[0039]具體實(shí)施中,在步驟S401中需要獲得在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN,該步驟可以有多種實(shí)施方式,可以由主機(jī)直接獲得具有相同路徑的LUN,也可以由和主機(jī)之間耦接的其它設(shè)備獲得具有相同路徑的LUN。下面介紹一種最基本的實(shí)施方式。
[0040]圖5不出了獲得在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN的一種實(shí)施方式的具體流程,根據(jù)圖5,在步驟S501,掃描獲得主機(jī)端映射的至少一部分LUN。該步驟可以通過命令觸發(fā)(比如AIX操作系統(tǒng)的cfgmgr命令),也可以周期性地運(yùn)行命令來觸發(fā),也可以通過重啟主機(jī)來觸發(fā)。在步驟S502,分別通過主機(jī)上的各總線適配器HBA端口向光纖交換機(jī)發(fā)送命令,來查詢HBA端口能夠訪問的存儲系統(tǒng)的光纖適配器(FC adapter )FC端口的端口 ID(Port ID);在步驟S503,分別接收光纖交換機(jī)返回的各HBA端口能夠訪問的各FC端口的端口 ID ;如果各HBA端口已經(jīng)與返回的端口 ID對應(yīng)的各FC端口建立了連接,在步驟S504,分別通過各HBA端口對能夠訪問的各FC端口發(fā)送命令,獲得不同路徑上的LUN ;其中,特定的HBA端口 ID到特定FC端口 ID為LUN的一條路徑。在這種實(shí)施方式中,如果HBA端口沒有與返回的端口 ID對應(yīng)的FC端口建立了連接,則首先需要通過SCSI協(xié)議中的PL0GI/PRLI命令建立連接。發(fā)送的SCSI命令為INQUIRY和REPORT LUNS0在步驟S505,根據(jù)獲得的主機(jī)端映射的至少一部分LUN以及不同路徑上的LUN,獲得在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN。由于同一個(gè)LUN會從所有建立連接的存儲系統(tǒng)的FC端口和主機(jī)端的HBA端口來上報(bào)(即從所有可用的多路徑來上報(bào)),所以只要記錄同一個(gè)LUN是從哪些存儲端FC端口到哪些主機(jī)端HBA端口上報(bào)的,即記錄下LUN上報(bào)的路徑,然后在每個(gè)上報(bào)LUN之間進(jìn)行上報(bào)路徑的比對,即可知道哪些LUN擁有同樣的路徑。
[0041]在另外一種實(shí)施方式中,有些存儲系統(tǒng)有這樣一種功能:即將一個(gè)LUN映射給某個(gè)主機(jī)的時(shí)候,指定這個(gè)LUN只能通過特定的存儲端FC端口來訪問。對于不支持該功能的存儲來說,主機(jī)到存儲的多條路徑也就是主機(jī)能夠訪問存儲上LUN的多條路徑,這也意味著主機(jī)上對來自同一存儲的LUN的訪問路徑都是一樣的。對于支持該功能的存儲來說,只要不使用這個(gè)功能,那么在主機(jī)上來自同一存儲的LUN的訪問路徑也就是一樣的。只要滿足以上條件,在判斷主機(jī)上的LUN是否擁有相同路徑的時(shí)候,只要判斷LUN是否來自同一存儲就可以了,因?yàn)閬碜酝淮鎯Φ腖UN擁有同樣的路徑。
[0042]這樣就得到了在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN,就可以執(zhí)行步驟S402,將在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN劃分為一個(gè)LUN組,并且對一個(gè)LUN組中的所有LUN使用一個(gè)路徑選擇線程管理所述相同路徑。
[0043]路徑選擇算法可以使用現(xiàn)有的任何一種路徑選擇算法,既可以對不同的LUN組,使用同一種路徑選擇算法,也可以對不同的LUN組,使用不同的路徑選擇算法。例如某個(gè)LUN組使用Failover算法,只選擇一條路徑路由10,只有在該路徑故障的情況下才會選擇其它路徑路由10,則該組中所有的LUN選擇可用的路徑后,都使用一條路徑路由10,只有在該路徑故障的情況下,才會選擇其它路徑路由10,則該組的全部LUN都切換到其它路徑上。同樣也可以使用Round Robin和Load Balance算法選擇路徑。
[0044]在使用路徑選擇算法線程管理多路徑的過程中,在一種實(shí)施方式中,需要對每一條路徑維護(hù)該路徑的路徑狀態(tài)。路徑狀態(tài)可以有3種,一種是可用(Available),也就是該路徑?jīng)]有故障,能夠路由10;—種是失敗(Fail),也就是該路徑有故障,不能路由10;另外一種是部分失敗(Partly Fail),也就是該路徑對部分LUN不能路由10??梢杂貌煌膮?shù)或者其它形式來表示,例如用O表示路徑可用,I表示路徑失敗,2表示路徑部分失敗等等。路徑狀態(tài)的默認(rèn)值是路徑可用。
[0045]對于主機(jī),圖6示出了使用路徑選擇算法的【具體實(shí)施方式】流程,根據(jù)圖6,在步驟S601,接收一個(gè)路由1到LUN的請求,通過該LUN所在的LUN組使用的路徑選擇線程在所述相同路徑上選擇一條路徑狀態(tài)為可用或者部分失敗的路徑,然后利用選擇的路徑路由該1到該LUN ;在步驟S602,判斷1路由是否成功,如果1路由成功,則該路徑的路徑狀態(tài)保持不變,即繼續(xù)可用,返回步驟S601,繼續(xù)接收路由1請求。如果1路由失敗,在步驟S603,判斷該路徑是否為該LUN所在LUN組的最后一條路徑狀態(tài)為可用的路徑;如果該路徑是該LUN所在LUN組的最后一條路徑狀態(tài)為可用的路徑,在步驟S604,不置該LUN組上的該路徑的路徑狀態(tài)為失敗(否則整個(gè)LUN組將沒有可用路徑),而是置該LUN組上的該路徑狀態(tài)為部分失敗,同時(shí)在該LUN上置標(biāo)志位,以表示該LUN不能使用該路徑來路由10。這時(shí),這個(gè)1就不能路由到相應(yīng)的LUN,主機(jī)會收到系統(tǒng)報(bào)告的錯(cuò)誤。然后返回步驟S601,繼續(xù)接收路由1的請求。如果這條路徑不是該LUN所在LUN組的最后一條路徑狀態(tài)為可用的路徑,在步驟S605,置該LUN組上的這條路徑的路徑狀態(tài)為失敗,從而使LUN組內(nèi)的所有LUN將不再使用該路徑來路由10,以及使用該LUN所在的LUN組使用的路徑選擇線程在所述相同路徑上重新選擇另外一條可用路徑,返回步驟S602,使用新選擇的路徑路由1后,繼續(xù)判斷1路由是否成功。
[0046]在一種優(yōu)選的實(shí)施方式中,在步驟S605中在LUN組上的某條路徑的路徑狀態(tài)被置為失敗之后,繼續(xù)在步驟S606,檢查LUN組內(nèi)的其它LUN是否能夠使用該失敗路徑來訪問。如果LUN組內(nèi)所有其它LUN都不能夠使用該失敗路徑來訪問,則保持LUN組上的該路徑的失敗狀態(tài),返回步驟S602,使用新選擇的路徑路由1后,繼續(xù)判斷1路由是否成功。一般來說,此類情況為絕大多數(shù),因?yàn)槁窂焦收隙际怯芍鳈C(jī)端HBA端口故障、存儲端PC端口故障、光纖交換機(jī)端口故障、或者各端口間光纖線連接故障導(dǎo)致的,這些故障導(dǎo)致的路徑故障情況下,會導(dǎo)致某個(gè)LUN組內(nèi)的所有LUN都不能夠使用該路徑來路由10。但是,如果LUN組內(nèi)的其它LUN中有些LUN能給通過該失敗路徑訪問,則在步驟S607,將LUN組上的該路徑的路徑狀態(tài)置為部分失敗,并在LUN組內(nèi)的所有不能通過該路徑訪問到的LUN上置標(biāo)志位,表示這些LUN不能夠使用該路徑來路由10。同樣,此類情況為極少數(shù),只有當(dāng)存儲對于自身內(nèi)部的有些LUN能夠訪問,有些LUN不能夠訪問時(shí)才會出現(xiàn)。此時(shí)存儲本身已經(jīng)出了較大故障,但是本多路徑管理方法能夠很好地應(yīng)對這種故障,使其不影響到其它能夠正常訪問到的LUN,然后返回步驟S602,使用新選擇的路徑路由1后,繼續(xù)判斷1路由是否成功。具體的檢查的方法可以為:通過該路徑向LUN發(fā)送SCSI協(xié)議中的INQUIRY命令;也可以為:通過該路徑向LUN發(fā)送SCSI協(xié)議中的Mode Sense命令。
[0047]下面給出LUN上設(shè)置標(biāo)志位的兩種實(shí)現(xiàn)方法:
[0048]1.LUN組內(nèi)的每個(gè)LUN的數(shù)據(jù)結(jié)構(gòu)內(nèi)部可以定義一個(gè)指針,默認(rèn)指向空。當(dāng)需要在LUN上置標(biāo)志位說明某些路徑不能使用時(shí),就臨時(shí)分配一個(gè)字節(jié)(8個(gè)比特,可以代表8條路徑的狀態(tài))的內(nèi)存,并且給這個(gè)字節(jié)賦值(比如00000001代表不能使用LUN組上的第一條路徑,00001001代表不能使用LUN組上的第一和第四條路徑),然后讓前面提到的指針指向該內(nèi)存空間。這樣這個(gè)指針就起到了標(biāo)志位的作用。如果LUN組上的路徑較多,那就分配兩個(gè)字節(jié)或者三個(gè)字節(jié)的內(nèi)存來表示。
[0049]2.LUN組內(nèi)的每個(gè)LUN的數(shù)據(jù)結(jié)構(gòu)內(nèi)部可以定義一個(gè)字節(jié)(8個(gè)比特,可以代表8條路徑的狀態(tài);如果LUN組上的路徑較多,就定義兩個(gè)字節(jié)或三個(gè)字節(jié)),默認(rèn)值為O。當(dāng)需要在LUN上置標(biāo)志位說明某些路徑不能使用時(shí),就給這個(gè)字節(jié)內(nèi)部賦值,比如00000001代表不能使用LUN組上的第一條路徑,00001001代表不能使用LUN組上的第一和第四條路徑。這樣這個(gè)字節(jié)就起到了標(biāo)志位的作用。
[0050]上述方法可以選擇可用路徑路由10,同時(shí)也會發(fā)現(xiàn)故障路徑,即路徑狀態(tài)為失敗或者部分失敗的路徑。故障路徑被排除后,還需要回收故障路徑。因此,在一種優(yōu)選的實(shí)施方式中,如果某個(gè)LUN組有故障路徑,可以不定期或周期性地檢查LUN組內(nèi)是否所有的LUN都能夠重新使用該路徑訪問。這里周期性檢查的周期可以由用戶配置。例如可以I分鐘檢查一次或半分鐘檢查一次等;檢查的方法可以為:通過該路徑向LUN發(fā)送SCSI協(xié)議中的INQUIRY命令,也可以通過該路徑向LUN發(fā)送SCSI協(xié)議中的Mode Sense命令進(jìn)行檢查。如果LUN組內(nèi)所有LUN都能通過該路徑訪問,則置LUN組上該路徑的路徑狀態(tài)為可用,如果原來的路徑狀態(tài)為部分失敗,還要刪除LUN上的不能使用該路徑的標(biāo)志位;如果部分LUN能訪問,部分LUN不能訪問(這種情況極少),則置LUN組上該路徑的路徑狀態(tài)為部分失敗,在LUN組內(nèi)的那些不能訪問到的LUN上置標(biāo)志位,表示這些LUN不能使用這條路徑來路由1 ;如果LUN組內(nèi)所有LUN都不能通過該路徑訪問,則繼續(xù)不定期或周期性地檢查。這樣,修復(fù)故障路徑后,就能夠恢復(fù)路徑的狀態(tài)到可用,可以進(jìn)一步減少1延遲。
[0051]現(xiàn)有技術(shù)中,多路徑軟件對每個(gè)LUN上的多路徑分開處理。當(dāng)在某個(gè)LUN的某條路徑上路由1失敗時(shí),則置該路徑狀態(tài)為失?。蝗绻渌麹UN上也有相同的路徑,那么這些路徑還是可用狀態(tài)。但是在絕大多數(shù)情況下,這些LUN上的相同路徑實(shí)際上是有故障不能用來路由1的,不過多路徑軟件并不知道,還會使用這些實(shí)際上已經(jīng)故障了的但狀態(tài)仍是可用的路徑來路由10,造成更多的1路由失敗,導(dǎo)致1延遲增大以及系統(tǒng)開銷的上升。采用本發(fā)明中的多路徑管理方法,就能很好地規(guī)避上述問題。當(dāng)在某個(gè)LUN的某條路徑上路由1失敗時(shí),會在LUN組上置該路徑狀態(tài)為失敗狀態(tài)(只要該路徑不是LUN組的最后一條路徑狀態(tài)為可用的路徑),LUN組內(nèi)所有的LUN都不在使用該路徑。
[0052]在同一個(gè)發(fā)明構(gòu)思下,本發(fā)明的實(shí)施方式還公開了一種多路徑管理系統(tǒng),用于管理從主機(jī)路由1到存儲系統(tǒng)的多個(gè)邏輯卷LUN的路徑,其中存儲系統(tǒng)的多個(gè)LUN被映射到主機(jī)上,圖7示出了一種多路徑管理系統(tǒng)的結(jié)構(gòu)框圖,根據(jù)圖7,該系統(tǒng)包括:分組裝置702,被配置為將在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN劃分為一個(gè)LUN組;以及路徑選擇裝置703,被配置為對一個(gè)LUN組中的所有LUN使用一個(gè)路徑選擇線程管理所述相同路徑。在一種優(yōu)選的實(shí)施方式中,該系統(tǒng)還包括:獲得裝置701,被配置為獲得在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN。
[0053]在一種實(shí)施方式中,上述獲得裝置包括:掃描裝置,被配置為掃描獲得主機(jī)端映射的至少一部分LUN ;查詢裝置,被配置為分別通過主機(jī)上的各總線適配器HBA端口向光纖交換機(jī)發(fā)送命令,來查詢HBA端口能夠訪問的存儲系統(tǒng)的各光纖適配器FC端口的端口 ID ;接收裝置,被配置為分別接收光纖交換機(jī)返回的各HBA端口能夠訪問的各FC端口的端口 ID ;不同路徑LUN獲得裝置,被配置為如果各HBA端口已經(jīng)與返回的端口 ID對應(yīng)的各FC端口建立了連接,分別通過各HBA端口對能夠訪問的各FC端口發(fā)送命令,獲得不同路徑上的LUN,其中,特定的HBA端口 ID到特定FC端口 ID為LUN的一條路徑。以及相同路徑LUN獲得裝置,被配置為根據(jù)獲得的主機(jī)端映射的至少一部分LUN以及不同路徑上的LUN,獲得在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN。
[0054]在另一種實(shí)施方式中,路徑選擇裝置包括:狀態(tài)維護(hù)裝置,被配置為對每一條路徑維護(hù)該路徑的路徑狀態(tài),其中路徑狀態(tài)有3種:可用一表示該路徑?jīng)]有故障,能夠路由1 ;失敗一表示該路徑有故障,不能路由1 ;以及部分失敗一表示該路徑對部分LUN不能路由10。
[0055]在又一種實(shí)施方式中,路徑選擇裝置進(jìn)一步被配置為:接收路由1到LUN的請求;通過該LUN所在的LUN組使用的路徑選擇線程在所述相同路徑上選擇一條路徑狀態(tài)為可用或者部分失敗的路徑;利用選擇的路徑路由該1到該LUN。在進(jìn)一步的實(shí)施方式中,路徑選擇裝置利用選擇的路徑路由該1到該LUN后進(jìn)一步配置為:判斷1路由是否成功;如果1路由失敗,進(jìn)一步判斷該路徑是否為該LUN所在LUN組的最后一條路徑狀態(tài)為可用的路徑;如果該路徑是該LUN所在LUN組的最后一條路徑狀態(tài)為可用的路徑,則置該LUN組上的該路徑狀態(tài)為部分失敗;并在該LUN上置標(biāo)志位,表示該LUN不能使用該路徑路由10。如果路徑選擇裝置判斷如果該路徑不是該LUN所在LUN組的最后一條路徑狀態(tài)為可用的路徑,則置該LUN組上的該路徑的路徑狀態(tài)為失敗從而使LUN組內(nèi)的所有LUN不再使用該路徑來路由10;以及應(yīng)用該LUN所在的LUN組使用的路徑選擇線程在所述相同路徑上重新選擇另外一條可用路徑。
[0056]在更進(jìn)一步的實(shí)施方式中,路徑選擇裝置置該LUN組上的該路徑的路徑狀態(tài)為失敗還被進(jìn)一步配置為:檢查LUN組內(nèi)的其它LUN是否能夠使用該失敗路徑來訪問;如果LUN組內(nèi)所有其它LUN都不能夠使用該失敗路徑來訪問,則保持LUN組上的該路徑狀態(tài)為失??;如果LUN組內(nèi)的其它LUN中有些LUN能給通過該失敗路徑訪問,則將LUN組上的該路徑的路徑狀態(tài)置為部分失敗,在LUN組內(nèi)的所有不能通過該路徑訪問到的LUN上置標(biāo)志位,表示這些LUN不能夠使用該路徑來路由10。
[0057]在又一個(gè)實(shí)施方式中,該系統(tǒng)還包括路徑恢復(fù)裝置,被配置為:對于路徑狀態(tài)為路徑失敗或者路徑部分失敗的路徑,檢查LUN組內(nèi)是否所有的LUN都能夠重新使用該路徑訪問;如果LUN組內(nèi)所有LUN都能通過該路徑訪問,則置LUN組上該路徑的路徑狀態(tài)為可用,并且如果原來的路徑狀態(tài)為部分失敗,刪除LUN上的不能使用該路徑的標(biāo)志位;如果部分LUN能訪問,部分LUN不能訪問,則置LUN組上該路徑的路徑狀態(tài)為部分失敗,在LUN組內(nèi)的那些不能訪問到的LUN上置標(biāo)志位,表示這些LUN不能使用這條路徑來路由1 ;以及如果LUN組內(nèi)所有LUN都不能通過該路徑訪問,則繼續(xù)檢查。
[0058]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
[0059]以上已經(jīng)描述了本發(fā)明的各實(shí)施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實(shí)施例。在不偏離所說明的各實(shí)施例的范圍和精神的情況下,對于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實(shí)施例的原理、實(shí)際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的技術(shù)改進(jìn),或者使本【技術(shù)領(lǐng)域】的其它普通技術(shù)人員能理解本文披露的各實(shí)施例。
【權(quán)利要求】
1.一種多路徑管理方法,用于管理從主機(jī)路由1到存儲系統(tǒng)的多個(gè)邏輯卷LUN的路徑,其中存儲系統(tǒng)的多個(gè)LUN被映射到主機(jī)上,該方法包括: 將在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN劃分為一個(gè)LUN組;以及 對一個(gè)LUN組中的所有LUN使用一個(gè)路徑選擇線程管理所述相同路徑。
2.如權(quán)利要求1所述的方法,該方法還包括:獲得在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN。
3.如權(quán)利要求2所述的方法,其中獲得在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN包括: 掃描獲得主機(jī)端映射的至少一部分LUN ; 分別通過主機(jī)上的各總線適配器HBA端口向光纖交換機(jī)發(fā)送命令,來查詢HBA端口能夠訪問的存儲系統(tǒng)的各光纖適配器FC端口的端口 ID ; 分別接收光纖交換機(jī)返回的各HBA端口能夠訪問的各FC端口的端口 ID ; 如果各HBA端口已經(jīng)與返回的端口 ID對應(yīng)的各FC端口建立了連接,分別通過各HBA端口對能夠訪問的各FC端口發(fā)送命令,獲得不同路徑上的LUN,其中,特定的HBA端口 ID到特定FC端口 ID為LUN的一條路徑; 根據(jù)獲得的主機(jī)端映射的至少一部分LUN以及不同路徑上的LUN,獲得在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN。
4.如權(quán)利要求1-3之一所述的方法,其中對一個(gè)LUN組中的所有LUN使用一個(gè)路徑選擇線程管理所述相同路徑包括:對每一條路徑維護(hù)該路徑的路徑狀態(tài),其中路徑狀態(tài)有3種: 可用一表示該路徑?jīng)]有故障,能夠路由1 ; 失敗一表示該路徑有故障,不能路由1 ; 部分失敗一表示該路徑對部分LUN不能路由10。
5.如權(quán)利要求4所述的方法,其中對一個(gè)LUN組中的所有LUN使用一個(gè)路徑選擇線程管理所述相同路徑包括: 接收路由1到LUN的請求; 通過該LUN所在的LUN組使用的路徑選擇線程在所述相同路徑上選擇一條狀態(tài)為可用或者部分失敗的路徑; 利用選擇的路徑路由該1到該LUN。
6.如權(quán)利要求5所述的方法,其中利用選擇的路徑路由該1到該LUN后進(jìn)一步包括: 判斷1路由是否成功; 如果1路由失敗,進(jìn)一步判斷該路徑是否為該LUN所在LUN組的最后一條路徑狀態(tài)為可用的路徑; 如果該路徑是該LUN所在LUN組的最后一條路徑狀態(tài)為可用的路徑,則 置該LUN組上的該路徑狀態(tài)為部分失?。? 在該LUN上置標(biāo)志位,表示該LUN不能使用該路徑路由10。
7.如權(quán)利要求6所述的方法,其中如果該路徑不是該LUN所在LUN組的最后一條路徑狀態(tài)為可用的路徑,則 置該LUN組上的該路徑的路徑狀態(tài)為失敗從而使LUN組內(nèi)的所有LUN不再使用該路徑來路由1 ;以及 應(yīng)用該LUN所在的LUN組使用的路徑選擇線程在所述相同路徑上重新選擇另外一條可用路徑。
8.如權(quán)利要求7所述的方法,其中所述置該LUN組上的該路徑的路徑狀態(tài)為失敗還包括: 檢查LUN組內(nèi)的其它LUN是否能夠使用該失敗路徑來訪問; 如果LUN組內(nèi)所有其它LUN都不能夠使用該失敗路徑來訪問,則保持LUN組上的該路徑狀態(tài)為失??; 如果LUN組內(nèi)的其它LUN中有些LUN能給通過該失敗路徑訪問,則將LUN組上的該路徑的路徑狀態(tài)置為部分失敗,在LUN組內(nèi)的所有不能通過該路徑訪問的LUN上置標(biāo)志位,表示這些LUN不能夠使用該路徑來路由10。
9.如權(quán)利要求4-8之一所述的方法,該方法還包括: 對于路徑狀態(tài)為路徑失敗或者路徑部分失敗的路徑,檢查LUN組內(nèi)是否所有的LUN都能夠重新使用該路徑訪問; 如果LUN組內(nèi)所有LUN都能通過該路徑訪問,則置LUN組上該路徑的路徑狀態(tài)為可用,并且如果原來的路徑狀態(tài)為部分失敗,刪除LUN上的不能使用該路徑的標(biāo)志位; 如果部分LUN能訪問,部分LUN不能訪問,則置LUN組上該路徑的路徑狀態(tài)為部分失敗,在LUN組內(nèi)的那些不能訪問的LUN上置標(biāo)志位,表示這些LUN不能使用這條路徑來路由1 ; 如果LUN組內(nèi)所有LUN都不能通過該路徑訪問,則繼續(xù)檢查。
10.一種多路徑管理系統(tǒng),用于管理從主機(jī)路由1到存儲系統(tǒng)的多個(gè)邏輯卷LUN的路徑,其中存儲系統(tǒng)的多個(gè)LUN被映射到主機(jī)上,該系統(tǒng)包括: 分組裝置,被配置為將在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN劃分為一個(gè)LUN組; 路徑選擇裝置,被配置為對一個(gè)LUN組中的所有LUN使用一個(gè)路徑選擇線程管理所述相同路徑。
11.如權(quán)利要求10所述的系統(tǒng),該系統(tǒng)還包括:獲得裝置,被配置為獲得在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN。
12.如權(quán)利要求11所述的系統(tǒng),其中獲得裝置包括: 掃描裝置,被配置為掃描獲得主機(jī)端映射的至少一部分LUN ; 查詢裝置,被配置為分別通過主機(jī)上的各總線適配器HBA端口向光纖交換機(jī)發(fā)送命令,來查詢HBA端口能夠訪問的存儲系統(tǒng)的各光纖適配器FC端口的端口 ID ; 接收裝置,被配置為分別接收光纖交換機(jī)返回的各HBA端口能夠訪問的各FC端口的端Π ID ; 不同路徑LUN獲得裝置,被配置為如果各HBA端口已經(jīng)與返回的端口 ID對應(yīng)的各FC端口建立了連接,分別通過各HBA端口對能夠訪問的各FC端口發(fā)送命令,獲得不同路徑上的LUN,其中,特定的HBA端口 ID到特定FC端口 ID為LUN的一條路徑; 相同路徑LUN獲得裝置,被配置為根據(jù)獲得的主機(jī)端映射的至少一部分LUN以及不同路徑上的LUN,獲得在主機(jī)和存儲系統(tǒng)之間具有相同路徑的LUN。
13.如權(quán)利要求10-12之一所述的系統(tǒng),其中路徑選擇裝置包括:狀態(tài)維護(hù)裝置,被配置為對每一條路徑維護(hù)該路徑的路徑狀態(tài),其中路徑狀態(tài)有3種: 可用一表示該路徑?jīng)]有故障,能夠路由1 ; 失敗一表示該路徑有故障,不能路由1 ; 部分失敗一表示該路徑對部分LUN不能路由10。
14.如權(quán)利要求13所述的系統(tǒng),其中路徑選擇裝置進(jìn)一步被配置為: 接收路由1到LUN的請求; 通過該LUN所在的LUN組使用的路徑選擇線程在所述相同路徑上選擇一條路徑狀態(tài)為可用或者部分失敗的路徑; 利用選擇的路徑路由該1到該LUN。
15.如權(quán)利要求14所述的系統(tǒng),其中路徑選擇裝置利用選擇的路徑路由該1到該LUN后進(jìn)一步配置為: 判斷1路由是否成功; 如果1路由失敗,進(jìn)一步判斷該路徑是否為該LUN所在LUN組的最后一條路徑狀態(tài)為可用的路徑; 如果該路徑是該LUN所在LUN組的最后一條路徑狀態(tài)為可用的路徑,則 置該LUN組上的該路徑狀態(tài)為部分失敗; 在該LUN上置標(biāo)志位,表示該LUN不能使用該路徑路由10。
16.如權(quán)利要求15所述的系統(tǒng),其中路徑選擇裝置判斷如果該路徑不是該LUN所在LUN組的最后一條路徑狀態(tài)為可用的路徑,則 置該LUN組上的該路徑的路徑狀態(tài)為失敗從而使LUN組內(nèi)的所有LUN不再使用該路徑來路由1 ;以及 應(yīng)用該LUN所在的LUN組使用的路徑選擇線程在所述相同路徑上重新選擇另外一條可用路徑。
17.如權(quán)利要求16所述的系統(tǒng),其中路徑選擇裝置置該LUN組上的該路徑的路徑狀態(tài)為失敗還被進(jìn)一步配置為: 檢查LUN組內(nèi)的其它LUN是否能夠使用該失敗路徑來訪問; 如果LUN組內(nèi)所有其它LUN都不能夠使用該失敗路徑來訪問,則保持LUN組上的該路徑狀態(tài)為失??; 如果LUN組內(nèi)的其它LUN中有些LUN能給通過該失敗路徑訪問,則將LUN組上的該路徑的路徑狀態(tài)置為部分失敗,在LUN組內(nèi)的所有不能通過該路徑訪問的LUN上置標(biāo)志位,表示這些LUN不能夠使用該路徑來路由10。
18.如權(quán)利要求13-17之一所述的系統(tǒng),該系統(tǒng)還包括路徑恢復(fù)裝置,被配置為: 對于路徑狀態(tài)為路徑失敗或者路徑部分失敗的路徑,檢查LUN組內(nèi)是否所有的LUN都能夠重新使用該路徑訪問; 如果LUN組內(nèi)所有LUN都能通過該路徑訪問,則置LUN組上該路徑的路徑狀態(tài)為可用,并且如果原來的路徑狀態(tài)為部分失敗,刪除LUN上的不能使用該路徑的標(biāo)志位; 如果部分LUN能訪問,部分LUN不能訪問,則置LUN組上該路徑的路徑狀態(tài)為部分失敗,在LUN組內(nèi)的那些不能訪問的LUN上置標(biāo)志位,表示這些LUN不能使用這條路徑來路由
10;
如果LUN組內(nèi)所有LUN都不能通過該路徑訪問,則繼續(xù)檢查。
【文檔編號】G06F3/06GK104423889SQ201310375639
【公開日】2015年3月18日 申請日期:2013年8月26日 優(yōu)先權(quán)日:2013年8月26日
【發(fā)明者】張耀東, 付曉飛, 胡家樂, 石鵬, 余志華 申請人:國際商業(yè)機(jī)器公司