軟件將經(jīng)過(guò)交換機(jī)I的路徑作為正在使用的路徑,將經(jīng)過(guò)交換機(jī)2的路徑作為備份路徑。
[0026]多路徑軟件獲知兩條路徑(正在使用的路徑、備份路徑)提供了兩個(gè)相同LV資源,因此只給具體應(yīng)用提供一個(gè)LV資源。這樣,就在磁盤與客戶端之間形成了雙通道的冗余路徑連接,由多路徑軟件控制使用哪一條路徑。客戶端到磁盤的整個(gè)路徑包含路徑1、交換機(jī)1、路徑2、存儲(chǔ)控制器A、路徑4,當(dāng)一個(gè)存儲(chǔ)控制器、或存儲(chǔ)控制器上下的任一條路徑、或存儲(chǔ)控制器發(fā)生故障時(shí),都會(huì)被多路徑軟件識(shí)別到故障,并將整個(gè)路徑切換為另一條路徑,并通過(guò)另一條路徑來(lái)訪問(wèn)LV資源,從而實(shí)現(xiàn)雙控的故障保護(hù)。
[0027]在圖3中,分別由存儲(chǔ)控制器A提供LVl資源的訪問(wèn),并由存儲(chǔ)控制器B提供LV2資源的訪問(wèn),從而在存儲(chǔ)控制器A和存儲(chǔ)控制器B之間實(shí)現(xiàn)負(fù)載均衡。但是,在這種配置下,如果交換機(jī)I和存儲(chǔ)控制器A同時(shí)發(fā)生故障,雖然能夠切換到交換機(jī)2,但是LV2資源的訪問(wèn)路徑卻不能夠恢復(fù)。
[0028]綜上所述,發(fā)明人發(fā)現(xiàn)上述技術(shù)方案中至少存在以下缺陷:存儲(chǔ)控制器A和存儲(chǔ)控制器B都需要看到所有磁盤、CACHE資源、RAID資源和LV資源,并能夠同時(shí)讀寫所有LV資源,才使得多路徑軟件能夠從兩條路徑看到同一個(gè)LV資源,否則就不支持使用多路徑軟件進(jìn)行雙控故障保護(hù)。在存儲(chǔ)控制器A和存儲(chǔ)控制器B之間需要同步大量的信息,實(shí)現(xiàn)復(fù)雜、難度高、穩(wěn)定性低、維護(hù)工作量大。在存儲(chǔ)雙控負(fù)載均衡配置下,無(wú)法支持一個(gè)交換機(jī)和一個(gè)存儲(chǔ)控制器同時(shí)故障。使用多路徑軟件的故障保護(hù)方法,端口保護(hù)模式是主備模式,多路徑軟件看到的兩條路徑,在同一時(shí)間只能使用一條路徑,另一條路徑被閑置,利用率低,最高只能達(dá)到50%。多路徑軟件和客戶端的操作系統(tǒng)強(qiáng)相關(guān),需要針對(duì)不同的操作系統(tǒng)開發(fā)不同的多路徑軟件。
[0029]針對(duì)上述發(fā)現(xiàn),本發(fā)明實(shí)施例中提出一種資源的訪問(wèn)方法,在一個(gè)存儲(chǔ)控制器對(duì)應(yīng)的路徑發(fā)生故障時(shí),可以由另一個(gè)存儲(chǔ)控制器接管該一個(gè)存儲(chǔ)控制器的資源,該接管過(guò)程的時(shí)間很短,客戶端的業(yè)務(wù)流量不會(huì)發(fā)生中斷,從而提供存儲(chǔ)控制器對(duì)應(yīng)的路徑發(fā)生故障時(shí)的保護(hù)方法。在該保護(hù)方法中,可以不使用多路徑軟件,即不執(zhí)行存儲(chǔ)雙控雙活的故障保護(hù),而是進(jìn)行存儲(chǔ)雙控互備的故障保護(hù),實(shí)現(xiàn)較簡(jiǎn)單、難度較低、穩(wěn)定性較好、維護(hù)工作量較小。而且,互為保護(hù)端口的兩個(gè)端口均不再閑置,可以同時(shí)分配資源提供給客戶端,端口利用率很高,端口利用率可以高達(dá)100%。而且,針對(duì)兩個(gè)存儲(chǔ)控制器,只需要都看到所有磁盤,但是不需要看到另一個(gè)存儲(chǔ)控制器的RAID資源和LV資源,不需要雙活,不需要實(shí)時(shí)同步大量的信息。而且,由于該保護(hù)方法不需要使用多路徑軟件,因此與客戶端的操作系統(tǒng)無(wú)關(guān),不需要針對(duì)不同的操作系統(tǒng)開發(fā)不同的軟件,兼容性高。
[0030]如圖4所示,為本發(fā)明實(shí)施例中提出的資源的訪問(wèn)方法的流程示意圖,可以應(yīng)用于包括第一存儲(chǔ)控制器和第二存儲(chǔ)控制器的系統(tǒng)中,第一存儲(chǔ)控制器上的第一端口與第二存儲(chǔ)控制器上的第二端口互為保護(hù)端口。以圖5為本發(fā)明實(shí)施例的應(yīng)用場(chǎng)景示意圖,假設(shè)存儲(chǔ)控制器B為第一存儲(chǔ)控制器,存儲(chǔ)控制器A為第二存儲(chǔ)控制器,端口 I3Bl (端口 PB2)為第一端口,端口 PAl (端口 PA2)為第二端口。此外,該系統(tǒng)還可以包括客戶端、交換機(jī)和磁盤。
[0031]在上述應(yīng)用場(chǎng)景下,在第二存儲(chǔ)控制器對(duì)應(yīng)的路徑發(fā)生故障(如第二存儲(chǔ)控制器與交換機(jī)之間的路徑發(fā)生故障,第二存儲(chǔ)控制器發(fā)生故障,第二存儲(chǔ)控制器與磁盤之間的路徑發(fā)生故障)時(shí),該資源的訪問(wèn)方法包括以下步驟:
[0032]步驟401,第一存儲(chǔ)控制器在第一端口上創(chuàng)建第二端口對(duì)應(yīng)的虛擬端口。
[0033]本發(fā)明實(shí)施例中,第一端口具體可以包括第一FC端口,且第二端口具體可以包括第二FC端口?;诖?,第一存儲(chǔ)控制器在第一端口上創(chuàng)建第二端口對(duì)應(yīng)的虛擬端口的過(guò)程,具體可以包括但不限于如下方式:第一存儲(chǔ)控制器獲取第二FC端口對(duì)應(yīng)的標(biāo)識(shí)信息,并在第一FC端口上創(chuàng)建虛擬端口,并將該標(biāo)識(shí)信息分配給該虛擬端口。其中,該標(biāo)識(shí)信息具體可以包括但不限于:WWPN和WWNN(World Wide Node Name,全球唯一節(jié)點(diǎn)名稱)。
[0034]步驟402,第一存儲(chǔ)控制器獲取第二存儲(chǔ)控制器對(duì)應(yīng)的資源。
[0035]本發(fā)明實(shí)施例中,第二存儲(chǔ)控制器對(duì)應(yīng)的資源具體可以包括但不限于:第二存儲(chǔ)控制器對(duì)應(yīng)的RAID資源和LV資源。第一存儲(chǔ)控制器獲取第二存儲(chǔ)控制器對(duì)應(yīng)的資源的過(guò)程,具體可以包括但不限于如下方式:第一存儲(chǔ)控制器在本第一存儲(chǔ)控制器上運(yùn)行屬于第二存儲(chǔ)控制器的RAID資源,并在本第一存儲(chǔ)控制器上生成RAID資源對(duì)應(yīng)的內(nèi)存節(jié)點(diǎn)。第一存儲(chǔ)控制器在本第一存儲(chǔ)控制器上啟用第二存儲(chǔ)控制器鏡像到本第一存儲(chǔ)控制器的數(shù)據(jù);其中,當(dāng)數(shù)據(jù)寫入到第二存儲(chǔ)控制器的寫緩存時(shí),第二存儲(chǔ)控制器將數(shù)據(jù)鏡像到第一存儲(chǔ)控制器的鏡像空間。第一存儲(chǔ)控制器根據(jù)第二存儲(chǔ)控制器同步到本第一存儲(chǔ)控制器的LV資源的配置信息,在本第一存儲(chǔ)控制器上創(chuàng)建LV資源對(duì)應(yīng)的內(nèi)存節(jié)點(diǎn);其中,在第二存儲(chǔ)控制器上創(chuàng)建LV資源成功,且生成LV資源對(duì)應(yīng)的內(nèi)存節(jié)點(diǎn)時(shí),將LV資源的配置信息同步到第一存儲(chǔ)控制器。
[0036]其中,步驟401和步驟402之間沒有嚴(yán)格的先后順序關(guān)系。
[0037]步驟403,第一存儲(chǔ)控制器將第二存儲(chǔ)控制器對(duì)應(yīng)的資源分配給虛擬端口。
[0038]步驟404,第一存儲(chǔ)控制器通過(guò)虛擬端口將第二存儲(chǔ)控制器對(duì)應(yīng)的資源提供給客戶端,以使客戶端通過(guò)該虛擬端口訪問(wèn)第二存儲(chǔ)控制器對(duì)應(yīng)的資源。
[0039]本發(fā)明實(shí)施例中,在第二存儲(chǔ)控制器對(duì)應(yīng)的路徑發(fā)生故障之后,在第一存儲(chǔ)控制器獲取第二存儲(chǔ)控制器對(duì)應(yīng)的資源之前,第一存儲(chǔ)控制器還可以對(duì)第二存儲(chǔ)控制器進(jìn)行下電處理。在第一存儲(chǔ)控制器通過(guò)虛擬端口將第二存儲(chǔ)控制器對(duì)應(yīng)的資源提供給客戶端之后,第一存儲(chǔ)控制器還可以對(duì)第二存儲(chǔ)控制器進(jìn)行上電處理。進(jìn)一步的,在第二存儲(chǔ)控制器的上電處理過(guò)程中,第二存儲(chǔ)控制器在掃描到第二端口上線時(shí),第二存儲(chǔ)控制器不向客戶端進(jìn)行注冊(cè)操作,以使客戶端繼續(xù)通過(guò)虛擬端口訪問(wèn)第二存儲(chǔ)控制器對(duì)應(yīng)的資源。
[0040]本發(fā)明實(shí)施例中,在第二存儲(chǔ)控制器對(duì)應(yīng)的路徑故障恢復(fù)(如第二存儲(chǔ)控制器與交換機(jī)之間的路徑故障恢復(fù),或者第二存儲(chǔ)控制器故障恢復(fù),或者第二存儲(chǔ)控制器與磁盤之間的路徑故障恢復(fù))時(shí),則第一存儲(chǔ)控制器刪除在第一端口上創(chuàng)建的虛擬端口,并刪除在本第一存儲(chǔ)控制器上生成的RAID資源對(duì)應(yīng)的內(nèi)存節(jié)點(diǎn),并刪除在本第一存儲(chǔ)控制器上創(chuàng)建的LV資源對(duì)應(yīng)的內(nèi)存節(jié)點(diǎn),并禁用鏡像到本第一存儲(chǔ)控制器的數(shù)據(jù)。進(jìn)一步的,第二存儲(chǔ)控制器恢復(fù)本第二存儲(chǔ)控制器對(duì)應(yīng)的資源,并在恢復(fù)第二存儲(chǔ)控制器對(duì)應(yīng)的資源后,第二存儲(chǔ)控制器通過(guò)第二端口將本第二存儲(chǔ)控制器對(duì)應(yīng)的資源提供給客戶端,以使客戶端通過(guò)第二端口訪問(wèn)第二存儲(chǔ)控制器對(duì)應(yīng)的資源。
[0041]基于上述技術(shù)方案,本發(fā)明實(shí)施例中,通過(guò)將第一存儲(chǔ)控制器上的第一端口與第二存儲(chǔ)控制器上的第二端口配置成互為保護(hù)端口,從而在第二存儲(chǔ)控制器對(duì)應(yīng)的路徑發(fā)生故障時(shí),在第一端口上創(chuàng)建第二端口對(duì)應(yīng)的虛擬端口,并將第二存儲(chǔ)控制器對(duì)應(yīng)的資源分配給虛擬端口,以使客戶端通過(guò)該虛擬端口訪問(wèn)第二存儲(chǔ)控制器對(duì)應(yīng)的資源?;谏鲜龇绞?,可以由第一存儲(chǔ)控制器接管第二存儲(chǔ)控制器的資源,并對(duì)客戶端提供第二存儲(chǔ)控制器的資源,接管過(guò)程的時(shí)間很短,客戶端的業(yè)務(wù)流量不會(huì)發(fā)生中斷。而且,可以不使用多路徑軟件,而是進(jìn)行存儲(chǔ)雙控互備的故障保護(hù),實(shí)現(xiàn)較簡(jiǎn)單、難度較低、穩(wěn)定性較好、維護(hù)工作量較小。而且,互為保護(hù)端口的兩個(gè)端口不再閑置,可以同時(shí)分配資源提供給客戶端,端口利用率很高,端口利用率可以高達(dá)100%。
[0042]以下結(jié)合具體的應(yīng)用場(chǎng)景,對(duì)本發(fā)明實(shí)施例的上述過(guò)程進(jìn)行詳細(xì)說(shuō)明。
[0043]在使用多路徑軟件進(jìn)行存儲(chǔ)雙控雙活的故障保護(hù)時(shí),存儲(chǔ)控制器A和存儲(chǔ)控制器B上的所有RAID資源和LV資源相同,與此不同的是,本發(fā)明實(shí)施例中,在哪個(gè)存儲(chǔ)控制器上創(chuàng)建RAID資源,該RAID資源就始終屬于該存儲(chǔ)控制器,即存儲(chǔ)控制器A創(chuàng)建的RAID資源屬于存儲(chǔ)控制器A,存儲(chǔ)控制器B創(chuàng)建的RAID資源屬于存儲(chǔ)控制器B。而且,存儲(chǔ)控制器A和儲(chǔ)控制器B只需要都看到所有磁盤,但是不需要看到另一個(gè)存儲(chǔ)控制器的RAID資源和LV資源,不同存儲(chǔ)控制器的RAID資源和LV資源相互獨(dú)立。
[0044]如圖6所示,為存儲(chǔ)雙控互備模式的信息同步的示意圖,存儲(chǔ)控制器A和存儲(chǔ)控制器B需要都能夠訪問(wèn)所有磁盤。在一個(gè)存儲(chǔ)控制器上使用多個(gè)磁盤創(chuàng)建RAID資源時(shí),存儲(chǔ)控制器A和存儲(chǔ)控制器B上的磁盤管理模塊均判斷這些磁盤是否可以使用。在一個(gè)存儲(chǔ)控制器上創(chuàng)建RAID資源成功時(shí),在生成各個(gè)模塊(如RAID管理模塊、CACHE管理模塊、SCSI LLD模塊等)的RAID內(nèi)存節(jié)點(diǎn)時(shí),只需要標(biāo)記該RAID資源所屬的存儲(chǔ)控制器,不需要通知另一個(gè)存儲(chǔ)控制器的各個(gè)模塊創(chuàng)建相同的RAID內(nèi)存節(jié)點(diǎn)。在一個(gè)存儲(chǔ)控制器上創(chuàng)建LV資源時(shí),只需要在本存儲(chǔ)控制器上判斷該