摘 要:設(shè)計(jì)并實(shí)現(xiàn)了一種多點(diǎn)容災(zāi)系統(tǒng)。主數(shù)據(jù)中心的數(shù)據(jù)通過本地高速網(wǎng)絡(luò)同步地在本地備份中心備份,并通過Internet異步地在多個(gè)遠(yuǎn)程備份中心備份。主數(shù)據(jù)中心的寫請(qǐng)求同步地在本地備份中心提交,并經(jīng)過緩存、差錯(cuò)檢測(cè)后異步地在多個(gè)遠(yuǎn)程備份中心重放。災(zāi)難發(fā)生時(shí),可從多個(gè)備份點(diǎn)對(duì)主數(shù)據(jù)中心進(jìn)行恢復(fù)。該系統(tǒng)具有可靠性高、費(fèi)用低廉、備份距離遠(yuǎn)、容災(zāi)能力強(qiáng)等優(yōu)點(diǎn)。
關(guān)鍵詞:多點(diǎn)備份; 災(zāi)難恢復(fù); 容災(zāi); 寫重放
中圖分類號(hào):TP309 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1001-3695(2008)08-2427-03
Design and implementation of multi-point disaster tolerant system
GU Qi-chao,LIU Xiao-jie,LI Tao,ZHAO Kui,HUANG Chao-chang,CHEN Qian
(Dept. of Computer, Sichuan University, Chengdu 610065, China)
Abstract:This paper designed and implemented a multi-point disaster tolerant system.The primary data center was synchronously backuped in local backup center via local stable high-speed network, and was asynchronously backuped in multiple remote backup centers via Internet. Write requests in the primary data center synchronously submitted in local backup center, and they replayed in every remote backup center after being cached and error detected. When disasters happened, the primary data center could be recovered from multiple backup centers. This system has high reliability, low cost, far backup distance, and strong ability of disaster tolerant.
Key words:multi-point backup; disaster recovery; disaster tolerant; write replay
信息技術(shù)的飛速發(fā)展和應(yīng)用范圍的不斷擴(kuò)大使得企業(yè)對(duì)信息技術(shù)的依賴越來越大,信息已成為企業(yè)極其重要的資源。但由于信息系統(tǒng)的復(fù)雜性,信息也是最易受損害的資源。對(duì)計(jì)算機(jī)信息進(jìn)行容災(zāi)備份與恢復(fù)是維護(hù)信息安全的重要手段[1,2]。傳統(tǒng)的備份技術(shù)往往需要專線設(shè)施,且備份距離有限,投入費(fèi)用高,使得容災(zāi)系統(tǒng)的應(yīng)用范圍受到極大限制。容災(zāi)距離遠(yuǎn)、費(fèi)用低廉的備份與恢復(fù)系統(tǒng)逐漸成為容災(zāi)研究的熱點(diǎn)[3,4]。
本文設(shè)計(jì)并實(shí)現(xiàn)一種多點(diǎn)容災(zāi)系統(tǒng),將主數(shù)據(jù)中心的數(shù)據(jù)同步地在本地備份中心備份,并異步地在多個(gè)遠(yuǎn)程備份中心備份。這種多點(diǎn)容災(zāi)系統(tǒng)可靠性高、費(fèi)用低廉、備份距離遠(yuǎn)、兼具本地備份與遠(yuǎn)程備份、恢復(fù)快、容災(zāi)能力強(qiáng),是企業(yè)切實(shí)可行的容災(zāi)系統(tǒng)。
1 系統(tǒng)設(shè)計(jì)
1.1 系統(tǒng)結(jié)構(gòu)
多點(diǎn)容災(zāi)系統(tǒng)由三部分組成,即主數(shù)據(jù)中心(primary data center,PDC)、本地備份中心(local backup center,LBC)和遠(yuǎn)程備份中心(remote backup center,RBC)。其中,主數(shù)據(jù)中心通過本地穩(wěn)定高速網(wǎng)絡(luò)與本地備份中心相連,本地備份中心通過Internet與遠(yuǎn)程備份中心相連。遠(yuǎn)程備份中心有多個(gè),遠(yuǎn)程備份中心1、遠(yuǎn)程備份中心2……遠(yuǎn)程備份中心n(n為備份點(diǎn)個(gè)數(shù)),形成多點(diǎn)結(jié)構(gòu)。系統(tǒng)的體系結(jié)構(gòu)如圖1所示。
數(shù)據(jù)備份的流程是:在主數(shù)據(jù)中心上監(jiān)控存儲(chǔ)設(shè)備驅(qū)動(dòng)層寫操作,寫操作同步地在主數(shù)據(jù)中心與本地備份中心提交,寫操作的相關(guān)信息通過Internet異步地發(fā)往各個(gè)遠(yuǎn)程備份中心,并重放,從而實(shí)現(xiàn)對(duì)主數(shù)據(jù)中心的多點(diǎn)備份。
數(shù)據(jù)恢復(fù)的流程根據(jù)發(fā)生的災(zāi)難范圍的不同而不同:
a)局部災(zāi)難(local disaster)
(a)主數(shù)據(jù)中心發(fā)生災(zāi)難,但本地備份中心正常。選擇本地備份中心為恢復(fù)源,對(duì)主數(shù)據(jù)中心進(jìn)行數(shù)據(jù)重建[5,6],完成恢復(fù)。
(b)本地備份中心發(fā)生災(zāi)難,但主數(shù)據(jù)中心正常。選擇主數(shù)據(jù)中心為恢復(fù)源,對(duì)本地備份中心進(jìn)行數(shù)據(jù)重建,并對(duì)各個(gè)遠(yuǎn)程備份中心進(jìn)行數(shù)據(jù)同步,完成恢復(fù)。
b)廣域?yàn)?zāi)難(wide-area disaster)
主數(shù)據(jù)中心和本地備份中心均發(fā)生災(zāi)難,選擇備份數(shù)據(jù)最新的遠(yuǎn)程備份中心為恢復(fù)源,對(duì)本地備份中心進(jìn)行數(shù)據(jù)重建,完成本地備份中心的恢復(fù);本地備份中心再對(duì)主數(shù)據(jù)中心進(jìn)行數(shù)據(jù)重建,完成恢復(fù)。
1.2 容災(zāi)任務(wù)
對(duì)備份和恢復(fù)的管理控制通過建立容災(zāi)任務(wù)實(shí)現(xiàn)。一個(gè)容災(zāi)任務(wù)的組成元素包括監(jiān)控對(duì)象、鏡像對(duì)象、緩存對(duì)象、備份對(duì)象。其中,監(jiān)控對(duì)象是主數(shù)據(jù)中心上待備份的存儲(chǔ)設(shè)備,鏡像對(duì)象是本地備份中心上對(duì)監(jiān)控對(duì)象的鏡像設(shè)備,緩存對(duì)象是本地備份中心上備份數(shù)據(jù)緩存設(shè)備,備份對(duì)象是各個(gè)遠(yuǎn)程備份中心上的備份設(shè)備。
監(jiān)控對(duì)象上的存儲(chǔ)設(shè)備寫操作請(qǐng)求通過穩(wěn)定高速的本地網(wǎng)絡(luò)同步在鏡像對(duì)象上提交,實(shí)現(xiàn)鏡像對(duì)象始終與監(jiān)控對(duì)象保持?jǐn)?shù)據(jù)實(shí)時(shí)一致。緩存對(duì)象存儲(chǔ)每次寫操作請(qǐng)求的相關(guān)信息,并按序組成發(fā)送隊(duì)列,通過Internet發(fā)送到備份對(duì)象上重放,實(shí)現(xiàn)備份對(duì)象保持與監(jiān)控對(duì)象的數(shù)據(jù)異步一致。
容災(zāi)任務(wù)各組成元素的數(shù)據(jù)關(guān)系表示如下:
任一時(shí)刻有
datamonitor=datamirror
datamonitor=databackup+datacache
當(dāng)datacache =0時(shí)有datamonitor=databackup
其中:datamonitor表示監(jiān)控對(duì)象的數(shù)據(jù),datamirror表示鏡像對(duì)象的數(shù)據(jù),datacache表示緩存對(duì)象的數(shù)據(jù),databackup表示備份對(duì)象存儲(chǔ)的數(shù)據(jù)。datamonitor始終與datamirror相同,實(shí)現(xiàn)本地同步備份。datacache=0表示緩存對(duì)象中的數(shù)據(jù)已全部發(fā)送到備份對(duì)象中并重放,此時(shí)備份對(duì)象與監(jiān)控對(duì)象的數(shù)據(jù)完全一致,實(shí)現(xiàn)數(shù)據(jù)遠(yuǎn)程異步備份。
1.3 功能模塊
根據(jù)數(shù)據(jù)備份與恢復(fù)的流程,可將系統(tǒng)劃分為如下的功能模塊:
a)初始化模塊。初始化容災(zāi)任務(wù),在備份前同步各備份中心與主數(shù)據(jù)中心的數(shù)據(jù)。
b)寫請(qǐng)求監(jiān)控模塊。獲取主數(shù)據(jù)中心的存儲(chǔ)設(shè)備驅(qū)動(dòng)層寫操作[7]的相關(guān)信息,將相關(guān)信息封裝成備份項(xiàng)。
c)網(wǎng)絡(luò)通信模塊。負(fù)責(zé)主數(shù)據(jù)中心與本地備份中心之間、本地備份中心與遠(yuǎn)程備份中心之間備份項(xiàng)的發(fā)送和接收,以及相關(guān)應(yīng)答信息的傳輸。
d)海量數(shù)據(jù)緩存模塊。主數(shù)據(jù)中心與本地備份中心之間通過穩(wěn)定高速的本地網(wǎng)絡(luò)傳輸備份項(xiàng)的速度遠(yuǎn)大于本地備份中心與遠(yuǎn)程備份中心之間通過Internet傳輸備份項(xiàng)的速度。海量緩存模塊緩存來自主數(shù)據(jù)中心的備份項(xiàng),組成發(fā)送隊(duì)列依次發(fā)往各個(gè)遠(yuǎn)程備份中心。
e)差錯(cuò)控制模塊。驗(yàn)證遠(yuǎn)程備份中心接收到的來自本地備份中心的備份項(xiàng)是否完整無誤。
f)寫重放模塊。解析備份項(xiàng),在遠(yuǎn)程備份中心上重放[8]存儲(chǔ)設(shè)備層寫操作。
g)災(zāi)難恢復(fù)模塊。系統(tǒng)發(fā)生災(zāi)難時(shí),在主數(shù)據(jù)中心與本地備份中心之間和本地備份中心與遠(yuǎn)程備份中心之間進(jìn)行數(shù)據(jù)恢復(fù)。
h)配置管理模塊。提供對(duì)容災(zāi)任務(wù)的管理配置工具,是系統(tǒng)管理員管理容災(zāi)任務(wù)、備份和恢復(fù)的界面接口。
各模塊間的關(guān)系如圖2所示。
2 系統(tǒng)實(shí)現(xiàn)
2.1 初始化模塊
容災(zāi)任務(wù)開始前需要進(jìn)行任務(wù)初始化。初始化模塊將主數(shù)據(jù)中心的數(shù)據(jù)發(fā)送到本地備份中心和各遠(yuǎn)程備份中心,確保在開始備份前,各備份中心的數(shù)據(jù)均與主數(shù)據(jù)中心一致。
2.2 寫請(qǐng)求監(jiān)控模塊
主數(shù)據(jù)中心的數(shù)據(jù)變化最終表現(xiàn)為存儲(chǔ)設(shè)備驅(qū)動(dòng)層的寫操作,寫請(qǐng)求監(jiān)控模塊在存儲(chǔ)設(shè)備驅(qū)動(dòng)層監(jiān)控系統(tǒng)對(duì)存儲(chǔ)設(shè)備的寫請(qǐng)求。主數(shù)據(jù)中心提交寫請(qǐng)求時(shí),監(jiān)控模塊阻塞該請(qǐng)求,獲取本次寫請(qǐng)求相關(guān)的寫數(shù)據(jù)(data)、數(shù)據(jù)長(zhǎng)度(len)、寫位置(offset),通過本地穩(wěn)定的高速網(wǎng)絡(luò)發(fā)送到本地備份中心,再與主數(shù)據(jù)中心監(jiān)控設(shè)備對(duì)應(yīng)的鏡像設(shè)備上同步提交此寫請(qǐng)求。同時(shí)將寫請(qǐng)求信息附加上必要的控制信息(控制信息有摘要值算法、摘要值和備份項(xiàng)序號(hào)),封裝成一個(gè)備份項(xiàng)(backup item),發(fā)送到本地備份中心的緩存設(shè)備緩存。其中,摘要值算法可以為MD5、SHA-1等,記為algorithm;摘要值為寫請(qǐng)求相關(guān)數(shù)據(jù)用摘要值算法計(jì)算得到的值,用于進(jìn)行差錯(cuò)控制,記為mdsend;備份項(xiàng)序號(hào)為一個(gè)遞增的長(zhǎng)整數(shù),從零開始記錄每個(gè)備份項(xiàng)的序號(hào),用于災(zāi)難恢復(fù)時(shí)選擇最優(yōu)恢復(fù)源的依據(jù),記為index。綜上所述,一個(gè)備份項(xiàng)是這樣的一個(gè)多元組:backup item=(data,len,offset,algorithm,mdsend,index)。
2.3 網(wǎng)絡(luò)通信模塊
在主數(shù)據(jù)中心與本地備份中心之間以及本地備份中心與各個(gè)遠(yuǎn)程備份中心之間建立TCP socket連接,接收其他模塊(寫請(qǐng)求監(jiān)控模塊、海量數(shù)據(jù)緩存模塊、差錯(cuò)控制模塊、災(zāi)難恢復(fù)模塊)的數(shù)據(jù)發(fā)送請(qǐng)求,處理備份項(xiàng)和相關(guān)應(yīng)答信息的發(fā)送和接收。
2.4 海量數(shù)據(jù)緩存模塊
海量數(shù)據(jù)緩存模塊運(yùn)行于本地備份中心,緩存寫請(qǐng)求監(jiān)控模塊發(fā)送來的備份項(xiàng),按序組成發(fā)送隊(duì)列,通過Internet發(fā)送到各個(gè)遠(yuǎn)程備份中心。
首先創(chuàng)建一個(gè)發(fā)送隊(duì)列sendlist,將新接收到的備份項(xiàng)插入到當(dāng)前隊(duì)尾,為一發(fā)送項(xiàng)senditem,并依次從隊(duì)頭取出發(fā)送。每個(gè)senditem同時(shí)發(fā)送到各個(gè)遠(yuǎn)程備份中心,得到發(fā)送成功的應(yīng)答(SUCCESS)后從sendlist中銷毀此senditem,回收存儲(chǔ)空間;得到要求重傳的應(yīng)答(RETRANS)后重傳該senditem。若與某個(gè)遠(yuǎn)程備份中心的連接中斷,senditem發(fā)送失敗,則立即創(chuàng)建一個(gè)臨時(shí)隊(duì)列templist,并將當(dāng)前sendlist的所有senditem復(fù)制到templist中。此后海量緩存模塊接收到的每個(gè)備份項(xiàng)同時(shí)插入到sendlist和templist隊(duì)尾。Sendlist繼續(xù)從隊(duì)頭取出senditem往連接正常的遠(yuǎn)程備份中心發(fā)送。當(dāng)網(wǎng)絡(luò)連接恢復(fù)后,templist從隊(duì)頭取出senditem發(fā)往恢復(fù)連接的遠(yuǎn)程備份中心,當(dāng)templist為空時(shí),銷毀這個(gè)隊(duì)列。
由以上分析,海量數(shù)據(jù)緩存模塊的主要算法用偽代碼表示如下:
while(sendlist非空)
{
for(i=0;i { begin_send://跳轉(zhuǎn)標(biāo)簽 send senditem to RBCi; //發(fā)送當(dāng)前senditem到第i個(gè)遠(yuǎn)程備份中心(RBC) receive ACK ;//接收應(yīng)答 switch(ACK) { case SUCCESS://發(fā)送成功 continue ;//結(jié)束本次循環(huán),發(fā)送下一個(gè) case RETRANS://要求重傳 goto begin_send;//跳轉(zhuǎn)到標(biāo)簽處 case BREAKOFF://連接斷開 create templist;//創(chuàng)建臨時(shí)隊(duì)列 copy sendlist to templist;//拷貝當(dāng)前sendlist到templist break;//跳出switch }//switch }//for delete senditem from sendlist; //銷毀senditem }//while 2.5 差錯(cuò)控制模塊 差錯(cuò)控制模塊確保備份數(shù)據(jù)的無誤傳輸以及正確重放。遠(yuǎn)程備份中心將接收到的備份項(xiàng),提交給差錯(cuò)控制模塊,差錯(cuò)控制模塊解析備份項(xiàng),獲取有效寫信息write_info(包括寫數(shù)據(jù)data、數(shù)據(jù)長(zhǎng)度len和寫位置offset)、摘要值算法algorithm和摘要值mdsend。用algorithm重新計(jì)算write_info的摘要值,得到mdrecv。比較mdsend和mdrecv,若mdsend=mdrecv,則反饋給海量緩存模塊應(yīng)答信息SUCCESS,表示本次備份項(xiàng)傳輸無誤;若mdsend≠mdrecv,則丟棄此備份項(xiàng),并反饋應(yīng)答信息RETRANS,表示要求重傳本次備份項(xiàng)。 2.6 寫重放模塊 寫重放模塊解析經(jīng)過差錯(cuò)控制模塊檢驗(yàn)的備份項(xiàng),將其中的有效寫信息write_info(包括寫數(shù)據(jù)data、數(shù)據(jù)長(zhǎng)度len和寫位置offset)提交給遠(yuǎn)程備份中心的存儲(chǔ)設(shè)備驅(qū)動(dòng)程序,重放寫操作。各個(gè)遠(yuǎn)程備份中心各自維護(hù)一個(gè)值backup_index,每個(gè)備份項(xiàng)重放后用備份項(xiàng)序號(hào)index更新backup_index,從而backup_index表明了各遠(yuǎn)程備份中心當(dāng)前對(duì)主數(shù)據(jù)中心的備份程度,這個(gè)值將作為最優(yōu)恢復(fù)源的選擇依據(jù)。 2.7 災(zāi)難恢復(fù)模塊 系統(tǒng)發(fā)生災(zāi)難時(shí),數(shù)據(jù)恢復(fù)模塊負(fù)責(zé)數(shù)據(jù)重建。前述數(shù)據(jù)恢復(fù)流程表明,災(zāi)難范圍不同,則恢復(fù)源也不同。 當(dāng)主數(shù)據(jù)中心由于局部災(zāi)難發(fā)生災(zāi)難時(shí),以本地備份中心作為恢復(fù)源。災(zāi)難恢復(fù)模塊將本地備份中心的備份數(shù)據(jù)以一定的大小劃分成數(shù)據(jù)塊[9,10],通過本地穩(wěn)定的高速網(wǎng)絡(luò)發(fā)送所有數(shù)據(jù)塊到主數(shù)據(jù)中心,主數(shù)據(jù)中心得以快速恢復(fù)。 當(dāng)主數(shù)據(jù)中心與本地備份中心由于廣域?yàn)?zāi)難發(fā)生災(zāi)難時(shí),選擇最優(yōu)的遠(yuǎn)程備份中心為恢復(fù)源。比較各個(gè)遠(yuǎn)程備份中心的backup_index,選擇其backup_index值最大的遠(yuǎn)程備份中心為最優(yōu)恢復(fù)源(數(shù)據(jù)丟失最少),用RBCrecov表示。災(zāi)難恢復(fù)模塊將RBCrecov的備份數(shù)據(jù)以一定的大小劃分成數(shù)據(jù)塊,發(fā)送所有數(shù)據(jù)塊到本地備份中心,本地備份中心得以恢復(fù)。再以本地備份中心為恢復(fù)源對(duì)主數(shù)據(jù)中心進(jìn)行恢復(fù)。 2.8 配置管理模塊 配置管理模塊采用B/S結(jié)構(gòu),在本地備份中心與各遠(yuǎn)程備份中心上部署Web服務(wù)器和后臺(tái)數(shù)據(jù)庫,管理員通過Web頁面進(jìn)行容災(zāi)配置管理,如新建容災(zāi)任務(wù)、刪除任務(wù)、啟動(dòng)/停止任務(wù)、啟動(dòng)恢復(fù)、實(shí)時(shí)監(jiān)控各點(diǎn)狀態(tài)、配置系統(tǒng)參數(shù)等。配置管理的信息通過后臺(tái)數(shù)據(jù)庫和配置文件保存,配置管理指令通過后臺(tái)進(jìn)程傳遞給各個(gè)相應(yīng)模塊。圖形化的配置管理界面簡(jiǎn)化了容災(zāi)配置操作。 3 安全方案 備份數(shù)據(jù)通過Internet在本地備份中心與各遠(yuǎn)程備份中心間傳輸,可能遭受竄改、竊聽等網(wǎng)絡(luò)攻擊。筆者通過架設(shè)VPN(virtual private network,虛擬專用網(wǎng))保證數(shù)據(jù)的安全傳輸。在本地備份中心與各遠(yuǎn)程備份中心之間分別建立VPN tunnel(安全隧道),對(duì)所有在本地備份中心與遠(yuǎn)程備份中心間發(fā)送與接收的數(shù)據(jù)進(jìn)行加密與認(rèn)證。VPN的使用和管理,如生成證書、簽名證書、更新證書、選擇加密/認(rèn)證算法、設(shè)置密鑰、更新密鑰、建立/撤銷隧道等,通過配置管理模塊提供的Web頁面進(jìn)行操作。 4 結(jié)束語 本文設(shè)計(jì)并實(shí)現(xiàn)了一種多點(diǎn)容災(zāi)系統(tǒng),使主數(shù)據(jù)中心的數(shù)據(jù)在本地備份中心與多個(gè)遠(yuǎn)程備份中心備份,并能夠在災(zāi)難發(fā)生后及時(shí)快速地恢復(fù)數(shù)據(jù)。該系統(tǒng)廉價(jià)、可靠、容災(zāi)能力強(qiáng),為企業(yè)提供了可行的容災(zāi)方案。 參考文獻(xiàn): [1]李濤. 網(wǎng)絡(luò)安全概論[M].北京:電子工業(yè)出版社,2004. [2]陳凱,白英彩.網(wǎng)絡(luò)存儲(chǔ)技術(shù)及發(fā)展趨勢(shì)[J].電子學(xué)報(bào),2002,30(12):1928-1932. [3]LENNERT, JOSEPH F, RETZNER,et al.The automated backup solution-safeguarding the communications network infrastructure[J].Bell Labs Technical,2004,9:59-84. [4]KOTLA R, DAHLIN M. High throughput Byzantine fault tolerance[C]//Proc of International Conference on Dependable Systems and Networks.2004:575-584. [5]BALDONI R, MARCHETTI C, TUCCCI PIERGIOVANNI S. Asynchronous active replication in three-tier distributed systems[C]//Proc of Pacific Rim International Symposium on Dependable Computing.2002:19-26. [6]EHRHARDT A. Extension of storage area networks and integration on different platforms of an optical transport network[C]//Proc of the 6th International Conference on Transparent Optical Networks.2004:229-232. [7]LO Chi-chun. A novel approach of backup path reservation for survi-vable high-speed networks[J].IEEE Communications Magazine,2003,41(3). [8]HAYES, PHILLIP E, HAMMON,et al.Disaster recovery project management[C]//Proc of Conference Record-IAS Annual Meeting (IEEE Industry Applications Society).2000:2814-2821. [9]WANG Kun, ZHOU Li-hua, CAI Zhen,et al.A disaster recovery system model in an e-government system[C]//Proc of the 6th International Conference on Parallel and Distributed Computing, Applications and Technologies.2005:247-250. [10]KEETON K, MERCHANT A. A framework for evaluating storage system dependability[C]//Proc of International Conference on Dependable Systems and Networks (DSN’04).2004:877-886. 注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文