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