本發(fā)明涉及通信領(lǐng)域,具體而言,涉及一種數(shù)據(jù)讀寫方法及裝置。
背景技術(shù):
相關(guān)技術(shù)中的容災(zāi)解決方案一般是單一的數(shù)據(jù)中心,數(shù)據(jù)中心內(nèi)的存儲(chǔ)由存儲(chǔ)磁陣提供服務(wù)。存儲(chǔ)磁陣由存儲(chǔ)控制器和磁盤兩部分構(gòu)成。其中,存儲(chǔ)控制器為雙控,存儲(chǔ)控制器后端為雙控可見的若干磁盤,當(dāng)一個(gè)存儲(chǔ)控制器節(jié)點(diǎn)故障后,雙控另一節(jié)點(diǎn)自動(dòng)接管達(dá)到抗擊單點(diǎn)存儲(chǔ)控制器故障的目的。通過異步備份的方式備份到另一個(gè)地點(diǎn),以實(shí)現(xiàn)異地?cái)?shù)據(jù)容災(zāi)。這種方式一旦數(shù)據(jù)中心的磁陣特別是磁盤發(fā)生災(zāi)難損壞,只能依靠上述的異步備份來恢復(fù),異步恢復(fù)的時(shí)間長并且數(shù)據(jù)非實(shí)時(shí)同步備份會(huì)有部分?jǐn)?shù)據(jù)丟失。相關(guān)技術(shù)中的另外一種解決方法是設(shè)置兩個(gè)數(shù)據(jù)中心,主數(shù)據(jù)中心數(shù)據(jù)實(shí)時(shí)備份到備用數(shù)據(jù)中心,但是備用數(shù)據(jù)中心不能提供服務(wù),災(zāi)難發(fā)生后需要手動(dòng)切換到備用數(shù)據(jù)中心,恢復(fù)時(shí)間無法滿足不斷業(yè)務(wù)的需求。主備模式下,備用站點(diǎn)無法提供服務(wù),造成資源浪費(fèi),并且用戶的數(shù)據(jù)需要兩數(shù)據(jù)中心都成功寫入,每秒進(jìn)行讀寫操作的次數(shù)(input/outputoperationspersecond,簡(jiǎn)稱為iops)會(huì)有一定的下降。
針對(duì)相關(guān)技術(shù)中存在的資源浪費(fèi)以及數(shù)據(jù)讀寫效率低的問題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種數(shù)據(jù)讀寫方法及裝置,以至少解決相關(guān)技術(shù)中存在的資源浪費(fèi)以及數(shù)據(jù)讀寫效率低的問題。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)讀寫方法,包括:確定兩個(gè)以上用于數(shù)據(jù)讀寫的存儲(chǔ)磁陣;利用所述兩個(gè)以上的存儲(chǔ)磁陣進(jìn)行數(shù)據(jù)讀寫。
可選地,在上述兩個(gè)以上的存儲(chǔ)磁陣為兩個(gè)存儲(chǔ)磁陣的情況下,利用上述兩個(gè)以上的存儲(chǔ)磁陣進(jìn)行數(shù)據(jù)讀寫包括:接收用于請(qǐng)求寫入第一預(yù)定數(shù)據(jù)的數(shù)據(jù)寫請(qǐng)求;依據(jù)所述數(shù)據(jù)寫請(qǐng)求,將所述第一預(yù)定數(shù)據(jù)寫入所述兩個(gè)存儲(chǔ)磁陣。
可選地,將上述第一預(yù)定數(shù)據(jù)寫入所述兩個(gè)存儲(chǔ)磁陣包括:確定所述兩個(gè)存儲(chǔ)磁陣中第一存儲(chǔ)磁陣寫數(shù)據(jù)成功,第二存儲(chǔ)磁陣寫數(shù)據(jù)失敗;記錄用于存儲(chǔ)所述第一預(yù)定數(shù)據(jù)的所述兩個(gè)存儲(chǔ)磁陣中相同的存儲(chǔ)塊;在所述第二存儲(chǔ)磁陣恢復(fù)正常的情況下,依據(jù)所述相同的存儲(chǔ)塊,將所述第一存儲(chǔ)磁陣寫入成功的數(shù)據(jù)鏡像同步到所述第二存儲(chǔ)磁陣中。
可選地,在確定所述兩個(gè)存儲(chǔ)磁陣中第一存儲(chǔ)磁陣寫數(shù)據(jù)成功,所述第二存儲(chǔ)磁陣寫數(shù)據(jù)失敗之后,還包括:停止向所述第二存儲(chǔ)磁陣寫入所述第一預(yù)定數(shù)據(jù)。
可選地,記錄用于存儲(chǔ)所述第一預(yù)定數(shù)據(jù)的所述兩個(gè)存儲(chǔ)磁陣中相同的所述存儲(chǔ)塊包括:利用位圖bitmap標(biāo)識(shí)的方式記錄所述存儲(chǔ)塊,和/或,通過日志記錄的方式記錄所述存儲(chǔ)塊。
可選地,利用上述兩個(gè)以上的存儲(chǔ)磁陣進(jìn)行數(shù)據(jù)讀寫包括:接收用于請(qǐng)求讀取第二預(yù)定數(shù)據(jù)的數(shù)據(jù)讀請(qǐng)求;接收所述兩個(gè)以上的存儲(chǔ)磁陣中的第三存儲(chǔ)磁陣返回的所述第二預(yù)定數(shù)據(jù)中的部分?jǐn)?shù)據(jù)和所述兩個(gè)以上的存儲(chǔ)磁陣中的第四存儲(chǔ)磁陣返回的所述第二預(yù)定數(shù)據(jù)中除所述部分?jǐn)?shù)據(jù)外的數(shù)據(jù)。
可選地,確定兩個(gè)以上用于數(shù)據(jù)讀寫的存儲(chǔ)磁陣包括:創(chuàng)建兩個(gè)以上新的存儲(chǔ)磁陣;或者,將已存在的預(yù)定存儲(chǔ)磁陣升級(jí)為雙活存儲(chǔ)磁陣,其中,所述雙活存儲(chǔ)磁陣包括所述預(yù)定存儲(chǔ)磁陣和復(fù)制所述預(yù)定存儲(chǔ)磁陣后得到的復(fù)制存儲(chǔ)磁陣。
根據(jù)本發(fā)明的另一方面,提供了一種數(shù)據(jù)讀寫裝置,其特征在于,包括:確定模塊,用于確定兩個(gè)以上用于數(shù)據(jù)讀寫的存儲(chǔ)磁陣;讀寫模塊,用于利用所述兩個(gè)以上的存儲(chǔ)磁陣進(jìn)行數(shù)據(jù)讀寫。
可選地,所述讀寫模塊包括:第一接收單元,用于在所述兩個(gè)以上的存儲(chǔ)磁陣為兩個(gè)存儲(chǔ)磁陣的情況下,接收用于請(qǐng)求寫入第一預(yù)定數(shù)據(jù)的數(shù)據(jù)寫請(qǐng)求;寫入單元,用于依據(jù)所述數(shù)據(jù)寫請(qǐng)求,將所述第一預(yù)定數(shù)據(jù)寫入所述兩個(gè)存儲(chǔ)磁陣。
可選地,所述寫入單元包括:確定子單元,用于確定所述兩個(gè)存儲(chǔ)磁陣中第一存儲(chǔ)磁陣寫數(shù)據(jù)成功,第二存儲(chǔ)磁陣寫數(shù)據(jù)失??;記錄子單元,用于記錄用于存儲(chǔ)所述第一預(yù)定數(shù)據(jù)的所述兩個(gè)存儲(chǔ)磁陣中相同的存儲(chǔ)塊;同步子單元,用于在所述第二存儲(chǔ)磁陣恢復(fù)正常的情況下,依據(jù)所述相同的存儲(chǔ)塊,將所述第一存儲(chǔ)磁陣寫入成功的數(shù)據(jù)鏡像同步到所述第二存儲(chǔ)磁陣中。
可選地,所述寫入單元還包括:停止子單元,用于在確定所述兩個(gè)存儲(chǔ)磁陣中第一存儲(chǔ)磁陣寫數(shù)據(jù)成功,所述第二存儲(chǔ)磁陣寫數(shù)據(jù)失敗之后,停止向所述第二存儲(chǔ)磁陣寫入所述第一預(yù)定數(shù)據(jù)。
可選地,所述記錄子單元通過如下方式記錄用于存儲(chǔ)所述第一預(yù)定數(shù)據(jù)的所述兩個(gè)存儲(chǔ)磁陣中相同的存儲(chǔ)塊:利用位圖bitmap標(biāo)識(shí)的方式記錄所述存儲(chǔ)塊,和/或,通過日志記錄的方式記錄所述存儲(chǔ)塊。
可選地,所述讀寫模塊包括:第二接收單元,用于接收用于請(qǐng)求讀取第二預(yù)定數(shù)據(jù)的數(shù)據(jù)讀請(qǐng)求;第三接收單元,用于接收所述兩個(gè)以上的存儲(chǔ)磁陣中的第三存儲(chǔ)磁陣返回的所述第二預(yù)定數(shù)據(jù)中的部分?jǐn)?shù)據(jù)和所述兩個(gè)以上的存儲(chǔ)磁陣中的第四存儲(chǔ)磁陣返回的所述第二預(yù)定數(shù)據(jù)中除所述部分?jǐn)?shù)據(jù)外的數(shù)據(jù)。
可選地,所述確定模塊包括:創(chuàng)建單元,用于創(chuàng)建兩個(gè)以上新的存儲(chǔ)磁陣;或者,升級(jí)單元,用于將已存在的預(yù)定存儲(chǔ)磁陣升級(jí)為雙活存儲(chǔ)磁陣,其中,所述雙活存儲(chǔ)磁陣包括所述預(yù)定存儲(chǔ)磁陣和復(fù)制所述預(yù)定存儲(chǔ)磁陣后得到的復(fù)制存儲(chǔ)磁陣。
通過本發(fā)明,采用確定兩個(gè)以上用于數(shù)據(jù)讀寫的存儲(chǔ)磁陣;利用所述兩個(gè)以上的存儲(chǔ)磁陣進(jìn)行數(shù)據(jù)讀寫,解決了相關(guān)技術(shù)中存在的資源浪費(fèi)以及數(shù)據(jù)讀寫效率低的問題,進(jìn)而達(dá)到了避免資源浪費(fèi)以及提高數(shù)據(jù)讀寫效率的效果。
附圖說明
此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)讀寫方法的流程圖;
圖2是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)讀寫裝置的結(jié)構(gòu)框圖;
圖3是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)讀寫裝置中讀寫模塊24的結(jié)構(gòu)框圖一;
圖4是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)讀寫裝置中寫入單元34的結(jié)構(gòu)框圖;
圖5是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)讀寫裝置中寫入單元34的優(yōu)選結(jié)構(gòu)框圖;
圖6是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)讀寫裝置中讀寫模塊24的結(jié)構(gòu)框圖二;
圖7是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)讀寫裝置中確定模塊22的結(jié)構(gòu)框圖;
圖8是根據(jù)本發(fā)明實(shí)施例的整體雙活系統(tǒng)結(jié)構(gòu)框圖;
圖9是根據(jù)本發(fā)明實(shí)施例的雙活lun的創(chuàng)建,雙活數(shù)據(jù)分發(fā)以及異常處理的流程圖。
具體實(shí)施方式
下文中將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。
在本實(shí)施例中提供了一種數(shù)據(jù)讀寫方法,圖1是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)讀寫方法的流程圖,如圖1所示,該流程包括如下步驟:
步驟s102,確定兩個(gè)以上用于數(shù)據(jù)讀寫的存儲(chǔ)磁陣;
步驟s104,利用該兩個(gè)以上的存儲(chǔ)磁陣進(jìn)行數(shù)據(jù)讀寫。
通過上述方法,利用兩個(gè)以上存儲(chǔ)磁陣進(jìn)行數(shù)據(jù)讀寫,可以在保證各存儲(chǔ)磁陣互為備份的前提下,提高各存儲(chǔ)磁陣的資源效率,并且,利用多個(gè)存儲(chǔ)磁陣提供數(shù)據(jù)讀寫服務(wù)還可以提高數(shù)據(jù)讀寫的效率,從而解決了相關(guān)技術(shù)中存在的資源浪費(fèi)以及數(shù)據(jù)讀寫效率低的問題,進(jìn)而達(dá)到了避免資源浪費(fèi)以及提高數(shù)據(jù)讀寫效率的效果。
在一個(gè)可選的實(shí)施例中,在上述兩個(gè)以上的存儲(chǔ)磁陣為兩個(gè)存儲(chǔ)磁陣的情況下,利用上述兩個(gè)以上的存儲(chǔ)磁陣進(jìn)行數(shù)據(jù)讀寫包括:接收用于請(qǐng)求寫入第一預(yù)定數(shù)據(jù)的數(shù)據(jù)寫請(qǐng)求;依據(jù)該數(shù)據(jù)寫請(qǐng)求,將第一預(yù)定數(shù)據(jù)寫入上述兩個(gè)存儲(chǔ)磁陣。
在一個(gè)可選的實(shí)施例中,在將上述第一預(yù)定數(shù)據(jù)寫入上述兩個(gè)存儲(chǔ)磁陣包括:確定兩個(gè)存儲(chǔ)磁陣中第一存儲(chǔ)磁陣寫數(shù)據(jù)成功,第二存儲(chǔ)磁陣寫數(shù)據(jù)失敗;記錄用于存儲(chǔ)該第一預(yù)定數(shù)據(jù)的兩個(gè)存儲(chǔ)磁陣中相同的存儲(chǔ)塊;在該第二存儲(chǔ)磁陣恢復(fù)正常的情況下,依據(jù)上述相同的存儲(chǔ)塊,將第一存儲(chǔ)磁陣寫入成功的數(shù)據(jù)鏡像同步到第二存儲(chǔ)磁陣中。通過該實(shí)施例,可以保證兩個(gè)存儲(chǔ)磁陣中的數(shù)據(jù)始終一致,從而可以在一個(gè)存儲(chǔ)磁陣發(fā)生故障后,由另一個(gè)存儲(chǔ)磁陣提供數(shù)據(jù)讀寫服務(wù),保證業(yè)務(wù)的正常進(jìn)行。
在一個(gè)可選的實(shí)施例中,在確定上述兩個(gè)存儲(chǔ)磁陣中第一存儲(chǔ)磁陣寫數(shù)據(jù)成功,第二存儲(chǔ)磁陣寫數(shù)據(jù)失敗之后,還包括:停止向第二存儲(chǔ)磁陣寫入第一預(yù)定數(shù)據(jù)。即,當(dāng)?shù)诙鎯?chǔ)磁陣中無法成功寫入數(shù)據(jù)后,說明該第二存儲(chǔ)磁陣可能出現(xiàn)了故障,或者可能是當(dāng)前用于寫入數(shù)據(jù)的磁盤出現(xiàn)了故障,而導(dǎo)致第二存儲(chǔ)磁陣無法提供正常的數(shù)據(jù)讀寫服務(wù),此時(shí)可以將該第二存儲(chǔ)磁陣置于不可用狀態(tài),等第二存儲(chǔ)磁陣恢復(fù)正常后,再利用該第二存儲(chǔ)磁陣進(jìn)行數(shù)據(jù)讀寫服務(wù)。從而有效保證了數(shù)據(jù)讀寫的正確率。
在一個(gè)可選的實(shí)施例中,記錄用于存儲(chǔ)上述第一預(yù)定數(shù)據(jù)的兩個(gè)存儲(chǔ)磁陣中相同的存儲(chǔ)塊包括:利用位圖bitmap標(biāo)識(shí)的方式記錄上述存儲(chǔ)塊,和/或,通過日志記錄的方式記錄上述存儲(chǔ)塊。當(dāng)然,上述的存儲(chǔ)方式僅是兩種示例,還可以采用其他的方式記錄,在此,不一一列舉。
在一個(gè)可選的實(shí)施例中,利用上述兩個(gè)以上的存儲(chǔ)磁陣進(jìn)行數(shù)據(jù)讀寫包括:接收用于請(qǐng)求讀取第二預(yù)定數(shù)據(jù)的數(shù)據(jù)讀請(qǐng)求;接收上述兩個(gè)以上的存儲(chǔ)磁陣中的第三存儲(chǔ)磁陣返回的上述第二預(yù)定數(shù)據(jù)中的部分?jǐn)?shù)據(jù)和上述兩個(gè)以上的存儲(chǔ)磁陣中的第四存儲(chǔ)磁陣返回的上述第二預(yù)定數(shù)據(jù)中除上述部分?jǐn)?shù)據(jù)外的數(shù)據(jù)。其中,上述的第三存儲(chǔ)磁陣可以是一個(gè)或多個(gè),上述的第四存儲(chǔ)磁陣也可以是一個(gè)或多個(gè),通過上述的第三存儲(chǔ)磁陣和第四存儲(chǔ)磁陣同時(shí)提供數(shù)據(jù)讀服務(wù),可以提高數(shù)據(jù)讀取效率,節(jié)省數(shù)據(jù)讀取時(shí)間。
上述的確定存儲(chǔ)磁陣的方式有多種,在一個(gè)可選的實(shí)施例中,確定兩個(gè)以上用于數(shù)據(jù)讀寫的存儲(chǔ)磁陣包括:創(chuàng)建兩個(gè)以上新的存儲(chǔ)磁陣;或者,將已存在的預(yù)定存儲(chǔ)磁陣升級(jí)為雙活存儲(chǔ)磁陣,其中,該雙活存儲(chǔ)磁陣包括上述預(yù)定存儲(chǔ)磁陣和復(fù)制該預(yù)定存儲(chǔ)磁陣后得到的復(fù)制存儲(chǔ)磁陣。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實(shí)施例的方法可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
在本實(shí)施例中還提供了一種數(shù)據(jù)讀寫裝置,該裝置用于實(shí)現(xiàn)上述實(shí)施例及優(yōu)選實(shí)施方式,已經(jīng)進(jìn)行過說明的不再贅述。如以下所使用的,術(shù)語“模塊”可以實(shí)現(xiàn)預(yù)定功能的軟件和/或硬件的組合。盡管以下實(shí)施例所描述的裝置較佳地以軟件來實(shí)現(xiàn),但是硬件,或者軟件和硬件的組合的實(shí)現(xiàn)也是可能并被構(gòu)想的。
圖2是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)讀寫裝置的結(jié)構(gòu)框圖,如圖2所示,該裝置包括確定模塊22和讀寫模塊24,下面對(duì)該裝置進(jìn)行說明。
確定模塊22,用于確定兩個(gè)以上用于數(shù)據(jù)讀寫的存儲(chǔ)磁陣;讀寫模塊24,連接至上述確定模塊22,用于利用上述兩個(gè)以上的存儲(chǔ)磁陣進(jìn)行數(shù)據(jù)讀寫。
圖3是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)讀寫裝置中讀寫模塊24的結(jié)構(gòu)框圖一,如圖3所示,該讀寫模塊24包括第一接收單元32和寫入單元34,下面對(duì)該讀寫模塊24進(jìn)行說明。
第一接收單元32,用于在上述兩個(gè)以上的存儲(chǔ)磁陣為兩個(gè)存儲(chǔ)磁陣的情況下,接收用于請(qǐng)求寫入第一預(yù)定數(shù)據(jù)的數(shù)據(jù)寫請(qǐng)求;寫入單元34,連接至上述第一接收單元32,用于依據(jù)上述數(shù)據(jù)寫請(qǐng)求,將第一預(yù)定數(shù)據(jù)寫入兩個(gè)存儲(chǔ)磁陣。
圖4是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)讀寫裝置中寫入單元34的結(jié)構(gòu)框圖,如圖4所示,該寫入單元34包括確定子單元42、記錄子單元44和同步子單元46,下面對(duì)該寫入單元34進(jìn)行說明。
確定子單元42,用于確定兩個(gè)存儲(chǔ)磁陣中第一存儲(chǔ)磁陣寫數(shù)據(jù)成功,第二存儲(chǔ)磁陣寫數(shù)據(jù)失敗;記錄子單元44,連接至上述確定子單元42,用于記錄用于存儲(chǔ)上述第一預(yù)定數(shù)據(jù)的兩個(gè)存儲(chǔ)磁陣中相同的存儲(chǔ)塊;同步子單元46,連接至上述記錄子單元44,用于在上述第二存儲(chǔ)磁陣恢復(fù)正常的情況下,依據(jù)上述相同的存儲(chǔ)塊,將第一存儲(chǔ)磁陣寫入成功的數(shù)據(jù)鏡像同步到上述第二存儲(chǔ)磁陣中。
圖5是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)讀寫裝置中寫入單元34的優(yōu)選結(jié)構(gòu)框圖,如圖5所示,該寫入單元34除包括圖4所示的單元外,還包括停止子單元52,下面對(duì)該寫入單元34進(jìn)行說明。
停止子單元52,連接至上述確定子單元42,用于在確定上述兩個(gè)存儲(chǔ)磁陣中第一存儲(chǔ)磁陣寫數(shù)據(jù)成功,第二存儲(chǔ)磁陣寫數(shù)據(jù)失敗之后,停止向第二存儲(chǔ)磁陣寫入上述第一預(yù)定數(shù)據(jù)。
在一個(gè)可選的實(shí)施例中,上述記錄子單元44可以通過如下方式記錄用于存儲(chǔ)第一預(yù)定數(shù)據(jù)的兩個(gè)存儲(chǔ)磁陣中相同的存儲(chǔ)塊:利用位圖bitmap標(biāo)識(shí)的方式記錄上述存儲(chǔ)塊,和/或,通過日志記錄的方式記錄上述存儲(chǔ)塊。
圖6是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)讀寫裝置中讀寫模塊24的結(jié)構(gòu)框圖二,如圖6所示,該讀寫模塊24包括第二接收單元62和第三接收單元64,下面對(duì)該讀寫模塊24進(jìn)行說明。
第二接收單元62,用于接收用于請(qǐng)求讀取第二預(yù)定數(shù)據(jù)的數(shù)據(jù)讀請(qǐng)求;第三接收單元64,連接至上述第二接收單元62,用于接收上述兩個(gè)以上的存儲(chǔ)磁陣中的第三存儲(chǔ)磁陣返回的第二預(yù)定數(shù)據(jù)中的部分?jǐn)?shù)據(jù)和上述兩個(gè)以上的存儲(chǔ)磁陣中的第四存儲(chǔ)磁陣返回的第二預(yù)定數(shù)據(jù)中除上述部分?jǐn)?shù)據(jù)外的數(shù)據(jù)。
圖7是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)讀寫裝置中確定模塊22的結(jié)構(gòu)框圖,如圖7所示,該確定模塊22包括創(chuàng)建單元72或者升級(jí)單元74,下面對(duì)該確定模塊22進(jìn)行說明。
創(chuàng)建單元72,用于創(chuàng)建兩個(gè)以上新的存儲(chǔ)磁陣;
升級(jí)單元74,用于將已存在的預(yù)定存儲(chǔ)磁陣升級(jí)為雙活存儲(chǔ)磁陣,其中,該雙活存儲(chǔ)磁陣包括上述預(yù)定存儲(chǔ)磁陣和復(fù)制該預(yù)定存儲(chǔ)磁陣后得到的復(fù)制存儲(chǔ)磁陣。
下面以兩個(gè)存儲(chǔ)磁陣為例,對(duì)本發(fā)明進(jìn)行說明:
在本發(fā)明實(shí)施例中提出了一種兩個(gè)數(shù)據(jù)中心(每個(gè)數(shù)據(jù)中心中均包括一個(gè)存儲(chǔ)磁陣)可以同時(shí)提供業(yè)務(wù)服務(wù),由于同時(shí)可以接入,通過負(fù)載均衡機(jī)制效率得到較大提升,通過同步鏡像技術(shù),數(shù)據(jù)中心數(shù)據(jù)完全實(shí)時(shí)一致,并且站點(diǎn)資源可以互相接管,無論是出現(xiàn)單點(diǎn)磁陣控制器故障還是磁盤故障都不會(huì)對(duì)用戶業(yè)務(wù)造成中斷。
為達(dá)到上述目的,本發(fā)明實(shí)施例中提供了一種兩地雙活存儲(chǔ)系統(tǒng),該系統(tǒng)包括兩個(gè)數(shù)據(jù)中心。其中,每個(gè)數(shù)據(jù)中心包括一套存儲(chǔ)磁陣以及光纖交換機(jī)若干。存儲(chǔ)磁陣由雙控存儲(chǔ)控制器和磁盤構(gòu)成。其中雙控存儲(chǔ)控制器是兩個(gè)高可用可互相接管的單板組成,每個(gè)單板為一個(gè)節(jié)點(diǎn)。兩個(gè)數(shù)據(jù)中心可以使用光纖連接,并且每個(gè)存儲(chǔ)磁陣的兩個(gè)雙控存儲(chǔ)控制器組成集群,形成雙活的控制器主體。為了保證系統(tǒng)的可靠性,集群需要一個(gè)仲裁設(shè)備,以防止集群通信異常后發(fā)生腦裂造成的資源爭(zhēng)搶問題。下面對(duì)該系統(tǒng)中的各部分進(jìn)行說明:
存儲(chǔ)磁陣,在雙活存儲(chǔ)系統(tǒng)中,是存儲(chǔ)用戶數(shù)據(jù)的主體。存儲(chǔ)磁陣對(duì)用戶通過小型計(jì)算機(jī)系統(tǒng)接口(internetsmallcomputersysteminterface,簡(jiǎn)稱為iscsi)或者光纖通道(fibrechannel,簡(jiǎn)稱為fc)提供邏輯單元號(hào)(logicalunitnumbe,簡(jiǎn)稱為lun)訪問服務(wù)。兩地存儲(chǔ)磁陣中的雙活存儲(chǔ)控制器構(gòu)成一個(gè)集群。存儲(chǔ)控制器用于雙活的核心控制設(shè)備,負(fù)責(zé)雙活集群管理,以及卷管理,以及同步鏡像實(shí)現(xiàn)。
光纖交換機(jī),兩地的雙活存儲(chǔ)控制器的用戶接入前端以及內(nèi)部數(shù)據(jù)傳輸?shù)暮蠖司W(wǎng)絡(luò)的連接都使用光纖,以達(dá)到低延時(shí)目的。
仲裁設(shè)備,通常仲裁設(shè)備放在第三地點(diǎn),可以是一個(gè)仲裁服務(wù)器來進(jìn)行投票決定集群中的成員哪些可以繼續(xù)提供服務(wù)。也可以使一個(gè)以ip網(wǎng)絡(luò)構(gòu)建的存儲(chǔ)網(wǎng)絡(luò)ipsan設(shè)備,通過資源爭(zhēng)搶,占用多數(shù)資源者繼續(xù)提供服務(wù)。
在本發(fā)明實(shí)施例中提供了一種兩地雙活存儲(chǔ)系統(tǒng)及實(shí)現(xiàn)方法,其中,系統(tǒng)中存儲(chǔ)兩個(gè)真實(shí)的lun,而對(duì)用戶呈現(xiàn)則只能看到一個(gè)雙活的lun。這兩個(gè)真實(shí)lun,其中一個(gè)是主lun,另外一個(gè)是副lun,這兩個(gè)真實(shí)lun分別由兩地的存儲(chǔ)磁陣各提供一個(gè)。用戶將已存在的主lun變成雙活時(shí),副lun是在另一數(shù)據(jù)中心創(chuàng)建出來的。用戶只能看到雙活lun即主lun。或者用戶創(chuàng)建一個(gè)全新的雙活的lun,會(huì)自動(dòng)創(chuàng)建一個(gè)主lun作為雙活lun,并在另一數(shù)據(jù)中心自動(dòng)創(chuàng)建一個(gè)副lun。副lun只是雙活lun的一部分,不對(duì)外單獨(dú)提供服務(wù)。
當(dāng)有了由主副lun組成的雙活lun之后,同步鏡像模塊進(jìn)行將主lun的數(shù)據(jù)在后臺(tái)按磁盤塊進(jìn)行數(shù)據(jù)的鏡像,直至數(shù)據(jù)全部鏡像到副lun。在此期間,副lun不能提供服務(wù),當(dāng)數(shù)據(jù)全部鏡像到副lun之后,系統(tǒng)將標(biāo)識(shí)副lun也可以提供訪問。后續(xù)的用戶寫操作,將同時(shí)進(jìn)行分發(fā)到主副lun。當(dāng)主副lun都寫成功,才能給用戶反饋操作結(jié)果,以達(dá)到兩端數(shù)據(jù)一致的目的。特別的,兩個(gè)數(shù)據(jù)中心的存儲(chǔ)磁陣都可以提供同一個(gè)lun的用戶訪問服務(wù),每,以提高系統(tǒng)利用率,提升iops。存儲(chǔ)磁陣接收到用戶的寫請(qǐng)求時(shí),進(jìn)行主副lun的同時(shí)分發(fā),并且只要都成功才會(huì)返回用戶成功,保證主副lun的數(shù)據(jù)實(shí)時(shí)一致。
當(dāng)用戶寫主副lun發(fā)生異常后,例如寫副lun失敗,則用戶的寫當(dāng)次寫操作就會(huì)記錄下來,可以使用bitmap來標(biāo)識(shí)當(dāng)前寫的是哪個(gè)塊,也可以將此操作記錄日志。并標(biāo)識(shí)副lun不可用,避免讀取副lun造成數(shù)據(jù)錯(cuò)誤。后續(xù)異常排除后,系統(tǒng)觸發(fā)進(jìn)行副lun數(shù)據(jù)的恢復(fù),同步鏡像模塊就開始重放bitmap,將bitmap中標(biāo)識(shí)的被更改的塊從主lun中讀取出來并寫到副lun中,最終主副lun的數(shù)據(jù)會(huì)達(dá)到一致,副lun開始提供服務(wù)。如果是采用記錄日志的方式,同樣的將日志重放完后,主副lun的數(shù)據(jù)達(dá)到一致,副lun開始提供服務(wù)。
當(dāng)用戶寫操作發(fā)生異常后,會(huì)有集群決策模塊(同上述的寫入單元34)來決策本次寫操作的操作結(jié)果以及更改主副lun的可用狀態(tài),以避免集群多節(jié)點(diǎn)間的得到的信息不能嚴(yán)格實(shí)時(shí)一致的問題。集群決策模塊可以通過集群事務(wù)的方式,來達(dá)到集群間的操作更改一致,當(dāng)多個(gè)集群成員同時(shí)發(fā)生錯(cuò)誤時(shí),通過這種機(jī)制可以有效做到錯(cuò)誤通知順序被集群決策模塊執(zhí)行,各個(gè)錯(cuò)誤的處理時(shí),都能及時(shí)得到正確的信息。
為避免集群通道網(wǎng)絡(luò)異常引起的腦裂問題,還需要一個(gè)第三方仲裁設(shè)備,可以是一個(gè)ipsan設(shè)備,通過爭(zhēng)搶此設(shè)備的方式?jīng)Q定可以繼續(xù)提供服務(wù)的節(jié)點(diǎn),也可以是一個(gè)仲裁服務(wù)器進(jìn)行投票決定繼續(xù)提供服務(wù)的節(jié)點(diǎn)。
圖8是根據(jù)本發(fā)明實(shí)施例的整體雙活系統(tǒng)結(jié)構(gòu)框圖,如圖8所示,整個(gè)雙活系統(tǒng)時(shí)部署在兩個(gè)數(shù)據(jù)中心,分別是數(shù)據(jù)中心a和數(shù)據(jù)中心b。每個(gè)數(shù)據(jù)中心包括若干實(shí)體,例如數(shù)據(jù)中心a中,包含用戶a以及用戶a工作的用戶服務(wù)器a(同上述的第一接收單元32和第二接收單元62、第三接收單元64)。用戶服務(wù)器a通過光纖以及fc交換機(jī)連接到存儲(chǔ)磁陣a上。存儲(chǔ)磁陣a包括雙控存儲(chǔ)控制器a(同上述的寫入單元34),雙控存儲(chǔ)控制器a連接磁盤a,磁盤a是指若干塊磁盤的總體。
如圖8所示,兩個(gè)數(shù)據(jù)中心的用戶服務(wù)器a和用戶服務(wù)器b通過fc交換機(jī)相互連通,并且數(shù)據(jù)中心a和數(shù)據(jù)中心b的雙控存儲(chǔ)控制器對(duì)用戶的接入網(wǎng)絡(luò)通過fc交換機(jī)是相互連通的。數(shù)據(jù)中心的兩個(gè)雙控存儲(chǔ)控制器的后端網(wǎng)絡(luò)用于內(nèi)部數(shù)據(jù)的傳送,如本專利中的同步鏡像通道,也使用fc交換機(jī)連通。兩個(gè)數(shù)據(jù)中心需要有集群通道進(jìn)行集群消息以及心跳檢測(cè)。另外,集群間還需要一個(gè)第三方仲裁,防止集群通道發(fā)生異常后產(chǎn)生的腦裂問題。
圖9是根據(jù)本發(fā)明實(shí)施例的雙活lun的創(chuàng)建,雙活數(shù)據(jù)分發(fā)以及異常處理的流程圖,如圖9所示,該流程包括如下步驟:
步驟s901:用戶發(fā)起創(chuàng)建一個(gè)雙活lun或?qū)⒁粋€(gè)lun升級(jí)為雙活lun。
本發(fā)明實(shí)施例中雙活lun保護(hù)兩個(gè)對(duì)象主lun和副lun。對(duì)用戶呈現(xiàn)用戶看到的雙活lun就是主lun。副lun不對(duì)外呈現(xiàn)。
步驟s902:如果是創(chuàng)建一個(gè)雙活lun,則兩地的存儲(chǔ)磁陣分別新建主lun和副lun的請(qǐng)求。如果是將lun升級(jí)為雙活,則是將該lun變成主lun,并向另一個(gè)數(shù)據(jù)中心的存儲(chǔ)磁陣發(fā)起創(chuàng)建副lun的請(qǐng)求。對(duì)用戶呈現(xiàn)的是主lun。
步驟s903:在后臺(tái),同步鏡像模塊將主lun的數(shù)據(jù)全部復(fù)制到副lun上,此時(shí)主副lun數(shù)據(jù)完全一致,副lun開始提供訪問。
雙活lun創(chuàng)建后,如果是新創(chuàng)建的雙活lun,則說明主副lun沒有數(shù)據(jù),都可以立即提供訪問。如果是將lun升級(jí)為雙活,則主lun可能會(huì)有數(shù)據(jù),只能通過后臺(tái)將主lun的數(shù)據(jù)都鏡像到副lun上,等數(shù)據(jù)完全一致后,副lun可以提供訪問。
步驟s904:雙活存儲(chǔ)系統(tǒng)的各個(gè)節(jié)點(diǎn)都可以提供服務(wù),并且寫io會(huì)同時(shí)分發(fā)給主副lun。
經(jīng)過步驟s903后,用戶的寫請(qǐng)求的io會(huì)同時(shí)分發(fā)給主副lun,以達(dá)到主副lun數(shù)據(jù)完全一致的效果。
步驟s905:返回給用戶寫成功,繼續(xù)等待用戶的讀寫請(qǐng)求。
如果步驟s904中寫io同時(shí)分發(fā)給主副lun后,如果主副lun都返回寫成功,則返回給用戶寫成功,繼續(xù)等待用戶的讀寫請(qǐng)求。這樣就保證主副lun數(shù)據(jù)是實(shí)時(shí)一致。下一次用戶io請(qǐng)求則跟步驟s904一樣,如果用戶io主副lun都寫成功,則整個(gè)雙活系統(tǒng)健康的持續(xù)下去。
步驟s906:如果都寫失敗,返回用戶失敗,如果有一個(gè)成功,則通知集群決策模塊,集群決策將寫失敗的lun置為不可用。如副lun寫失敗,置副lun不可用。
當(dāng)用戶寫操作發(fā)生異常后,需要通知雙活系統(tǒng)的集群決策模塊,決策模塊將寫失敗的lun置為不可用。集群決策模塊可以通過集群事務(wù)的方式,來達(dá)到集群間的操作更改一致,當(dāng)多個(gè)集群成員同時(shí)發(fā)生錯(cuò)誤時(shí),通過這種機(jī)制可以有效做到錯(cuò)誤通知順序被集群決策模塊執(zhí)行,各個(gè)錯(cuò)誤的處理時(shí),都能及時(shí)得到正確的信息。
步驟s907:系統(tǒng)用bitmap來標(biāo)識(shí)本次更改的數(shù)據(jù)塊,或者用日志記錄本次更改的信息。
用戶的寫當(dāng)次寫操作就會(huì)記錄下來,例如寫副lun失敗,則可以使用bitmap來標(biāo)識(shí)當(dāng)前寫的是哪個(gè)塊,也可以將此操作記錄日志。為后續(xù)副lun的數(shù)據(jù)恢復(fù)做基礎(chǔ)。
步驟s908:后續(xù)副lun的寫入可以恢復(fù)后,系統(tǒng)更加失敗時(shí)的記錄信息進(jìn)行回放,將主lun中的數(shù)據(jù)鏡像到副lun,直至全部完成。副lun可以繼續(xù)提供服務(wù)。
經(jīng)過s908步驟后,雙活系統(tǒng)的主副lun又可以繼續(xù)提供服務(wù),下次用戶的寫請(qǐng)求io下發(fā)時(shí),就會(huì)跟步驟s904一樣,無論是s904步驟正常寫入還是異常,都會(huì)得到正確處理,并最終回到主副lun都可以提供服務(wù)的狀態(tài),保證整個(gè)系統(tǒng)中出現(xiàn)單點(diǎn)故障時(shí),不影響用戶的訪問。
需要說明的是,上述各個(gè)模塊是可以通過軟件或硬件來實(shí)現(xiàn)的,對(duì)于后者,可以通過以下方式實(shí)現(xiàn),但不限于此:上述模塊均位于同一處理器中;或者,上述模塊分別位于多個(gè)處理器中。
本發(fā)明的實(shí)施例還提供了一種存儲(chǔ)介質(zhì)??蛇x地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:
s1,確定兩個(gè)以上用于數(shù)據(jù)讀寫的存儲(chǔ)磁陣;
s2,利用該兩個(gè)以上的存儲(chǔ)磁陣進(jìn)行數(shù)據(jù)讀寫。
可選地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以包括但不限于:u盤、只讀存儲(chǔ)器(read-onlymemory,簡(jiǎn)稱為rom)、隨機(jī)存取存儲(chǔ)器(randomaccessmemory,簡(jiǎn)稱為ram)、移動(dòng)硬盤、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
可選地,在本實(shí)施例中,處理器根據(jù)存儲(chǔ)介質(zhì)中已存儲(chǔ)的程序代碼執(zhí)行上述的步驟s1-s2。
可選地,本實(shí)施例中的具體示例可以參考上述實(shí)施例及可選實(shí)施方式中所描述的示例,本實(shí)施例在此不再贅述。
顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。