本發(fā)明涉及存儲(chǔ)器技術(shù)領(lǐng)域,尤其涉及一種管理雙活存儲(chǔ)陣列的方法及裝置。
背景技術(shù):
隨著各行業(yè)數(shù)字化進(jìn)程的推進(jìn),數(shù)據(jù)逐漸成為企事業(yè)單位的運(yùn)營核心。用戶對承載數(shù)據(jù)的存儲(chǔ)系統(tǒng)的穩(wěn)定性要求也越來越高,這包括存儲(chǔ)數(shù)據(jù)可靠性和業(yè)務(wù)延續(xù)性,越來越多的企業(yè)把應(yīng)用、數(shù)據(jù)、系統(tǒng)進(jìn)行集中處理,數(shù)據(jù)大集中的同時(shí)也面臨風(fēng)險(xiǎn)。雖然不少存儲(chǔ)廠商能夠向用戶提供穩(wěn)定性極高的存儲(chǔ)設(shè)備,但還是無法防止自然災(zāi)難等突發(fā)事件。
災(zāi)難性的突發(fā)事件發(fā)生時(shí)如何保障企業(yè)核心業(yè)務(wù)的在線性,即核心業(yè)務(wù)7*24小時(shí)的業(yè)不間斷運(yùn)行,成為企業(yè)關(guān)注的首要問題。突發(fā)事件造成的非計(jì)劃宕機(jī)的事件不可避免,數(shù)據(jù)中心斷電等不可抗逆因素對生產(chǎn)系統(tǒng)造成不可恢復(fù)的毀壞。為了保證數(shù)據(jù)存儲(chǔ)的可靠性以及業(yè)務(wù)的延續(xù)性雙活技術(shù)應(yīng)運(yùn)而生,雙活技術(shù)能夠保證在一定的故障模式范圍內(nèi)最大程度保證業(yè)務(wù)的連續(xù)性。
雙活技術(shù)是面向應(yīng)用訪問的,其要求實(shí)現(xiàn)為跨設(shè)備/數(shù)據(jù)中心的存儲(chǔ)提供無中斷訪問響應(yīng),在系統(tǒng)容錯(cuò)范圍內(nèi)的故障模型下其IO歸零時(shí)間不能導(dǎo)致業(yè)務(wù)中斷。因此,雙活技術(shù)的核心訴求:存儲(chǔ)訪問視圖一致性(主機(jī)從任何一個(gè)控制器的端口訪問雙活LUN(邏輯單元號(hào),logical unit number),其訪問的權(quán)限和數(shù)據(jù)都是一致的)和故障后業(yè)務(wù)切換時(shí)延不能導(dǎo)致業(yè)務(wù)中斷。
由于雙活LUN部署在兩個(gè)陣列上,要求當(dāng)兩個(gè)雙活陣列出現(xiàn)腦裂時(shí)只能有一個(gè)陣列上的LUN提供業(yè)務(wù)。
現(xiàn)有技術(shù)中,通常引入第三方仲裁機(jī)制:當(dāng)出現(xiàn)腦裂時(shí)兩端存儲(chǔ)器分別 向仲裁服務(wù)器提交仲裁,仲裁獲勝的LUN允許主機(jī)訪問、仲裁失敗的LUN不允許訪問。
但現(xiàn)有技術(shù)中,仲裁方案對仲裁服務(wù)器的可靠性要求非常高,一旦仲裁服務(wù)器出現(xiàn)故障或者仲裁服務(wù)器和兩個(gè)存儲(chǔ)器間鏈路出現(xiàn)故障的情況下,再出現(xiàn)雙活陣列腦裂會(huì)導(dǎo)致兩臺(tái)雙活陣列提交仲裁失敗都不能提供訪問從而導(dǎo)致主機(jī)斷業(yè)務(wù)。
技術(shù)實(shí)現(xiàn)要素:
本申請描述了一種管理雙活存儲(chǔ)陣列的方法。通過所述方法,使雙活陣列中的存儲(chǔ)陣列腦裂后,通過所述方法,盡量避免更換接收主機(jī)發(fā)送的數(shù)據(jù)的存儲(chǔ)陣列的目的。
一方面,本申請的實(shí)施例提供一種管理雙活存儲(chǔ)陣列的方法。該方法包括統(tǒng)計(jì)雙活陣列中的第一存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)的總量,并接收雙活陣列中的第二存儲(chǔ)陣列統(tǒng)計(jì)的接收主機(jī)數(shù)據(jù)的總量。對第一存儲(chǔ)陣列和第二存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)總量的多少進(jìn)行比較。當(dāng)?shù)谝淮鎯?chǔ)陣列和第二存儲(chǔ)陣列之間的鏈路斷開時(shí),接收主機(jī)數(shù)據(jù)總量多的存儲(chǔ)陣列繼續(xù)接收主機(jī)發(fā)送的數(shù)據(jù)。所述方法通過使接收主機(jī)數(shù)據(jù)多的存儲(chǔ)陣列繼續(xù)接收主機(jī)發(fā)送的數(shù)據(jù),而接收主機(jī)數(shù)據(jù)多的存儲(chǔ)陣列通常為當(dāng)前正在接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列。由此達(dá)到既可使存儲(chǔ)系統(tǒng)連接正從,又可避免更換接收主機(jī)發(fā)送的數(shù)據(jù)的存儲(chǔ)陣列的目的。
在一個(gè)可能的設(shè)計(jì)中,第一存儲(chǔ)陣列和第二存儲(chǔ)陣列還分別與仲裁服務(wù)器連接。當(dāng)?shù)谝淮鎯?chǔ)陣列和第二存儲(chǔ)陣列之間的鏈路斷開時(shí),分別向仲裁服務(wù)器發(fā)送仲裁請求,通過仲裁請求確定接收主機(jī)的數(shù)據(jù)。接收主機(jī)數(shù)據(jù)總量多的存儲(chǔ)陣列在檢測到與仲裁服務(wù)器斷開時(shí)立即發(fā)送,接收主機(jī)數(shù)據(jù)總量少的存儲(chǔ)陣列在檢測到與仲裁服務(wù)器斷開后延遲一個(gè)預(yù)設(shè)的時(shí)間發(fā)送仲裁請求。仲裁服務(wù)器根據(jù)收到仲裁請求的先后順序確定接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列。 先發(fā)送到仲裁服務(wù)器仲裁請求的存儲(chǔ)陣列獲得接收主機(jī)數(shù)據(jù),后發(fā)送到仲裁服務(wù)器仲裁請求的存儲(chǔ)陣列不接收主機(jī)發(fā)送的數(shù)據(jù)。由此達(dá)到接收主機(jī)數(shù)據(jù)多的存儲(chǔ)陣列優(yōu)先接收主機(jī)數(shù)據(jù)少的存儲(chǔ)陣列一定時(shí)間獲得繼續(xù)接收主機(jī)數(shù)據(jù),當(dāng)接收主機(jī)數(shù)據(jù)多的存儲(chǔ)陣列在優(yōu)先時(shí)間內(nèi)不能獲得接收主機(jī)數(shù)據(jù),再由接收主機(jī)數(shù)據(jù)少的存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)。避免了接收主機(jī)數(shù)據(jù)多的存儲(chǔ)陣列在故障而不能接收主機(jī)數(shù)據(jù)時(shí),接收主機(jī)數(shù)據(jù)少的存儲(chǔ)陣列也不能接收主機(jī)數(shù)據(jù)。
在一個(gè)可能的設(shè)計(jì)中,延遲一段預(yù)設(shè)的時(shí)間可以是延遲3秒至10秒鐘的任意一個(gè)時(shí)間。若延遲的時(shí)間過短,則不能達(dá)到使接收主機(jī)數(shù)據(jù)多的存儲(chǔ)陣列優(yōu)先的目的。若延遲的時(shí)間過長,則影響系統(tǒng)接收主機(jī)數(shù)據(jù)的連續(xù)性。
在一個(gè)可能的設(shè)計(jì)中,延遲一段預(yù)設(shè)的時(shí)間可以是延遲5秒。所述時(shí)間既能夠有效的保證接收主機(jī)數(shù)據(jù)多的存儲(chǔ)陣列優(yōu)先的目的,又不影響系統(tǒng)接收主機(jī)數(shù)據(jù)的連續(xù)性。
另一方面,本申請的實(shí)施例提供一種管理雙活存儲(chǔ)陣列的方法。該方法包括統(tǒng)計(jì)雙活陣列中的第一存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)的總量,并接收雙活陣列中的第二存儲(chǔ)陣列統(tǒng)計(jì)的接收主機(jī)數(shù)據(jù)的總量。確定第一存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)的總量大于第二存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)總量。當(dāng)?shù)谝淮鎯?chǔ)陣列與仲裁服務(wù)器之間的通信故障時(shí),并且第二存儲(chǔ)陣列仲裁服務(wù)器之間的通信故障時(shí),當(dāng)?shù)谝淮鎯?chǔ)陣列和第二存儲(chǔ)陣列之間的鏈路發(fā)送故障時(shí),接收主機(jī)數(shù)據(jù)總量多的第一存儲(chǔ)陣列繼續(xù)接收數(shù)據(jù)發(fā)送的數(shù)據(jù)。從而保證第一存儲(chǔ)陣列在與仲裁服務(wù)器連接斷開和第二存儲(chǔ)陣列與仲裁服務(wù)器之間的連接斷開時(shí),第一存儲(chǔ)陣列和第二存儲(chǔ)陣列之間的鏈路斷開時(shí),存儲(chǔ)陣列能夠自己做出判斷。接收主機(jī)數(shù)據(jù)多的存儲(chǔ)陣列繼續(xù)接收主機(jī)發(fā)送的數(shù)據(jù),接收主機(jī)數(shù)據(jù)少的存儲(chǔ)陣列不接收主機(jī)發(fā)送的數(shù)據(jù)。避免了接收主機(jī)數(shù)據(jù)多的存儲(chǔ)陣列在故障而不能接收主機(jī)數(shù)據(jù)時(shí),接收主機(jī)數(shù)據(jù)少的存儲(chǔ)陣列也不能接收主機(jī)數(shù)據(jù)。
再一方面,本申請的實(shí)施例提供一種雙活存儲(chǔ)陣列中的存儲(chǔ)陣列。該存 儲(chǔ)陣列包括用于執(zhí)行在一方面的方法中包括的任意一種實(shí)施方式。
又一方面,本申請的實(shí)施例提供一種雙活存儲(chǔ)陣列中的存儲(chǔ)陣列。該存儲(chǔ)陣列包括用于執(zhí)行另一方面方法中包括的實(shí)施方式。
再另一方面,本申請的實(shí)施例提供一種雙活存儲(chǔ)陣列中的存儲(chǔ)陣列。存儲(chǔ)陣列包括處理器,存儲(chǔ)器,通信接口和總線。其中,處理器、存儲(chǔ)器和通信接口通過總線通信。通信接口用于與第二存儲(chǔ)陣列和主機(jī)通信。存儲(chǔ)器用于存儲(chǔ)程序。當(dāng)裝置運(yùn)行時(shí),處理器用于執(zhí)行存儲(chǔ)器存儲(chǔ)的程序,以執(zhí)行上述方法。
再又一方面,本申請的實(shí)施例提供一種管理雙活存儲(chǔ)陣列的方法。該方法包括確定當(dāng)前第一存儲(chǔ)陣列是否接收主機(jī)發(fā)送的數(shù)據(jù)。若存儲(chǔ)陣列前正在接收主機(jī)發(fā)送的數(shù)據(jù),則在第一存儲(chǔ)陣列和第二存儲(chǔ)陣列之間的鏈路斷開后,繼續(xù)接收主機(jī)發(fā)送的數(shù)據(jù)。若存儲(chǔ)陣列當(dāng)前沒有接收主機(jī)發(fā)送的數(shù)據(jù),則在第一存儲(chǔ)陣列和第二存儲(chǔ)陣列之間的鏈路斷開后,不接收主機(jī)發(fā)送的數(shù)據(jù)。通過采用所述方面,直接確定接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列繼續(xù)接收主機(jī)發(fā)送的數(shù)據(jù),從而避免了其它的方法和設(shè)備,使系統(tǒng)的效率更高。也避免了切換接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列的麻煩。
本申請?zhí)峁┝艘环N管理雙活存儲(chǔ)陣列的方法和裝置。從而盡量避免在存儲(chǔ)陣列之間的連接斷開時(shí),不更換接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列。
附圖說明
圖1為本發(fā)明實(shí)施例的一種雙活存儲(chǔ)陣列的連接關(guān)系圖;
圖2為本發(fā)明實(shí)施例提供的一種管理雙活存儲(chǔ)陣列的方法流程圖;
圖3為本發(fā)明實(shí)施例提供的一種雙活存儲(chǔ)陣列仲裁服務(wù)器故障后的系統(tǒng)連接圖;
圖4為本發(fā)明實(shí)施提供的一種雙活陣列仲裁服務(wù)器連接斷開后的系統(tǒng)連接圖;
圖5為本法明實(shí)施例提供的一種管理雙活存儲(chǔ)陣列和仲裁服務(wù)器連接中斷后管理雙活陣列的方法流程圖;
圖6為本發(fā)明實(shí)施例提供的一種管理雙活存儲(chǔ)陣列流程圖;
圖7為本發(fā)明實(shí)施例提供的一種管理雙活陣列存儲(chǔ)陣列的結(jié)構(gòu)圖;
圖8為本發(fā)明實(shí)施例提供的一種仲裁服務(wù)器故障后的管理雙活存儲(chǔ)陣列的結(jié)構(gòu)圖;
圖9為本發(fā)明實(shí)施例提供的一種存儲(chǔ)陣列設(shè)備示意圖。
具體實(shí)施方式
下面通過附圖和實(shí)施例,對本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
在本發(fā)明的實(shí)施例應(yīng)用于存儲(chǔ)系統(tǒng)中,所述存儲(chǔ)系統(tǒng)包括兩個(gè)存儲(chǔ)陣列和一個(gè)主機(jī),并且,兩個(gè)存儲(chǔ)陣列都能接受主機(jī)發(fā)送的數(shù)據(jù)。所述兩個(gè)存儲(chǔ)陣列還相互連接,從而在一個(gè)存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)時(shí),另一個(gè)存儲(chǔ)陣列對接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列接收的主機(jī)數(shù)據(jù)進(jìn)行備份。當(dāng)接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列與主機(jī)鏈路故障時(shí),備份的存儲(chǔ)陣列能夠代替當(dāng)前正在接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列繼續(xù)接收主機(jī)發(fā)送的數(shù)據(jù)。當(dāng)兩個(gè)存儲(chǔ)陣列之間的鏈路斷開時(shí)即為腦裂。
需要注意的是,在本發(fā)明的實(shí)施例中,所述主機(jī)可以是一個(gè)集群,集群中包括多個(gè)設(shè)備,集群中的任意一個(gè)設(shè)備都能夠向任意一個(gè)存儲(chǔ)陣列發(fā)送數(shù)據(jù)。例如,主機(jī)包括第一設(shè)備和第二設(shè)備,與主機(jī)連接的包括第一存儲(chǔ)陣列和第二存儲(chǔ)陣列。當(dāng)?shù)谝淮鎯?chǔ)陣列接收主機(jī)發(fā)送的數(shù)據(jù)時(shí),數(shù)據(jù)由第一設(shè)備發(fā)送。當(dāng)?shù)诙鎯?chǔ)陣列接收主機(jī)發(fā)送的數(shù)據(jù)時(shí),數(shù)據(jù)由第二設(shè)備發(fā)送。
下面,結(jié)合圖1對本發(fā)明上述的裝置作出更直觀的解釋。圖1為本發(fā)明實(shí)施例的一種雙活存儲(chǔ)陣列的連接關(guān)系圖。如圖1所示,存儲(chǔ)陣列中包括主機(jī)104、仲裁服務(wù)器103、第一存儲(chǔ)陣列101和第二存儲(chǔ)陣列102。第一存儲(chǔ)陣列101和第二存儲(chǔ)陣列102分別包括存儲(chǔ)介質(zhì)和存儲(chǔ)控制器,存儲(chǔ)介質(zhì)用 于存儲(chǔ)主機(jī)104發(fā)送的數(shù)據(jù)。存儲(chǔ)控制器包括控制器和存儲(chǔ)單元,存儲(chǔ)單元用于存儲(chǔ)控制器的控制指令,控制器用于執(zhí)行存儲(chǔ)單元存儲(chǔ)的各種操作指令,以完成對數(shù)據(jù)的各種操作。
主機(jī)104用于對第一存儲(chǔ)陣列101或第二存儲(chǔ)陣列102發(fā)出輸入輸出(input/output,簡稱IO)請求。
仲裁服務(wù)器103用于對主機(jī)104與第一存儲(chǔ)陣列101進(jìn)行IO操作或主機(jī)104與第二存儲(chǔ)陣列102進(jìn)行IO操作進(jìn)行仲裁。
第一存儲(chǔ)陣列101和第二存儲(chǔ)陣列102分別與主機(jī)104連接,并且能夠接收主機(jī)104發(fā)送的IO請求。在本發(fā)明的實(shí)施例中,當(dāng)存儲(chǔ)系統(tǒng)開始工作時(shí),將第一存儲(chǔ)陣列和第二存儲(chǔ)陣列中的一個(gè)設(shè)置為主存儲(chǔ)陣列,直接接收主機(jī)104發(fā)送的IO請求。另一個(gè)設(shè)置為備份存儲(chǔ)陣列,用于對主存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)的內(nèi)容進(jìn)行備份。在另一種可能出現(xiàn)的情況中,一個(gè)存儲(chǔ)陣列設(shè)置為主存儲(chǔ)陣列,主要接收主機(jī)104發(fā)送的IO請求。另一個(gè)存儲(chǔ)陣列為副存儲(chǔ)陣列,用于接收主機(jī)104發(fā)送的部分IO請求,主存儲(chǔ)陣列和副存儲(chǔ)陣列相互備份。本發(fā)明實(shí)施例主要針對上述的第一種使用情況進(jìn)行討論,但本發(fā)明實(shí)施例中用到的控制方法、設(shè)備也同樣適用于第二種使用情況。
在一個(gè)例子中,第一存儲(chǔ)陣列101和第二存儲(chǔ)陣列102采用差異化配置。一個(gè)存儲(chǔ)陣列的處理能力較強(qiáng),另一個(gè)存儲(chǔ)陣列的處理能力較弱。該雙活陣列工作時(shí),處理能力較強(qiáng)的存儲(chǔ)陣列為主存儲(chǔ)陣列,處理能力較弱的存儲(chǔ)陣列為副存儲(chǔ)陣列。
第一存儲(chǔ)陣列101和第二存儲(chǔ)陣列102之間包括有內(nèi)部連接,內(nèi)部連接能夠獲取對方存儲(chǔ)陣列的連接狀態(tài),以及用于為對方存儲(chǔ)陣列的內(nèi)容進(jìn)行備份。
仲裁服務(wù)器103分別與第一存儲(chǔ)陣列101和第二存儲(chǔ)陣列102連接,從而使各個(gè)存儲(chǔ)陣列能夠向仲裁服務(wù)器103發(fā)送仲裁文件,以及仲裁服務(wù)器103將仲裁結(jié)果發(fā)送給各個(gè)存儲(chǔ)陣列。
第一存儲(chǔ)陣列101和第二存儲(chǔ)陣列102與主機(jī)104連接時(shí)還各自實(shí)時(shí)統(tǒng)計(jì)接收主機(jī)數(shù)據(jù)的總量。第一存儲(chǔ)陣列101和第二存儲(chǔ)陣列102之間還可以對接收主機(jī)數(shù)據(jù)的總量進(jìn)行對比,數(shù)據(jù)比較的方法可以是在任意設(shè)備上的,本發(fā)明在此不作限定。例如,第一存儲(chǔ)陣列101或第二存儲(chǔ)陣列102將統(tǒng)計(jì)的接收主機(jī)數(shù)據(jù)的總量發(fā)送至主存儲(chǔ)陣列,在主存儲(chǔ)陣列上對接收主機(jī)數(shù)據(jù)的總量進(jìn)行對比,第一存儲(chǔ)陣列和第二存儲(chǔ)陣列還分別保存各個(gè)的對比結(jié)果。
在一個(gè)例子中,在第一存儲(chǔ)陣列上進(jìn)行接收主機(jī)數(shù)據(jù)總量的對比,第二存儲(chǔ)陣列將把統(tǒng)計(jì)的接收主機(jī)數(shù)據(jù)的總量發(fā)送至主存儲(chǔ)陣列。第一存儲(chǔ)陣列將接收第二存儲(chǔ)陣列發(fā)送的第二存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)的總量。例如,第一存儲(chǔ)陣列為開始時(shí)接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列,因此,第一存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)總量大于第二存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)的總量。
本領(lǐng)域技術(shù)人員知道,也可以在第二存儲(chǔ)陣列中進(jìn)行接收主機(jī)數(shù)據(jù)總量的對比,將對比結(jié)果發(fā)送到第一存儲(chǔ)陣列。更可以兩個(gè)存儲(chǔ)陣列相互發(fā)送接收主機(jī)數(shù)據(jù)總量的統(tǒng)計(jì)結(jié)果,在兩個(gè)存儲(chǔ)陣列中分別進(jìn)行對比,并將對比結(jié)果發(fā)送至對方。
在本發(fā)明的實(shí)施例中,第一存儲(chǔ)陣列和第二存儲(chǔ)陣列每隔一定時(shí)間進(jìn)行一次對比。第一存儲(chǔ)陣列和第二存儲(chǔ)陣列對對比的結(jié)果進(jìn)行更新。
當(dāng)?shù)谝淮鎯?chǔ)陣列101和第二存儲(chǔ)陣列102之間的連接斷開時(shí)即為腦裂。腦裂時(shí),各自存儲(chǔ)陣列不能獲取對方存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)的情況,因此,需要通過仲裁服務(wù)器對各個(gè)存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)情況進(jìn)行仲裁。通過仲裁服務(wù)器確定哪個(gè)存儲(chǔ)陣列接收主機(jī)的數(shù)據(jù)。
各個(gè)存儲(chǔ)陣列向仲裁服務(wù)器103發(fā)送仲裁請求,以用于獲得仲裁結(jié)果。接收主機(jī)數(shù)據(jù)的總量多的存儲(chǔ)陣列實(shí)時(shí)向仲裁服務(wù)器103提交仲裁請求,接收主機(jī)數(shù)據(jù)的總量少的存儲(chǔ)陣列延遲一段預(yù)設(shè)的時(shí)間向仲裁服務(wù)器103提交仲裁請求。于是,根據(jù)本發(fā)明實(shí)施例前述假設(shè)的接收主機(jī)數(shù)據(jù)總量,第一存儲(chǔ)陣列101在腦裂時(shí)立即向仲裁服務(wù)器103中發(fā)送仲裁請求,第二存儲(chǔ)陣列 102在腦裂后的的一個(gè)預(yù)設(shè)的時(shí)間段后發(fā)送仲裁請求。
在一個(gè)例子本,接收主機(jī)數(shù)據(jù)的總量少的存儲(chǔ)陣列將在檢測到腦裂后的3秒至10秒鐘內(nèi)向仲裁服務(wù)器發(fā)送仲裁請求。在一個(gè)更具體的例子中,接收主機(jī)數(shù)據(jù)總量少的存儲(chǔ)陣列將延遲時(shí)間5秒向仲裁服務(wù)器發(fā)送仲裁請求。
仲裁服務(wù)器103將根據(jù)仲裁請求及仲裁原則進(jìn)行仲裁,并將仲裁結(jié)果發(fā)送給第一存儲(chǔ)陣列和第二存儲(chǔ)陣列。在本發(fā)明的實(shí)施例中,仲裁原則可以是先到先得,即:仲裁服務(wù)器103先收到哪個(gè)存儲(chǔ)陣列發(fā)送的仲裁請求,就判定哪個(gè)存儲(chǔ)陣列獲勝,該存儲(chǔ)陣列接收主機(jī)發(fā)送的數(shù)據(jù)。在通常請求下,實(shí)時(shí)發(fā)送仲裁請求的存儲(chǔ)陣列將仲裁獲勝,從而使該存儲(chǔ)陣列繼續(xù)接收主機(jī)發(fā)送的數(shù)據(jù)。
當(dāng)一個(gè)雙活陣列出現(xiàn)腦裂時(shí),存儲(chǔ)系統(tǒng)中設(shè)定主存儲(chǔ)陣列在開始工作時(shí)接收主機(jī)發(fā)送的數(shù)據(jù)。當(dāng)主存儲(chǔ)陣列與仲裁服務(wù)器103沒有故障的情況下,主存儲(chǔ)陣列將仲裁獲勝,主存儲(chǔ)陣列將繼續(xù)接收主機(jī)發(fā)送的數(shù)據(jù)。主存儲(chǔ)陣列仲裁獲勝,從而使腦裂時(shí)接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列仲裁獲勝,不需要做接收主機(jī)的存儲(chǔ)陣列的切換。于是,第一存儲(chǔ)陣列101將繼續(xù)與主機(jī)連接,從而達(dá)到不需要更換存儲(chǔ)陣列的效果。
在本發(fā)明的實(shí)施例中,上述對第一存儲(chǔ)陣列和第二存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)的總量進(jìn)行對比,優(yōu)先使接收主機(jī)數(shù)據(jù)總量多的存儲(chǔ)陣列獲得繼續(xù)接收主機(jī)發(fā)送的數(shù)據(jù)只是本發(fā)明實(shí)施例的其中一種具體實(shí)施方法,不能用于對本發(fā)明的限定。
在一個(gè)例子中,還可以采用一種直接仲裁的方法,當(dāng)腦裂時(shí),其中一個(gè)正在接收主機(jī)發(fā)送的數(shù)據(jù)的存儲(chǔ)陣列繼續(xù)接收主機(jī)發(fā)送的數(shù)據(jù),從而避免了腦裂時(shí)切換接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列可能造成的影響。
圖2為本發(fā)明實(shí)施例提供的一種管理雙活存儲(chǔ)陣列的方法流程圖。所述方法應(yīng)用于存儲(chǔ)系統(tǒng)中,存儲(chǔ)系統(tǒng)包括第一存儲(chǔ)陣列、第二存儲(chǔ)陣列、仲裁服務(wù)器和主機(jī)。第一存儲(chǔ)陣列和第二存儲(chǔ)陣列能夠接收主機(jī)發(fā)送的數(shù)據(jù)。第 一存儲(chǔ)陣列和第二存儲(chǔ)陣列連接,從而對對方存儲(chǔ)陣列的數(shù)據(jù)進(jìn)行備份以及獲取對方存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)的狀態(tài)和接收主機(jī)數(shù)據(jù)的總量。第一存儲(chǔ)陣列和第二存儲(chǔ)陣列還分別與仲裁服務(wù)器連接,從而在第一存儲(chǔ)陣列和第二存儲(chǔ)陣列連接斷開時(shí)通過仲裁服務(wù)器仲裁確定哪個(gè)存儲(chǔ)陣列接收主機(jī)發(fā)送的數(shù)據(jù)。所述方法的執(zhí)行主體為第一存儲(chǔ)陣列。如圖2所示,所述方法包括:
S201,統(tǒng)計(jì)接收主機(jī)發(fā)送的數(shù)據(jù)的總量。
第一存儲(chǔ)陣列實(shí)時(shí)統(tǒng)計(jì)接收主機(jī)數(shù)據(jù)的總量,并將統(tǒng)計(jì)結(jié)果記錄在存儲(chǔ)陣列中。
S202,接收第二存儲(chǔ)陣列統(tǒng)計(jì)的接收主機(jī)數(shù)據(jù)的總量。
第二存儲(chǔ)陣列實(shí)時(shí)統(tǒng)計(jì)接收主機(jī)發(fā)送的數(shù)據(jù)的總量,并將統(tǒng)計(jì)結(jié)果記錄在存儲(chǔ)陣列內(nèi)。其中一個(gè)存儲(chǔ)陣列中設(shè)置對比模塊,對比模塊所在存儲(chǔ)陣列將獲得對方存儲(chǔ)陣列接收主機(jī)發(fā)送的數(shù)據(jù)的總量。在本發(fā)明的實(shí)施例中,對比模塊設(shè)置在第一存儲(chǔ)陣列。第二存儲(chǔ)陣列還將統(tǒng)計(jì)的接收主機(jī)數(shù)據(jù)的總量發(fā)送給第一存儲(chǔ)陣列。
在一個(gè)例子中,對比模塊可以設(shè)置在第二存儲(chǔ)陣列中,第一存儲(chǔ)陣列將統(tǒng)計(jì)的接收主機(jī)數(shù)據(jù)的總量發(fā)送到第二存儲(chǔ)陣列。對比模塊也可以同時(shí)設(shè)置在第一存儲(chǔ)陣列和第二存儲(chǔ)陣列中,第一存儲(chǔ)陣列和第二存儲(chǔ)陣列相互發(fā)送各個(gè)統(tǒng)計(jì)的接收主機(jī)數(shù)據(jù)的總量。第一存儲(chǔ)陣列和第二存儲(chǔ)陣列相互發(fā)送統(tǒng)計(jì)的結(jié)果。
S203,確定第一存儲(chǔ)陣列接收主機(jī)發(fā)送的數(shù)據(jù)的總量小于第二存儲(chǔ)陣列。
對比單元是將各個(gè)存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)的總量進(jìn)行對比,并將比較的結(jié)果分別發(fā)送到第一存儲(chǔ)陣列和第二存儲(chǔ)陣列。在一個(gè)例子中,第一存儲(chǔ)陣列和第二存儲(chǔ)陣列還分別對第一存儲(chǔ)陣列和第二存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)總量對比的結(jié)果進(jìn)行存儲(chǔ),從而在需要時(shí),確定自身存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)的總量是否大于對方存儲(chǔ)陣列。
在一個(gè)例子中,第一存儲(chǔ)陣列和第二存儲(chǔ)陣列對接收主機(jī)數(shù)據(jù)總量對比 結(jié)果的存儲(chǔ)是通過標(biāo)記完成。根據(jù)對比結(jié)果,相對于另一存儲(chǔ)陣列,接收主機(jī)數(shù)據(jù)總量多的存儲(chǔ)陣列將將被標(biāo)記為優(yōu)先站點(diǎn),接收主機(jī)數(shù)據(jù)總量少的存儲(chǔ)陣列將被標(biāo)記為非優(yōu)先站點(diǎn)。通過優(yōu)先站點(diǎn)和非優(yōu)先站點(diǎn)確定自身存儲(chǔ)陣列與對方存儲(chǔ)陣列接收數(shù)據(jù)的多少。
在本發(fā)明的實(shí)施例中,對接收主機(jī)數(shù)據(jù)總量多少的對比是持續(xù)的,所述持續(xù)可以是固定時(shí)間進(jìn)行一次對比。存儲(chǔ)陣列將根據(jù)每次對比的結(jié)果進(jìn)行標(biāo)記。
在本發(fā)明的實(shí)施例中,假設(shè)對比單元確定第一存儲(chǔ)陣列接收主機(jī)的數(shù)據(jù)少,第二存儲(chǔ)陣列接收主機(jī)的數(shù)據(jù)多。
S204,第一存儲(chǔ)陣列和第二存儲(chǔ)陣列腦裂時(shí),第一存儲(chǔ)陣列延遲一段預(yù)設(shè)的時(shí)間向仲裁服務(wù)器發(fā)送仲裁請求。
當(dāng)?shù)谝淮鎯?chǔ)陣列和第二存儲(chǔ)陣列之間的鏈路發(fā)送故障時(shí)即第一存儲(chǔ)陣列和第二存儲(chǔ)陣列腦裂。此時(shí),第一存儲(chǔ)陣列和第二存儲(chǔ)陣列分別需要向仲裁服務(wù)器發(fā)送仲裁請求。由于存儲(chǔ)陣列之間第一存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)的總量少,第二存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)的總量多,因此,第二存儲(chǔ)陣列將實(shí)時(shí)向仲裁服務(wù)器發(fā)送仲裁請求,第一存儲(chǔ)陣列將延遲一段預(yù)設(shè)的時(shí)間向仲裁服務(wù)器發(fā)送仲裁請求。在本發(fā)明的實(shí)施例中,預(yù)設(shè)的延遲時(shí)間可以是3秒至10秒的任意時(shí)長。
在一個(gè)例子中,預(yù)設(shè)的延遲時(shí)間是5秒。
S205,接收所述仲裁服務(wù)器發(fā)送的仲裁結(jié)果。
仲裁服務(wù)器將根據(jù)仲裁請求及仲裁原則作出仲裁結(jié)果。優(yōu)選的,仲裁原則可以是先到先得,即:仲裁服務(wù)器先收到哪個(gè)存儲(chǔ)陣列發(fā)送的仲裁請求,就判定哪個(gè)存儲(chǔ)陣列獲勝。
由于第一存儲(chǔ)陣列延遲一段預(yù)設(shè)的時(shí)間向仲裁服務(wù)器發(fā)送仲裁請求,當(dāng)?shù)诙鎯?chǔ)陣列與仲裁服務(wù)器之間的鏈路不發(fā)生故障時(shí),仲裁服務(wù)器將首先收到第二存儲(chǔ)陣列發(fā)送的仲裁請求。第一存儲(chǔ)陣列收到的仲裁結(jié)果指示由第二 存儲(chǔ)陣列繼續(xù)接收主機(jī)發(fā)送的數(shù)據(jù)。根據(jù)仲裁結(jié)果,第一存儲(chǔ)陣列將不接收主機(jī)發(fā)送的數(shù)據(jù),第二存儲(chǔ)陣列將接收主機(jī)發(fā)送的數(shù)據(jù)。
圖3為本發(fā)明實(shí)施例提供的一種雙活存儲(chǔ)陣列仲裁服務(wù)器故障后的系統(tǒng)連接圖。圖4為本發(fā)明實(shí)施提供的一種雙活存儲(chǔ)陣列仲裁服務(wù)器連接斷開后的系統(tǒng)連接圖。如圖3和圖4所示,包括括主機(jī)104、仲裁服務(wù)器103、第一存儲(chǔ)陣列101和第二存儲(chǔ)陣列102。仲裁服務(wù)器分別與第一存儲(chǔ)陣列以及第二存儲(chǔ)陣列連接。第一存儲(chǔ)陣列和第二存儲(chǔ)陣列均和至少一個(gè)主機(jī)連接,并且所述第一存儲(chǔ)陣列和第二存儲(chǔ)陣列都能夠接收主機(jī)的數(shù)據(jù)。
第一存儲(chǔ)陣列101和第二存儲(chǔ)陣列102各自實(shí)時(shí)統(tǒng)計(jì)接收主機(jī)發(fā)送的數(shù)據(jù)的總量。第一存儲(chǔ)陣列101或第二存儲(chǔ)陣列102中的一個(gè)還可以對接收主機(jī)發(fā)送的數(shù)據(jù)的總量進(jìn)行對比,例如,第一存儲(chǔ)陣列101可以對接收主機(jī)發(fā)送的數(shù)據(jù)的總量進(jìn)行對比。第二存儲(chǔ)陣列102將把實(shí)時(shí)統(tǒng)計(jì)的接收主機(jī)數(shù)據(jù)的總量發(fā)送至第一存儲(chǔ)陣列101中,從而通過對比確定第一存儲(chǔ)陣列和第二存儲(chǔ)陣列接收數(shù)據(jù)的多少。在本實(shí)施例中,假定第一存儲(chǔ)陣列101接收主機(jī)的數(shù)據(jù)的總量多,第二存儲(chǔ)陣列102接收主機(jī)發(fā)送的數(shù)據(jù)的總量少。
在存儲(chǔ)陣列進(jìn)行工作的過程中,還將與仲裁服務(wù)器103進(jìn)行通信,保證存儲(chǔ)陣列與仲裁服務(wù)器103的連接正常,以便需要仲裁服務(wù)器103仲裁時(shí)仲裁服務(wù)器103能夠接受仲裁請求以及向存儲(chǔ)陣列發(fā)送仲裁結(jié)果。
若其中的某一個(gè)存儲(chǔ)陣列,例如,第一存儲(chǔ)陣列101檢測到與仲裁服務(wù)器103連接斷開后,第一存儲(chǔ)陣列101將判定當(dāng)前雙活陣列通過哪個(gè)主體確定接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列。
如當(dāng)前接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列通過仲裁服務(wù)器確定,則第一存儲(chǔ)陣列101將發(fā)送消息至第二存儲(chǔ)陣列102,以使第二存儲(chǔ)陣列102檢測(例如采用心跳機(jī)制檢測)第二存儲(chǔ)陣列是否與仲裁服務(wù)器103斷開。若第二存儲(chǔ)陣列102與仲裁服務(wù)器103斷開(包括如3和圖4所示的情況),則第二存儲(chǔ)陣列102將向第一存儲(chǔ)陣列101發(fā)送查詢結(jié)果。在本發(fā)明的實(shí)施例中,第二存儲(chǔ)陣 列向第一存儲(chǔ)陣列返回的查詢結(jié)果確定第二存儲(chǔ)陣列與仲裁服務(wù)器鏈路故障。當(dāng)?shù)谝淮鎯?chǔ)陣列確定第一存儲(chǔ)陣列101與第二存儲(chǔ)陣列102都與仲裁服務(wù)器103斷開,第一存儲(chǔ)陣列101將與第二存儲(chǔ)陣列102協(xié)商。將接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列通過仲裁服務(wù)器確定改為通過存儲(chǔ)陣列確定。協(xié)商結(jié)果將分別發(fā)送至第一存儲(chǔ)陣列101和第二存儲(chǔ)陣列102,第一存儲(chǔ)陣列101和第二存儲(chǔ)陣列102將根據(jù)協(xié)商結(jié)果進(jìn)行切換。
如當(dāng)前接收主機(jī)數(shù)據(jù)由存儲(chǔ)陣列確定,則將確定第一存儲(chǔ)陣列101接收主機(jī)數(shù)據(jù)的總量是否為最多,若第一存儲(chǔ)陣列101接收主機(jī)數(shù)據(jù)總量最多則第一存儲(chǔ)陣列接收主機(jī)數(shù)據(jù),若第一存儲(chǔ)陣列101不是接收主機(jī)數(shù)據(jù)最多的存儲(chǔ)陣列,則不接收主機(jī)數(shù)據(jù)。由于本實(shí)施例中,由于提前假定第一存儲(chǔ)陣列101接收主機(jī)數(shù)據(jù)總量為最多,因此,第一存儲(chǔ)陣列101將接收主機(jī)發(fā)送的數(shù)據(jù)。
若第二存儲(chǔ)陣列102與仲裁服務(wù)器103連接正常,則不發(fā)生任何操作(如圖1所示連接結(jié)構(gòu)),接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列將繼續(xù)接收主機(jī)發(fā)送的數(shù)據(jù)。
若第一存儲(chǔ)陣列和第二存儲(chǔ)陣列發(fā)生腦裂時(shí),與仲裁服務(wù)器103連接正常的存儲(chǔ)陣列將發(fā)送仲裁文件至仲裁服務(wù)器103中。與仲裁服務(wù)器103連接斷開的存儲(chǔ)陣列將不能發(fā)送仲裁請求至仲裁服務(wù)器103中,從而與仲裁服務(wù)器103連接正常的存儲(chǔ)陣列將接收主機(jī)發(fā)送的數(shù)據(jù)。
上述通過第一存儲(chǔ)陣列101進(jìn)行協(xié)商等,僅為本發(fā)明實(shí)施例的具體實(shí)現(xiàn)方式,不用于對本發(fā)明實(shí)施例的限定。在本發(fā)明的上述實(shí)施例中,也可以設(shè)置為通過第二存儲(chǔ)陣列102進(jìn)行協(xié)商。
為了讓雙活陣列與仲裁服務(wù)器的連接斷開表述的更清楚,圖5為本法明實(shí)施例提供的一種管理雙活存儲(chǔ)陣列和仲裁服務(wù)器連接中斷后管理雙活陣列的方法流程圖。所述方法應(yīng)用于存儲(chǔ)系統(tǒng)中,包括第一存儲(chǔ)陣列、第二存儲(chǔ)陣列、仲裁服務(wù)器和主機(jī)。第一存儲(chǔ)陣列和第二存儲(chǔ)陣列能夠接收主機(jī)發(fā)送的數(shù)據(jù)。第一存儲(chǔ)陣列和第二存儲(chǔ)陣列相互連接,從而對對方存儲(chǔ)陣列的數(shù) 據(jù)進(jìn)行備份以及獲取對方存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)的狀態(tài)。第一存儲(chǔ)陣列和第二存儲(chǔ)陣列還分別與仲裁服務(wù)器連接,從而在第一存儲(chǔ)陣列和第二存儲(chǔ)陣列連接斷開時(shí)通過仲裁服務(wù)器仲裁確定哪個(gè)存儲(chǔ)陣列接收主機(jī)的數(shù)據(jù)。所述方法的執(zhí)行主體為第一存儲(chǔ)陣列。如圖5所示,所示方法具體包括:
S501,統(tǒng)計(jì)第一存儲(chǔ)陣列接收主機(jī)發(fā)送的數(shù)據(jù)的總量。
第一存儲(chǔ)陣列實(shí)時(shí)統(tǒng)計(jì)接收主機(jī)數(shù)據(jù)的總量,并將統(tǒng)計(jì)結(jié)果記錄在存儲(chǔ)陣列中。
S502,接收第二存儲(chǔ)陣列統(tǒng)計(jì)的接收主機(jī)數(shù)據(jù)的總量。
第二存儲(chǔ)陣列實(shí)時(shí)統(tǒng)計(jì)接收主機(jī)數(shù)據(jù)的總量,并將統(tǒng)計(jì)結(jié)果記錄在存儲(chǔ)陣列內(nèi)。其中一個(gè)存儲(chǔ)陣列中設(shè)置對比模塊,對比模塊將獲得存儲(chǔ)陣列的接收主機(jī)數(shù)據(jù)的總量。在一個(gè)例子中,對比模塊設(shè)置在第一存儲(chǔ)陣列。第二存儲(chǔ)陣列還將統(tǒng)計(jì)的接收主機(jī)數(shù)據(jù)的總量發(fā)送給第一存儲(chǔ)陣列。
S503,確定所述第一存儲(chǔ)陣列接收所述主機(jī)發(fā)送的數(shù)據(jù)的總量大于所述第二存儲(chǔ)陣列接收所述主機(jī)發(fā)送的數(shù)據(jù)的總量。
對比單元是將各個(gè)存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)的總量進(jìn)行對比,并將比較的結(jié)果分別發(fā)送到第一存儲(chǔ)陣列和第二存儲(chǔ)陣列。在一個(gè)例子中,第一存儲(chǔ)陣列和第二存儲(chǔ)陣列還分別對第一存儲(chǔ)陣列和第二存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)總量對比的結(jié)果進(jìn)行存儲(chǔ),從而在需要時(shí),確定自身存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)的總量是否比對方存儲(chǔ)陣列多。
在本發(fā)明的實(shí)施例中,假設(shè)對比單元確定第一存儲(chǔ)陣列接收主機(jī)的數(shù)據(jù)總量多,第二存儲(chǔ)陣列接收主機(jī)的數(shù)據(jù)總量少。
S504,第一存儲(chǔ)陣列和第二存儲(chǔ)陣列與仲裁服務(wù)器之間通信發(fā)生故障,且第一存儲(chǔ)陣列與第二存儲(chǔ)陣列之間鏈路發(fā)生故障時(shí),繼續(xù)接收所述主機(jī)發(fā)送的數(shù)據(jù)。
當(dāng)?shù)谝淮鎯?chǔ)陣列檢測到與仲裁服務(wù)器連接斷開后,第一存儲(chǔ)陣列將判定當(dāng)前雙活陣列中接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列由誰確定。
如當(dāng)前接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列由仲裁服務(wù)器確定,則發(fā)送驗(yàn)證消息至第二存儲(chǔ)陣列,使第二存儲(chǔ)陣列檢測(例如采用心跳機(jī)制檢測)是否與仲裁服務(wù)器連接斷開。若第二存儲(chǔ)陣列向第一存儲(chǔ)陣列返回與仲裁服務(wù)器連接正常,則不產(chǎn)生任何操作。當(dāng)前正在接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列將繼續(xù)接收主機(jī)發(fā)送的數(shù)據(jù)。
此時(shí),若存儲(chǔ)陣列中的第一存儲(chǔ)陣列和第二存儲(chǔ)陣列鏈路斷開時(shí),與仲裁服務(wù)器連接正常的存儲(chǔ)陣列將發(fā)送仲裁請求至仲裁服務(wù)器,而與仲裁服務(wù)器連接斷開的存儲(chǔ)陣列將不能發(fā)送仲裁請求至仲裁服務(wù)器,仲裁服務(wù)器將根據(jù)接收的仲裁請求發(fā)出仲裁結(jié)果。仲裁結(jié)果指示,與仲裁服務(wù)器連接正常的存儲(chǔ)陣列將接收主機(jī)發(fā)送的數(shù)據(jù)。
若第一存儲(chǔ)陣列獲取第二存儲(chǔ)陣列與仲裁服務(wù)器連接斷開的消息后,第一存儲(chǔ)陣列將和第二存儲(chǔ)陣列協(xié)商,將確定接收主機(jī)發(fā)送數(shù)據(jù)的存儲(chǔ)陣列由仲裁服務(wù)器確定修改為由存儲(chǔ)陣列確定。協(xié)商結(jié)果將分別發(fā)送至第一存儲(chǔ)陣列101和第二存儲(chǔ)陣列102,第一存儲(chǔ)陣列101和第二存儲(chǔ)陣列102將根據(jù)協(xié)商結(jié)果進(jìn)行切換。
如當(dāng)前接收主機(jī)數(shù)據(jù)由存儲(chǔ)陣列確定,則將確定第一存儲(chǔ)陣列101接收主機(jī)數(shù)據(jù)的總量是否為最多,若第一存儲(chǔ)陣列101接收主機(jī)數(shù)據(jù)總量最多則第一存儲(chǔ)陣列接收主機(jī)數(shù)據(jù),若第一存儲(chǔ)陣列101不是接收主機(jī)數(shù)據(jù)最多的存儲(chǔ)陣列,則不接收主機(jī)數(shù)據(jù)。由于本實(shí)施例中,由于提前假定第一存儲(chǔ)陣列101接收主機(jī)數(shù)據(jù)總量為最多,因此,第一存儲(chǔ)陣列101將接收主機(jī)發(fā)送的數(shù)據(jù)。
下面,通過一個(gè)具體的例子對本發(fā)明實(shí)施例管理雙活存儲(chǔ)陣列進(jìn)行詳細(xì)的說明。圖6為本發(fā)明實(shí)施例提供的一種管理雙活存儲(chǔ)陣列流程圖。如圖6所示,該方法流程以存儲(chǔ)陣列中的主存儲(chǔ)陣列為執(zhí)行主體。本發(fā)明實(shí)施例的流程是以在圖1所示的硬件結(jié)構(gòu)作為整體進(jìn)行執(zhí)行為基礎(chǔ),包括第一存儲(chǔ)陣列、第二存儲(chǔ)陣列、仲裁服務(wù)器和主機(jī),其中各個(gè)部分的功能與圖1所示相 同。此處將主存儲(chǔ)陣列定義為第一存儲(chǔ)陣列(也可以為定義為第二存儲(chǔ)陣列,在此不作限定),主存儲(chǔ)陣列還用于對第一存儲(chǔ)陣列和第二存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)時(shí)長進(jìn)行對比,并對對比結(jié)果進(jìn)行保存。在通常情況下,雙活陣列在剛開始進(jìn)行工作時(shí)設(shè)定主存儲(chǔ)陣列接收主機(jī)發(fā)送的數(shù)據(jù),另一個(gè)存儲(chǔ)陣列用于備份。
當(dāng)存儲(chǔ)系統(tǒng)開始工作時(shí),執(zhí)行步驟601。
主存儲(chǔ)陣列將定時(shí)統(tǒng)計(jì)接收主機(jī)數(shù)據(jù)的總量。
主存儲(chǔ)陣列將循環(huán)的統(tǒng)計(jì)接收主機(jī)數(shù)據(jù)的總量并進(jìn)行更新,在主存儲(chǔ)陣列統(tǒng)計(jì)接收主機(jī)數(shù)據(jù)的數(shù)據(jù)的總量后,將執(zhí)行步驟602。
第一存儲(chǔ)陣列101接收第二存儲(chǔ)陣列102統(tǒng)計(jì)的接收主機(jī)數(shù)據(jù)總量,第一存儲(chǔ)陣列對第一存儲(chǔ)陣列和第二存儲(chǔ)陣列統(tǒng)計(jì)的與主機(jī)發(fā)送的數(shù)據(jù)的總量進(jìn)行對比。
在本發(fā)明的具體實(shí)施例中,由于第一存儲(chǔ)陣列設(shè)定為剛開始工作時(shí)的業(yè)務(wù)接管存儲(chǔ)陣列,因此第一存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)總量比第二存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)的總量多。
在存儲(chǔ)陣列進(jìn)行工作的過程中,還將與仲裁服務(wù)器103進(jìn)行通信,保證存儲(chǔ)陣列與仲裁服務(wù)器的連接正常,以便需要仲裁服務(wù)器仲裁時(shí)仲裁服務(wù)器能夠接受仲裁請求以及向存儲(chǔ)陣列發(fā)送仲裁結(jié)果。
當(dāng)主存儲(chǔ)陣列檢測到與仲裁服務(wù)器連接正常,則執(zhí)行步驟613。若主存儲(chǔ)陣列檢測到與仲裁服務(wù)器連接斷開,則執(zhí)行步驟604。
主存儲(chǔ)陣列進(jìn)行工作的過程中,第一存儲(chǔ)陣列和第二存儲(chǔ)陣列之間還將隨時(shí)保持通信,以判定第一存儲(chǔ)陣列和第二存儲(chǔ)陣列之間的連接是否斷開。
若檢測到第一存儲(chǔ)陣列和第二存儲(chǔ)陣列之間的連接正常時(shí),即不腦裂時(shí),不發(fā)生腦裂,則執(zhí)行663步驟,不進(jìn)行其它操作。
若第一存儲(chǔ)陣列和第二存儲(chǔ)陣列之間發(fā)生腦裂,則執(zhí)行623步驟。
判斷當(dāng)前存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)總量是否為最多,若當(dāng)前存儲(chǔ)陣列接收 主機(jī)數(shù)據(jù)最多,則執(zhí)行643步驟。
立即向仲裁服務(wù)器發(fā)送仲裁請求。
若當(dāng)前存儲(chǔ)陣列為接收主機(jī)發(fā)送的數(shù)據(jù)不為最多,則執(zhí)行633步驟。
延遲一段預(yù)設(shè)的時(shí)間向仲裁服務(wù)器發(fā)送仲裁請求。
當(dāng)執(zhí)行完成633或643步驟后,則執(zhí)行653步驟,獲取仲裁服務(wù)器發(fā)出的仲裁結(jié)果,根據(jù)仲裁結(jié)果確定接收主機(jī)發(fā)送的數(shù)據(jù)的存儲(chǔ)陣列。
在本發(fā)明的實(shí)施例中,仲裁服務(wù)器的仲裁原則是先到先得,于是接收主機(jī)發(fā)送的數(shù)據(jù)總量多的存儲(chǔ)陣列仲裁獲勝,繼續(xù)接收主機(jī)發(fā)送的數(shù)據(jù)。
在執(zhí)行604步驟中,將判斷存儲(chǔ)陣列當(dāng)前由誰確定接收主機(jī)發(fā)送的數(shù)據(jù)的存儲(chǔ)陣列。第一存儲(chǔ)陣列將向第二存儲(chǔ)陣列發(fā)送確定消息,第二存儲(chǔ)陣列根據(jù)確定消息對第二存儲(chǔ)陣列的接收主機(jī)發(fā)送數(shù)據(jù)的存儲(chǔ)陣列由誰確定進(jìn)行查詢。第二存儲(chǔ)陣列在驗(yàn)證完成后向第一存儲(chǔ)陣列返回驗(yàn)證結(jié)果。若由存儲(chǔ)陣列確定接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列,則執(zhí)行614步驟。若由仲裁服務(wù)器確定當(dāng)前存儲(chǔ)陣列接收主機(jī)發(fā)送的數(shù)據(jù)的存儲(chǔ)陣列,則執(zhí)行605步驟。
在執(zhí)行614步驟的過程中,將判斷當(dāng)前存儲(chǔ)陣列是否為接收主機(jī)數(shù)據(jù)最多的存儲(chǔ)陣列。若當(dāng)前存儲(chǔ)陣列為接收主機(jī)數(shù)據(jù)最多的存儲(chǔ)陣列,則執(zhí)行624步驟。若當(dāng)前存儲(chǔ)陣列不為接收主機(jī)數(shù)據(jù)最多的存儲(chǔ)陣列,則執(zhí)行634步驟。
在執(zhí)行624步驟中,當(dāng)前存儲(chǔ)陣列將接收主機(jī)發(fā)送的數(shù)據(jù)。
在執(zhí)行634步驟中,當(dāng)前存儲(chǔ)陣列將不接收主機(jī)發(fā)送的數(shù)據(jù),當(dāng)前存儲(chǔ)陣列將用于對接收主機(jī)發(fā)送的數(shù)據(jù)的存儲(chǔ)陣列進(jìn)行備份,從而在接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列故障時(shí),能夠無縫切換至當(dāng)前備份的存儲(chǔ)陣列。
在執(zhí)行605步驟的過程中,第一存儲(chǔ)陣列將向第二存儲(chǔ)陣列發(fā)送驗(yàn)證消息,以確定第二存儲(chǔ)陣列當(dāng)前是否與仲裁服務(wù)器連接正常。若第二存儲(chǔ)陣列與仲裁服務(wù)器連接正常,則執(zhí)行615步驟。若第二存儲(chǔ)陣列與仲裁服務(wù)器連接斷開,則執(zhí)行606步驟。
在執(zhí)行615步驟中,先判定第一存儲(chǔ)陣列與第二存儲(chǔ)陣列是否連接斷開。
若第一存儲(chǔ)陣列與第二存儲(chǔ)陣列連接正常,則執(zhí)行645步驟。不進(jìn)行其它操作。
若第一存儲(chǔ)陣列與第二存儲(chǔ)陣列連接斷開,則執(zhí)行625步驟。
與仲裁服務(wù)器連接的存儲(chǔ)陣列將發(fā)送仲裁請求至仲裁服務(wù)器中。仲裁服務(wù)器根據(jù)接收的仲裁請求進(jìn)行仲裁。由于第一存儲(chǔ)陣列與仲裁服務(wù)器連接斷開,此時(shí)仲裁服務(wù)器只能接收到第二存儲(chǔ)陣列發(fā)送的仲裁請求。
在發(fā)送仲裁請求后,執(zhí)行635步驟。
獲取仲裁結(jié)果,根據(jù)仲裁結(jié)果確定接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列。由于仲裁服務(wù)器只能收到第二存儲(chǔ)陣列發(fā)送的仲裁請求,從而第二存儲(chǔ)陣列將獲得接收主機(jī)發(fā)送的數(shù)據(jù)。
在執(zhí)行606步驟前,第二存儲(chǔ)陣列與仲裁服務(wù)器連接斷開,并將該結(jié)果返回至第一存儲(chǔ)陣列。
從而在606步驟中,第一存儲(chǔ)陣列將根據(jù)返回結(jié)果,與第二存儲(chǔ)陣列協(xié)商將由仲裁服務(wù)器確定接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列改為由存儲(chǔ)陣列確定接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列。第一存儲(chǔ)陣列和第二存儲(chǔ)陣列將根據(jù)協(xié)商結(jié)果進(jìn)行更換。
當(dāng)存儲(chǔ)陣列切換為由存儲(chǔ)陣列確定接收主機(jī)的數(shù)據(jù)的存儲(chǔ)陣列后,將執(zhí)行607步驟。
若當(dāng)前存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)為最多,則執(zhí)行609步驟。若當(dāng)前存儲(chǔ)陣列接收主機(jī)數(shù)據(jù)不為最多,則執(zhí)行608步驟。
在執(zhí)行624步驟中,當(dāng)前存儲(chǔ)陣列將接收主機(jī)發(fā)送的數(shù)據(jù)。
在執(zhí)行634步驟中,當(dāng)前存儲(chǔ)陣列將不接收主機(jī)發(fā)送的數(shù)據(jù),當(dāng)前存儲(chǔ)陣列將用于對接收主機(jī)數(shù)據(jù)的存儲(chǔ)陣列備份,當(dāng)接收主機(jī)發(fā)送的數(shù)據(jù)的存儲(chǔ)陣列故障時(shí)能夠無縫切換至當(dāng)前備份的存儲(chǔ)陣列。
在本發(fā)明的具體實(shí)施例中,還包括一種雙活陣列中存儲(chǔ)陣列的結(jié)構(gòu)圖,所述存儲(chǔ)陣列可以是圖1所示的101或102。下面以存儲(chǔ)陣列101為例進(jìn)行詳細(xì)的說明。圖7為本發(fā)明實(shí)施例提供的一種雙活陣列存儲(chǔ)陣列的結(jié)構(gòu)圖,如 圖7所示,包括統(tǒng)計(jì)單元711、處理單元712、接收單元713。
統(tǒng)計(jì)單元711,用于統(tǒng)計(jì)所述第一存儲(chǔ)陣列接收所述主機(jī)發(fā)送的數(shù)據(jù)的總量;以及,用于接收所述第二存儲(chǔ)陣列發(fā)送的所述第二存儲(chǔ)陣列接收所述主機(jī)發(fā)送的數(shù)據(jù)的總量。
處理單元712,用于確定所述第一存儲(chǔ)陣列接收所述主機(jī)發(fā)送的數(shù)據(jù)的總量小于所述第二存儲(chǔ)陣列接收所述主機(jī)發(fā)送的數(shù)據(jù)的總量;確定所述第一存儲(chǔ)陣列和所述第二存儲(chǔ)陣列之間的鏈路發(fā)生故障時(shí),延遲一段預(yù)設(shè)的時(shí)間段向仲裁服務(wù)器發(fā)送仲裁請求,所述仲裁服務(wù)器分別與所述第一存儲(chǔ)陣列、所述第二存儲(chǔ)陣列連接。
接收單元713,用于接收所述仲裁服務(wù)器發(fā)送的仲裁結(jié)果,所述仲裁結(jié)果用于指示由所述第二存儲(chǔ)陣列繼續(xù)接受所述主機(jī)發(fā)送的數(shù)據(jù)。
本發(fā)明實(shí)施例中的中的統(tǒng)計(jì)單元可以通過方法步驟中的S201、S202執(zhí)行,處理單元可以通過方法步驟中的S202、S203執(zhí)行,接收單元可以通過方法步驟中的S205執(zhí)行。
在本發(fā)明的實(shí)施例中,還包括圖1所示的一種雙活陣列仲裁單元故障的存儲(chǔ)陣列中,所述存儲(chǔ)陣列的結(jié)構(gòu)圖。下面以第一存儲(chǔ)陣列101為例進(jìn)行說明。圖8為本發(fā)明實(shí)施例提供的一種仲裁服務(wù)器故障后的管理雙活存儲(chǔ)陣列的結(jié)構(gòu)圖,如圖8所示:所示存儲(chǔ)陣列用于發(fā)出查詢命令。包括統(tǒng)計(jì)單元811和處理單元812。
統(tǒng)計(jì)單元811,用于統(tǒng)計(jì)所述第一存儲(chǔ)陣列接收所述主機(jī)發(fā)送的數(shù)據(jù)的總量。以及,接收所述第二存儲(chǔ)陣列發(fā)送的所述第二存儲(chǔ)陣列接收所述主機(jī)發(fā)送的數(shù)據(jù)的總量。
處理單元813,用于確定所述第一存儲(chǔ)陣列接收所述主機(jī)發(fā)送的數(shù)據(jù)的總量大于所述第二存儲(chǔ)陣列接收所述主機(jī)發(fā)送的數(shù)據(jù)的總量。以及,在所述第一存儲(chǔ)陣列與所述仲裁服務(wù)器之間的通信發(fā)生故障和第二存儲(chǔ)陣列與所述仲裁服務(wù)器之間的通信發(fā)生故障時(shí),當(dāng)所述第一存儲(chǔ)陣列與所述第二存儲(chǔ)陣列 之間的鏈路發(fā)生故障時(shí),繼續(xù)接收所述主機(jī)發(fā)送的數(shù)據(jù)。
本發(fā)明實(shí)施例中的中的統(tǒng)計(jì)單元可以通過方法步驟中的S501執(zhí)行,處理單元可以通過方法步驟中的S502執(zhí)行。
圖9為本發(fā)明實(shí)施例提供的一種存儲(chǔ)陣列設(shè)備示意圖。
如圖9所示,所述設(shè)備包括:處理器901、存儲(chǔ)器902、通信接口903和總線904。其中,處理器901、存儲(chǔ)器902和通信接口903通過總線904實(shí)現(xiàn)彼此之間的通信連接。
處理器901可以采用通用的中央處理器(Central Processing Unit,CPU),微處理器,應(yīng)用專用集成電路(Application Specific Integrated Circuit,ASIC),或者一個(gè)或多個(gè)集成電路,用于執(zhí)行相關(guān)程序,以實(shí)現(xiàn)前述本發(fā)明方法實(shí)施例所提供的技術(shù)方案。
存儲(chǔ)器902可以是只讀存儲(chǔ)器(Read Only Memory,ROM),靜態(tài)存儲(chǔ)設(shè)備,動(dòng)態(tài)存儲(chǔ)設(shè)備或者隨機(jī)存取存儲(chǔ)器(Random Access Memory,RAM)。存儲(chǔ)器902可以存儲(chǔ)操作系統(tǒng)和其他應(yīng)用程序。在通過軟件或者固件來實(shí)現(xiàn)本發(fā)明實(shí)施例提供的技術(shù)方案時(shí),用于實(shí)現(xiàn)本發(fā)明前述方法實(shí)施例提供的任一可選技術(shù)方案的程序代碼保存在存儲(chǔ)器902中,并由處理器901來執(zhí)行。通信接口903用以與其他交換機(jī)或控制服務(wù)器通信。
總線904可包括一通路,在設(shè)備各個(gè)部件(例如處理器901、存儲(chǔ)器902和通信接口903)之間傳送信息。
專業(yè)人員應(yīng)該還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(RAM)、內(nèi)存、只讀存儲(chǔ)器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動(dòng)磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。
以上所述的具體實(shí)施方式,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施方式而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。