本申請涉及存儲技術領域,尤其涉及一種業(yè)務管理方法和存儲控制器(Storage Processor,簡稱:SP)。
背景技術:
存儲系統(tǒng)一般包括了SP和獨立磁盤冗余陣列(Redundant Array of Independent Disks,簡稱:RAID),其中SP負責實現(xiàn)系統(tǒng)管理、鏈路管理和輸入輸出(Input/Output,簡稱:IO)調度等功能,RAID負責實現(xiàn)最底層的數(shù)據(jù)讀寫功能,并提供不同RAID級別的數(shù)據(jù)保護。
為了使存儲系統(tǒng)能夠提供不間斷的存儲服務以及實現(xiàn)存儲系統(tǒng)的高可用性,現(xiàn)有技術中的存儲系統(tǒng)一般使用兩個SP,這兩個SP可按照“主備”模式或“主主”模式部署。在“主備”模式下,一個SP提供存儲服務,稱為“主SP”,另一個SP作為備份,稱為“備SP”,當“主SP”發(fā)生故障時,“備SP”會接管“主SP”的業(yè)務。在“主主”模式下,兩個SP同時提供存儲服務,當某一個SP發(fā)生故障時,另一個SP會接管該故障SP的全部業(yè)務。
但雙SP的存儲系統(tǒng)僅能解決一個SP故障引起的存儲系統(tǒng)不可用的問題,由于在雙SP的存儲系統(tǒng)中兩個SP同時發(fā)生故障的風險仍比較高,因此雙SP的存儲系統(tǒng)無法滿足業(yè)務對高可用性的需求。
技術實現(xiàn)要素:
有鑒于此,本申請?zhí)峁┮环N業(yè)務管理方法和SP,用以解決雙SP的存儲系統(tǒng)無法滿足業(yè)務對高可用性的需求的問題。
具體地,本申請是通過如下技術方案實現(xiàn)的:
本申請第一方面,提供了一種業(yè)務管理方法,應用于存儲系統(tǒng),所述存儲系統(tǒng)包括N個存儲控制器SP,所述N為不小于3的整數(shù),所述方法包括:
第一SP在確定第二SP發(fā)生故障且所述第二SP在發(fā)生故障之前承載有業(yè)務時,獲取所述第二SP發(fā)生故障之后的所述存儲系統(tǒng)的狀態(tài),然后根據(jù)獲取的所述存儲系統(tǒng)的狀態(tài),從所述N個SP中確定出負責接管所述第二SP的業(yè)務的SP,
其中,所述第一SP為所述N個SP中正常運行的SP中的任一個;所述存儲系統(tǒng)的狀態(tài)由所述N個SP的狀態(tài)組成。
上述實現(xiàn)方式通過將至少N個SP集成在一個存儲系統(tǒng)中,當某一個SP發(fā)生故障時,可以由另一個或多個SP接管故障SP的業(yè)務,且只要同時發(fā)生故障的SP的數(shù)量小于N,存儲系統(tǒng)均能持續(xù)可用,從而降低了存儲系統(tǒng)發(fā)生故障的概率,提高了存儲系統(tǒng)對故障的容忍度。
在一個可能的設計中,所述N個SP分成M組,所述M為不小于N的整數(shù)。相應的,所述存儲系統(tǒng)的狀態(tài)用于指示所述N個SP中的每個SP是否發(fā)生故障、是否承載業(yè)務、是否接管不同組的其它SP的業(yè)務、是否接管同一組的其它SP的業(yè)務、自身業(yè)務是否被同一組的其它SP接管、自身業(yè)務是否被不同組的其它SP接管。
在一個可能的設計中,所述第一SP根據(jù)獲取的所述存儲系統(tǒng)的狀態(tài),從所述N個SP中確定出負責接管所述第二SP的業(yè)務的SP時,可以通過如下方式實現(xiàn):
若所述第一SP根據(jù)獲取的所述存儲系統(tǒng)的狀態(tài),確定存在與所述第二SP屬于同一組且正常運行的第三SP,則所述第一SP確定由所述第三SP負責接管所述第二SP的業(yè)務;
若所述第一SP根據(jù)獲取的所述存儲系統(tǒng)的狀態(tài),確定不存在與所述第二SP屬于同一組且正常運行的所述第三SP,則所述第一SP確定由與所述第二SP不屬于同一組但正常運行的第四SP負責接管所述第二SP的業(yè)務。
上述實現(xiàn)方式根據(jù)存儲系統(tǒng)中各個SP的分組情況,規(guī)定讓與故障SP同一組的正常SP優(yōu)先接管故障SP的業(yè)務,在不存在于與故障SP同一組的正常SP的前提下,再讓不同組的正常SP接管故障SP的業(yè)務。如此,各個SP可以快速簡便地確定出由哪一個SP負責接管故障SP的業(yè)務。
在一個可能的設計中,在所述第一SP從所述N個SP中確定出負責接管所述第二SP的業(yè)務的SP之后,所述負責接管所述第二SP的業(yè)務的SP可以在確定所述第二SP恢復正常后,將接管的所述第二SP的業(yè)務交由所述第二SP繼續(xù)處理。
上述實現(xiàn)方式,通過在確定故障SP恢復正常時及時地將原屬于故障SP的業(yè)務交還給SP,有利于存儲系統(tǒng)的業(yè)務均衡和高可用性。
在一個可能的設計中,所述N等于4,所述M等于2,每組內包括2個SP?;谶@種架構的存儲系統(tǒng),所述N個SP中的每個SP的狀態(tài)可以通過第一狀態(tài)和第二狀態(tài)聯(lián)合表示;
所述第一狀態(tài)包括以下情況:本組內的SP接管另一組內的SP的業(yè)務;本組內的SP未接管另一組內的SP的業(yè)務,且本組內的SP的業(yè)務未被另一個組內的SP接管;本組內的SP的業(yè)務被另一組內的SP接管,本組內存在至少一個正常運行但不承載業(yè)務的SP;本組內的SP均處于關機狀態(tài);
所述第二狀態(tài)包括以下情況:本SP接管同一組內的另一SP的業(yè)務;本SP正常運行,未接管同一組內的另一SP的業(yè)務,且本SP的自身業(yè)務未被同一組內的另一SP接管;本SP正常運行但不承載業(yè)務,本SP的業(yè)務被同一組內的另一SP接管;本SP處于關機狀態(tài)。
上述實現(xiàn)方式中,當所述存儲系統(tǒng)包括4個SP,且這4個SP被均分成2組時,這種結構的存儲系統(tǒng)能夠較好地兼顧存儲系統(tǒng)對故障的容忍度、存儲系統(tǒng)的結構復雜度以及存儲系統(tǒng)的狀態(tài)描述的復雜度。
在一個可能的設計中,所述存儲系統(tǒng)還包括RAID;所述N個SP中的任意兩個SP之間通過PCIE總線連接;所述N個SP通過SAS鏈路與所述RAID相連。
本申請第二方面,提供了一種第一SP,應用于存儲系統(tǒng),所述存儲系統(tǒng)包括N個SP,所述N為不小于3的整數(shù),所述第一SP為所述N個SP中正常運行的SP中的任一個。所述第一SP具有實現(xiàn)上述方法的功能。所述功能可以通過硬件實現(xiàn),也可以通過硬件執(zhí)行相應的軟件實現(xiàn)。所述硬件或軟件包括一個或多個與上述功能相對應的模塊或單元。
一種可能的實現(xiàn)方式中,所述第一SP包括獲取單元和確定單元;
所述獲取單元,用于在確定第二SP發(fā)生故障且所述第二SP在發(fā)生故障之前承載有業(yè)務時,獲取所述第二SP發(fā)生故障之后的所述存儲系統(tǒng)的狀態(tài);所述存儲系統(tǒng)的狀態(tài)由所述N個SP的狀態(tài)組成;
所述確定單元,用于根據(jù)獲取的所述存儲系統(tǒng)的狀態(tài),從所述N個SP中確定出負責接管所述第二SP的業(yè)務的SP。
另一種可能的實現(xiàn)方式中,所述第一SP包括處理器和用于存儲所述處理器可執(zhí)行指令的存儲器,所述存儲器和所述處理器之間通過總線系統(tǒng)相互連接;所述處理器用于執(zhí)行以下操作:
在確定第二SP發(fā)生故障且所述第二SP在發(fā)生故障之前承載有業(yè)務時,獲取所述第二SP發(fā)生故障之后的所述存儲系統(tǒng)的狀態(tài);所述存儲系統(tǒng)的狀態(tài)由所述N個SP的狀態(tài)組成;根據(jù)獲取的所述存儲系統(tǒng)的狀態(tài),從所述N個SP中確定出負責接管所述第二SP的業(yè)務的SP。
附圖說明
圖1是本申請一示例性實施例示出的一種三SP的存儲系統(tǒng)的結構示意圖;
圖2是本申請一示例性實施例示出的一種四SP的存儲系統(tǒng)的結構示意圖;
圖3是本申請一示例性實施例示出的一種六SP的存儲系統(tǒng)的結構示意圖;
圖4是本申請一示例性實施例示出的一種業(yè)務管理方法的流程圖;
圖5A是本申請一示例性實施例示出的一種四SP的存儲系統(tǒng)在場景一下的示意圖;
圖5B是本申請一示例性實施例示出的一種四SP的存儲系統(tǒng)在場景二下的示意圖;
圖5C是本申請一示例性實施例示出的一種四SP的存儲系統(tǒng)在場景三下的示意圖;
圖5D是本申請一示例性實施例示出的一種四SP的存儲系統(tǒng)在場景四下的示意圖;
圖5E是本申請一示例性實施例示出的一種四SP的存儲系統(tǒng)在場景五下的示意圖;
圖5F是本申請一示例性實施例示出的一種四SP的存儲系統(tǒng)在場景六下的示意圖;
圖5G是本申請一示例性實施例示出的一種四SP的存儲系統(tǒng)在場景七下的示意圖;
圖6A是本申請一示例性實施例示出的一種第一狀態(tài)下的四種情況的轉化示意圖;
圖6B是本申請一示例性實施例示出的一種第二狀態(tài)下的四種情況的轉化示意圖;
圖7是本申請一示例性實施例示出的一種第一SP的結構示意圖;
圖8是本申請一示例性實施例示出的另一種第一SP的結構示意圖。
具體實施方式
以下,對本申請中的部分用語進行解釋說明。
“第一SP”,泛指存儲系統(tǒng)中正常運行的SP中的任一個SP。當存儲系統(tǒng)中的某個或某些SP發(fā)生故障時,除已故障的SP外,其它正常運行的SP均會結合當前存儲系統(tǒng)的狀態(tài)做出統(tǒng)一的判斷,決定由正常運行的SP中哪一個SP負責接管發(fā)生故障的SP上的業(yè)務。
“第二SP”,指存儲系統(tǒng)中除所述第一SP和已故障的SP外的其它SP。
“組”,是本申請為簡化業(yè)務管理機制而提出的一種概念,也可以采用其他的名稱,如引擎(Engine)等。存儲系統(tǒng)包括的SP被劃分成至少一個組,每個組可以包括一個或多個SP,且一個SP僅歸屬于一個組。當存儲系統(tǒng)包括的SP被劃分成多個組時,每組內的SP的數(shù)量可以相同,也可以不同。一個組內包含的SP的數(shù)量可以是單數(shù),也可以是偶數(shù)。需要注意的是,組僅是邏輯上的劃分,組的創(chuàng)建不需要占用實際資源,只是在多個SP之間建立了一種關聯(lián)關系。
“存儲系統(tǒng)的狀態(tài)”,由存儲系統(tǒng)包括的所有SP的狀態(tài)組成。每個SP的狀態(tài)可以包括:該SP是否發(fā)生了故障,該SP上是否承載有業(yè)務,該SP是否接管了不同組的其它SP的業(yè)務,該SP是否接管了同一組的其它SP的業(yè)務,該SP自身的業(yè)務是否被同一組的其它SP所接管,以及該SP自身的業(yè)務是否被不同組的其它SP所接管等。
下面將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。
在本申請使用的術語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。在本申請和所附權利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“和/或”是指并包含一個或多個相關聯(lián)的列出項目的任何或所有可能組合。
應當理解,盡管在本申請可能采用術語第一、第二、第三等來描述各種信息,但這些信息不應限于這些術語。這些術語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應于確定”。
下面結合說明書附圖和各實施例對本發(fā)明技術方案進行說明。
為了解決上述雙SP的存儲系統(tǒng)存在的問題,本申請?zhí)岢隽艘环N業(yè)務管理方法和SP,通過將至少三個SP集成在一個存儲系統(tǒng)中,降低了存儲系統(tǒng)發(fā)生故障的概率,提高了存儲系統(tǒng)對故障的容忍度。
本申請?zhí)峁┑臉I(yè)務管理方法,可應用于包括了N個SP的存儲系統(tǒng),所述N為不小于3的整數(shù)。
其中,所述N個SP可以被分成M組,所述M為大于0且不小于N的整數(shù)。
例如,如圖1、圖2和圖3所示,分別為集成了3個SP、4個SP和6個SP的存儲系統(tǒng)的結構示意圖。圖1中的3個SP為同一組。圖2中的4個SP被均分成了兩組,每組包括2個SP。圖3中的6個SP同樣被均分成了兩組,每組包括3個SP。
所述N個SP中的任意兩個SP之間通過總線連接,例如,所述總線可以是擴展外設部件互連標準(Peripheral Component Interconnect Express,簡稱:PCIE)總線。且所述N個SP分別與所述存儲系統(tǒng)中的RAID獨立相連,例如,所述N個SP可以通過序列式小型計算機系統(tǒng)接口(Serial Attached Small Computer System Interface,簡稱:SAS)鏈路與RAID相連。
任意兩個SP之間通過相連的總線維持心跳通信和管理命令的交互。其中,SP通過心跳通信來檢測與之相連的其它SP是否發(fā)生故障,通過管理命令的交互來確定其它SP所處理的業(yè)務和處理進度,便于后期的業(yè)務接管。
基于上述集成了N個SP的存儲系統(tǒng),本申請還提供了一種業(yè)務管理方法,如圖4所示,所述方法包括以下步驟:
步驟401:第一SP在確定第二SP發(fā)生故障且所述第二SP在發(fā)生故障之前承載有業(yè)務時,獲取所述第二SP發(fā)生故障之后的所述存儲系統(tǒng)的狀態(tài);所述第一SP為所述N個SP中正常運行的SP中的任一個;所述存儲系統(tǒng)的狀態(tài)由所述N個SP的狀態(tài)組成。
步驟402:所述第一SP根據(jù)獲取的所述存儲系統(tǒng)的狀態(tài),從所述N個SP中確定出負責接管所述第二SP的業(yè)務的SP。
為了描述所述存儲系統(tǒng)的狀態(tài),可以將所述N個SP分成M組,所述M為不小于N的整數(shù)。從而,所述存儲系統(tǒng)的狀態(tài)用于指示所述N個SP中的每個SP是否發(fā)生故障、是否承載業(yè)務、是否接管不同組的其它SP的業(yè)務、是否接管同一組的其它SP的業(yè)務、自身業(yè)務是否被同一組的其它SP接管以及自身業(yè)務是否被不同組的其它SP接管。
可選的,步驟401中所述第一SP可以根據(jù)在所述第二SP發(fā)生故障之前最近一次獲取到的存儲系統(tǒng)的狀態(tài)確定所述第二SP在發(fā)生故障之前是否承載有業(yè)務。若所述第二SP在發(fā)生故障之前未承載有業(yè)務,則所述SP無需進行后續(xù)的業(yè)務接管流程。
其中,第一SP在獲取存儲系統(tǒng)的狀態(tài)時,可以采用如下任一可選的方式:
方式一,在獲取所述第二SP發(fā)生故障之后的所述存儲系統(tǒng)的狀態(tài)時,所述第一SP可以向所述存儲系統(tǒng)中除所述第一SP之外的其它SP中的每個SP發(fā)送狀態(tài)查詢請求。若其它SP處于正常運行狀態(tài),則在接收到狀態(tài)查詢請求后將當前自身的狀態(tài)攜帶在狀態(tài)查詢響應中返回給所述第一SP。所述第一SP根據(jù)接收到的狀態(tài)查詢響應分別確定各個正常運行的SP的狀態(tài),并將未接收到狀態(tài)查詢響應的SP確定是已發(fā)生故障的SP。
方式二,所述第一SP也可以通過查詢本地存儲的狀態(tài)信息確定所述第二SP發(fā)生故障之后的所述存儲系統(tǒng)的狀態(tài),所述狀態(tài)信息記錄有所述存儲系統(tǒng)中除所述第一SP之外的其它SP在確定自身的狀態(tài)發(fā)生變化時發(fā)送的所述其它SP更新后的狀態(tài)。相應的,所述第一SP在運行過程中一旦確定自身的狀態(tài)發(fā)生變化時,也會將所述第一SP更新后的狀態(tài)發(fā)送給所述存儲系統(tǒng)中除所述第一SP之外的其它SP。
本申請中,所述第一SP在從所述N個SP中確定出負責接管所述第二SP的業(yè)務的SP以及在接管所述第二SP的業(yè)務之后,可以遵循以下三種規(guī)則。
規(guī)則一,當某個SP故障時,其業(yè)務由同一組內的SP優(yōu)先接管。即,若所述第一SP根據(jù)所述第二SP發(fā)生故障之后的所述存儲系統(tǒng)的狀態(tài),確定存在與所述第二SP屬于同一組且正常運行的第三SP,則所述第一SP確定由所述第三SP負責接管所述第二SP的業(yè)務。
規(guī)則二,當與故障SP屬于同一組的其它SP均故障時,故障SP的業(yè)務由另一組內的SP接管。即,若所述第一SP根據(jù)所述第二SP發(fā)生故障之后的所述存儲系統(tǒng)的狀態(tài),確定不存在與所述第二SP屬于同一組且正常運行的所述第三SP,則所述第一SP確定由與所述第二SP不屬于同一組但正常運行的第四SP負責接管所述第二SP的業(yè)務。
可選的,當存在多個滿足上述第一種或第二種條件的SP時,可以由這多個SP共同分擔故障SP的業(yè)務,也可以進一步根據(jù)其它標準從這多個SP中選擇出一個SP負責接管故障SP的業(yè)務。例如,可以從帶寬、讀寫速度等角度從滿足上述第一種或第二種條件的多個SP中選擇出性能最優(yōu)的一個SP。又例如,可以預先為存儲系統(tǒng)包括的各個SP編號,當某個SP故障時從滿足上述第一種或第二種條件的多個SP中選擇出序號最大或序號最小的一個SP。又例如,可以根據(jù)負載均衡原則從滿足上述第一種或第二種條件的多個SP中選擇出當前業(yè)務量最少的一個SP。
規(guī)則三,當故障SP再次啟動且運行正常后,接管了故障SP的業(yè)務的SP將原屬于故障SP的業(yè)務重新恢復至該故障SP。即,如果是所述第一SP接管了所述第二SP的業(yè)務,后續(xù)所述第一SP在確定所述第二SP由故障恢復正常運行后,便將接管的所述第二SP的業(yè)務交由所述第二SP繼續(xù)處理。
可選的,如果所述第二SP的業(yè)務在被所述第一SP接管時處于第一進度,在所述第二SP的修復期間,所述第一SP將接管的所述第二SP的業(yè)務由第一進度處理到了第二進度,那么所述第一SP將接管的所述第二SP的業(yè)務交由所述第二SP繼續(xù)處理時,所述第二SP可以從第一進度開始繼續(xù)處理,也可以直接從第二進度開始繼續(xù)處理。
由上述描述可知,當存儲系統(tǒng)中的某一個SP發(fā)生故障時,會有另一個或多個SP接管故障SP上的業(yè)務。存儲系統(tǒng)包括的SP的數(shù)量越多,存儲系統(tǒng)對故障的容忍度越高。例如,當一套存儲系統(tǒng)中有3個SP時,該存儲系統(tǒng)可以至多接受2個SP同時發(fā)生故障。而當一套存儲系統(tǒng)中有6個SP時,該存儲系統(tǒng)可以至多接受5個SP同時發(fā)生故障。
但SP數(shù)量的增多,存儲系統(tǒng)的狀態(tài)描述方式也會愈趨復雜。而存儲系統(tǒng)的狀態(tài)描述方式直接影響SP在決策由哪一個或哪幾個SP負責接管故障SP的業(yè)務時所消耗的時間和資源。
下面結合圖2示出的四SP的存儲系統(tǒng)對本申請實施例進行詳細描述,四SP的存儲系統(tǒng)可以兼顧存儲系統(tǒng)的故障容忍度以及存儲系統(tǒng)狀態(tài)描述方式的復雜度。
如圖2所示,其中,SP-1和SP-2構成組1,SP-3和SP-4構成組2。
所述四SP的存儲系統(tǒng)可以至多接受3個SP同時發(fā)生故障,當3個SP同時發(fā)生故障時由最后一個SP承擔該存儲系統(tǒng)上的所有業(yè)務,保證存儲系統(tǒng)持續(xù)可用。而在實際應用中,同一套存儲系統(tǒng)中的4個SP同時發(fā)生故障的可能性較低,基本可以忽略。因此,四SP的存儲系統(tǒng)具有較高的故障容忍度。
基于圖2所示的四SP的存儲系統(tǒng),本申請還提供了一種簡便的狀態(tài)描述方式。所述存儲系統(tǒng)包括的每個SP的狀態(tài)可以通過第一狀態(tài)和第二狀態(tài)聯(lián)合表示。
其中,所述第一狀態(tài)用于描述兩組之間的相對狀態(tài),有以下四種情況:
第一,本組內的SP接管了另一組內的SP的業(yè)務。
第二,本組內的SP未接管另一組內的SP的業(yè)務,且本組內的SP的業(yè)務未被另一個組內的SP接管。
第三,本組內的SP的業(yè)務被另一組內的SP接管,本組內存在至少一個正常運行但不承載業(yè)務的SP。
第四,本組內的SP均處于關機狀態(tài)。
所述第二狀態(tài)用于描述同一組內兩個SP之間的相對狀態(tài),也有以下四種情況:
第一,本SP接管了同一組內的另一SP的業(yè)務。
第二,本SP正常運行,未接管同一組內的另一SP的業(yè)務,且本SP的自身業(yè)務未被同一組內的另一SP接管。
第三,本SP正常運行但不承載業(yè)務,本SP的業(yè)務被同一組內的另一SP接管。
第四,本SP處于關機狀態(tài)。
例如,當存儲系統(tǒng)中的四個SP均正常運行且SP之間未發(fā)生業(yè)務接管時,每個SP的第一狀態(tài)為上述第一狀態(tài)中的第二種情況,每個SP的第二狀態(tài)為上述第二狀態(tài)中的第二種情況。
下面結合不同的場景對四SP的存儲系統(tǒng)的狀態(tài)描述方式和業(yè)務接管機制進行詳盡說明。
為便于表述,以下將上述第一狀態(tài)包括的第一種至第四種情況依次記為:組控制器多重負載狀態(tài)(Dual)狀態(tài)、組控制器自負載狀態(tài)(Sole)狀態(tài)、組控制器零負載狀態(tài)(Free)狀態(tài)、組控制器關機狀態(tài)或離線狀態(tài)(Absent)狀態(tài);將上述第二種狀態(tài)包括的第一種至第四種情況依次記為:單控制器多重負載狀態(tài)(Double)狀態(tài)、單控制器自負載狀態(tài)(Single)狀態(tài)、單控制器零負載狀態(tài)(Idle)狀態(tài)和單控制器關機狀態(tài)或離線狀態(tài)(Poweroff)狀態(tài)。以及,將存儲系統(tǒng)的狀態(tài)記為:[組1的第一狀態(tài)(SP1的第二狀態(tài),SP2的第二狀態(tài)),組2的第一狀態(tài)(SP3的第二狀態(tài),SP4的第二狀態(tài))]的形式。如,四個SP均正常運行,且SP之間未發(fā)生業(yè)務的接管,可記為[Sole狀態(tài)(Single狀態(tài),Single狀態(tài)),Sole狀態(tài)(Single狀態(tài),Single狀態(tài))]。
場景一:
如圖5A所示,SP1發(fā)生了故障,其它三個SP通過心跳機制可發(fā)現(xiàn)系統(tǒng)異常。因與SP1同屬于組1的SP2運行正常,根據(jù)上述規(guī)則一,由SP2接管SP1的業(yè)務,并對SP1做下電處理。當SP2完成業(yè)務接管之后,存儲系統(tǒng)的狀態(tài)可記為:[Sole狀態(tài)(Poweroff狀態(tài),Double狀態(tài)),Sole狀態(tài)(Single狀態(tài),Single狀態(tài))],即組1和組2之間未發(fā)生業(yè)務接管,組1內的SP2接管了SP1的業(yè)務,SP1處于關機狀態(tài),組2內的SP正常運行且組2內的SP之間未發(fā)生業(yè)務接管。
場景二:
當圖5A中的SP1重新啟動并再次與其它三個SP建立了心跳通信時,存儲系統(tǒng)的狀態(tài)轉化成:[Sole狀態(tài)(Idle狀態(tài),Double狀態(tài)),Sole狀態(tài)(Single狀態(tài),Single狀態(tài))],即組1和組2之間未發(fā)生業(yè)務接管,組1內的SP2接管了SP1的業(yè)務,SP1正常運行但未承載業(yè)務,組2內的SP正常運行且組2內的SP之間未發(fā)生業(yè)務接管,如圖5B所示。
如果此時將SP2接管的業(yè)務重新恢復到SP1上,則存儲系統(tǒng)的狀態(tài)轉化為:[Sole狀態(tài)(Single狀態(tài),Single狀態(tài)),Sole狀態(tài)(Single狀態(tài),Single狀態(tài))]。
場景三:
如圖5C所示,當同一組內的兩個SP都發(fā)生故障(同時故障或前后故障)時,根據(jù)上述規(guī)則二,另一組內的SP會接管這兩個故障SP上的業(yè)務。圖5C中考慮了負載均衡的原則,由SP3和SP4分別接管了SP1和SP2的部分業(yè)務。一種較為簡單的方式是,由SP3接管SP1和SP2中的其中一個SP的業(yè)務,由SP4接管另一個SP的業(yè)務。
完成業(yè)務接管后的SP3和SP4分別對SP1和SP2做下電處理,存儲系統(tǒng)的狀態(tài)轉化為:[Absent狀態(tài)(Poweroff狀態(tài),Poweroff狀態(tài)),Dual狀態(tài)(Single狀態(tài),Single狀態(tài))],即組1內的SP均處于關機狀態(tài),組2內的SP接管了組1內的SP的業(yè)務,組2內的SP正常運行且組2內的SP之間未發(fā)生業(yè)務接管。
場景四:
當圖5C中的SP2再次啟動且運行正常,SP1仍關機時,存儲系統(tǒng)的狀態(tài)轉化為:[Free狀態(tài)(Poweroff狀態(tài),Double狀態(tài)),Dual狀態(tài)(Single狀態(tài),Single狀態(tài))],即組1內的SP的業(yè)務被組2內的SP接管,組1內的SP2正常運行但不承載業(yè)務,SP1處于關機狀態(tài),組2內的SP正常運行且組2內的SP之間未發(fā)生業(yè)務接管,如圖5D所示。需要注意的是,此時SP2的第二狀態(tài)雖然是Double狀態(tài),但由于SP2的第一狀態(tài)為Free狀態(tài)即被接管狀態(tài),因此SP2上沒有承載業(yè)務。
根據(jù)上述規(guī)則一和規(guī)則三,可以將組2的SP3和SP4上原屬于SP1和SP2的業(yè)務全部恢復至SP2?;謴椭蟮拇鎯ο到y(tǒng)的狀態(tài)可記為:[Sole狀態(tài)(Poweroff狀態(tài),Double狀態(tài)),Sole狀態(tài)(Single狀態(tài),Single狀態(tài))],即組1和組2之間未發(fā)生業(yè)務接管,SP1處于關機狀態(tài),SP2接管了SP1的業(yè)務,組2內的SP正常運行且組2內的SP之間未發(fā)生業(yè)務接管。
場景五:
如圖5E所示,當存儲系統(tǒng)中的SP1、SP2和SP3均發(fā)生故障時,此時SP4需要接管SP1、SP2和SP3的全部業(yè)務。SP4完成業(yè)務接管后,存儲系統(tǒng)的狀態(tài)轉化為:[Absent狀態(tài)(Poweroff狀態(tài),Poweroff狀態(tài)),Dual狀態(tài)(Poweroff狀態(tài),Double狀態(tài))],即組1內的SP的業(yè)務被組2內的SP接管,組1內的SP均處于關機狀態(tài),組2內的SP3處于關機狀態(tài),組2內的SP4接管了SP3的業(yè)務。
場景六:
當圖5E中的SP2再次啟動且運行正常,SP1和SP3仍關機時,存儲系統(tǒng)的狀態(tài)轉化為:存儲系統(tǒng)的狀態(tài)轉化為:[Free狀態(tài)(Poweroff狀態(tài),Double狀態(tài)),Dual狀態(tài)(Poweroff狀態(tài),Double狀態(tài))],即組1內的SP的業(yè)務被組2內的SP接管,組1內的SP2正常運行但不承載業(yè)務,SP1處于關機狀態(tài),組2內的SP3處于關機狀態(tài),且組2內的SP4接管了SP3的業(yè)務。需要注意的是,此時SP2的第二狀態(tài)雖然是Double狀態(tài),但由于SP2的第一狀態(tài)為Free狀態(tài)即被接管狀態(tài),因此SP2上沒有承載業(yè)務。
根據(jù)上述規(guī)則一和規(guī)則三,可以將組2的SP4上原屬于SP1和SP2的業(yè)務全部恢復至SP2,如圖5F所示?;謴秃蟮拇鎯ο到y(tǒng)的狀態(tài)可記為:[Sole狀態(tài)(Poweroff狀態(tài),Double狀態(tài)),Sole狀態(tài)(Poweroff狀態(tài),Double狀態(tài))],即組1和組2之間未發(fā)生業(yè)務接管,SP1處于關機狀態(tài),SP2接管了SP1的業(yè)務,SP3處于關機狀態(tài),SP4接管了SP3的業(yè)務。
場景七:
當圖5D中的SP3和SP4同時故障時,因SP2正常運行,此時SP2需要接管SP1、SP3和SP4的全部業(yè)務,如圖5G所示。SP2完成業(yè)務接管后,存儲系統(tǒng)的狀態(tài)轉化為:[Dual狀態(tài)(Poweroff狀態(tài),Double狀態(tài)),Absent狀態(tài)(Poweroff狀態(tài),Poweroff狀態(tài))],即組2內的SP的業(yè)務被組1內的SP接管,組2內的SP均處于關機狀態(tài),組1內的SP1處于關機狀態(tài),組1內的SP2接管了SP1的業(yè)務。
通過以上七種場景,可得到所述第一狀態(tài)下的四種情況的轉化機制,如圖6A所示,當一個SP接管了不同組的SP的業(yè)務時,該負責接管業(yè)務的SP的第一狀態(tài)有可能從第一狀態(tài)的第二種情況轉變成第一狀態(tài)的第一種情況,如場景三中從Sole狀態(tài)轉變成Dual狀態(tài)的SP3和SP4;也有可能從第一狀態(tài)的第三種情況轉變成第一狀態(tài)的第一種情況,如場景七中從Free狀態(tài)轉變成Dual狀態(tài)的SP1和SP2。當一個SP將接管的業(yè)務交還給不同組的SP時,該負責交還業(yè)務的SP的第一狀態(tài)有可能從第一狀態(tài)的第一種情況轉變成第一狀態(tài)的第二種情況,如場景六中從Dual狀態(tài)轉變成Sole狀態(tài)的SP3和SP4,該被交還業(yè)務的SP的第一狀態(tài)有可能從第一狀態(tài)的第三種情況轉變成第一狀態(tài)的第二種情況,如場景四中從Free狀態(tài)轉變成Sole狀態(tài)的SP1和SP2。此外,第一狀態(tài)下的第一種情況、第二種情況和第三情況都可能因組內的SP均發(fā)生故障而轉變成第一狀態(tài)的第四種情況,而當組內的至少一個SP從關機狀態(tài)重新啟動后,該重新啟動的SP的第一狀態(tài)根據(jù)不同組的SP的第一狀態(tài),有可能轉變成第一狀態(tài)下的第一種情況、第二種情況和第三情況中的任一種情況。
通過以上七種場景,也可得到所述第二狀態(tài)下的四種情況的轉化機制,如圖6B所示,當一個SP接管了同一組的SP的業(yè)務時,該負責接管業(yè)務的SP的第二狀態(tài)有可能從第二狀態(tài)的第二種情況轉變成第二狀態(tài)的第一種情況,如場景一中從Single狀態(tài)轉變成Double狀態(tài)的SP2。當一個SP將接管的業(yè)務交還給同一組的SP時,該負責交還業(yè)務的SP的第二狀態(tài)有可能從第二狀態(tài)的第一種情況轉變成第二狀態(tài)的第二種情況,如場景二中從Double狀態(tài)轉變成Single狀態(tài)的SP2;該被交還業(yè)務的SP的第二狀態(tài)有可能從第二狀態(tài)的第三種情況轉變成第二狀態(tài)的第二種情況,如場景二中從Idle狀態(tài)轉變成Single狀態(tài)的SP1,也有可能從第二狀態(tài)的第三種情況轉變成第二狀態(tài)的第一種情況。此外,第二狀態(tài)下的第一種情況、第二種情況和第三情況都可能因SP發(fā)生故障而轉變成第二狀態(tài)的第四種情況,而當SP從關機狀態(tài)重新啟動后,該重新啟動的SP的第二狀態(tài)根據(jù)同一組的另一個SP的第二狀態(tài),有可能轉變成第二狀態(tài)下的第一種情況、第二種情況和第三情況中的任一種情況。
與前述業(yè)務管理方法的實施例相對應,本申請還提供了一種第一SP。所述第一SP可以運行在存儲系統(tǒng)中,所述存儲系統(tǒng)包括N個SP,所述N為不小于3的整數(shù);所述第一SP為所述N個SP中正常運行的SP中的任一個。
請參考圖7,圖7為本申請一種示例性實施例中提供的第一SP的邏輯結構示意圖,所述第一SP包括:
獲取單元701,用于在確定第二SP發(fā)生故障且所述第二SP在發(fā)生故障之前承載有業(yè)務時,獲取所述第二SP發(fā)生故障之后的所述存儲系統(tǒng)的狀態(tài);所述存儲系統(tǒng)的狀態(tài)由所述N個SP的狀態(tài)組成。
確定單元702,用于根據(jù)獲取的所述存儲系統(tǒng)的狀態(tài),從所述N個SP中確定出負責接管所述第二SP的業(yè)務的SP。
可選的,所述N個SP可以分成M組,所述M為不小于N的整數(shù)。
從而,所述存儲系統(tǒng)的狀態(tài)用于指示所述N個SP中的每個SP是否發(fā)生故障、是否承載業(yè)務、是否接管不同組的其它SP的業(yè)務、是否接管同一組的其它SP的業(yè)務、自身業(yè)務是否被同一組的其它SP接管、自身業(yè)務是否被不同組的其它SP接管。
可選的,所述確定單元702具體用于:若所述確定單元202根據(jù)獲取的所述存儲系統(tǒng)的狀態(tài),確定存在與所述第二SP屬于同一組且正常運行的第三SP,則所述確定單元202確定由所述第三SP負責接管所述第二SP的業(yè)務;
若所述確定單元202根據(jù)獲取的所述存儲系統(tǒng)的狀態(tài),確定不存在與所述第二SP屬于同一組且正常運行的所述第三SP,則所述確定單元202確定由與所述第二SP不屬于同一組但正常運行的第四SP負責接管所述第二SP的業(yè)務。
可選的,所述負責接管所述第二SP的業(yè)務的SP在確定所述第二SP恢復正常后,將接管的所述第二SP的業(yè)務交由所述第二SP繼續(xù)處理。
可選的,所述N可以等于4,所述M可以等于2,且每組內包括2個SP。基于此種架構,所述存儲系統(tǒng)包括的4個SP中的每個SP的狀態(tài)可以通過第一狀態(tài)和第二狀態(tài)聯(lián)合表示。
所述第一狀態(tài)包括以下情況:本組內的SP接管另一組內的SP的業(yè)務;本組內的SP未接管另一組內的SP的業(yè)務,且本組內的SP的業(yè)務未被另一個組內的SP接管;本組內的SP的業(yè)務被另一組內的SP接管,本組內存在至少一個正常運行但不承載業(yè)務的SP;本組內的SP均處于關機狀態(tài);
所述第二狀態(tài)包括以下情況:本SP接管同一組內的另一SP的業(yè)務;本SP正常運行,未接管同一組內的另一SP的業(yè)務,且本SP的自身業(yè)務未被同一組內的另一SP接管;本SP正常運行但不承載業(yè)務,本SP的業(yè)務被同一組內的另一SP接管;本SP處于關機狀態(tài)。
可選的,所述存儲系統(tǒng)還包括RAID。所述N個SP中的任意兩個SP之間通過PCIE總線連接;所述N個SP通過SAS鏈路與所述RAID相連。
上述裝置中各個單元的功能和作用的實現(xiàn)過程具體詳見上述方法中對應步驟的實現(xiàn)過程,在此不再贅述。
需要說明的是,本發(fā)明實施例中對單元的劃分是示意性的,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式。在本申請的實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
其中,集成的單元采用硬件的形式實現(xiàn)時,所述獲取單元701和所述確定單元702對應的實體的硬件可以是處理器,例如圖8的處理器801。
基于上述提供的業(yè)務管理方法,本申請還提供一種第一SP,如圖8所示,包括處理器801和存儲器802,例如,所述處理器801和所述存儲器802通過總線803相互連接。
所述存儲器802用于存儲所述處理器801的可執(zhí)行指令。
所述處理器801被配置為:在確定第二SP發(fā)生故障且所述第二SP在發(fā)生故障之前承載有業(yè)務時,獲取所述第二SP發(fā)生故障之后的所述存儲系統(tǒng)的狀態(tài);根據(jù)獲取的所述存儲系統(tǒng)的狀態(tài),從所述N個SP中確定出負責接管所述第二SP的業(yè)務的SP。
其中,所述存儲系統(tǒng)的狀態(tài)用于指示所述N個SP中的每個SP是否發(fā)生故障、是否承載業(yè)務、是否接管不同組的其它SP的業(yè)務、是否接管同一組的其它SP的業(yè)務、自身業(yè)務是否被同一組的其它SP接管、自身業(yè)務是否被不同組的其它SP接管。
對于裝置實施例而言,由于其基本對應于方法實施例,所以相關之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本申請方案的目的。本領域普通技術人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
綜上所述,本申請的技術方案通過將至少三個SP集成在一個存儲系統(tǒng)中,降低了存儲系統(tǒng)發(fā)生故障的概率,提高了存儲系統(tǒng)對故障的容忍度,且這種架構的存儲系統(tǒng)無需花費磁盤容量用于建立RAID邏輯資源的副本,節(jié)省了成本。并且,本申請?zhí)峁┑募夹g方案通過對所述至少三個SP進行分組,當某一個SP故障時,正常運行的SP根據(jù)存儲系統(tǒng)中各個SP與分組情況相關的狀態(tài)信息,即可快速簡便地確定出由哪一個SP負責接管故障SP的業(yè)務。
以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本申請保護的范圍之內。