專利名稱:異步遠(yuǎn)程復(fù)制系統(tǒng)及其維護(hù)數(shù)據(jù)一致性的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)存儲中遠(yuǎn)程異步鏡像復(fù)制技術(shù),尤其涉及異步遠(yuǎn)程復(fù)制系統(tǒng)及其維護(hù)數(shù)據(jù)一致性的方法。
背景技術(shù):
隨著計(jì)算機(jī)應(yīng)用的不斷普及,計(jì)算機(jī)用戶對數(shù)據(jù)安全的要求也日益增長。為了避免各種天災(zāi)人禍引起的數(shù)據(jù)丟失可能給用戶帶來極大損失,開發(fā)出了數(shù)據(jù)實(shí)時同步到遠(yuǎn)程服務(wù)器上的遠(yuǎn)程復(fù)制技術(shù)。在意外發(fā)生時,通過該技術(shù)能夠利用備份到遠(yuǎn) 程服務(wù)器上的數(shù)據(jù),對本地服務(wù)器上的數(shù)據(jù)進(jìn)行恢復(fù),從而保障了數(shù)據(jù)的物理安全。遠(yuǎn)程復(fù)制技術(shù)可以分為兩類方法同步復(fù)制和異步復(fù)制。其中,對于上層應(yīng)用的數(shù)據(jù),同步復(fù)制是指遠(yuǎn)程復(fù)制軟件確認(rèn)數(shù)據(jù)在本地服務(wù)器和遠(yuǎn)程備份服務(wù)器上都已寫入成功后,才向上層應(yīng)用報告數(shù)據(jù)寫入成功;異步復(fù)制是指遠(yuǎn)程復(fù)制軟件確認(rèn)數(shù)據(jù)已在本地服務(wù)器寫入成功后,便向上層應(yīng)用報告數(shù)據(jù)寫入成功,而不是等到數(shù)據(jù)在遠(yuǎn)程備份服務(wù)器上寫入成功后再報告。由于遠(yuǎn)程復(fù)制步驟會消費(fèi)一定的時間,故同步復(fù)制會對上層應(yīng)用的性能產(chǎn)生影響。同步復(fù)制中寫入請求的執(zhí)行順序在本地服務(wù)器和備份服務(wù)器上是一致的。異步復(fù)制對上層應(yīng)用的影響較小,但網(wǎng)絡(luò)傳輸、緩存機(jī)制等因素會使得備份服務(wù)器上寫入請求的完成順序可能和本地服務(wù)器不一致。通常,上層應(yīng)用的寫入數(shù)據(jù)是以寫入請求的形式傳遞給遠(yuǎn)程復(fù)制軟件,當(dāng)寫入請求完成即表示數(shù)據(jù)寫入成功。在同步復(fù)制中,由于寫入請求的執(zhí)行順序在本地服務(wù)器和遠(yuǎn)程備份服務(wù)器上總是一致的,故上層應(yīng)用發(fā)出的某個寫入請求,常是基于之前某一寫入請求的完成而發(fā)出的,兩個寫入請求之間存在依賴關(guān)系,且一般不會被破壞。而在異步復(fù)制中,由于操作系統(tǒng)緩存機(jī)制、磁盤緩存機(jī)制、網(wǎng)絡(luò)緩存機(jī)制、網(wǎng)絡(luò)延遲等多種因素的存在,導(dǎo)致遠(yuǎn)程備份服務(wù)器上寫入請求的完成順序可能和本地服務(wù)器不一致,由此使得遠(yuǎn)程備份服務(wù)器上寫入請求間的依賴關(guān)系可能會被破壞。如果本地服務(wù)器在依賴關(guān)系在被破壞時離線,則備份服務(wù)器上保存的數(shù)據(jù)就可能并不是本地服務(wù)器數(shù)據(jù)任何一個時刻的鏡像,即數(shù)據(jù)的一致性被破壞了。在此情況下,上層應(yīng)用無法使用錯誤的數(shù)據(jù)恢復(fù)生產(chǎn),由此會給用戶造成嚴(yán)重的損失?,F(xiàn)有的一種在異步遠(yuǎn)程復(fù)制系統(tǒng)中保護(hù)數(shù)據(jù)一致性的方法,是通過本地服務(wù)器上的遠(yuǎn)程復(fù)制軟件對每一個寫入請求打上時間戳,由遠(yuǎn)程備份服務(wù)器上的遠(yuǎn)程復(fù)制軟件根據(jù)時間戳來還原寫入請求的發(fā)出順序。這種方法由于需要在傳輸給遠(yuǎn)程備份服務(wù)器的寫入請求上附加時間戳信息,一方面增大了對網(wǎng)絡(luò)資源的消耗,另一方面遠(yuǎn)程備份服務(wù)器上的遠(yuǎn)程復(fù)制軟件必須嚴(yán)格按照時間戳順序執(zhí)行寫入請求,由此會使得其中不存在寫入依賴關(guān)系的寫入請求的執(zhí)行順序無法改變,因而無法利用操作系統(tǒng)緩存及磁盤緩存機(jī)制提高性能。因此,需要相應(yīng)地提供一種改進(jìn)的遠(yuǎn)程復(fù)制系統(tǒng)及其維護(hù)數(shù)據(jù)一致性的方法,能夠更有效地克服寫入依賴性被破壞的問題,而使得寫入的數(shù)據(jù)的一致性得到維護(hù)。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種異步遠(yuǎn)程復(fù)制系統(tǒng)及其維護(hù)數(shù)據(jù)一致性的方法,能夠更有效地克服寫入依賴性而使得寫入的數(shù)據(jù)得到一致性的維護(hù)。為了解決上述技術(shù)問題,本發(fā)明提供了一種異步遠(yuǎn)程復(fù)制系統(tǒng),包括通過網(wǎng)絡(luò)連接的本地服務(wù)器和遠(yuǎn)程備份服務(wù)器,其特征在于本地服務(wù)器,用于通過本地的遠(yuǎn)程復(fù)制模塊將應(yīng)用模塊的寫入請求加入到新建的寫入請求組或已建立且開放的寫入請求組,將寫入請求組編號 攜帶在寫入請求中發(fā)送到遠(yuǎn)程備份服務(wù)器,并向磁盤提交該寫入請求;遠(yuǎn)程備份服務(wù)器,用于通過本地的遠(yuǎn)程復(fù)制模塊將接收的寫入請求置入寫入請求隊(duì)列中未關(guān)閉的寫入請求組。進(jìn)一步地,遠(yuǎn)程備份服務(wù)器的寫入請求隊(duì)列包括N個已關(guān)閉的寫入請求組和至多一個未關(guān)閉的寫入請求組,N為大于或等于零的整數(shù);其中,已關(guān)閉的寫入請求組含有一個或多個寫入請求和一個組關(guān)閉信號;未關(guān)閉的寫入請求組含有一個或多個寫入請求;每一寫入請求中含有寫入請求組編號以及請求寫入的內(nèi)容。進(jìn)一步地,本地服務(wù)器的遠(yuǎn)程復(fù)制模塊在收到應(yīng)用模塊的寫入請求后,若判斷當(dāng)前沒有開放的寫入請求組,或者判斷當(dāng)前有開放的寫入請求組,且繼續(xù)判斷該寫入請求組內(nèi)有寫入請求已被磁盤完成,或者判斷該寫入請求組內(nèi)沒有寫入請求被磁盤完成,但該寫入請求組大小已達(dá)到上限,則關(guān)閉該寫入請求組停止加入新的寫入請求,并向遠(yuǎn)程備份服務(wù)器發(fā)送組關(guān)閉信號,同時將關(guān)閉的寫入請求組內(nèi)的寫入請求仍交由磁盤完成,然后新建寫入請求組并為該請求組分配編號,將攜帶有寫入請求組編號的寫入請求加入新建的寫入請求組,將新加入的該寫入請求發(fā)送給遠(yuǎn)程備份服務(wù)器。進(jìn)一步地,遠(yuǎn)程備份服務(wù)器依次讀取寫入請求隊(duì)列中的元素,若判斷該元素是組關(guān)閉信號,將該組關(guān)閉信號對應(yīng)的寫入請求組標(biāo)識為已關(guān)閉,并停止繼續(xù)讀取該寫入請求隊(duì)列。進(jìn)一步地,本地服務(wù)器的遠(yuǎn)程復(fù)制模塊若判斷寫入請求組內(nèi)沒有寫入請求被磁盤完成,且繼續(xù)判斷該寫入請求組大小尚未達(dá)到上限,則將攜帶有寫入請求組編號的寫入請求加入當(dāng)前寫入請求組;將新加入的該寫入請求發(fā)送給遠(yuǎn)程備份服務(wù)器。進(jìn)一步地,遠(yuǎn)程備份服務(wù)器的遠(yuǎn)程復(fù)制模塊在判斷元素是寫入請求組的組關(guān)閉信號停止繼續(xù)讀取寫入請求隊(duì)列后,若繼續(xù)判斷與該組關(guān)閉信號對應(yīng)的寫入請求組內(nèi)的寫入請求全部完成,則向本地服務(wù)器發(fā)送寫入請求組完成信號,然后繼續(xù)讀取寫入請求隊(duì)列中的元素并進(jìn)行后續(xù)操作;若繼續(xù)判斷與該組關(guān)閉信號對應(yīng)的寫入請求組內(nèi)的寫入請求未全部完成,則等待寫入請求組內(nèi)的寫入請求全部完成后,執(zhí)行后續(xù)的操作。為了解決上述技術(shù)問題,本發(fā)明提供了一種異步遠(yuǎn)程復(fù)制系統(tǒng)維護(hù)數(shù)據(jù)一致性的方法,涉及該異步遠(yuǎn)程復(fù)制系統(tǒng)中通過網(wǎng)絡(luò)連接的本地服務(wù)器和遠(yuǎn)程備份服務(wù)器,該方法包括
本地服務(wù)器將應(yīng)用模塊的寫入請求加入到新建的寫入請求組或已建立且開放的寫入請求組,將寫入請求組編號攜帶在該寫入請求中發(fā)送到遠(yuǎn)程備份服務(wù)器,并向磁盤提交該寫入請求;遠(yuǎn)程備份服務(wù)器將接收的寫入請求置入一寫入請求隊(duì)列中未關(guān)閉的寫入請求組。進(jìn)一步地,遠(yuǎn)程備份服務(wù)器的寫入請求隊(duì)列包括N個已關(guān)閉的寫入請求組和至多一個未關(guān)閉的寫入請求組,N為大于零或等于零的整數(shù);已關(guān)閉的寫入請求組含有一個或多個寫入請求和一個組關(guān)閉信號,未關(guān)閉的寫入請求組含有一個或多個寫入請求,每一寫入請求中含有寫入請求組編號以及請求寫入的內(nèi)容。進(jìn)一步地,所述本地服務(wù)器具體執(zhí)行的流程包括本地服務(wù)器在收到應(yīng)用模塊的寫入請求后,若判斷當(dāng)前沒有開放的寫入請求組, 或者判斷當(dāng)前有開放的寫入請求組,且繼續(xù)判斷該寫入請求組內(nèi)有寫入請求已被磁盤完成,或者判斷該寫入請求組內(nèi)沒有寫入請求被磁盤完成,但該寫入請求組大小已達(dá)到上限,則關(guān)閉該寫入請求組停止加入新的寫入請求,并向遠(yuǎn)程備份服務(wù)器發(fā)送組關(guān)閉信號,同時將關(guān)閉的寫入請求組內(nèi)的寫入請求仍交由磁盤完成,然后新建寫入請求組并為該請求組分配編號,將攜帶有寫入請求組編號的寫入請求加入新建的寫入請求組,將該寫入請求發(fā)送給遠(yuǎn)程備份服務(wù)器。進(jìn)一步地,本地服務(wù)器具體執(zhí)行的流程還包括本地服務(wù)器若判斷寫入請求組內(nèi)沒有寫入請求被磁盤完成,且繼續(xù)判斷該寫入請求組大小尚未達(dá)到上限,則將攜帶有寫入請求組編號的寫入請求加入當(dāng)前寫入請求組;將該寫入請求發(fā)送給遠(yuǎn)程備份服務(wù)器。進(jìn)一步地,該方法還包括遠(yuǎn)程備份服務(wù)器依次讀取寫入請求隊(duì)列中的元素,若判斷該元素是組關(guān)閉信號,將該組關(guān)閉信號對應(yīng)的寫入請求組標(biāo)識為已關(guān)閉,并停止繼續(xù)讀取該寫入請求隊(duì)列。進(jìn)一步地,遠(yuǎn)程備份服務(wù)器在判斷元素是所述組關(guān)閉信號,將該組關(guān)閉信號對應(yīng)的寫入請求組標(biāo)識為已關(guān)閉,并停止繼續(xù)讀取寫入請求隊(duì)列后,還包括若繼續(xù)判斷與該組關(guān)閉信號對應(yīng)的寫入請求組內(nèi)的寫入請求全部完成,則向本地服務(wù)器發(fā)送寫入請求組完成信號,然后繼續(xù)依次讀取寫入請求隊(duì)列中的元素并執(zhí)行后續(xù)流程;若繼續(xù)判斷與該組關(guān)閉信號對應(yīng)的寫入請求組內(nèi)的寫入請求未全部完成,則等待寫入請求組內(nèi)的寫入請求全部完成后,執(zhí)行后續(xù)的流程。本發(fā)明通過識別寫入請求流中寫入請求的完成順序?qū)懭胝埱筮M(jìn)行分組,可有效識別出所有潛在的寫入依賴關(guān)系,解決了因?qū)懭胍蕾囮P(guān)系而缺乏數(shù)據(jù)一致性保護(hù)的問題,能夠可靠地保證異步遠(yuǎn)程復(fù)制數(shù)據(jù)的一致性。由于本發(fā)明只在遠(yuǎn)程復(fù)制軟件中增加了寫入請求組關(guān)閉和寫入請求組完成兩種簡單信號,對網(wǎng)絡(luò)傳輸增加的負(fù)擔(dān)可以小到忽略不計(jì);并且通過將同一寫入請求組內(nèi)的寫入請求直接提交給底層磁盤,而毋需按照一定順序執(zhí)行,由此可以充分地利用操作系統(tǒng)、磁盤的緩存機(jī)制來提高寫入性能。
圖I為本發(fā)明的異步遠(yuǎn)程復(fù)制系統(tǒng)實(shí)施例的結(jié)構(gòu)框圖;圖2為圖I所示的系統(tǒng)實(shí)施例所使用的寫入請求隊(duì)列的結(jié)構(gòu)示意圖3為異步遠(yuǎn)程復(fù)制系統(tǒng)維護(hù)數(shù)據(jù)一致性的方法中本地服務(wù)器執(zhí)行實(shí)例流程圖;圖4為異步遠(yuǎn)程復(fù)制系統(tǒng)維護(hù)數(shù)據(jù)一致性的方法中遠(yuǎn)程備份服務(wù)器執(zhí)行實(shí)例流程圖。
具體實(shí)施例方式以下結(jié)合附圖和優(yōu)選實(shí)施例對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)地闡述。應(yīng)該理解,以下列舉的實(shí)施例僅用于說明和解釋本發(fā)明,而不構(gòu)成對本發(fā)明技術(shù)方案的限制。本發(fā)明的異步遠(yuǎn)程復(fù)制系統(tǒng)實(shí)施例其結(jié)構(gòu)如圖I所示,包括通過網(wǎng)絡(luò)連接的本地服務(wù)器和遠(yuǎn)程備份服務(wù)器,其中本地服務(wù)器,用于通過本地遠(yuǎn)程復(fù)制模塊將應(yīng)用 模塊的寫入請求加入到新建的寫入請求組或已建立且開放的寫入請求組,將寫入請求組編號攜帶在寫入請求中發(fā)送到遠(yuǎn)程備份服務(wù)器,并向磁盤提交該寫入請求;遠(yuǎn)程備份服務(wù)器,用于通過本地遠(yuǎn)程復(fù)制模塊將接收的寫入請求置入寫入請求隊(duì)列中未關(guān)閉的寫入請求組。在上述系統(tǒng)實(shí)施例中,遠(yuǎn)程備份服務(wù)器的寫入請求隊(duì)列的結(jié)構(gòu)如圖2所示,它包括N(N為大于或等于0的整數(shù))個已關(guān)閉的寫入請求組和至多一個未關(guān)閉的寫入請求組,其中已關(guān)閉的寫入請求組含有一個或多個寫入請求和一個組關(guān)閉信號;未關(guān)閉的寫入請求組僅含有一個或多個寫入請求;每一寫入請求中含有寫入請求組編號以及請求寫入的內(nèi)容。在上述系統(tǒng)實(shí)施例中,本地服務(wù)器的遠(yuǎn)程復(fù)制模塊在收到應(yīng)用模塊的寫入請求后,若判斷當(dāng)前沒有開放的寫入請求組,或者判斷當(dāng)前有開放的寫入請求組,且繼續(xù)判斷該寫入請求組內(nèi)有寫入請求已被磁盤完成,或者判斷該寫入請求組內(nèi)沒有寫入請求被磁盤完成,但該寫入請求組大小已達(dá)到上限,則關(guān)閉該寫入請求組停止加入新的寫入請求,并向遠(yuǎn)程備份服務(wù)器發(fā)送組關(guān)閉信號,同時關(guān)閉的寫入請求組內(nèi)的寫入請求仍繼續(xù)由磁盤完成,然后新建寫入請求組并為該請求組分配編號,將攜帶有寫入請求組編號的寫入請求加入新建的寫入請求組;將該寫入請求發(fā)送給遠(yuǎn)程備份服務(wù)器。在上述系統(tǒng)實(shí)施例中,遠(yuǎn)程備份服務(wù)器依次讀取寫入請求隊(duì)列中的元素,若判斷該元素是寫入請求組關(guān)閉信號,則將該組關(guān)閉信號對應(yīng)的寫入請求組標(biāo)識為已關(guān)閉,并停止繼續(xù)讀取寫入請求隊(duì)列。本發(fā)明通過上述做法實(shí)現(xiàn)了有效地識別所有寫入請求潛在的寫入依賴關(guān)系,避免出現(xiàn)因?qū)懭胍蕾囮P(guān)系混亂而導(dǎo)致數(shù)據(jù)一致性被破壞的問題。也就是說,本地服務(wù)器的遠(yuǎn)程復(fù)制模塊一旦發(fā)現(xiàn)當(dāng)前寫入請求組內(nèi)有寫入請求被磁盤完成,便關(guān)閉該寫入請求組停止加入新請求,并向遠(yuǎn)程備份服務(wù)器發(fā)送組關(guān)閉信號;遠(yuǎn)程備份服務(wù)器根據(jù)從寫入請求隊(duì)列中讀取的該組關(guān)閉信號來關(guān)閉該寫入請求組,并停止繼續(xù)讀取寫入請求隊(duì)列。這樣就可以完全避免寫入依賴關(guān)系產(chǎn)生混亂,從而有效地維護(hù)數(shù)據(jù)一致性。在上述系統(tǒng)實(shí)施例中,本地服務(wù)器的遠(yuǎn)程復(fù)制模塊若判斷該寫入請求組內(nèi)沒有寫入請求被磁盤完成,且繼續(xù)判斷該寫入請求組大小尚未達(dá)到上限,則將攜帶有寫入請求組編號的寫入請求加入當(dāng)前寫入請求組;將該寫入請求發(fā)送給遠(yuǎn)程備份服務(wù)器。在上述系統(tǒng)實(shí)施例中,遠(yuǎn)程備份服務(wù)器的遠(yuǎn)程復(fù)制模塊在判斷寫入請求隊(duì)列中的該元素是組關(guān)閉信號后,停止繼續(xù)讀取寫入請求隊(duì)列,若繼續(xù)判斷與該組關(guān)閉信號對應(yīng)的寫入請求組內(nèi)的寫入請求全部完成,則向本地服務(wù)器發(fā)送寫入請求組完成信號,然后繼續(xù)從寫入請求隊(duì)列中依次讀取寫入請求組內(nèi)的元素及其后續(xù)操作;若繼續(xù)判斷與該組關(guān)閉信號對應(yīng)的寫入請求組內(nèi)的寫入請求未全部完成,則等待寫入請求組內(nèi)的寫入請求全部完成后,執(zhí)行后續(xù)的操作。本發(fā)明針對上述系統(tǒng)實(shí)施例,相應(yīng)地還提供了異步遠(yuǎn)程復(fù)制系統(tǒng)維護(hù)數(shù)據(jù)一致性的方法實(shí)施例,涉及通過網(wǎng)絡(luò)連接的本地服務(wù)器和遠(yuǎn)程備份服務(wù)器,其流程包括本地服務(wù)器將應(yīng)用模塊的寫入請求加入到新建的寫入請求組或已建立且開放的 寫入請求組,將寫入請求組編號攜帶在該寫入請求中發(fā)送到遠(yuǎn)程備份服務(wù)器,并向磁盤提交該寫入請求;遠(yuǎn)程備份服務(wù)器將接收的寫入請求依次置入寫入請求隊(duì)列中未關(guān)閉的寫入請求組。在上述方法實(shí)施例中,本地服務(wù)器具體執(zhí)行的流程如圖3所示,包括如下步驟110 :接收上層的應(yīng)用模塊發(fā)出的寫入請求;120 :判斷當(dāng)前是否有開放的寫入請求組,是則執(zhí)行下一步驟,否則執(zhí)行步驟150 ;130:判斷該開放的寫入請求組內(nèi)是否有已完成的請求,是則執(zhí)行下一步驟,否則執(zhí)行步驟170 ;140 :關(guān)閉寫入請求組,并向遠(yuǎn)程備份服務(wù)器發(fā)送請求組關(guān)閉信號;關(guān)閉寫入請求組即停止加入新的寫入請求。150:新建寫入請求組,并為該請求組分配編號,攜帶在寫入請求中加入到新建的寫入請求組;160 向遠(yuǎn)程備份服務(wù)器發(fā)送寫入請求,結(jié)束流程;170 :判斷寫入請求組大小是否達(dá)到上限,是則執(zhí)行步驟140,否則執(zhí)行步驟180 ;180:將當(dāng)前寫入請求組編號攜帶在寫入請求中加入該寫入請求組,執(zhí)行步驟160。在上述方法實(shí)施例中,遠(yuǎn)程備份服務(wù)器具體執(zhí)行的流程如圖4所示,包括如下步驟200 :判斷是否接收到寫入請求,是則執(zhí)行下一步驟,否則執(zhí)行步驟210 ;201 :將接收的寫入請求置入寫入請求隊(duì)列中未關(guān)閉的寫入請求組;210 :從寫入請求隊(duì)列中讀取一個元素;遠(yuǎn)程備份服務(wù)器預(yù)先配置一寫入請求隊(duì)列,該隊(duì)列包括N(N為大于或等于0的整數(shù))個已關(guān)閉的寫入請求組和至多一個未關(guān)閉的寫入請求組,其中已關(guān)閉的寫入請求組含有一個或多個寫入請求和一個組關(guān)閉信號;未關(guān)閉的寫入請求組僅含有一個或多個寫入請求;每一寫入請求中含有寫入請求組編號以及請求寫入的內(nèi)容。220 :判斷該元素是否為組關(guān)閉信號,是則執(zhí)行下一步驟,否則執(zhí)行步驟260 ;230 :停止讀取寫入請求隊(duì)列;
240:判斷與該組關(guān)閉信號對應(yīng)的寫入請求組的寫入請求是否已全部完成,是則執(zhí)行下一步驟,否則執(zhí)行步驟270 ;250 向本地服務(wù)器發(fā)送寫入請求組完成信號,返回步驟200執(zhí)行;260 向磁盤提交該寫入請求,返回步驟200執(zhí)行;270 :等待請求組內(nèi)的寫入請求完成,返回步驟240執(zhí)行。本發(fā)明通過對寫入請求流中的寫入請求的完成順序進(jìn)行識別,將寫入請求分組排列在寫入請求隊(duì)列中,可有效避免寫入請求潛在的寫入依賴關(guān)系發(fā)生混亂,由此解決了異步遠(yuǎn)程復(fù)制系統(tǒng)中對寫入依賴關(guān)系而缺乏保護(hù)的問題,保證了異步遠(yuǎn)程復(fù)制系統(tǒng)中的數(shù)據(jù)一致性。由于本發(fā)明只在遠(yuǎn)程復(fù)制軟件模塊中增加了組關(guān)閉和寫入請求組完成這兩種簡單信號,對網(wǎng)絡(luò)傳輸增加的負(fù)擔(dān)可以小到忽略不計(jì)。并且同一寫入請求組內(nèi)的寫入請求直接提交給底層磁盤,并不非得按照順序執(zhí)行,由此可充分利用操作系統(tǒng)、磁盤的緩存機(jī)制來提 聞磁盤的與入性能。雖然本發(fā)明所揭露的實(shí)施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采用的實(shí)施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術(shù)領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實(shí)施的形式上及細(xì)節(jié)上作任何的修改與變化,但本發(fā)明的專利保護(hù)范圍,仍須以所附的權(quán)利要求書所界定的范圍為準(zhǔn)。
權(quán)利要求
1.一種異步遠(yuǎn)程復(fù)制系統(tǒng),包括通過網(wǎng)絡(luò)連接的本地服務(wù)器和遠(yuǎn)程備份服務(wù)器,其特征在于 本地服務(wù)器,用于通過本地的遠(yuǎn)程復(fù)制模塊將應(yīng)用模塊的寫入請求加入到新建的寫入請求組或已建立且開放的寫入請求組,將寫入請求組編號攜帶在所述寫入請求中發(fā)送到遠(yuǎn)程備份服務(wù)器,并向磁盤提交該寫入請求; 遠(yuǎn)程備份服務(wù)器,用于通過本地的遠(yuǎn)程復(fù)制模塊將接收的寫入請求置入寫入請求隊(duì)列中未關(guān)閉的寫入請求組。
2.按照權(quán)利要求I所述的系統(tǒng),其特征在于, 所述遠(yuǎn)程備份服務(wù)器的所述寫入請求隊(duì)列包括N個已關(guān)閉的寫入請求組和至多一個未關(guān)閉的寫入請求組,所述N為大于或等于零的整數(shù);其中,所述已關(guān)閉的寫入請求組含有一個或多個寫入請求和一個組關(guān)閉信號;所述未關(guān)閉的寫入請求組含有一個或多個寫入請求;每一寫入請求中含有寫入請求組編號以及請求寫入的內(nèi)容。
3.按照權(quán)利要求2所述的系統(tǒng),其特征在于, 所述本地服務(wù)器的遠(yuǎn)程復(fù)制模塊在收到所述應(yīng)用模塊的寫入請求后,若判斷當(dāng)前沒有開放的寫入請求組,或者判斷當(dāng)前有開放的寫入請求組,且繼續(xù)判斷該寫入請求組內(nèi)有寫入請求已被磁盤完成,或者判斷該寫入請求組內(nèi)沒有寫入請求被磁盤完成,但該寫入請求組大小已達(dá)到上限,則關(guān)閉該寫入請求組停止加入新的寫入請求,并向所述遠(yuǎn)程備份服務(wù)器發(fā)送組關(guān)閉信號,同時將關(guān)閉的寫入請求組內(nèi)的寫入請求仍交由磁盤完成,然后新建寫入請求組并為該請求組分配編號,將攜帶有寫入請求組編號的寫入請求加入新建的寫入請求組,將新加入的該寫入請求發(fā)送給遠(yuǎn)程備份服務(wù)器。
4.按照權(quán)利要求3所述的系統(tǒng),其特征在于, 所述遠(yuǎn)程備份服務(wù)器依次讀取所述寫入請求隊(duì)列中的元素,若判斷該元素是所述組關(guān)閉信號,將該組關(guān)閉信號對應(yīng)的寫入請求組標(biāo)識為已關(guān)閉,并停止繼續(xù)讀取該寫入請求隊(duì)列。
5.按照權(quán)利要求3所述的系統(tǒng),其特征在于, 所述本地服務(wù)器的遠(yuǎn)程復(fù)制模塊若判斷所述寫入請求組內(nèi)沒有寫入請求被磁盤完成,且繼續(xù)判斷該寫入請求組大小尚未達(dá)到上限,則將攜帶有寫入請求組編號的寫入請求加入當(dāng)前寫入請求組;將新加入的該寫入請求發(fā)送給遠(yuǎn)程備份服務(wù)器。
6.按照權(quán)利要求5所述的系統(tǒng),其特征在于, 所述遠(yuǎn)程備份服務(wù)器的遠(yuǎn)程復(fù)制模塊在判斷所述元素是寫入請求組的組關(guān)閉信號停止繼續(xù)讀取寫入請求隊(duì)列后,若繼續(xù)判斷與該組關(guān)閉信號對應(yīng)的寫入請求組內(nèi)的寫入請求全部完成,則向所述本地服務(wù)器發(fā)送寫入請求組完成信號,然后繼續(xù)讀取所述寫入請求隊(duì)列中的元素并進(jìn)行后續(xù)操作;若繼續(xù)判斷與該組關(guān)閉信號對應(yīng)的寫入請求組內(nèi)的寫入請求未全部完成,則等待寫入請求組內(nèi)的寫入請求全部完成后,執(zhí)行后續(xù)的操作。
7.一種異步遠(yuǎn)程復(fù)制系統(tǒng)維護(hù)數(shù)據(jù)一致性的方法,涉及所述系統(tǒng)中通過網(wǎng)絡(luò)連接的本地服務(wù)器和遠(yuǎn)程備份服務(wù)器,該方法包括 本地服務(wù)器將應(yīng)用模塊的寫入請求加入到新建的寫入請求組或已建立且開放的寫入請求組,將寫入請求組編號攜帶在該寫入請求中發(fā)送到遠(yuǎn)程備份服務(wù)器,并向磁盤提交該寫入請求;遠(yuǎn)程備份服務(wù)器將接收的寫入請求置入一寫入請求隊(duì)列中未關(guān)閉的寫入請求組。
8.按照權(quán)利要求6所述的方法,其特征在于,所述遠(yuǎn)程備份服務(wù)器的所述寫入請求隊(duì)列包括N個已關(guān)閉的寫入請求組和至多一個未關(guān)閉的寫入請求組,所述N為大于零或等于零的整數(shù);所述已關(guān)閉的寫入請求組含有一個或多個寫入請求和一個組關(guān)閉信號,所述未關(guān)閉的寫入請求組含有一個或多個寫入請求,每一寫入請求中含有寫入請求組編號以及請求寫入的內(nèi)容。
9.按照權(quán)利要求7所述的方法,其特征在于,所述本地服務(wù)器具體執(zhí)行的流程包括 所述本地服務(wù)器在收到所述應(yīng)用模塊的寫入請求后,若判斷當(dāng)前沒有開放的寫入請求組,或者判斷當(dāng)前有開放的寫入請求組,且繼續(xù)判斷該寫入請求組內(nèi)有寫入請求已被磁盤完成,或者判斷該寫入請求組內(nèi)沒有寫入請求被磁盤完成,但該寫入請求組大小已達(dá)到上限,則關(guān)閉該寫入請求組停止加入新的寫入請求,并向所述遠(yuǎn)程備份服務(wù)器發(fā)送組關(guān)閉信號,同時將關(guān)閉的寫入請求組內(nèi)的寫入請求仍交由磁盤完成,然后新建寫入請求組并為該請求組分配編號,將攜帶有寫入請求組編號的寫入請求加入新建的寫入請求組,將該寫入請求發(fā)送給遠(yuǎn)程備份服務(wù)器。
10.按照權(quán)利要求9所述的方法,其特征在于,所述本地服務(wù)器具體執(zhí)行的流程還包括 所述本地服務(wù)器若判斷所述寫入請求組內(nèi)沒有寫入請求被磁盤完成,且繼續(xù)判斷該寫入請求組大小尚未達(dá)到上限,則將攜帶有寫入請求組編號的寫入請求加入當(dāng)前寫入請求組;將該寫入請求發(fā)送給遠(yuǎn)程備份服務(wù)器。
11.按照權(quán)利要求9所述的方法,其特征在于,還包括 所述遠(yuǎn)程備份服務(wù)器依次讀取所述寫入請求隊(duì)列中的元素,若判斷該元素是所述組關(guān)閉信號,將該組關(guān)閉信號對應(yīng)的寫入請求組標(biāo)識為已關(guān)閉,并停止繼續(xù)讀取該寫入請求隊(duì)列。
12.按照權(quán)利要求11所述的方法,其特征在于,所述遠(yuǎn)程備份服務(wù)器在判斷所述元素是所述組關(guān)閉信號,將該組關(guān)閉信號對應(yīng)的寫入請求組標(biāo)識為已關(guān)閉,并停止繼續(xù)讀取寫入請求隊(duì)列后,還包括 若繼續(xù)判斷與該組關(guān)閉信號對應(yīng)的寫入請求組內(nèi)的寫入請求全部完成,則向所述本地服務(wù)器發(fā)送寫入請求組完成信號,然后繼續(xù)依次讀取所述寫入請求隊(duì)列中的元素并執(zhí)行后續(xù)流程;若繼續(xù)判斷與該組關(guān)閉信號對應(yīng)的寫入請求組內(nèi)的寫入請求未全部完成,則等待寫入請求組內(nèi)的寫入請求全部完成后,執(zhí)行后續(xù)的流程。
全文摘要
本發(fā)明披露了異步遠(yuǎn)程復(fù)制系統(tǒng)及其維護(hù)數(shù)據(jù)一致性的方法,其中系統(tǒng)包括通過網(wǎng)絡(luò)連接的本地服務(wù)器和遠(yuǎn)程備份服務(wù)器,其中本地服務(wù)器通過本地的遠(yuǎn)程復(fù)制模塊將應(yīng)用模塊的寫入請求加入到新建的寫入請求組或已建立且開放的寫入請求組,將寫入請求組編號攜帶在寫入請求中發(fā)送到遠(yuǎn)程備份服務(wù)器,并向磁盤提交該寫入請求;遠(yuǎn)程備份服務(wù)器通過本地的遠(yuǎn)程復(fù)制模塊將接收的寫入請求置入寫入請求隊(duì)列中未關(guān)閉的寫入請求組。本發(fā)明可有效識別出所有潛在的寫入依賴關(guān)系,解決了因?qū)懭胍蕾囮P(guān)系而缺乏數(shù)據(jù)一致性保護(hù)的問題,能夠可靠地保證異步遠(yuǎn)程復(fù)制數(shù)據(jù)的一致性。
文檔編號H04L29/08GK102790801SQ201210210788
公開日2012年11月21日 申請日期2012年6月20日 優(yōu)先權(quán)日2012年6月20日
發(fā)明者張延楓, 徐旸 申請人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司