本發(fā)明涉及一種數(shù)據(jù)復(fù)制方法及系統(tǒng),特別是涉及一種容災(zāi)實時數(shù)據(jù)復(fù)制方法及系統(tǒng)、備份客戶端。
背景技術(shù):
隨著計算機技術(shù)的迅猛發(fā)展,如今絕大部分企業(yè)都使用計算機來運作自己的核心業(yè)務(wù),由此而產(chǎn)生的數(shù)據(jù)也成為企業(yè)的核心財富。因此,如何有效地保護這些核心數(shù)據(jù)也成為了企業(yè)面臨的巨大挑戰(zhàn)和關(guān)注的焦點。
近幾年,容災(zāi)技術(shù)已成為企業(yè)數(shù)據(jù)保護的熱門研究課題。目前,容災(zāi)技術(shù)正在快速發(fā)展,給用戶提供了更多的數(shù)據(jù)保護策略。數(shù)據(jù)容災(zāi)系統(tǒng),對于IT而言,就是為計算機信息系統(tǒng)提供的一個能應(yīng)付各種災(zāi)難的環(huán)境。當(dāng)計算機系統(tǒng)在遭受如火災(zāi)、水災(zāi)、地震、戰(zhàn)爭等不可抗拒的自然災(zāi)難以及計算機犯罪、計算機病毒、掉電、網(wǎng)絡(luò)/通信失敗、硬件/軟件錯誤和人為操作錯誤等人為災(zāi)難時,容災(zāi)系統(tǒng)將保證用戶數(shù)據(jù)的安全性(數(shù)據(jù)容災(zāi))。甚至,一個更加完善的容災(zāi)系統(tǒng),還能提供不間斷的應(yīng)用服務(wù)(應(yīng)用容災(zāi))??梢哉f,容災(zāi)系統(tǒng)是數(shù)據(jù)存儲備份的最高層次。
在容災(zāi)領(lǐng)域,數(shù)據(jù)復(fù)制技術(shù)具有實時性高、數(shù)據(jù)丟失或零丟失等特點。在在線容災(zāi)中,生產(chǎn)機和容災(zāi)平臺同時工作,生產(chǎn)機通過傳輸鏈路將數(shù)據(jù)實時復(fù)制到遠(yuǎn)程容災(zāi)平臺。當(dāng)生產(chǎn)機出現(xiàn)故障時,可以利用容災(zāi)平臺進行任務(wù)接管以便繼續(xù)提供服務(wù)。所以,實時數(shù)據(jù)復(fù)制是容災(zāi)技術(shù)中的關(guān)鍵的步驟。
現(xiàn)有技術(shù)中,容災(zāi)數(shù)據(jù)復(fù)制技術(shù)主要包括以下三種:
1)存儲系統(tǒng)數(shù)據(jù)復(fù)制技術(shù)
該技術(shù)需要在生產(chǎn)機和容災(zāi)平臺各部署一套存儲系統(tǒng),利用存儲系統(tǒng)自帶的數(shù)據(jù)復(fù)制功能實現(xiàn)數(shù)據(jù)的實時復(fù)制。但是,該技術(shù)的局限性比較大,會影響生產(chǎn)機性能,且成本容易提高。
2)操作系統(tǒng)層數(shù)據(jù)復(fù)制技術(shù)
該技術(shù)需要本地系統(tǒng)和遠(yuǎn)端系統(tǒng)的主機是同構(gòu)的,利用生產(chǎn)機的卷管理器來實現(xiàn)數(shù)據(jù)的實時復(fù)制。但是該技術(shù)對生產(chǎn)機系統(tǒng)性能影響較大。
3)應(yīng)用層數(shù)據(jù)復(fù)制技術(shù)
該技術(shù)利用本地和遠(yuǎn)程主機之間的日志歸檔和傳遞功能實現(xiàn)數(shù)據(jù)的實時復(fù)制,對系統(tǒng)依賴性較小。但是,該技術(shù)需要在遠(yuǎn)端系統(tǒng)執(zhí)行日志中的記錄來生成備份數(shù)據(jù),增加了遠(yuǎn)端系統(tǒng)的負(fù)擔(dān)。
技術(shù)實現(xiàn)要素:
鑒于以上所述現(xiàn)有技術(shù)的缺點,本發(fā)明的目的在于提供一種容災(zāi)實時數(shù)據(jù)復(fù)制方法及系統(tǒng)、備份客戶端,通過使用更新緩沖區(qū)記錄系統(tǒng)I/O變化,通過切換更新緩沖區(qū)和交換緩沖區(qū)來周期性同步數(shù)據(jù),并通過沖突緩沖區(qū)(buffer)避免臟數(shù)據(jù),從而實現(xiàn)高效地實時數(shù)據(jù)復(fù)制,并且系統(tǒng)開銷極小,幾乎不影響生產(chǎn)系統(tǒng)性能。
為實現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明提供一種容災(zāi)實時數(shù)據(jù)復(fù)制方法,包括以下步驟:基于iSCSI協(xié)議將容災(zāi)控制臺上的一塊磁盤區(qū)域掛載到備份客戶端上的虛擬磁盤;在備份客戶端上創(chuàng)建更新緩沖區(qū)、交換緩沖區(qū)和沖突緩沖區(qū);所述更新緩沖區(qū)和所述交換緩沖區(qū)為大小相等的兩個緩沖區(qū);所述更新緩沖區(qū)為用于記錄備份客戶端上監(jiān)控數(shù)據(jù)源上每個數(shù)據(jù)塊的I/O變化;將備份客戶端上監(jiān)控數(shù)據(jù)源全部復(fù)制到虛擬磁盤上;在復(fù)制的同時將備份客戶端上監(jiān)控數(shù)據(jù)源的每個數(shù)據(jù)塊的I/O變化信息記錄在所述更新緩沖區(qū)上;進行數(shù)據(jù)一致性處理;所述數(shù)據(jù)一致性處理包括:交換所述更新緩沖區(qū)和所述交換緩沖區(qū)中的信息;繼續(xù)將備份客戶端上監(jiān)控數(shù)據(jù)源的每個數(shù)據(jù)塊的I/O變化信息記錄在所述更新緩沖區(qū)上,同時根據(jù)讀取的所述交換緩沖區(qū)中的I/O變化信息,在備份客戶端上監(jiān)控數(shù)據(jù)源中讀取在復(fù)制過程中有I/O變化的數(shù)據(jù)塊并存儲到所述虛擬磁盤中相應(yīng)的位置,再將所述交換緩沖區(qū)中該數(shù)據(jù)塊對應(yīng)的I/O變化信息清除;若在讀取所述交換緩沖區(qū)中的I/O變化信息的過程中,尚未讀取的I/O變化信息所對應(yīng)的數(shù)據(jù)塊又發(fā)生了I/O變化,則讀取該數(shù)據(jù)塊存儲至所述沖突緩沖區(qū)中,并將所述交換緩沖區(qū)中該數(shù)據(jù)塊對應(yīng)的I/O變化信息清除,然后將該I/O變化在更新緩沖區(qū)中進行記錄;當(dāng)所述交換緩沖區(qū)的信息讀取完畢后,將所述沖突緩沖區(qū)中的數(shù)據(jù)寫入所述虛擬磁盤中相應(yīng)的位置。
于本發(fā)明一實施例中,所述更新緩沖區(qū)和所述交換緩沖區(qū)均為包括若干個bit位的緩沖區(qū);每個bit位對應(yīng)備份客戶端上監(jiān)控數(shù)據(jù)源的一個數(shù)據(jù)塊,bit位的不同取值表示對應(yīng)數(shù)據(jù)塊是否有變化I/O。
于本發(fā)明一實施例中,還包括:繼續(xù)將備份客戶端上監(jiān)控數(shù)據(jù)源的每個數(shù)據(jù)塊的I/O變化記錄在所述更新緩沖區(qū)上,每間隔一預(yù)設(shè)周期,重復(fù)進行數(shù)據(jù)一致性處理。
于本發(fā)明一實施例中,重復(fù)進行數(shù)據(jù)一致性處理時,在讀取交換緩沖區(qū)中的I/O變化信息的過程中,當(dāng)沖突緩沖區(qū)的使用率高于第一預(yù)設(shè)閾值,則停止讀取交換緩沖區(qū)中的I/O變化信息,將I/O變化信息直接記錄在更新緩沖區(qū)中,并繼續(xù)將沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤中相應(yīng)位置;當(dāng)沖突緩沖區(qū)的使用率低于第二預(yù)設(shè)閾值,則將更新緩沖區(qū)和交換緩沖區(qū)中的I/O變化信息進行合并,使更新緩沖區(qū)中僅保留更新緩沖區(qū)和交換緩沖區(qū)中僅出現(xiàn)一次的I/O變化信息,同時清除交換緩沖區(qū)中的I/O變化信息,并繼續(xù)將沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤中相應(yīng)位置,直至讀取完畢或者到達預(yù)設(shè)周期。
于本發(fā)明一實施例中,當(dāng)所述更新緩沖區(qū)和所述交換緩沖區(qū)均為包括若干個bit位的緩沖區(qū);每個bit位對應(yīng)備份客戶端上監(jiān)控數(shù)據(jù)源的一個數(shù)據(jù)塊,bit位的不同取值表示對應(yīng)數(shù)據(jù)塊是否有變化I/O時,將更新緩沖區(qū)和交換緩沖區(qū)進行合并后,對更新緩沖區(qū)和交換緩沖區(qū)中的每個bit位進行異或處理得到一個新的更新緩沖區(qū)。
同時,本發(fā)明提供一種備份客戶端,用于容災(zāi)實時數(shù)據(jù)復(fù)制,所述備份客戶端上的虛擬磁盤基于iSCSI協(xié)議掛載容災(zāi)控制臺的一塊磁盤區(qū)域;
所述備份客戶端包括創(chuàng)建模塊、初始化復(fù)制模塊、監(jiān)控模塊和一致性處理模塊;
所述創(chuàng)建模塊用于在所述備份客戶端上創(chuàng)建更新緩沖區(qū)、交換緩沖區(qū)和沖突緩沖區(qū);所述更新緩沖區(qū)和所述交換緩沖區(qū)為大小相等的兩個緩沖區(qū);所述更新緩沖區(qū)為用于記錄備份客戶端上監(jiān)控數(shù)據(jù)源上每個數(shù)據(jù)塊的I/O變化;
所述初始化復(fù)制模塊用于在所述創(chuàng)建模塊創(chuàng)建更新緩沖區(qū)、交換緩沖區(qū)和沖突緩沖區(qū)之后,將所述備份客戶端上監(jiān)控數(shù)據(jù)源全部復(fù)制到所述虛擬磁盤上;
所述監(jiān)控模塊用于在所述初始化復(fù)制模塊開始復(fù)制的同時,持續(xù)監(jiān)控所述備份客戶端上監(jiān)控數(shù)據(jù)源的每個數(shù)據(jù)塊的I/O變化,并將I/O變化信息記錄在所述更新緩沖區(qū)上;
所述一致性處理模塊用于進行數(shù)據(jù)一致性處理;所述數(shù)據(jù)一致性處理包括:交換所述更新緩沖區(qū)和所述交換緩沖區(qū)中的信息;根據(jù)讀取的所述交換緩沖區(qū)中的I/O變化信息,在所述備份客戶端上監(jiān)控數(shù)據(jù)源中讀取在復(fù)制過程中有I/O變化的數(shù)據(jù)塊并存儲到所述虛擬磁盤中相應(yīng)的位置,再將所述交換緩沖區(qū)中該數(shù)據(jù)塊對應(yīng)的I/O變化信息清除;若在讀取所述交換緩沖區(qū)中的I/O變化信息的過程中,尚未讀取的I/O變化信息所對應(yīng)的數(shù)據(jù)塊又發(fā)生了I/O變化,則讀取該數(shù)據(jù)塊存儲至所述沖突緩沖區(qū)中,并將所述交換緩沖區(qū)中該數(shù)據(jù)塊對應(yīng)的I/O變化信息清除,然后將該I/O變化在所述更新緩沖區(qū)中進行記錄;當(dāng)所述交換緩沖區(qū)的信息讀取完畢后,將所述沖突緩沖區(qū)中的數(shù)據(jù)寫入所述虛擬磁盤中相應(yīng)的位置。
于本發(fā)明一實施例中,所述更新緩沖區(qū)和所述交換緩沖區(qū)均為包括若干個bit位的緩沖區(qū);每個bit位對應(yīng)備份客戶端上監(jiān)控數(shù)據(jù)源的一個數(shù)據(jù)塊,bit位的不同取值表示對應(yīng)數(shù)據(jù)塊是否有變化I/O。
于本發(fā)明一實施例中,還包括增量復(fù)制模塊,所述增量復(fù)制模塊用于每間隔一預(yù)設(shè)周期,根據(jù)所述監(jiān)控模塊在一致性處理之后監(jiān)控并記錄在所述更新緩沖區(qū)上的備份客戶端上監(jiān)控數(shù)據(jù)源的每個數(shù)據(jù)塊的I/O變化,重復(fù)進行數(shù)據(jù)一致性處理。
于本發(fā)明一實施例中,所述增量復(fù)制模塊還用于在讀取交換緩沖區(qū)中的I/O變化信息的過程中,當(dāng)沖突緩沖區(qū)的使用率高于第一預(yù)設(shè)閾值,則停止讀取交換緩沖區(qū)中的I/O變化信息,將I/O變化信息直接記錄在更新緩沖區(qū)中,并繼續(xù)將沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤中相應(yīng)位置;當(dāng)沖突緩沖區(qū)的使用率低于第二預(yù)設(shè)閾值,則將更新緩沖區(qū)和交換緩沖區(qū)中的I/O變化信息進行合并,使更新緩沖區(qū)中僅保留更新緩沖區(qū)和交換緩沖區(qū)中僅出現(xiàn)一次的I/O變化信息,同時清除交換緩沖區(qū)中的I/O變化信息,并繼續(xù)將沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤中相應(yīng)位置,直至讀取完畢或者到達預(yù)設(shè)周期。
另外,本發(fā)明還提供一種容災(zāi)實時數(shù)據(jù)復(fù)制系統(tǒng),包括備份客戶端和容災(zāi)控制臺;所述容災(zāi)控制臺基于iSCSI協(xié)議上將一塊磁盤區(qū)域掛載到所述備份客戶端上的虛擬磁盤;
所述備份客戶端包括創(chuàng)建模塊、初始化復(fù)制模塊、監(jiān)控模塊和一致性處理模塊;
所述創(chuàng)建模塊用于在所述備份客戶端上創(chuàng)建更新緩沖區(qū)、交換緩沖區(qū)和沖突緩沖區(qū);所述更新緩沖區(qū)和所述交換緩沖區(qū)為大小相等的兩個緩沖區(qū);所述更新緩沖區(qū)為用于記錄備份客戶端上監(jiān)控數(shù)據(jù)源上每個數(shù)據(jù)塊的I/O變化;
所述初始化復(fù)制模塊用于在所述創(chuàng)建模塊創(chuàng)建更新緩沖區(qū)、交換緩沖區(qū)和沖突緩沖區(qū)之后,將所述備份客戶端上監(jiān)控數(shù)據(jù)源全部復(fù)制到所述虛擬磁盤上;
所述監(jiān)控模塊用于在所述初始化復(fù)制模塊開始復(fù)制的同時,持續(xù)監(jiān)控所述備份客戶端上監(jiān)控數(shù)據(jù)源的每個數(shù)據(jù)塊的I/O變化,并將I/O變化信息記錄在所述更新緩沖區(qū)上;
所述一致性處理模塊用于進行數(shù)據(jù)一致性處理;所述數(shù)據(jù)一致性處理包括:交換所述更新緩沖區(qū)和所述交換緩沖區(qū)中的信息;根據(jù)讀取的所述交換緩沖區(qū)中的I/O變化信息,在所述備份客戶端上監(jiān)控數(shù)據(jù)源中讀取在復(fù)制過程中有I/O變化的數(shù)據(jù)塊并存儲到所述虛擬磁盤中相應(yīng)的位置,再將所述交換緩沖區(qū)中該數(shù)據(jù)塊對應(yīng)的I/O變化信息清除;若在讀取所述交換緩沖區(qū)中的I/O變化信息的過程中,尚未讀取的I/O變化信息所對應(yīng)的數(shù)據(jù)塊又發(fā)生了I/O變化,則讀取該數(shù)據(jù)塊存儲至所述沖突緩沖區(qū)中,并將所述交換緩沖區(qū)中該數(shù)據(jù)塊對應(yīng)的I/O變化信息清除,然后將該I/O變化在所述更新緩沖區(qū)中進行記錄;當(dāng)所述交換緩沖區(qū)的信息讀取完畢后,將所述沖突緩沖區(qū)中的數(shù)據(jù)寫入所述虛擬磁盤中相應(yīng)的位置。
如上所述,本發(fā)明的容災(zāi)實時數(shù)據(jù)復(fù)制方法及系統(tǒng)、備份客戶端,具有以下有益效果:
(1)通過使用更新緩沖區(qū)記錄系統(tǒng)I/O變化;
(2)通過切換更新緩沖區(qū)和交換緩沖區(qū)來周期性同步數(shù)據(jù);
(3)通過沖突buffer避免臟數(shù)據(jù);
(4)能夠?qū)崿F(xiàn)高效地實時數(shù)據(jù)復(fù)制,并且系統(tǒng)開銷極小,幾乎不影響生產(chǎn)系統(tǒng)性能。
附圖說明
圖1顯示為本發(fā)明的容災(zāi)實時數(shù)據(jù)復(fù)制方法的流程圖;
圖2顯示為iSCSI協(xié)議結(jié)構(gòu)圖;
圖3顯示為本發(fā)明的備份客戶端的結(jié)構(gòu)示意圖;
圖4顯示為本發(fā)明的容災(zāi)實時數(shù)據(jù)復(fù)制系統(tǒng)的結(jié)構(gòu)示意圖;
圖5顯示為本發(fā)明的容災(zāi)實時數(shù)據(jù)復(fù)制系統(tǒng)的一個優(yōu)選實施例的結(jié)構(gòu)示意圖;
圖6顯示為本發(fā)明的容災(zāi)實時數(shù)據(jù)復(fù)制系統(tǒng)的一個實施例的結(jié)構(gòu)示意圖;
圖7顯示為本發(fā)明的容災(zāi)實時數(shù)據(jù)復(fù)制系統(tǒng)的一個實施例的復(fù)制方法流程圖。
元件標(biāo)號說明
1 備份客戶端
11 創(chuàng)建模塊
12 初始化復(fù)制模塊
13 監(jiān)控模塊
14 一致性處理模塊
15 增量復(fù)制模塊
2 容災(zāi)控制臺
具體實施方式
以下通過特定的具體實例說明本發(fā)明的實施方式,本領(lǐng)域技術(shù)人員可由本說明書所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點與功效。本發(fā)明還可以通過另外不同的具體實施方式加以實施或應(yīng)用,本說明書中的各項細(xì)節(jié)也可以基于不同觀點與應(yīng)用,在沒有背離本發(fā)明的精神下進行各種修飾或改變。需說明的是,在不沖突的情況下,以下實施例及實施例中的特征可以相互組合。
需要說明的是,以下實施例中所提供的圖示僅以示意方式說明本發(fā)明的基本構(gòu)想,遂圖式中僅顯示與本發(fā)明中有關(guān)的組件而非按照實際實施時的組件數(shù)目、形狀及尺寸繪制,其實際實施時各組件的型態(tài)、數(shù)量及比例可為一種隨意的改變,且其組件布局型態(tài)也可能更為復(fù)雜。
參照圖1,本發(fā)明的容災(zāi)實時數(shù)據(jù)復(fù)制方法包括以下步驟:
步驟S1、基于iSCSI協(xié)議將容災(zāi)控制臺上的一塊磁盤區(qū)域掛載到備份客戶端上的虛擬磁盤。
虛擬磁盤就是在本地電腦里面虛擬出一個遠(yuǎn)程電腦里面的磁盤。例如,客戶端可以通過局域網(wǎng)連接服務(wù)器上的iSCSI Cake服務(wù)器,在本地虛擬出一塊硬盤,以達到通過網(wǎng)絡(luò)共享服務(wù)器硬盤的效果。
iSCSI(Internet Small Computer System Interface,Internet小型計算機系統(tǒng)接口)是一種基于TCP/IP的協(xié)議,用來建立和管理IP存儲設(shè)備、主機和客戶機等之間的相互連接,并創(chuàng)建存儲區(qū)域網(wǎng)絡(luò)(SAN)。SAN使得SCSI協(xié)議應(yīng)用于高速數(shù)據(jù)傳輸網(wǎng)絡(luò)成為可能,這種傳輸以數(shù)據(jù)塊級別(block-level)在多個數(shù)據(jù)存儲網(wǎng)絡(luò)間進行。
iSCSI技術(shù)將現(xiàn)有SCSI接口與以太網(wǎng)絡(luò)技術(shù)結(jié)合,使服務(wù)器可與使用IP網(wǎng)絡(luò)的儲存裝置互相交換資料。如圖2所示,iSCSI協(xié)議的主要功能是在TCP/IP網(wǎng)絡(luò)上的主機系統(tǒng)(Initiator)和存儲設(shè)備(Target)之間進行大量數(shù)據(jù)的封裝和可靠傳輸。
步驟S2、在備份客戶端上創(chuàng)建更新緩沖區(qū)、交換緩沖區(qū)和沖突緩沖區(qū)(buffer);更新緩沖區(qū)和交換緩沖區(qū)為大小相等的兩個緩沖區(qū);更新緩沖區(qū)為用于記錄備份客戶端上監(jiān)控數(shù)據(jù)源上每個數(shù)據(jù)塊的I/O變化。
其中,初始的更新緩沖區(qū)和交換緩沖區(qū)均為空,不記載任何信息。
優(yōu)選地,更新緩沖區(qū)和交換緩沖區(qū)均為包括若干個bit(比特)位的緩沖區(qū)。每個bit位對應(yīng)備份客戶端上監(jiān)控數(shù)據(jù)源的一個數(shù)據(jù)塊,bit位的不同取值表示對應(yīng)數(shù)據(jù)塊是否有變化I/O。例如,設(shè)定bit位為1時,表示該數(shù)據(jù)塊有變化I/O;bit位為0時,表示該數(shù)據(jù)塊沒有變化I/O。當(dāng)然,也可以設(shè)定bit位為1時,表示該數(shù)據(jù)塊沒變化I/O;bit位為0時,表示該數(shù)據(jù)塊有變化I/O。
在本發(fā)明中,數(shù)據(jù)塊的大小由用戶自定義。通常,一個數(shù)據(jù)塊對應(yīng)于系統(tǒng)的最小分配單元,即一個簇大小或者一個系統(tǒng)block大小。
交換緩沖區(qū)也是一塊內(nèi)存緩沖區(qū),其大小等于更新緩沖區(qū)大小。交換緩沖區(qū)主要用于和更新緩沖區(qū)進行交換,從而能夠周期性將備份客戶端上監(jiān)控數(shù)據(jù)源中有變化I/O的數(shù)據(jù)塊寫入虛擬磁盤中。
步驟S3、將備份客戶端上監(jiān)控數(shù)據(jù)源全部復(fù)制到虛擬磁盤上;在復(fù)制的同時將備份客戶端上監(jiān)控數(shù)據(jù)源的每個數(shù)據(jù)塊的I/O變化信息記錄在更新緩沖區(qū)上。
步驟S4、進行數(shù)據(jù)一致性處理;數(shù)據(jù)一致性處理包括:交換更新緩沖區(qū)和交換緩沖區(qū)中的信息;繼續(xù)將備份客戶端上監(jiān)控數(shù)據(jù)源的每個數(shù)據(jù)塊的I/O變化信息記錄在更新緩沖區(qū)上,同時根據(jù)讀取的交換緩沖區(qū)中的I/O變化信息,在備份客戶端上監(jiān)控數(shù)據(jù)源中讀取在復(fù)制過程中有I/O變化的數(shù)據(jù)塊并存儲到虛擬磁盤中相應(yīng)的位置,再將交換緩沖區(qū)中該數(shù)據(jù)塊對應(yīng)的I/O變化信息清除;若在讀取交換緩沖區(qū)中的I/O變化信息的過程中,尚未讀取的I/O變化信息所對應(yīng)的數(shù)據(jù)塊又發(fā)生了I/O變化,則讀取該數(shù)據(jù)塊存儲至沖突緩沖區(qū)中,并將交換緩沖區(qū)中該數(shù)據(jù)塊對應(yīng)的I/O變化信息清除,然后將該I/O變化在更新緩沖區(qū)中進行記錄;當(dāng)交換緩沖區(qū)的信息讀取完畢后,將沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤中相應(yīng)的位置。
具體地,若在讀取交換緩沖區(qū)中的I/O變化信息的過程中,尚未讀取的I/O變化信息所對應(yīng)的數(shù)據(jù)塊又發(fā)生了I/O變化,則根據(jù)該I/O的偏移和長度在更新緩沖區(qū)中找到其所在簇或者block所對應(yīng)的bit位,并將bit位設(shè)置為1。在更新緩沖區(qū)中將bit位設(shè)置為1之后,將該I/O下發(fā)到下層驅(qū)動,由系統(tǒng)寫入監(jiān)控數(shù)據(jù)源磁盤。
需要說明的是,沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤后,數(shù)據(jù)所在位置為空,可以繼續(xù)存儲數(shù)據(jù)塊。
通過上述步驟S4,可以保證虛擬磁盤和備份客戶端上監(jiān)控數(shù)據(jù)源上數(shù)據(jù)的一致性。
優(yōu)選地,還包括步驟S5、繼續(xù)將備份客戶端上監(jiān)控數(shù)據(jù)源的每個數(shù)據(jù)塊的I/O變化信息記錄在更新緩沖區(qū)上,每間隔一預(yù)設(shè)周期,重復(fù)進行數(shù)據(jù)一致性處理。
通過步驟S5,可以周期性將更新緩沖區(qū)記錄的變化I/O寫入虛擬磁盤中,這從而實現(xiàn)備份客戶端上監(jiān)控數(shù)據(jù)源的永久增量復(fù)制。
更為優(yōu)選地,步驟S5中還包括:在讀取交換緩沖區(qū)中的I/O變化信息的過程中,當(dāng)沖突緩沖區(qū)的使用率高于第一預(yù)設(shè)閾值,,則停止讀取交換緩沖區(qū)中的I/O變化信息,將I/O變化信息直接記錄在更新緩沖區(qū)中,并繼續(xù)將沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤中相應(yīng)位置;當(dāng)沖突緩沖區(qū)的使用率低于第二預(yù)設(shè)閾值,則將更新緩沖區(qū)和交換緩沖區(qū)中的I/O變化信息進行合并,使更新緩沖區(qū)中僅保留更新緩沖區(qū)和交換緩沖區(qū)中僅出現(xiàn)一次的I/O變化信息,同時清除交換緩沖區(qū)中的I/O變化信息,并繼續(xù)將沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤中相應(yīng)位置,直至讀取完畢或者到達預(yù)設(shè)周期。
具體地,在交換緩沖區(qū)掃描的過程中,如果系統(tǒng)產(chǎn)生大量的I/O變化,導(dǎo)致沖突緩沖區(qū)的使用率高于第一預(yù)設(shè)閾值,如100%,存儲不了所有的變化I/O數(shù)據(jù),那么會停止掃描交換緩沖區(qū),將變化I/O信息直接記錄在更新緩沖區(qū)中,并繼續(xù)將沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤中相應(yīng)位置。當(dāng)I/O變化不再頻繁時,如沖突緩沖區(qū)的使用率低于20%時,將更新緩沖區(qū)和交換緩沖區(qū)進行合并,即從頭開始對更新緩沖區(qū)和交換緩沖區(qū)中的每個bit位進行異或處理得到一個新的更新緩沖區(qū),同時將交換緩沖區(qū)的內(nèi)存空間作清零處理,并繼續(xù)將沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤中相應(yīng)位置,直至讀取完畢或者到達預(yù)設(shè)周期。
在本發(fā)明的一個優(yōu)選實施例中,當(dāng)備份客戶端對多個數(shù)據(jù)源進行監(jiān)控時,每個監(jiān)控數(shù)據(jù)源單獨有自己的更新緩沖區(qū)、交換緩沖區(qū)。所有的監(jiān)控數(shù)據(jù)源共用一個沖突緩沖區(qū)。掃描交換緩沖區(qū)時,對每個監(jiān)控數(shù)據(jù)源的交換緩沖區(qū)進行掃描。當(dāng)沖突緩沖區(qū)達到第一預(yù)設(shè)閾值時,會停止所有監(jiān)控數(shù)據(jù)源的交換緩沖區(qū)的掃描。交換的時候也是交換所有數(shù)據(jù)源的更新緩沖區(qū)和交換緩沖區(qū)。合并的時候也是對每個監(jiān)控數(shù)據(jù)源的更新緩沖區(qū)和交換緩沖區(qū)進行合并。
參照圖3,本發(fā)明的備份客戶端1用于容災(zāi)實時數(shù)據(jù)復(fù)制,備份客戶端1上的虛擬磁盤基于iSCSI協(xié)議掛載容災(zāi)控制臺的一塊磁盤區(qū)域。
虛擬磁盤就是在本地電腦里面虛擬出一個遠(yuǎn)程電腦里面的磁盤。例如,客戶端可以通過局域網(wǎng)連接服務(wù)器上的iSCSI Cake服務(wù)器,在本地虛擬出一塊硬盤,以達到通過網(wǎng)絡(luò)共享服務(wù)器硬盤的效果。
iSCSI(Internet Small Computer System Interface,Internet小型計算機系統(tǒng)接口)是一種基于TCP/IP的協(xié)議,用來建立和管理IP存儲設(shè)備、主機和客戶機等之間的相互連接,并創(chuàng)建存儲區(qū)域網(wǎng)絡(luò)(SAN)。SAN使得SCSI協(xié)議應(yīng)用于高速數(shù)據(jù)傳輸網(wǎng)絡(luò)成為可能,這種傳輸以數(shù)據(jù)塊級別(block-level)在多個數(shù)據(jù)存儲網(wǎng)絡(luò)間進行。
iSCSI技術(shù)將現(xiàn)有SCSI接口與以太網(wǎng)絡(luò)技術(shù)結(jié)合,使服務(wù)器可與使用IP網(wǎng)絡(luò)的儲存裝置互相交換資料。如圖2所示,iSCSI協(xié)議的主要功能是在TCP/IP網(wǎng)絡(luò)上的主機系統(tǒng)(Initiator)和存儲設(shè)備(Target)之間進行大量數(shù)據(jù)的封裝和可靠傳輸。
備份客戶端1包括創(chuàng)建模塊11、初始化復(fù)制模塊12、監(jiān)控模塊13和一致性處理模塊14。
創(chuàng)建模塊11用于在備份客戶端上創(chuàng)建更新緩沖區(qū)、交換緩沖區(qū)和沖突緩沖區(qū)(buffer);更新緩沖區(qū)和交換緩沖區(qū)為大小相等的兩個緩沖區(qū);更新緩沖區(qū)為用于記錄備份客戶端上監(jiān)控數(shù)據(jù)源上每個數(shù)據(jù)塊的I/O變化。
其中,初始的更新緩沖區(qū)和交換緩沖區(qū)均為空,不記載任何信息。
優(yōu)選地,更新緩沖區(qū)和交換緩沖區(qū)均為包括若干個bit(比特)位的緩沖區(qū)。每個bit位對應(yīng)備份客戶端上監(jiān)控數(shù)據(jù)源的一個數(shù)據(jù)塊,bit位的不同取值表示對應(yīng)數(shù)據(jù)塊是否有變化I/O。例如,設(shè)定bit位為1時,表示該數(shù)據(jù)塊有變化I/O;bit位為0時,表示該數(shù)據(jù)塊沒有變化I/O。當(dāng)然,也可以設(shè)定bit位為1時,表示該數(shù)據(jù)塊沒變化I/O;bit位為0時,表示該數(shù)據(jù)塊有變化I/O。
在本發(fā)明中,數(shù)據(jù)塊的大小由用戶自定義。通常,一個數(shù)據(jù)塊對應(yīng)于系統(tǒng)的最小分配單元,即一個簇大小或者一個系統(tǒng)block大小。
交換緩沖區(qū)也是一塊內(nèi)存緩沖區(qū),其大小等于更新緩沖區(qū)大小。交換緩沖區(qū)主要用于和更新緩沖區(qū)進行交換,從而能夠周期性將備份客戶端上監(jiān)控數(shù)據(jù)源中有變化I/O的數(shù)據(jù)塊寫入虛擬磁盤中。
初始化復(fù)制模塊12與創(chuàng)建模塊11相連,用于在創(chuàng)建模塊創(chuàng)建更新緩沖區(qū)、交換緩沖區(qū)和沖突緩沖區(qū)之后,將備份客戶端上監(jiān)控數(shù)據(jù)源全部復(fù)制到虛擬磁盤上。
監(jiān)控模塊13與初始化復(fù)制模塊12相連,用于在初始化復(fù)制模塊開始復(fù)制的同時,持續(xù)監(jiān)控備份客戶端上監(jiān)控數(shù)據(jù)源的每個數(shù)據(jù)塊的I/O變化,并將I/O變化信息記錄在更新緩沖區(qū)上。
一致性處理模塊14與監(jiān)控模塊13相連,用于進行數(shù)據(jù)一致性處理;數(shù)據(jù)一致性處理包括:交換更新緩沖區(qū)和交換緩沖區(qū)中的信息;根據(jù)讀取的交換緩沖區(qū)中的I/O變化信息,在備份客戶端上監(jiān)控數(shù)據(jù)源中讀取在復(fù)制過程中有I/O變化的數(shù)據(jù)塊并存儲到虛擬磁盤中相應(yīng)位置,再將交換緩沖區(qū)中該數(shù)據(jù)塊對應(yīng)的I/O變化信息清除;若在讀取交換緩沖區(qū)中的I/O變化信息的過程中,尚未讀取的I/O變化信息所對應(yīng)的數(shù)據(jù)塊又發(fā)生了I/O變化,則讀取該數(shù)據(jù)塊存儲至沖突緩沖區(qū)中,并將交換緩沖區(qū)中該數(shù)據(jù)塊對應(yīng)的I/O變化信息清除,然后將該I/O變化在更新緩沖區(qū)中進行記錄;當(dāng)交換緩沖區(qū)的信息讀取完畢后,將沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤中相應(yīng)位置。
具體地,若在讀取交換緩沖區(qū)中的I/O變化信息的過程中,尚未讀取的I/O變化信息所對應(yīng)的數(shù)據(jù)塊又發(fā)生了I/O變化,則根據(jù)該I/O的偏移和長度在更新緩沖區(qū)中找到其所在簇或者block所對應(yīng)的bit位,并將bit位設(shè)置為1。在更新緩沖區(qū)中將bit位設(shè)置為1之后,將該I/O下發(fā)到下層驅(qū)動,由系統(tǒng)寫入監(jiān)控數(shù)據(jù)源磁盤。
需要說明的是,沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤后,數(shù)據(jù)所在位置為空,可以繼續(xù)存儲數(shù)據(jù)塊。
通過上述一致性處理,可以保證虛擬磁盤和備份客戶端上監(jiān)控數(shù)據(jù)源上數(shù)據(jù)的一致性。
優(yōu)選地,如圖4所示,還包括增量復(fù)制模塊15,該增量復(fù)制模塊15與一致性處理模塊14相連,用于每間隔一預(yù)設(shè)周期,根據(jù)監(jiān)控模塊在一致性處理之后監(jiān)控并記錄在更新緩沖區(qū)上的備份客戶端上監(jiān)控數(shù)據(jù)源的每個數(shù)據(jù)塊的I/O變化,重復(fù)進行數(shù)據(jù)一致性處理。
通過上述增量復(fù)制,可以周期性將更新緩沖區(qū)記錄的變化I/O寫入虛擬磁盤中,這從而實現(xiàn)備份客戶端上監(jiān)控數(shù)據(jù)源的永久增量復(fù)制。
更為優(yōu)選地,增量復(fù)制模塊還用于在讀取交換緩沖區(qū)中的I/O變化信息的過程中,當(dāng)沖突緩沖區(qū)的使用率高于第一預(yù)設(shè)閾值,則停止讀取交換緩沖區(qū)中的I/O變化信息,將I/O變化信息直接記錄在更新緩沖區(qū)中,并繼續(xù)將沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤中相應(yīng)位置;當(dāng)沖突緩沖區(qū)的使用率低于第二預(yù)設(shè)閾值,則將更新緩沖區(qū)和交換緩沖區(qū)中的I/O變化信息進行合并,使更新緩沖區(qū)中僅保留更新緩沖區(qū)和交換緩沖區(qū)中僅出現(xiàn)一次的I/O變化信息,同時清除交換緩沖區(qū)中的I/O變化信息,并繼續(xù)將沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤中相應(yīng)位置,直至讀取完畢或者到達預(yù)設(shè)周期。
具體地,在交換緩沖區(qū)掃描的過程中,如果系統(tǒng)產(chǎn)生大量的I/O變化,導(dǎo)致沖突緩沖區(qū)的使用率高于第一預(yù)設(shè)閾值,如100%,存儲不了所有的變化I/O數(shù)據(jù),那么會停止掃描交換緩沖區(qū),將變化I/O信息直接記錄在更新緩沖區(qū)中,并繼續(xù)將沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤中相應(yīng)位置。當(dāng)I/O變化不再頻繁時,如沖突緩沖區(qū)的使用率低于20%時,將更新緩沖區(qū)和交換緩沖區(qū)進行合并,即從頭開始對更新緩沖區(qū)和交換緩沖區(qū)中的每個bit位進行異或處理得到一個新的更新緩沖區(qū),同時將交換緩沖區(qū)的內(nèi)存空間作清零處理,并繼續(xù)將沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤中相應(yīng)位置,直至讀取完畢或者到達預(yù)設(shè)周期。
在本發(fā)明的一個優(yōu)選實施例中,當(dāng)備份客戶端對多個數(shù)據(jù)源進行監(jiān)控時,每個監(jiān)控數(shù)據(jù)源單獨有自己的更新緩沖區(qū)、交換緩沖區(qū)。所有的監(jiān)控數(shù)據(jù)源共用一個沖突緩沖區(qū)。掃描交換緩沖區(qū)時,對每個監(jiān)控數(shù)據(jù)源的交換緩沖區(qū)進行掃描。當(dāng)沖突緩沖區(qū)達到第一預(yù)設(shè)閾值時,會停止所有監(jiān)控數(shù)據(jù)源的交換緩沖區(qū)的掃描。交換的時候也是交換所有數(shù)據(jù)源的更新緩沖區(qū)和交換緩沖區(qū)。合并的時候也是對每個監(jiān)控數(shù)據(jù)源的更新緩沖區(qū)和交換緩沖區(qū)進行合并。
參照圖5,本發(fā)明的容災(zāi)實時數(shù)據(jù)復(fù)制系統(tǒng)包括上述備份客戶端1和容災(zāi)控制臺2;容災(zāi)控制臺2基于iSCSI協(xié)議上將一塊磁盤區(qū)域掛載到備份客戶端1上的虛擬磁盤。
下面結(jié)合附圖和具體實施例對本發(fā)明的容災(zāi)實時數(shù)據(jù)復(fù)制系統(tǒng)進行詳細(xì)說明。
如圖6所示,該實施例的容災(zāi)實時數(shù)據(jù)復(fù)制系統(tǒng)包括備份客戶端和備份控制臺??刂婆_通過iSCSI協(xié)議將一塊磁盤掛載到客戶端的虛擬磁盤。
在需要備份的業(yè)務(wù)主機系統(tǒng)上安裝備份客戶端,同時在另外一臺主機上安裝備份控制臺。客戶端包含內(nèi)核驅(qū)動模塊、緩沖區(qū)記錄模塊、調(diào)度模塊、虛擬磁盤模塊以及控制模塊。備份控制臺包括數(shù)據(jù)存儲模塊和管理模塊,主要提供存儲管理和任務(wù)管理等功能。備份客戶端和備份控制臺都需要運行iSCSI服務(wù),以便可以掛載虛擬磁盤。例如,將備份控制臺上的一塊磁盤掛在到客戶端的虛擬磁盤F。
如圖7所示,備份客戶端和備份控制臺間通過以下步驟進行容災(zāi)實時數(shù)據(jù)復(fù)制:
1)創(chuàng)建數(shù)據(jù)復(fù)制任務(wù)
從備份控制臺中選擇某個連接到備份控制臺的備份客戶端作為備份對象,創(chuàng)建基于該備份客戶端主機的任務(wù)job,監(jiān)控備份客戶端主機上卷D的數(shù)據(jù),選擇備份控制臺通過iSCSI協(xié)議掛載到客戶端的虛擬磁盤F作為容災(zāi)數(shù)據(jù)備份磁盤。
2)初始化任務(wù)
創(chuàng)建任務(wù)job后,發(fā)起數(shù)據(jù)復(fù)制,首先對該任務(wù)進行初始化,設(shè)置任務(wù)相關(guān)參數(shù)。根據(jù)參數(shù)創(chuàng)建相應(yīng)的更新緩沖區(qū)和交換緩沖區(qū)以及沖突緩沖區(qū)。
其中,更新緩沖區(qū)為包括若干個bit位。每個bit位對應(yīng)備份客戶端上卷D的一個數(shù)據(jù)塊。設(shè)定bit位為1時,表示該數(shù)據(jù)塊有變化I/O;bit位為0時,表示該數(shù)據(jù)塊沒有變化I/O。
3)初始化復(fù)制
任務(wù)初始化完成后,調(diào)度模塊發(fā)送啟動監(jiān)控消息至內(nèi)核驅(qū)動模塊,內(nèi)核驅(qū)動模塊開始捕獲卷D區(qū)域的變化I/O,并將I/O所在的數(shù)據(jù)塊在更新緩沖區(qū)中對應(yīng)bit位設(shè)置為1;同時,系統(tǒng)像操作本地磁盤一樣將卷D中的數(shù)據(jù)通過iSCSI協(xié)議復(fù)制到虛擬磁盤F中。
4)數(shù)據(jù)一致性處理
卷D中數(shù)據(jù)全部復(fù)制到虛擬磁盤F后,切換更新緩沖區(qū)和交換緩沖區(qū),逐位掃描交換緩沖區(qū),將bit位為1的位所對應(yīng)的數(shù)據(jù)塊從卷D中讀取并寫入到虛擬磁盤F相應(yīng)的位置,并置該位為0。更新緩沖區(qū)繼續(xù)監(jiān)控卷D的變化I/O。如果在掃描交換緩沖區(qū)的過程中,出現(xiàn)沖突情況,則先將該bit位對應(yīng)的數(shù)據(jù)塊從卷D中讀取并存儲到?jīng)_突緩沖區(qū)中并置該位為0,再將該I/O變化在更新緩沖區(qū)中做記錄,最后寫入客戶端的監(jiān)控數(shù)據(jù)源磁盤。交換緩沖區(qū)掃描完成后,將沖突緩沖區(qū)中的數(shù)據(jù)塊寫入虛擬磁盤F中,即可實現(xiàn)數(shù)據(jù)的一致性。
5)永久增量復(fù)制
根據(jù)任務(wù)初始化階段設(shè)置的數(shù)據(jù)同步周期,在到達預(yù)設(shè)同步周期時,切換更新緩沖區(qū)和交換緩沖區(qū),更新緩沖區(qū)繼續(xù)監(jiān)控系統(tǒng)變化I/O。同時,逐位掃描交換緩沖區(qū),如果該位為1,則從D卷讀取該位對應(yīng)的數(shù)據(jù)塊并寫入虛擬磁盤F中,并置該位為0,掃描完成后即可得到一個可恢復(fù)的時間點。其中,該可恢復(fù)的時間點就是可以將備份客戶端恢復(fù)到某個狀態(tài)的時間點。在本發(fā)明中,每隔一定時間周期,會將該段時間內(nèi)變化的I/O同步到遠(yuǎn)程容災(zāi)控制臺。每同步一次就會產(chǎn)生一個時間點,基于該時間點可以將備份客戶端恢復(fù)到該時間點所處的狀態(tài)。
如果在掃描交換緩沖區(qū)的過程中,出現(xiàn)沖突情況,則先將該bit位對應(yīng)的數(shù)據(jù)塊從卷D中讀取并存儲到?jīng)_突緩沖區(qū)中并置該位為0,再將該I/O變化在更新緩沖區(qū)中記錄,最后寫入備份客戶端監(jiān)控數(shù)據(jù)源磁盤。如果系統(tǒng)在掃描交換緩沖區(qū)的過程中產(chǎn)生大量的變化I/O,導(dǎo)致沖突緩沖區(qū)溢出,無法存儲所有的變化I/O數(shù)據(jù),此時停止掃描緩沖區(qū),將變化I/O信息直接記錄在更新緩沖區(qū)中,并繼續(xù)將沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤中相應(yīng)位置。等系統(tǒng)變化I/O不再頻繁的時候,將更新緩沖區(qū)和交換緩沖區(qū)進行合并,即從第一個bit位開始進行異或操作,同時將交換緩沖區(qū)所有bit位置0,并繼續(xù)將沖突緩沖區(qū)中的數(shù)據(jù)寫入虛擬磁盤中相應(yīng)位置,直至讀取完畢或者到達預(yù)設(shè)周期。
綜上所述,本發(fā)明的容災(zāi)實時數(shù)據(jù)復(fù)制方法及系統(tǒng)、備份客戶端通過使用更新緩沖區(qū)記錄系統(tǒng)I/O變化,通過切換更新緩沖區(qū)和交換緩沖區(qū)來周期性同步數(shù)據(jù),并通過沖突緩沖區(qū)避免臟數(shù)據(jù),從而實現(xiàn)高效地實時數(shù)據(jù)復(fù)制,并且系統(tǒng)開銷極小,幾乎不影響生產(chǎn)系統(tǒng)性能。所以,本發(fā)明有效克服了現(xiàn)有技術(shù)中的種種缺點而具高度產(chǎn)業(yè)利用價值。
上述實施例僅例示性說明本發(fā)明的原理及其功效,而非用于限制本發(fā)明。任何熟悉此技術(shù)的人士皆可在不違背本發(fā)明的精神及范疇下,對上述實施例進行修飾或改變。因此,舉凡所屬技術(shù)領(lǐng)域中具有通常知識者在未脫離本發(fā)明所揭示的精神與技術(shù)思想下所完成的一切等效修飾或改變,仍應(yīng)由本發(fā)明的權(quán)利要求所涵蓋。