本發(fā)明涉及電力應(yīng)用系統(tǒng)遭受數(shù)據(jù)損壞,甚至數(shù)據(jù)中心遭受災(zāi)難時保證數(shù)據(jù)安全性的方法。更進(jìn)一步說,涉及到電力應(yīng)用系統(tǒng)中基于異步遠(yuǎn)程鏡像的數(shù)據(jù)安全性保護(hù)系統(tǒng),在系統(tǒng)遭受數(shù)據(jù)損壞,甚至數(shù)據(jù)中心災(zāi)難時,保證數(shù)據(jù)安全性的方法。
背景技術(shù):
當(dāng)由于人為或自然的原因,造成信息系統(tǒng)嚴(yán)重故障或癱瘓時,保證用戶數(shù)據(jù)的安全性具有非常重要的意義。目前,多數(shù)業(yè)務(wù)應(yīng)用系統(tǒng)將數(shù)據(jù)存放到分布式存儲中,但是目前的分布式存儲,缺乏合理且有效的數(shù)據(jù)保護(hù)機(jī)制。大部分分布式存儲系統(tǒng)采用如下幾種數(shù)據(jù)保護(hù)機(jī)制:
(1)本地數(shù)據(jù)備份。該方案會定時對系統(tǒng)數(shù)據(jù)進(jìn)行備份,如果系統(tǒng)出現(xiàn)故障時,可以通過備份恢復(fù)數(shù)據(jù),以保證應(yīng)用系統(tǒng)可以恢復(fù)運(yùn)行。但是該方案不能應(yīng)對數(shù)據(jù)中心發(fā)生人為或自然災(zāi)難的場景。比如一個數(shù)據(jù)中心遭受地震,會導(dǎo)致整個數(shù)據(jù)中心數(shù)據(jù)包括備份數(shù)據(jù)同時丟失。
(2)遠(yuǎn)程數(shù)據(jù)備份。該方案會定時將系統(tǒng)數(shù)據(jù)備份到遠(yuǎn)程數(shù)據(jù)中心,以此保證在應(yīng)用系統(tǒng)遭受認(rèn)為或自然災(zāi)難時,可以通過遠(yuǎn)程數(shù)據(jù)中心的備份數(shù)據(jù)進(jìn)行數(shù)據(jù)恢復(fù)。但是該方案有兩種方式:如果采用全量備份,則在數(shù)據(jù)備份時耗時很長,業(yè)務(wù)需要中斷;如果采用增量備份,則數(shù)據(jù)恢復(fù)時耗時較長,導(dǎo)致業(yè)務(wù)系統(tǒng)中斷時間超過可接受范圍。
(3)遠(yuǎn)程同步鏡像。該方案將本地數(shù)據(jù)以完全同步的方式復(fù)制到異地,每一本地的i/o事務(wù)均需等待遠(yuǎn)程復(fù)制的完成確認(rèn)信息,方予以釋放。當(dāng)主站點出現(xiàn)故障時,用戶的應(yīng)用程序切換到備份的替代站點后,鏡像的遠(yuǎn)程副本可以保證業(yè)務(wù)繼續(xù)執(zhí)行而沒有數(shù)據(jù)的丟失。但該方案往返傳播造成延時較長,大大影響存儲系統(tǒng)性能。而且為了保證同步復(fù)制,傳輸距離不能太長,網(wǎng)絡(luò)帶寬要求高,成本可能超出可接受范圍。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種基于異步遠(yuǎn)程鏡像的數(shù)據(jù)安全性保護(hù)系統(tǒng)與電力應(yīng)用系統(tǒng)數(shù)據(jù)保護(hù)方法,通過遠(yuǎn)程異步鏡像方案,實現(xiàn)分布式存儲系統(tǒng)的異地容災(zāi)機(jī)制,遠(yuǎn)程的數(shù)據(jù)復(fù)制是以后臺異步的方式進(jìn)行的。
為實現(xiàn)上述目的,本發(fā)明采用下述技術(shù)方案:
一種基于異步遠(yuǎn)程鏡像的數(shù)據(jù)安全性保護(hù)系統(tǒng),將本地數(shù)據(jù)以同步的方式復(fù)制到異地,形成主系統(tǒng)到從系統(tǒng)的映射,包括日志模塊,完成對本地數(shù)據(jù)的修改,日志模塊將每一個操作記錄成一個event,然后從系統(tǒng)使用日志記錄的信息對所有的event根據(jù)時間順序進(jìn)行replay,從而得到完整的數(shù)據(jù)狀態(tài);
快照模塊,通過cow機(jī)制,對本地數(shù)據(jù)做一個快照;
監(jiān)控模塊,不斷檢查主系統(tǒng)是否有新的數(shù)據(jù)變化,通過檢查日志頭,并對比已經(jīng)完成復(fù)制的日志頭,如果不相同,通知重放模塊進(jìn)行數(shù)據(jù)重放;
重放模塊,拉取主系統(tǒng)的日志和數(shù)據(jù),并在從系統(tǒng)進(jìn)行重放操作。
一種電力應(yīng)用系統(tǒng)數(shù)據(jù)保護(hù)方法,包括以下步驟:
步驟1、監(jiān)控模塊在指定的時間間隔后,不斷的對主系統(tǒng)進(jìn)行檢查,對比主系統(tǒng)的日志頭和上次數(shù)據(jù)同步記錄下來的日志頭信息,如果上一次同步數(shù)據(jù)記錄的日志頭信息為空,說明是第一次進(jìn)行數(shù)據(jù)同步,不需要對比,直接通知重放模塊進(jìn)行全量數(shù)據(jù)同步;如果在主系統(tǒng)的日志中沒有找到上次記錄的日志信息,備份數(shù)據(jù)遭受損壞,直接通知重放模塊進(jìn)行全量數(shù)據(jù)同步;如果主系統(tǒng)的日志頭和上次同步的日志頭相同,不進(jìn)行數(shù)據(jù)同步,等待指定的時間間隔之后進(jìn)行下一次日志檢查;
步驟2:監(jiān)控模塊發(fā)現(xiàn)主系統(tǒng)有數(shù)據(jù)更新,通知重放模塊進(jìn)行數(shù)據(jù)同步;重放模塊通知快照模塊首先對需要同步的數(shù)據(jù)做一個快照,數(shù)據(jù)快照使用的是cow機(jī)制,當(dāng)主系統(tǒng)有新的數(shù)據(jù)操作時:
1)數(shù)據(jù)要被讀取
當(dāng)主系統(tǒng)中數(shù)據(jù)被業(yè)務(wù)系統(tǒng)讀取,不需要對快照數(shù)據(jù)做任何修改,快照和業(yè)務(wù)系統(tǒng)還是共享同一份數(shù)據(jù);
2)數(shù)據(jù)要被更新
當(dāng)主系統(tǒng)中的數(shù)據(jù)要被業(yè)務(wù)系統(tǒng)更新,這是主系統(tǒng)將首先自動將以前的數(shù)據(jù)copy到另一個數(shù)據(jù)塊中,供快照模塊使用,保證通過快照模塊讀到的數(shù)據(jù)是打快照時刻的數(shù)據(jù),這時,業(yè)務(wù)系統(tǒng)和快照模塊將不再共享同一個數(shù)據(jù)塊;
3)數(shù)據(jù)被刪除
當(dāng)主系統(tǒng)中的數(shù)據(jù)要被業(yè)務(wù)系統(tǒng)刪除時,主系統(tǒng)不會刪除相應(yīng)的數(shù)據(jù)塊,會保留下來供快照模塊使用。
步驟3:重放模塊拉取最新日志信息,并進(jìn)行重放,進(jìn)行元數(shù)據(jù)同步,該階段根據(jù)日志對比情況分成全量元數(shù)據(jù)同步和增量元數(shù)據(jù)同步:
1)全量元數(shù)據(jù)同步
新建一個與主系統(tǒng)對應(yīng)的數(shù)據(jù)塊,并且拉取所有對應(yīng)的日志信息,然后根據(jù)時間順序按照拉取的日志信息,對每一個event進(jìn)行重放,這樣將得到一個與主系統(tǒng)一致的元數(shù)據(jù)狀態(tài);
2)增量元數(shù)據(jù)同步
在日志模塊中找到上一次數(shù)據(jù)同步記錄下來的日志頭信息,然后將新的日志全部拉取到從系統(tǒng)中,然后根據(jù)時間順序,對每一個event進(jìn)行重放,從而得到一個與主系統(tǒng)一致的元數(shù)據(jù)狀態(tài)。
步驟4:對比主系統(tǒng)快照中的數(shù)據(jù)與從系統(tǒng)中的數(shù)據(jù),進(jìn)行數(shù)據(jù)同步,數(shù)據(jù)同步也分為全量同步和增量同步:
1)全量數(shù)據(jù)同步
系統(tǒng)會將數(shù)據(jù)切分成大小可配置的小數(shù)據(jù)塊,對每一個數(shù)據(jù)塊進(jìn)行同步,當(dāng)數(shù)據(jù)塊有數(shù)據(jù)時進(jìn)行數(shù)據(jù)同步,將切分成的小數(shù)據(jù)塊數(shù)據(jù)從主系統(tǒng)復(fù)制到從系統(tǒng),并保存到從存儲系統(tǒng)相同位置;當(dāng)數(shù)據(jù)塊沒數(shù)據(jù)不進(jìn)行數(shù)據(jù)同步,這塊數(shù)據(jù)是一個空洞數(shù)據(jù);
2)增量數(shù)據(jù)同步
系統(tǒng)會將數(shù)據(jù)切分成大小可配置的小數(shù)據(jù)塊,對每個數(shù)據(jù)塊進(jìn)行現(xiàn)有快照與上一次同步快照對比,如果數(shù)據(jù)塊沒有數(shù)據(jù),不進(jìn)行數(shù)據(jù)同步,該數(shù)據(jù)塊仍然是一個空洞數(shù)據(jù);如果數(shù)據(jù)塊沒有數(shù)據(jù),但是引用了另一個數(shù)據(jù)塊,同步引用數(shù)據(jù)塊,并在從系統(tǒng)中做同樣的引用關(guān)系;如果數(shù)據(jù)塊有數(shù)據(jù),但是與上一次同步的數(shù)據(jù)一致,不需要做數(shù)據(jù)同步,從系統(tǒng)數(shù)據(jù)已經(jīng)和主系統(tǒng)一致;如果數(shù)據(jù)塊有數(shù)據(jù),且與上一次同步數(shù)據(jù)不一致,進(jìn)行一次增量復(fù)制,將增量部分?jǐn)?shù)據(jù)傳輸?shù)綇南到y(tǒng)中,在從系統(tǒng)的相同數(shù)據(jù)塊中進(jìn)行一次數(shù)據(jù)增量應(yīng)用操作。
本發(fā)明的有益效果是,
(1)有效的保證數(shù)據(jù)安全性。不僅在數(shù)據(jù)損壞時可以恢復(fù)數(shù)據(jù),即使在數(shù)據(jù)中心遭受人為或自然災(zāi)難時,也可以恢復(fù)數(shù)據(jù),為業(yè)務(wù)系統(tǒng)提供數(shù)據(jù)服務(wù)。
(2)數(shù)據(jù)恢復(fù)時間短。當(dāng)數(shù)據(jù)中心遭受災(zāi)難時,恢復(fù)存儲系統(tǒng)的功能只需要直接切換到遠(yuǎn)程鏡像數(shù)據(jù)中心。業(yè)務(wù)恢復(fù)時間在分鐘單位。
(3)對本地存儲系統(tǒng)性能幾乎無影響。由于使用異步復(fù)制的方式,本地存儲系統(tǒng)不需要等待遠(yuǎn)程備份結(jié)束才返回io。所以遠(yuǎn)程鏡像對于所有的本地io不會有任何影響。而且遠(yuǎn)程數(shù)據(jù)傳輸使用專有網(wǎng)絡(luò),也不會對業(yè)務(wù)網(wǎng)絡(luò)造成影響。
(4)成本低。異步遠(yuǎn)程鏡像方案不會對本地存儲系統(tǒng)性能造成影響,所以不需要采用昂貴的光纖網(wǎng)絡(luò),大大降低了數(shù)據(jù)保護(hù)系統(tǒng)的成本。
附圖說明
圖1是基于異步遠(yuǎn)程鏡像的數(shù)據(jù)安全性保護(hù)系統(tǒng)系統(tǒng)結(jié)構(gòu)示意圖;
圖2是電力應(yīng)用系統(tǒng)數(shù)據(jù)保護(hù)方法流程圖。
具體實施方式
如圖1所示,圖中對存儲系統(tǒng)構(gòu)建了一個遠(yuǎn)程鏡像,當(dāng)主數(shù)據(jù)中心遭受人為或自然災(zāi)難是,可以立即將數(shù)據(jù)io切換到鏡像系統(tǒng)中,從而保證業(yè)務(wù)系統(tǒng)的正常運(yùn)行。具體系統(tǒng)結(jié)構(gòu)組成包括:
(1)日志模塊
日志模塊記錄對元數(shù)據(jù)的所有修改,包括resize,snapshot,trim,create,delete等操作。日志模塊將每一個操作記錄成一個event,然后系統(tǒng)可以使用日志記錄的信息對所有的event根據(jù)時間順序進(jìn)行replay從而得到完整的數(shù)據(jù)狀態(tài)。但是日志模塊只會記錄元數(shù)據(jù)變化,不會記錄數(shù)據(jù)本身。
(2)快照模塊
快照模塊可以對數(shù)據(jù)做一個快照,通過cow的機(jī)制,快照的做成基本上不需要耗費(fèi)時間成本。如果一個數(shù)據(jù)被打了快照,所有新的數(shù)據(jù)修改都不會影響到快照的數(shù)據(jù)。通過快照,遠(yuǎn)程鏡像才能保證在增量復(fù)制的過程中不會有新的數(shù)據(jù)修改,從而保證這一次復(fù)制的數(shù)據(jù)的一致性。
(3)監(jiān)控模塊
監(jiān)控模塊會不斷的檢查主系統(tǒng)是否有了新的數(shù)據(jù)變化。通過檢查日志頭,并對比已經(jīng)完成復(fù)制的日志頭,如果不相同,說明有了新的日志操作,就說明主系統(tǒng)有了新的數(shù)據(jù)變化。這時就需要通知重放模塊進(jìn)行數(shù)據(jù)重放。監(jiān)控模塊的運(yùn)行間隔時間是可以配置的,可根據(jù)系統(tǒng)需求,配置最合適的同步時間。
(4)重放模塊
重放模塊主要是拉取主系統(tǒng)的日志和數(shù)據(jù),并在從系統(tǒng)進(jìn)行重放操作。重放模塊是異步遠(yuǎn)程鏡像系統(tǒng)中最核心的模塊,需要跟其他所有模塊進(jìn)行交互。首先需要得到監(jiān)控模塊的通知,開始進(jìn)行數(shù)據(jù)重放。重放最開始就需要使用快照模塊對主系統(tǒng)的數(shù)據(jù)做一個快照,從而保證在數(shù)據(jù)同步過程中的數(shù)據(jù)一致性。然后就需要對日志和增量數(shù)據(jù)進(jìn)行拉取操作,從主系統(tǒng)拉倒從系統(tǒng),而且拉取的所有數(shù)據(jù),都不會影響到業(yè)務(wù)數(shù)據(jù)網(wǎng)絡(luò)。最后進(jìn)行重放操作,將從系統(tǒng)的數(shù)據(jù)更新到和主系統(tǒng)一致。
如圖2所示,一種電力應(yīng)用系統(tǒng)數(shù)據(jù)保護(hù)方法,包括以下步驟:
步驟1監(jiān)控模塊啟動。
監(jiān)控模塊將在指定的時間間隔后,不斷的對主系統(tǒng)進(jìn)行檢查,對比主系統(tǒng)的日志頭和上次數(shù)據(jù)同步記錄下來的日志頭信息。將出現(xiàn)一下幾種情況
1)如果上一次同步數(shù)據(jù)記錄的日志頭信息為空,說明是第一次進(jìn)行數(shù)據(jù)同步,不需要對比,直接通知重放模塊進(jìn)行全量數(shù)據(jù)同步。
2)如果在主系統(tǒng)的日志中沒有找到上次記錄的日志信息,可能是備份數(shù)據(jù)遭受損壞,直接通知重放模塊進(jìn)行全量數(shù)據(jù)同步。
3)如果主系統(tǒng)的日志頭和上次同步的日志頭相同,將不進(jìn)行數(shù)據(jù)同步,將等待指定的時間間隔之后進(jìn)行下一次日志檢查。
步驟2:監(jiān)控模塊發(fā)現(xiàn)主系統(tǒng)有數(shù)據(jù)更新,通知重放模塊進(jìn)行數(shù)據(jù)同步。
重放模塊會通知快照模塊首先對需要同步的數(shù)據(jù)做一個快照。為了保證在數(shù)據(jù)同步過程中,想要同步的數(shù)據(jù)不會有新的修改,從而保證數(shù)據(jù)的一致性。數(shù)據(jù)快照使用的是cow機(jī)制,也就是說快照和業(yè)務(wù)系統(tǒng)共享同一個數(shù)據(jù)塊,所以制作快照幾乎不需要耗費(fèi)時間成本。當(dāng)主系統(tǒng)有新的數(shù)據(jù)操作時:
1)數(shù)據(jù)要被讀取。
當(dāng)主系統(tǒng)中數(shù)據(jù)被業(yè)務(wù)系統(tǒng)讀取,我們不需要對快照數(shù)據(jù)做任何修改,快照和業(yè)務(wù)系統(tǒng)還是共享同一份數(shù)據(jù)。
2)數(shù)據(jù)要被更新。
當(dāng)主系統(tǒng)中的數(shù)據(jù)要被業(yè)務(wù)系統(tǒng)更新,這是主系統(tǒng)將首先自動將以前的數(shù)據(jù)copy到另一個數(shù)據(jù)塊中,供快照快照使用,保證通過快照讀到的數(shù)據(jù)是打快照時刻的數(shù)據(jù)。這時,業(yè)務(wù)系統(tǒng)和快照將不再共享同一個數(shù)據(jù)塊。
3)數(shù)據(jù)被刪除。
當(dāng)主系統(tǒng)中的數(shù)據(jù)要被業(yè)務(wù)系統(tǒng)刪除時,主系統(tǒng)不會刪除相應(yīng)的數(shù)據(jù)塊,會保留下來供快照使用。所以即使業(yè)務(wù)系統(tǒng)在下一時刻刪除了數(shù)據(jù),我們還是可以保證這一次數(shù)據(jù)同步中該數(shù)據(jù)是存在的,保證了數(shù)據(jù)的一致性。
步驟3:重放模塊拉取最新日志信息,并進(jìn)行重放,進(jìn)行元數(shù)據(jù)同步。
該階段根據(jù)日志對比情況分成全量元數(shù)據(jù)同步和增量元數(shù)據(jù)同步:
1)全量元數(shù)據(jù)同步。
新建一個與主系統(tǒng)對應(yīng)的數(shù)據(jù)塊,并且拉取所有的對應(yīng)的日志信息。然后根據(jù)拉取的日志信息,根據(jù)時間順序,對每一個event進(jìn)行重放一遍。這樣將得到一個與主系統(tǒng)一致的元數(shù)據(jù)狀態(tài)。
2)增量元數(shù)據(jù)同步
在日志模塊中找到上一次數(shù)據(jù)同步記錄下來的日志頭信息,然后將新的日志全部拉取到從系統(tǒng)中。然后根據(jù)時間順序,對每一個event進(jìn)行重放一遍。從而得到一個與主系統(tǒng)一致的元數(shù)據(jù)狀態(tài)。
步驟4:對比主系統(tǒng)中快照中的數(shù)據(jù)與從系統(tǒng)中的數(shù)據(jù),進(jìn)行數(shù)據(jù)同步。
同樣的,數(shù)據(jù)同步也分為全量同步和增量同步。
1)全量數(shù)據(jù)同步。
系統(tǒng)會將數(shù)據(jù)切分成大小為4m(可配置)的小數(shù)據(jù)塊,對每一個數(shù)據(jù)塊進(jìn)行同步。
a)數(shù)據(jù)塊有數(shù)據(jù)。
進(jìn)行數(shù)據(jù)同步,將4m數(shù)據(jù)從主系統(tǒng)復(fù)制到從系統(tǒng),并保存到從存儲系統(tǒng)相同位置。
b)數(shù)據(jù)塊沒數(shù)據(jù)。
不進(jìn)行數(shù)據(jù)同步,這塊數(shù)據(jù)是一個空洞數(shù)據(jù)。
2)增量數(shù)據(jù)同步。
系統(tǒng)會將數(shù)據(jù)切分成大小為4m(可配置)的小數(shù)據(jù)塊,對每個數(shù)據(jù)塊進(jìn)行現(xiàn)有快照與上一次同步快照對比。
a)如果數(shù)據(jù)塊沒有數(shù)據(jù)。
不進(jìn)行數(shù)據(jù)同步。該數(shù)據(jù)塊仍然是一個空洞數(shù)據(jù)。
b)如果數(shù)據(jù)塊沒有數(shù)據(jù),但是引用了另一個數(shù)據(jù)塊。
同步引用數(shù)據(jù)塊,并在從系統(tǒng)中做同樣的引用關(guān)系。
c)如果數(shù)據(jù)塊有數(shù)據(jù),但是遇上一次同步的數(shù)據(jù)一致。
不需要做數(shù)據(jù)同步,從系統(tǒng)數(shù)據(jù)已經(jīng)和主系統(tǒng)一致。
d)如果數(shù)據(jù)塊有數(shù)據(jù),且與上一次同步數(shù)據(jù)不一致。
進(jìn)行一次增量復(fù)制,將增量部分?jǐn)?shù)據(jù)傳輸?shù)綇南到y(tǒng)中,在從系統(tǒng)的相同數(shù)據(jù)塊中進(jìn)行一次數(shù)據(jù)增量應(yīng)用操作。
根據(jù)國家標(biāo)準(zhǔn)gb/t20988-2007《信息系統(tǒng)災(zāi)難恢復(fù)規(guī)范》,信息系統(tǒng)災(zāi)難恢復(fù)能力等級與恢復(fù)時間目標(biāo)(rto)和恢復(fù)點目標(biāo)(rpo)具有一定的對應(yīng)關(guān)系,各行業(yè)可根據(jù)行業(yè)特點和信息技術(shù)的應(yīng)用情況制定相應(yīng)的災(zāi)難恢復(fù)能力等級要求和指標(biāo)體系。在《規(guī)范》中,也給出了行業(yè)應(yīng)用中災(zāi)難恢復(fù)能力等級與rto、rpo之間關(guān)系的示例,如下表所示:
本發(fā)明可以在成本可控的基礎(chǔ)上,兩項關(guān)鍵指標(biāo)rto和rpo都是分鐘級別,達(dá)到了《規(guī)范》中定義的5+等級的災(zāi)難恢復(fù)能力,滿足商用級別數(shù)據(jù)容災(zāi)需求,提供有效的應(yīng)用數(shù)據(jù)保護(hù)。
上述雖然結(jié)合附圖對本發(fā)明的具體實施方式進(jìn)行了描述,但并非對本發(fā)明保護(hù)范圍的限制,所屬領(lǐng)域技術(shù)人員應(yīng)該明白,在本發(fā)明的技術(shù)方案的基礎(chǔ)上,本領(lǐng)域技術(shù)人員不需要付出創(chuàng)造性勞動即可做出的各種修改或變形仍在本發(fā)明的保護(hù)范圍以內(nèi)。