一種寫數(shù)據(jù)方法、裝置和系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了寫數(shù)據(jù)技術(shù),第一控制器接收第一寫請(qǐng)求,所述第一寫請(qǐng)求攜帶有第一數(shù)據(jù)、第一寫地址以及所述LUN?ID;第一控制器申請(qǐng)鎖定所述LUN中所述第一寫地址的寫權(quán)限;第一控制器獲得所述第一寫地址寫權(quán)限以后,按照所述第一寫請(qǐng)求向第一控制器寫入第一數(shù)據(jù),以及向所述第二控制器發(fā)出第一寫子請(qǐng)求,所述寫子請(qǐng)求攜帶內(nèi)容與所述寫請(qǐng)求相同;第一控制器在所述第一控制器寫完第一數(shù)據(jù),并且接收到所述第一寫子請(qǐng)求的寫成功響應(yīng)消息以后,釋放鎖定的所述第一寫地址的寫權(quán)限。
【專利說(shuō)明】一種寫數(shù)據(jù)方法、裝置和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及IT領(lǐng)域,特別涉及一種存儲(chǔ)技術(shù)。
【背景技術(shù)】
[0002]傳統(tǒng)的災(zāi)備式數(shù)據(jù)中心或者兩地三中心(3Data Center,3DC)通過(guò)存儲(chǔ)陣列的遠(yuǎn)程復(fù)制技術(shù),可以把數(shù)據(jù)從本地的生產(chǎn)中心備份到異地的災(zāi)備中心中,以保障當(dāng)數(shù)據(jù)安全。但是如果生產(chǎn)中心癱瘓,需要較長(zhǎng)時(shí)間,例如數(shù)個(gè)小時(shí)才能啟動(dòng)災(zāi)備中心,也就是說(shuō)這種技術(shù)的恢復(fù)時(shí)間目標(biāo)(recovery time objectives, RT0)比較長(zhǎng)。
[0003]一種方案中,部署兩個(gè)數(shù)據(jù)中心,每個(gè)數(shù)據(jù)中心擁有一個(gè)控制器。一個(gè)控制器作為主控制器,另一個(gè)控制器作為從控制器。當(dāng)從控制器收到讀寫請(qǐng)求時(shí),把請(qǐng)求轉(zhuǎn)發(fā)給主控制器,由主控制器進(jìn)行處理。這種做法可以一定程度上減少RT0,但是在其處理流程中,需要控制器間進(jìn)行多次信息交互,時(shí)延仍然較大。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供一種數(shù)據(jù)寫技術(shù)。可以實(shí)現(xiàn)在多個(gè)控制器中寫入數(shù)據(jù)。
[0005]第一方面,本發(fā)明實(shí)施例提供一種寫數(shù)據(jù)方法,第一控制器設(shè)有第一邏輯單元號(hào)LUN,該方法:第一控制器接收第一寫請(qǐng)求,所述第一寫請(qǐng)求攜帶有第一待寫數(shù)據(jù)、第一寫地址以及所述LUN ID ;第一控制器申請(qǐng)鎖定所述LUN中所述第一寫地址的寫權(quán)限;第一控制器獲得所述第一寫地址寫權(quán)限以后,按照所述第一寫請(qǐng)求向第一控制器寫入第一待寫數(shù)據(jù),以及向所述第二控制器發(fā)出第一寫子請(qǐng)求,所述寫子請(qǐng)求攜帶內(nèi)容與所述寫請(qǐng)求相同;第一控制器在所述第一控制器寫完第一待寫數(shù)據(jù),并且接收到所述第一寫子請(qǐng)求的寫成功響應(yīng)消息以后,釋放鎖定的所述第一寫地址的寫權(quán)限。
[0006]第二方面,本發(fā)明實(shí)施例提供一種控制器,設(shè)有第一邏輯單元號(hào)LUN,所述LUN有LUN ID,該控制器包括處理器以及與處理器通信的存儲(chǔ)器,所述存儲(chǔ)器用于存儲(chǔ)程序指令,所述處理器用于執(zhí)行程序指令,該程序指令用于:接收寫請(qǐng)求,所述寫請(qǐng)求攜帶有待寫數(shù)據(jù)、寫地址以及所述LUNID ;
[0007]申請(qǐng)鎖定所述LUN中所述寫地址的寫權(quán)限;在所述鎖請(qǐng)求模塊獲得寫權(quán)限以后,按照所述寫請(qǐng)求向另一控制器寫入數(shù)據(jù),以及向所述另一控制器發(fā)出寫子請(qǐng)求,所述寫子請(qǐng)求攜帶內(nèi)容與所述寫請(qǐng)求相同;在所述第一控制器寫完數(shù)據(jù),并且接收到所述所述寫子請(qǐng)求寫成功響應(yīng)消息以后,釋放鎖定的所述寫地址的寫權(quán)限。
[0008]第三方面,本發(fā)明實(shí)施例提供一種寫數(shù)據(jù)系統(tǒng),包括第一控制器和第二控制器,第一控制器和第二控制器通信連接,其特征在于,第一控制器設(shè)有第一邏輯單元號(hào)LUN,第二控制器設(shè)有第二邏輯單元號(hào)LUN,所述第一邏輯單元號(hào)LUN和所述第二邏輯單元號(hào)LUN的LUN ID相同,容量相同,配置相同,其中:所述第一控制器,用于接收第一寫請(qǐng)求,所述第一寫請(qǐng)求攜帶有第一待寫數(shù)據(jù)、第一寫地址以及所述LUN ID ;申請(qǐng)鎖定所述第一寫地址的寫權(quán)限;獲得所述寫權(quán)限以后,按照所述寫請(qǐng)求向第一控制器寫入數(shù)據(jù),以及向所述第二控制器發(fā)出寫子請(qǐng)求,所述寫子請(qǐng)求攜帶內(nèi)容與所述寫請(qǐng)求相同;所述第二控制器,用于收到所述寫子請(qǐng)求后按照所述LUN ID所述第一寫地址寫入所述第一待寫數(shù)據(jù),然后通過(guò)所述通信連接發(fā)送寫成功響應(yīng)消息給所述第一控制器;所述第一控制器,還用于在本地完成所述第一待寫數(shù)據(jù)的寫入,并且接收到所述第二控制器寫成功響應(yīng)消息以后,釋放鎖定的所述第一寫地址的寫權(quán)限。
[0009]第四方面,本發(fā)明實(shí)施例提供一種讀數(shù)據(jù)方法,第一控制器設(shè)有第一邏輯單元號(hào)LUN,其特征在于,第二控制器設(shè)有第二邏輯單元號(hào)LUN,所述第一邏輯單元號(hào)LUN和所述第二邏輯單元號(hào)LUN的LUN ID相同,容量相同,配置相同,該方法包括:所述第一控制器接收第一服務(wù)器發(fā)出的第一讀請(qǐng)求,所述第一讀請(qǐng)求攜帶有所述LUN ID以及第一存儲(chǔ)地址;所述第一控制器查找所述LUN ID對(duì)應(yīng)的所述第一 LUN,按照第一存儲(chǔ)地址從所述第一 LUN中讀取數(shù)據(jù);所述第一控制器將從第一 LUN中讀取的數(shù)據(jù)返回給所述第一服務(wù)器;以及,在所述第一控制器將從第一 LUN中讀取的數(shù)據(jù)返回給所述第一服務(wù)器之前,所述第二控制器接收第二服務(wù)器發(fā)出的第二讀請(qǐng)求,所述第二讀請(qǐng)求攜帶有所述LUN ID以及第二存儲(chǔ)地址;所述第二控制器查找所述LUN ID對(duì)應(yīng)的所述第二 LUN,按照第二存儲(chǔ)地址從所述第二 LUN中讀取數(shù)據(jù);所述第二控制器將從第二 LUN中讀取的數(shù)據(jù)返回給所述第二服務(wù)器。
[0010]應(yīng)用本發(fā)明寫方法,收到寫請(qǐng)求的控制器在本地寫入數(shù)據(jù),并發(fā)出寫子請(qǐng)求在里一個(gè)控制器寫入數(shù)據(jù),在對(duì)兩個(gè)控制器寫入相同數(shù)據(jù)時(shí),時(shí)延比現(xiàn)有技術(shù)更短。
【專利附圖】
【附圖說(shuō)明】
[0011]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,還可以根據(jù)這些附圖獲得其他的附圖。
[0012]圖1是本發(fā)明實(shí)施例存儲(chǔ)系統(tǒng)的拓?fù)鋱D;
[0013]圖2是本發(fā)明實(shí)施例讀數(shù)據(jù)方法流程圖;
[0014]圖3是本發(fā)明實(shí)施例寫數(shù)據(jù)方法流程圖;
[0015]圖4是本發(fā)明實(shí)施例控制器結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0016]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0017]如附圖1,本發(fā)明實(shí)施例由存儲(chǔ)陣列13、存儲(chǔ)陣列14共同組成一種雙活(AA,Active—Active)存儲(chǔ)系統(tǒng),一部分服務(wù)器11通過(guò)網(wǎng)絡(luò)12與存儲(chǔ)陣列13連接,另外一部分服務(wù)器11通過(guò)一個(gè)網(wǎng)絡(luò)12與存儲(chǔ)陣列14連接。存儲(chǔ)陣列13和存儲(chǔ)陣列14通信連接,共同構(gòu)成存儲(chǔ)系統(tǒng)I。
[0018]兩個(gè)存儲(chǔ)陣列間通過(guò)數(shù)據(jù)鏈路實(shí)現(xiàn)通信,這兩個(gè)存儲(chǔ)陣列可以跨地域部署。存儲(chǔ)陣列13有控制器131,以及存儲(chǔ)器132,控制器131用于管理存儲(chǔ)器132,存儲(chǔ)器132擁有磁盤,用于接受控制器13的管理并存儲(chǔ)數(shù)據(jù)。需要說(shuō)明的是,控制器131的數(shù)量可以I個(gè)或多個(gè),當(dāng)是多個(gè)時(shí),多個(gè)控制器131之間可以相互通信,當(dāng)一個(gè)控制器131故障后,可以由其他控制器131接管業(yè)務(wù)。存儲(chǔ)陣列14由控制器141和存儲(chǔ)器142共同組成,由于存儲(chǔ)陣列14的內(nèi)部結(jié)構(gòu)及各組件的功能與存儲(chǔ)陣列13相同,此處不再詳述??刂破?31和控制器141之間有數(shù)據(jù)鏈路。
[0019]當(dāng)服務(wù)器11需要讀出數(shù)據(jù)時(shí),通過(guò)網(wǎng)絡(luò)12把讀請(qǐng)求發(fā)給控制器,例如控制器131,然后控制器131把數(shù)據(jù)從存儲(chǔ)器132讀出,并返回給發(fā)出讀請(qǐng)求的服務(wù)器11。寫數(shù)據(jù)的過(guò)程和讀數(shù)據(jù)的過(guò)程相似,通過(guò)控制器131把數(shù)據(jù)寫入存儲(chǔ)器132。存儲(chǔ)器132除了由磁盤組成,還可以是磁帶、固態(tài)硬盤SSD等其他存儲(chǔ)介質(zhì),形式上可以是硬盤框,也可以是符合存儲(chǔ)區(qū)域網(wǎng)(Storage area network, SAN)的存儲(chǔ)陣列。服務(wù)器發(fā)出的讀請(qǐng)求或者寫請(qǐng)求,可以基于小型計(jì)算機(jī)系統(tǒng)接口(SCSI,Small Computer System Interface)協(xié)議,或者基于互聯(lián)網(wǎng)小型計(jì)算機(jī)系統(tǒng)接口(iSCSI, Internet Small Computer System Interface)協(xié)議。
[0020]在控制器131中有邏輯單元號(hào)(LUN,Logic Unit Number) 1311,在控制器141中有LUN1411。LUN1311和LUN1411均可被多個(gè)服務(wù)器同時(shí)訪問(wèn)。
[0021]LUN1311和LUN1411的配置相同。LUN1311和LUN1411可以擁有相同容量,相同的標(biāo)識(shí)信息,相同的LUN配置信息,以及存儲(chǔ)相同的數(shù)據(jù)。從服務(wù)器11中,LUN1311和LUN1411被看做是同一個(gè)LUN??梢哉J(rèn)為L(zhǎng)UN1311和LUN1411互為鏡像,除了位于不同的控制器中以夕卜,其他信息都相同。
[0022]LUN標(biāo)識(shí)信息可以包括供應(yīng)商標(biāo)識(shí)(Vendor Identification)、產(chǎn)品標(biāo)識(shí)(ProductIdentification),設(shè)備標(biāo)識(shí) Device Identification,序列號(hào)(Serial Number)。
[0023]由于LUN1311和LUN1411配置信息相同。因此,當(dāng)主機(jī)下發(fā)SCSI協(xié)議的設(shè)備參數(shù)查詢命令模式檢測(cè)(Mode Sense)、LUN持續(xù)預(yù)留(Persistent Reserve In)命令來(lái)查詢?cè)撾p活LUN配置信息時(shí),收到命令的控制器直接從本地成員LUN讀取配置信息。主機(jī)從從兩個(gè)陣列中任意一個(gè)控制器所查詢到的配置信息都是一樣的。
[0024]可以將LUN1311與LUN1411同時(shí)映射給同一個(gè)服務(wù)器,或分別映射給同一個(gè)集群中的不同的服務(wù)器(如圖1中所示8個(gè)服務(wù)器11,可以組成一個(gè)集群).對(duì)每個(gè)服務(wù)器(整個(gè)集群)而言,它(它們)所看到的只有一個(gè)LUN,這個(gè)LUN可以稱為雙活(AA,Active—Active)LUN,LUN1311和LUN1411稱為這個(gè)雙活LUN的成員LUN,兩個(gè)成員LUN互為鏡像。兩個(gè)成員LUN的數(shù)據(jù)保持一致,即雙活LUN的數(shù)據(jù)存兩份,一份在LUN1311上,另一份在LUN1411上。服務(wù)器11看到一個(gè)LUN,服務(wù)器11發(fā)出讀請(qǐng)求或者寫請(qǐng)求時(shí),可能并不知道這個(gè)雙活LUN是由兩個(gè)成員LUN組成。
[0025]存儲(chǔ)陣列13和存儲(chǔ)陣列14均可提供該雙活LUN的讀寫訪問(wèn),即提供雙活LUN的跨陣列雙活訪問(wèn)。當(dāng)該雙活LUN收到服務(wù)器下發(fā)的寫請(qǐng)求時(shí),收到寫請(qǐng)求的控制器按鏡像方式將新數(shù)據(jù)在兩個(gè)成員LUN都寫成功后,才返回寫完成的響應(yīng)消息給主機(jī)。在雙活LUN的寫請(qǐng)求處理流程,對(duì)這兩個(gè)成員LUN在兩個(gè)陣列間進(jìn)行互斥,阻止其他寫入數(shù)據(jù)的操作,以保證兩個(gè)成員LUN的數(shù)據(jù)完全一致。而且存儲(chǔ)陣列13和存儲(chǔ)陣列14可以對(duì)同一個(gè)LUN同時(shí)進(jìn)行讀寫訪問(wèn),讀訪問(wèn)時(shí),可以訪問(wèn)同一個(gè)地址段;寫訪問(wèn)時(shí),訪問(wèn)同一個(gè)LUN的不同地址段。
[0026]當(dāng)其中一個(gè)成員LUN (例如LUN1311)因故不能提供訪問(wèn)(例如存儲(chǔ)器132故障或者控制器131和存儲(chǔ)器131之間鏈路故障)時(shí),則控制器131可以將收到到讀/寫(1/0)請(qǐng)求全部轉(zhuǎn)發(fā)到控制器142,由陣列14提供讀寫服務(wù)。[0027]當(dāng)其中一個(gè)存儲(chǔ)陣列(例如存儲(chǔ)陣列13)的控制器131發(fā)生故障或者控制器131和服務(wù)器11之間的鏈路故障時(shí),另一存儲(chǔ)陣列14可繼續(xù)提供該雙活LUN的讀寫訪問(wèn),保證業(yè)務(wù)連續(xù)性。
[0028]當(dāng)雙活存儲(chǔ)系統(tǒng)中的一個(gè)陣列發(fā)生異常,可能只有一個(gè)成員LUN成功寫入數(shù)據(jù),另外一個(gè)LUN沒(méi)有寫入數(shù)據(jù),這種情況稱為單寫,或者單邊寫。單邊寫導(dǎo)致兩成員LUN之間的數(shù)據(jù)產(chǎn)生差異,差異數(shù)據(jù)可以用差異日志方式保存在沒(méi)有發(fā)生異常的陣列中。具體而言,可以保存在沒(méi)有發(fā)生異常的陣列的控制器緩存、或者與這個(gè)控制器連接的存儲(chǔ)器中。此時(shí)這兩個(gè)成員LUN的數(shù)據(jù)分別處于兩種狀態(tài),一個(gè)成員LUN的數(shù)據(jù)是完整的,另外一個(gè)成員LUN的數(shù)據(jù)已經(jīng)過(guò)時(shí),不再完整。當(dāng)雙活存儲(chǔ)系統(tǒng)從異常狀態(tài)恢復(fù)時(shí),可自動(dòng)或以手動(dòng)方式啟動(dòng)后臺(tái)的數(shù)據(jù)同步程序。后臺(tái)的數(shù)據(jù)同步程序根據(jù)差異日志,將差異數(shù)據(jù)從完整的LUN拷貝到不完整的LUN。當(dāng)該拷貝過(guò)程結(jié)束后,兩個(gè)成員LUN的數(shù)據(jù)完全保持一致。同一個(gè)雙活LUN的成員LUN可以記錄2項(xiàng)信息:(I)自己是這個(gè)雙活LUN的成員LUN ; (2)其他成員LUN的標(biāo)記信息,通過(guò)標(biāo)記信息可以找到另外一個(gè)成員LUN,標(biāo)記信息例如可以包括另外一個(gè)成員LUN所屬于的控制器以及另外一個(gè)成員LUN的LUN ID。
[0029]參見(jiàn)附圖2,是本發(fā)明實(shí)施例一種業(yè)務(wù)數(shù)據(jù)讀取技術(shù),系統(tǒng)架構(gòu)參見(jiàn)附圖1,由于陣列13和陣列14是對(duì)稱的,下面以陣列13為主體進(jìn)行介紹。
[0030]步驟21,陣列13的控制器131接收服務(wù)器11下發(fā)給雙活LUN的第一讀請(qǐng)求,第一讀請(qǐng)求攜帶有LUN ID以及第一存儲(chǔ)地址。LUN ID也就是LUN標(biāo)識(shí),可以唯一標(biāo)記一個(gè)LUN0第一存儲(chǔ)地址可以包括起始地址和數(shù)據(jù)長(zhǎng)度,用于描述在LUN ID所指示的LUN中,自起始地址開(kāi)始,長(zhǎng)度是所述數(shù)據(jù)長(zhǎng)度的數(shù)據(jù)段的一段地址。
[0031]步驟22,控制器131接收到寫請(qǐng)求后,找到LUN ID對(duì)應(yīng)的本地成員LUN1311,按照第一存儲(chǔ)地址,從LUN1311中讀取業(yè)務(wù)數(shù)據(jù)。如果待讀取的業(yè)務(wù)數(shù)據(jù)在控制器131的緩存1312中,可以從緩存1312中讀取。如果待讀取的業(yè)務(wù)數(shù)據(jù)不在緩存1312中,可以從存儲(chǔ)器132中讀取,具體做法可以由控制器131下發(fā)請(qǐng)求給存儲(chǔ)器132,從存儲(chǔ)器132中讀取業(yè)務(wù)數(shù)據(jù)到緩存1312,然后再?gòu)木彺?312中讀取業(yè)務(wù)數(shù)據(jù)。
[0032]第一存儲(chǔ)地址可能是邏輯地址。在本步驟中,根據(jù)業(yè)務(wù)數(shù)據(jù)的來(lái)源不同,可能需要控制器131把這個(gè)邏輯地址翻譯成緩存1312的物理地址或者存儲(chǔ)器132的物理地址。當(dāng)從存儲(chǔ)器132中讀取數(shù)據(jù)時(shí),首先將數(shù)據(jù)讀取到緩存1312中,再?gòu)木彺?312中獲得數(shù)據(jù)。
[0033]步驟23,控制器131讀取出第一讀請(qǐng)求所請(qǐng)求的業(yè)務(wù)數(shù)據(jù)后,把業(yè)務(wù)數(shù)據(jù)返回給服務(wù)器11。
[0034]步驟24,控制器141收到服務(wù)器11下發(fā)給雙活LUN的第二讀請(qǐng)求,第二讀請(qǐng)求攜帶有LUN ID以及第二存儲(chǔ)地址。第二讀請(qǐng)求寫的的LUN ID和第一讀請(qǐng)求中的LUN ID相同。第二存儲(chǔ)地址可以是一個(gè)地址段,用起始地址和數(shù)據(jù)長(zhǎng)度來(lái)描述。第二存儲(chǔ)地址和第一存儲(chǔ)地址可以相同,或者有重疊部分,或者不重疊。
[0035]步驟25,陣列14的控制器141接收到寫請(qǐng)求,找到LUN ID對(duì)應(yīng)的本地成員LUN1411,按照第二存儲(chǔ)地址,從LUN1411中讀取所需業(yè)務(wù)數(shù)據(jù),讀取方式和控制器131從LUN1311中讀取數(shù)據(jù)相同。如果待讀取的業(yè)務(wù)數(shù)據(jù)在控制器141的緩存1412中,可以從緩存1412中讀取。也可以由控制器141下發(fā)請(qǐng)求給存儲(chǔ)器142,從存儲(chǔ)器142中讀取數(shù)據(jù)到緩存1412中,再?gòu)木彺?412中讀取。[0036]其中LUN1311和LUN1411的配置相同。LUN1311和LUN1411擁有相同容量,相同的LUN ID,相同的LUN配置信息,以及存儲(chǔ)相同的數(shù)據(jù)。從服務(wù)器11中,LUN1311和LUN1411被看做是同一個(gè)LUN。
[0037]步驟26,控制器141讀取出第二讀請(qǐng)求所請(qǐng)求的業(yè)務(wù)數(shù)據(jù)后,把業(yè)務(wù)數(shù)據(jù)返回給服務(wù)器11。
[0038]上述步驟21—步驟23和步驟24—步驟26是2個(gè)流程,這兩個(gè)流程之間時(shí)間先后順序可以任意。例如可以先執(zhí)行步驟21—步驟23再執(zhí)行步驟24—步驟26,也可以先執(zhí)行步驟24—步驟26再執(zhí)行21—步驟23,也可以執(zhí)行時(shí)間有重疊。服務(wù)器11可以不止一個(gè),因此步驟21和步驟24中,發(fā)出寫請(qǐng)求的可以不是同一個(gè)服務(wù)器11。例如步驟24發(fā)生在步驟21之后以及步驟23之前。
[0039]從步驟21—步驟26可以看出,控制器131和控制器141之間,或者成員LUN1311和成員LUN1411之間是平等的,任一控制器收到讀請(qǐng)求后都可以從本地讀取業(yè)務(wù)數(shù)據(jù)。而現(xiàn)有技術(shù)中,兩個(gè)控制器之間有主從(Active — Passive)關(guān)系,如果從控制器收到讀請(qǐng)求,需要把讀請(qǐng)求轉(zhuǎn)發(fā)給主控制器,由主控制器從主LUN中提供待讀取的業(yè)務(wù)數(shù)據(jù)。因此現(xiàn)有技術(shù)中的讀取過(guò)程更加復(fù)雜,時(shí)延更長(zhǎng)。
[0040]需要說(shuō)明的是,除了業(yè)務(wù)數(shù)據(jù)的讀請(qǐng)求,服務(wù)器11也可能會(huì)發(fā)出LUN的配置查詢或配置修改命令到控制器131或者控制器141,以獲取LUN配置信息。其操作過(guò)程與步驟21—步驟26相似,不同之處在于,控制器收到LUN的配置類查詢或修改命令后,直接從控制器的緩存或者控制器的其他存儲(chǔ)介質(zhì)中讀取待讀的信息,不需要從與控制器連接的存儲(chǔ)器中讀取。這些命令例如應(yīng)用集群軟件所使用的預(yù)留(Reserve)、釋放(Release)、持續(xù)預(yù)留讀取(Persistent Reserve In)和持續(xù)預(yù)留寫入(Persistent ReserveOut)命令。業(yè)務(wù)數(shù)據(jù)和配置信息可以統(tǒng)稱為數(shù)據(jù)。業(yè)務(wù)數(shù)據(jù)例如圖片、視頻、數(shù)據(jù)庫(kù)數(shù)據(jù),也稱為用戶數(shù)據(jù)。LUN配置信息是對(duì)LUN的配置進(jìn)行管理的信息。業(yè)務(wù)數(shù)據(jù)可以通過(guò)LUN存儲(chǔ)到存儲(chǔ)器中。
[0041]如圖3所示,本發(fā)明實(shí)施例還提供一種業(yè)務(wù)數(shù)據(jù)寫技術(shù),系統(tǒng)架構(gòu)參見(jiàn)附圖1,由于陣列13和陣列14是對(duì)稱的,因此陣列13和陣列14的寫流程相同,下面以陣列13為流程的主要執(zhí)行者進(jìn)行介紹。
[0042]步驟31,存儲(chǔ)陣列13的控制器131收到服務(wù)器11發(fā)出的業(yè)務(wù)數(shù)據(jù)第一寫請(qǐng)求,第一寫請(qǐng)求中攜帶有LUN1311的LUN ID、第一寫地址以及第一業(yè)務(wù)數(shù)據(jù)。第一寫地址可以是一個(gè)地址段,用起始地址和數(shù)據(jù)長(zhǎng)度來(lái)描述這個(gè)地址段,用于描述在LUN ID所指示的LUN中,自起始地址開(kāi)始,以數(shù)據(jù)長(zhǎng)度作為長(zhǎng)度的一段地址,這一段地址也可以稱為一個(gè)地址段。和讀請(qǐng)求中的起始地址一樣,寫請(qǐng)求中的起始地址可以是邏輯塊地址(LBA,LogicBlock Address)地址,LBA地址可以是由64位的二進(jìn)制數(shù)組成,傳輸長(zhǎng)度可以是512字節(jié)(Byte)的整數(shù)倍。這個(gè)LUN ID也是LUN1411的ID。第一業(yè)務(wù)數(shù)據(jù)是待寫入存儲(chǔ)系統(tǒng)的數(shù)據(jù)。
[0043]步驟32,控制器131申請(qǐng)鎖定所述LUN中所述第一寫地址的寫權(quán)限。在由存儲(chǔ)陣列13和存儲(chǔ)陣列14組成的存儲(chǔ)系統(tǒng)中,如果寫權(quán)限的申請(qǐng)被通過(guò),那么第一寫地址會(huì)被鎖定,由擁有寫權(quán)限的控制器獨(dú)占在第一寫地址寫入業(yè)務(wù)數(shù)據(jù)的權(quán)利。直到控制器131釋放第一寫地址的寫權(quán)限之前,這一段地址無(wú)法再被其他寫請(qǐng)求寫入業(yè)務(wù)數(shù)據(jù)。寫權(quán)限的管理者可以是控制器131或者控制器141或者其他獨(dú)立設(shè)備。需要說(shuō)明的是,本發(fā)明實(shí)施例中,對(duì)寫地址鎖定是全局性的,一個(gè)成員LUN的寫地址被鎖定后,其余成員LUN的相同寫地址也會(huì)被鎖定。申請(qǐng)鎖定寫地址的控制器可以把數(shù)據(jù)寫入各個(gè)成員LUN的寫地址中,例如將數(shù)據(jù)直接寫入本地成員LUN的寫地址;或者發(fā)出寫子請(qǐng)求給其他控制器,把數(shù)據(jù)寫入其他控制器的成員LUN的寫地址中。
[0044]步驟33,控制器131獲得寫權(quán)限以后,把第一業(yè)務(wù)數(shù)據(jù)寫入控制器131的LUN1311的第一寫地址,以及寫入控制器141的LUN1411的第一寫地址。也就是說(shuō),向陣列13以及陣列14寫入第一業(yè)務(wù)數(shù)據(jù)。具體做法,可以由控制器131生成2個(gè)寫子請(qǐng)求,2個(gè)寫子請(qǐng)求分別對(duì)應(yīng)控制器131和控制器141,一個(gè)寫子請(qǐng)求用于指示控制器131在本地寫入第一業(yè)務(wù)數(shù)據(jù),這個(gè)寫子請(qǐng)求是可選的,因?yàn)楸镜夭僮骺梢圆恍枰獎(jiǎng)?chuàng)建單獨(dú)的寫子請(qǐng)求;另外一個(gè)寫子請(qǐng)求發(fā)送給控制器141,用于指示控制器141寫入第一業(yè)務(wù)數(shù)據(jù)。
[0045]這兩個(gè)寫子請(qǐng)求之間,除了寫入的陣列不同以外,其余信息一樣,例如具有相同的LUN ID,相同的LBA,攜帶相同的業(yè)務(wù)數(shù)據(jù),相同的傳輸長(zhǎng)度(Transfer Length)。根據(jù)控制器的具體設(shè)置,有些情況下,可以將數(shù)據(jù)寫入控制器的緩存1312后,認(rèn)為完成寫子請(qǐng)求;另外一些情況下,可以將數(shù)據(jù)寫入控制器對(duì)應(yīng)的存儲(chǔ)器后,才認(rèn)為完成寫子請(qǐng)求。需要說(shuō)明的是,由于控制器131已經(jīng)申請(qǐng)了寫權(quán)限,而兩個(gè)寫子請(qǐng)求的信息相同,因此控制器141不再需要申請(qǐng)寫權(quán)限即可直接寫入數(shù)據(jù)。
[0046]步驟34,控制器141完成第一業(yè)務(wù)數(shù)據(jù)的寫入后,通過(guò)控制器131和控制器141之間的通信鏈路,發(fā)送寫成功的響應(yīng)消息給控制器131。當(dāng)控制器131在本地完成第一業(yè)務(wù)數(shù)據(jù)的寫入,并且控制器131收到控制器141發(fā)出的完成第一業(yè)務(wù)數(shù)據(jù)的響應(yīng)消息后,控制器131向服務(wù)器11發(fā)送第一業(yè)務(wù)數(shù)據(jù)寫入已完成的響應(yīng)消息,以及釋放鎖定的第一寫地址。向服務(wù)器11發(fā)送響應(yīng)消息是可選步驟,也可以改為在控制器131中記錄寫入完成的狀態(tài),由服務(wù)器11主動(dòng)查詢這個(gè)狀態(tài)來(lái)確定是否完成寫入操作。發(fā)送響應(yīng)消息和釋放第一寫地址的執(zhí)行時(shí)間不做要求,可以任意一個(gè)先執(zhí)行,或者二者同時(shí)執(zhí)行。
[0047]如果陣列13包括多個(gè)控制器131,則由任意一個(gè)控制器131執(zhí)行上述流程即可。如果陣列141包括多個(gè)控制器141,則執(zhí)行寫子請(qǐng)求的控制器131發(fā)送另外一個(gè)寫子請(qǐng)求給任意一個(gè)控制器141即可,由收到寫子請(qǐng)求的控制器141寫入第一業(yè)務(wù)數(shù)據(jù)。
[0048]步驟31—步驟34是一個(gè)完整的寫數(shù)據(jù)的流程。可選的,在執(zhí)行第一寫請(qǐng)求的過(guò)程中,還可以針對(duì)相同的LUN可以執(zhí)行第二寫請(qǐng)求,從而具有對(duì)同一個(gè)LUN并發(fā)執(zhí)行雙寫操作的效果,參見(jiàn)下面的步驟35—步驟38。第一寫請(qǐng)求的執(zhí)行過(guò)程和第二寫請(qǐng)求的執(zhí)行過(guò)程是獨(dú)立的,相互之間沒(méi)有影響,例如,步驟35發(fā)生在步驟31與步驟35之間任意時(shí)刻。步驟35—步驟38和步驟31—步驟34是對(duì)等的,執(zhí)行流程相同,所不同的是執(zhí)行的具體設(shè)備發(fā)生了調(diào)換。
[0049]除了雙寫,在其他實(shí)施例中,除了陣列13和陣列14,還可以有其他陣列,由三個(gè)或者三個(gè)以上數(shù)量的陣列并發(fā)執(zhí)行寫操作。每個(gè)陣列擁有一個(gè)成員LUN,每個(gè)陣列都收到一個(gè)寫請(qǐng)求,這些寫請(qǐng)求的LUN ID相同,寫地址不同,每個(gè)收到寫請(qǐng)求的陣列在本地寫入數(shù)據(jù),并且指令其他陣列也寫入同樣數(shù)據(jù)。也就是說(shuō),本申請(qǐng)可以支持還可以對(duì)同一個(gè)LUN并發(fā)執(zhí)行更多數(shù)量的寫操作。
[0050]步驟35,控制器141收到服務(wù)器11發(fā)出的業(yè)務(wù)數(shù)據(jù)第二寫請(qǐng)求,第二寫請(qǐng)求中攜帶有LUN ID,第二寫地址,以及第二業(yè)務(wù)數(shù)據(jù)。這個(gè)LUNID是LUN1411的ID,由于LUN1311和LUN1411的ID相同,因此它也是LUN1311的ID。也就說(shuō),步驟36中的LUN ID和步驟31中的LUNID相同。第二寫地址和第一寫地址無(wú)重疊部分,或者說(shuō)位于同一個(gè)LUN中的不同區(qū)域。由于寫地址是一個(gè)地址段,因此可以寫地址理解若干個(gè)獨(dú)立地址的集合,那么第一寫地址和第二寫地址沒(méi)有交集。服務(wù)器11可以不止一個(gè),因此步驟31和步驟35中,發(fā)出寫請(qǐng)求的可以不是同一個(gè)服務(wù)器11。
[0051]步驟36,控制器141申請(qǐng)鎖定所述LUN中所述第二寫地址的寫權(quán)限。在由存儲(chǔ)陣列13和存儲(chǔ)陣列14組成的存儲(chǔ)系統(tǒng)中,如果寫權(quán)限的申請(qǐng)被通過(guò),那么第二寫地址會(huì)被鎖定,由擁有寫權(quán)限的控制器獨(dú)占在第二寫地址寫入業(yè)務(wù)數(shù)據(jù)的權(quán)利。直到控制器141釋放對(duì)第二寫地址的寫權(quán)限之前,這第二寫地址無(wú)法再被其他寫請(qǐng)求寫入業(yè)務(wù)數(shù)據(jù)。寫權(quán)限的管理者可以是控制器131或者控制器141或者其他獨(dú)立設(shè)備。
[0052]步驟37,控制器141獲得寫權(quán)限以后,向控制器141寫入第二業(yè)務(wù)數(shù)據(jù)以及向控制器131寫入第二業(yè)務(wù)數(shù)據(jù)。或者說(shuō),向陣列13以及陣列14寫入第二業(yè)務(wù)數(shù)據(jù)??刂破?41可以生成2個(gè)寫子請(qǐng)求,2個(gè)寫子請(qǐng)求分別對(duì)應(yīng)2個(gè)控制器141和控制器131,一個(gè)寫子請(qǐng)求用于指示控制器141在本地寫入數(shù)據(jù),由于是本地化操作,可以不需要?jiǎng)?chuàng)建單獨(dú)的寫子請(qǐng)求,因此這個(gè)寫子請(qǐng)求是可選的;另外一個(gè)寫子請(qǐng)求發(fā)送給控制器131,用于指示控制器131寫入數(shù)據(jù)。
[0053]這兩個(gè)寫子請(qǐng)求之間,除了寫入的陣列不同以外,其余信息一樣,例如具有相同的LUN ID,相同的LBA,攜帶相同的業(yè)務(wù)數(shù)據(jù),相同的傳輸長(zhǎng)度(Transfer Length)。根據(jù)控制器的具體設(shè)置,有些情況下,可以將數(shù)據(jù)寫入控制器的緩存后,認(rèn)為完成寫子請(qǐng)求;另外一些情況下,可以由控制器先將數(shù)據(jù)寫入緩存,再?gòu)木彺鎸?shù)據(jù)寫入控制器對(duì)應(yīng)的存儲(chǔ)器后,才認(rèn)為完成寫子請(qǐng)求。不管哪一種情況,都需要經(jīng)過(guò)緩存,并且都由控制器確定寫子請(qǐng)求是否執(zhí)行完成,因此可以認(rèn)為數(shù)據(jù)是寫入了控制器。需要說(shuō)明的是,由于控制器141已經(jīng)申請(qǐng)了寫權(quán)限,而兩個(gè)寫子請(qǐng)求的信息相同,因此控制器141不再需要申請(qǐng)寫權(quán)限即可直接寫入數(shù)據(jù)。
[0054]步驟38,控制器131完成第二業(yè)務(wù)數(shù)據(jù)的寫入后,通過(guò)控制器141和控制器131之間的通信鏈路,發(fā)送寫成功的響應(yīng)消息給控制器141。當(dāng)控制器141在本地完成第二數(shù)據(jù)時(shí)的寫入,并且控制器141收到控制器131發(fā)出的完成第二業(yè)務(wù)數(shù)據(jù)的響應(yīng)消息后,控制器141向發(fā)出第二寫請(qǐng)求的服務(wù)器11發(fā)送第二寫請(qǐng)求已完成的響應(yīng)消息,以及釋放鎖定的第二寫地址。向服務(wù)器11發(fā)送響應(yīng)消息是可選步驟,也可以改為在控制器141中記錄寫入完成的狀態(tài),由服務(wù)器11主動(dòng)查詢這個(gè)狀態(tài)來(lái)確定是否完成寫入操作。發(fā)送響應(yīng)消息和釋放第二寫地址的執(zhí)行時(shí)間不做要求,可以任意一個(gè)先執(zhí)行,或者二者同時(shí)執(zhí)行。數(shù)據(jù)寫入控制器131也可以表述為控制器131將數(shù)據(jù)寫入陣列13中,在邏輯上,寫入位置是控制器的LUN。在物理上,寫入位置可以是控制器13的緩存,也可以是陣列的存儲(chǔ)器132;數(shù)據(jù)寫入控制器141也可以表述為控制器131將數(shù)據(jù)寫入陣列14中,具體寫入位置可以是控制器14的緩存,也可以是陣列的存儲(chǔ)器142。
[0055]除了業(yè)務(wù)數(shù)據(jù)的寫入,上述方法也可以適用于LUN的配置信息的寫入。區(qū)別點(diǎn)在于,寫入配置信息時(shí),直接寫入控制器的緩存或者控制器的其他存儲(chǔ)介質(zhì),不需寫入與控制器連接的存儲(chǔ)器鎖定;此外,寫入業(yè)務(wù)數(shù)據(jù)時(shí),鎖定的是一段地址范圍,而寫入配置信息時(shí),鎖定的內(nèi)容是配置信息對(duì)應(yīng)的配置項(xiàng)。本申請(qǐng)將業(yè)務(wù)數(shù)據(jù)、配置信息統(tǒng)稱為數(shù)據(jù)。[0056]如圖4所示,是一種寫數(shù)據(jù)裝置4的實(shí)施例,用于執(zhí)行步驟31—步驟34的方法。寫數(shù)據(jù)裝置包括接收模塊41、鎖請(qǐng)求模塊42、寫數(shù)據(jù)模塊43、鎖釋放模塊44以及發(fā)送模塊45。
[0057]接收模塊41,用于接收服務(wù)器11發(fā)出的業(yè)務(wù)數(shù)據(jù)第一寫請(qǐng)求,第一寫請(qǐng)求中攜帶有待寫的業(yè)務(wù)數(shù)據(jù)、LUN1311的LUN ID以及寫地址。
[0058]鎖請(qǐng)求模塊42,用于申請(qǐng)鎖定所述LUN中所述寫地址的寫權(quán)限。
[0059]寫數(shù)據(jù)模塊43,鎖請(qǐng)求模塊42獲得寫權(quán)限以后,向控制器131寫入業(yè)務(wù)數(shù)據(jù),以及通過(guò)發(fā)送模塊45向控制器141發(fā)出寫子請(qǐng)求,這個(gè)寫子請(qǐng)求攜帶的內(nèi)容和寫請(qǐng)求相同。寫子請(qǐng)求用于指示控制器141按照控制器131的相同LUN的相同寫地址,寫入相同的數(shù)據(jù)。控制器131是本地控制器,寫數(shù)據(jù)裝置4位于控制器131中,可以作為軟件運(yùn)行于控制器131,或者作為硬件集成于控制器131,可以把控制器131稱為第一控制器;控制器141不是本地控制器,可以稱為第二控制器。
[0060]鎖釋放模塊44,當(dāng)所述寫模塊43完成控制器131的寫入,以及接收模塊41收到控制器141發(fā)出的寫完成消息后,用于在向控制器釋放第一寫地址的寫權(quán)限。
[0061]可選的,當(dāng)所述寫模塊43完成控制器131的寫入,以及接收模塊41收到控制器141發(fā)出的寫完成消息后,發(fā)送模塊45還可以用于向服務(wù)器11發(fā)出寫入完成的響應(yīng)消息。
[0062]可選的,接收模塊41還可以用于接收另一個(gè)寫數(shù)據(jù)裝置發(fā)送的寫子請(qǐng)求,按照寫子請(qǐng)求的要求寫入數(shù)據(jù)。并在寫入完成后,通過(guò)發(fā)送模塊45返回寫成功的響應(yīng)消息給這另一個(gè)寫數(shù)據(jù)裝置。另一個(gè)寫數(shù)據(jù)裝置例如集成在控制器14中。
[0063]如圖4,控制器131中,設(shè)有第一邏輯單元號(hào)LUN1311,LUN1311有LUN ID,該控制器131包括處理器1313以及與處理器1313通信的存儲(chǔ)器1314,所述存儲(chǔ)器1314用于存儲(chǔ)程序指令,所述處理器1313用于執(zhí)行程序指令,該程序指令可以執(zhí)行前述的方法,例如用于:接收寫請(qǐng)求,所述寫請(qǐng)求攜帶有待寫數(shù)據(jù)、寫地址以及所述LUN ID ;申請(qǐng)鎖定所述LUN中所述寫地址的寫權(quán)限;在所述鎖請(qǐng)求模塊獲得寫權(quán)限以后,按照所述寫請(qǐng)求向另一控制器14寫入數(shù)據(jù),以及向所述另一控制器14發(fā)出寫子請(qǐng)求,所述寫子請(qǐng)求攜帶內(nèi)容與所述寫請(qǐng)求相同;在所述第一控制器13寫完數(shù)據(jù),并且接收到所述另一控制器14寫成功的響應(yīng)消息以后,釋放鎖定的所述寫地址的寫權(quán)限。其中,控制器13寫入數(shù)據(jù)的過(guò)程,是處理器1313將數(shù)據(jù)寫入緩存1312,緩存1312和緩存1314可以是同一個(gè)緩存,也可以是獨(dú)立的兩個(gè)。
[0064]處理1313可能是一個(gè)中央處理器CPU,或者是特定集成電路ASIC (ApplicationSpecific Integrated Circuit),或者是被配置成實(shí)施本發(fā)明實(shí)施例的一個(gè)或多個(gè)集成電路。存儲(chǔ)器1314可能包含高速RAM存儲(chǔ)器,也可能還包括非易失性存儲(chǔ)器(non-volatilememory),例如至少一個(gè)磁盤存儲(chǔ)器。
[0065]控制器14包括第二 LUN1411、緩存1412、處理器1313和緩存1314,各器件的功能和控制器13相同,可以接收寫請(qǐng)求,在本地寫入數(shù)據(jù)以及發(fā)送寫子請(qǐng)求給控制器13,在控制器13也寫入數(shù)據(jù)。處理器1313和處理器1413通信。
[0066]上述實(shí)施例對(duì)2個(gè)成員LUN組成雙活LUN進(jìn)行了介紹。本發(fā)明實(shí)施例可以擴(kuò)展,由三個(gè)或者三個(gè)以上的控制器互連,每個(gè)控制器提供一個(gè)成員LUN共同支持一個(gè)多活的LUN,寫數(shù)據(jù)時(shí),同樣的數(shù)據(jù)寫入每個(gè)成員LUN;讀數(shù)據(jù)時(shí),可以從任意成員LUN讀出數(shù)據(jù)。寫數(shù)據(jù)時(shí),通過(guò)對(duì)地址段鎖定的方式,可以實(shí)現(xiàn)從三個(gè)以上控制器同時(shí)對(duì)一個(gè)LUN的不同地址段讀出數(shù)據(jù)。
[0067]通過(guò)以上的實(shí)施方式的描述,可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,如計(jì)算機(jī)的軟盤,硬盤或光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
[0068]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何人員在本發(fā)明揭露的技術(shù)范圍內(nèi),想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種寫數(shù)據(jù)方法,第一控制器設(shè)有第一邏輯單元號(hào)LUN,其特征在于,該方法: 第一控制器接收第一寫請(qǐng)求,所述第一寫請(qǐng)求攜帶有第一數(shù)據(jù)、第一寫地址以及所述LUN ID ; 第一控制器申請(qǐng)鎖定所述LUN中所述第一寫地址的寫權(quán)限; 第一控制器獲得所述第一寫地址寫權(quán)限以后,按照所述第一寫請(qǐng)求向第一控制器寫入第一數(shù)據(jù),以及向所述第二控制器發(fā)出第一寫子請(qǐng)求,所述寫子請(qǐng)求攜帶內(nèi)容與所述寫請(qǐng)求相同; 第一控制器在所述第一控制器寫完第一數(shù)據(jù),并且接收到所述第一寫子請(qǐng)求的寫成功響應(yīng)消息以后,釋放鎖定的所述第一寫地址的寫權(quán)限。
2.根據(jù)權(quán)利要求1所述的寫數(shù)據(jù)方法,其特征在于,在釋放鎖定的所述第一寫地址的與權(quán)限之如,進(jìn)一步包括: 第二控制器接收服務(wù)器的第二寫請(qǐng)求,所述第二寫請(qǐng)求寫的有所述LUN ID、第二數(shù)據(jù)以及第二寫地址,其中,第二控制器設(shè)有第二邏輯單元號(hào)LUN,第一邏輯單元號(hào)LUN和所述第二邏輯單元號(hào)LUN的LUN ID相同,容量相同,配置相同,所述第二寫地址與所述第一寫地址無(wú)交集; 第二控制器申請(qǐng)鎖定所述LUN中所述第二寫地址的寫權(quán)限; 第二控制器獲得所述第二寫地址寫權(quán)限以后,按照所述第二寫請(qǐng)求向第二控制器寫入第二數(shù)據(jù),以及向所述第一控制器發(fā)出第二寫子請(qǐng)求,所述第二寫子請(qǐng)求攜帶內(nèi)容與所述寫請(qǐng)求相同; 第二控制器在所述第一控制器寫完第二數(shù)據(jù),并且接收到所述第二寫子請(qǐng)求的寫成功響應(yīng)消息以后,釋放鎖定的所述第二寫地址的寫權(quán)限。
3.根據(jù)權(quán)利要求2所述的寫數(shù)據(jù)方法,其特征在于,所述方法進(jìn)一步包括: 所述第一控制器收到所述第二寫子請(qǐng)求后,按照所述第二寫地址以及所述LUN ID,在本地寫入所述第二數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的寫數(shù)據(jù)方法,其特征在于,所述方法進(jìn)一步包括: 所述第二控制器收到所述第一寫子請(qǐng)求后,按照所述第一寫地址以及所述LUN ID,在本地寫入所述第一數(shù)據(jù)。
5.根據(jù)權(quán)利要求1一4任一項(xiàng)所述的寫數(shù)據(jù)方法,其特征在于,所述方法進(jìn)一步包括: 所述數(shù)據(jù)是業(yè)務(wù)數(shù)據(jù),所述第一寫地址是地址段;或者 所述數(shù)據(jù)是配置信息,所述第一寫地址是配置信息對(duì)應(yīng)的配置項(xiàng)。
6.一種控制器,設(shè)有第一邏輯單元號(hào)LUN,所述LUN有LUN ID,該控制器包括處理器以及與處理器通信的存儲(chǔ)器,所述存儲(chǔ)器用于存儲(chǔ)程序指令,所述處理器用于執(zhí)行程序指令,該程序指令用于: 接收寫請(qǐng)求,所述寫請(qǐng)求攜帶有數(shù)據(jù)、寫地址以及所述LUN ID ; 申請(qǐng)鎖定所述LUN中所述寫地址的寫權(quán)限; 在所述鎖請(qǐng)求模塊獲得寫權(quán)限以后,按照所述寫請(qǐng)求向另一控制器寫入數(shù)據(jù),以及向所述另一控制器發(fā)出寫子請(qǐng)求,所述寫子請(qǐng)求攜帶內(nèi)容與所述寫請(qǐng)求相同; 在所述第一控制 器寫完數(shù)據(jù),并且接收到所述所述寫子請(qǐng)求寫成功響應(yīng)消息以后,釋放鎖定的所述寫地址的寫權(quán)限。
7.根據(jù)權(quán)利要求6任一項(xiàng)所述的寫數(shù)據(jù)方法,其特征在于,所述方法進(jìn)一步包括: 所述數(shù)據(jù)是業(yè)務(wù)數(shù)據(jù),所述第一寫地址是地址段;或者 所述數(shù)據(jù)是配置信息,所述第一寫地址是配置信息對(duì)應(yīng)的配置項(xiàng)。
8.一種寫數(shù)據(jù)系統(tǒng),包括第一控制器和第二控制器,第一控制器和第二控制器通信連接,其特征在于,第一控制器設(shè)有第一邏輯單元號(hào)LUN,第二控制器設(shè)有第二邏輯單元號(hào)LUN,所述第一邏輯單元號(hào)LUN和所述第二邏輯單元號(hào)LUN的LUN ID相同,容量相同,配置相同,其中: 所述第一控制器,用于接收第一寫請(qǐng)求,所述第一寫請(qǐng)求攜帶有第一數(shù)據(jù)、第一寫地址以及所述LUN ID ;申請(qǐng)鎖定所述第一寫地址的寫權(quán)限;獲得所述寫權(quán)限以后,按照所述寫請(qǐng)求向第一控制器寫入數(shù)據(jù),以及向所述第二控制器發(fā)出寫子請(qǐng)求,所述寫子請(qǐng)求攜帶內(nèi)容與所述寫請(qǐng)求相同; 所述第二控制器,用于收到所述寫子請(qǐng)求后按照所述LUN ID所述第一寫地址寫入所述第一數(shù)據(jù),然后通過(guò)所述通信連接發(fā)送寫成功響應(yīng)消息給所述第一控制器; 所述第一控制器,還用于在本地完成所述第一數(shù)據(jù)的寫入,并且接收到所述第二控制器寫成功響應(yīng)消息以后,釋放鎖定的所述第一寫地址的寫權(quán)限。
9.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于: 所述第二控制器還用于:在第一控制器釋放所述第一寫地址的寫權(quán)限之前,接收第二寫請(qǐng)求,所述第二寫請(qǐng)求攜帶有第二數(shù)據(jù)、第二寫地址以及所述LUN ID ;申請(qǐng)鎖定所述第二寫地址的寫權(quán)限;獲得所述第二寫地址寫權(quán)限以后,按照所述第二寫請(qǐng)求向第二控制器寫入數(shù)據(jù),以及向所述第一控制器發(fā)出第二寫子請(qǐng)求,所述第二寫子請(qǐng)求攜帶內(nèi)容與所述第一寫請(qǐng)求相同,其中第二寫地址與所述第一寫地址沒(méi)有交集;` 所述第一控制器,還用于收到所述寫第二子請(qǐng)求后按照所述LUN ID所述第二寫地址寫入所述第二數(shù)據(jù),然后通過(guò)所述通信連接發(fā)送寫成功響應(yīng)消息給所述第一控制器; 所述第二控制器,還用于在本地完成所述第二數(shù)據(jù)的寫入,并且接收到所述第一控制器寫成功響應(yīng)消息以后,釋放鎖定的所述第二寫地址的寫權(quán)限。
10.一種讀數(shù)據(jù)方法,第一控制器設(shè)有第一邏輯單元號(hào)LUN,其特征在于,第二控制器設(shè)有第二邏輯單元號(hào)LUN,所述第一邏輯單元號(hào)LUN和所述第二邏輯單元號(hào)LUN的LUN ID相同,容量相同,配置相同,該方法包括: 所述第一控制器接收第一服務(wù)器發(fā)出的第一讀請(qǐng)求,所述第一讀請(qǐng)求攜帶有所述LUNID以及第一存儲(chǔ)地址;所述第一控制器查找所述LUN ID對(duì)應(yīng)的所述第一 LUN,按照第一存儲(chǔ)地址從所述第一 LUN中讀取數(shù)據(jù);所述第一控制器將從第一 LUN中讀取的數(shù)據(jù)返回給所述第一服務(wù)器;以及 在所述第一控制器將從第一 LUN中讀取的數(shù)據(jù)返回給所述第一服務(wù)器之前,所述第二控制器接收第二服務(wù)器發(fā)出的第二讀請(qǐng)求,所述第二讀請(qǐng)求攜帶有所述LUN ID以及第二存儲(chǔ)地址;所述第二控制器查找所述LUN ID對(duì)應(yīng)的所述第二 LUN,按照第二存儲(chǔ)地址從所述第二 LUN中讀取數(shù)據(jù);所述第二控制器將從第二 LUN中讀取的數(shù)據(jù)返回給所述第二服務(wù)器。
【文檔編號(hào)】G06F13/16GK103827843SQ201380002555
【公開(kāi)日】2014年5月28日 申請(qǐng)日期:2013年11月28日 優(yōu)先權(quán)日:2013年11月28日
【發(fā)明者】蔣培軍, 李小華 申請(qǐng)人:華為技術(shù)有限公司