從前面的分析來(lái)看,同步數(shù)據(jù)容災(zāi)一般只能在較短距離內(nèi)部署(10KM-100KM),大于這個(gè)距離,就沒(méi)有實(shí)際應(yīng)用價(jià)值了。因?yàn)榧词乖?000KM 距離上,4.5MB 的速率即使將數(shù)據(jù)復(fù)制到異地,每個(gè)I/O 的響應(yīng)時(shí)間也會(huì)超過(guò)10ms,這種響應(yīng)速度太慢。

    異步數(shù)據(jù)容災(zāi)是在“線路帶寬和距離能保證完成數(shù)據(jù)復(fù)制過(guò)程,同時(shí),異地?cái)?shù)據(jù)復(fù)制不影響生產(chǎn)系統(tǒng)的性能”這樣的要求下提出來(lái)的。考慮異步數(shù)據(jù)容災(zāi),應(yīng)該注意到以下幾個(gè)技術(shù)條件和事實(shí)。


    與同步傳輸方式相比,異步傳輸方式對(duì)帶寬和距離的要求低很多,它只要求在某個(gè)時(shí)間段內(nèi)能將數(shù)據(jù)全部復(fù)制到異地即可,同時(shí)異步傳輸方式也不會(huì)明顯影響應(yīng)用系統(tǒng)的性能。其缺點(diǎn)是在本地生產(chǎn)數(shù)據(jù)發(fā)生災(zāi)難時(shí),異地系統(tǒng)上的數(shù)據(jù)可能會(huì)短暫損失(如果廣域網(wǎng)速率較低,交易未完整發(fā)送的話),但不影響一致性(類似本地?cái)?shù)據(jù)庫(kù)主機(jī)的異常關(guān)機(jī))。

    通過(guò)異步傳輸模式進(jìn)行異地?cái)?shù)據(jù)復(fù)制的技術(shù),包括:


    基于主機(jī)邏輯卷(Volume)的數(shù)據(jù)復(fù)制方式

    首先申明:針對(duì)這種方式,這以VERITAS VVR 為例,但并不表示所有基于主機(jī)進(jìn)行復(fù)制的其它軟件采用同樣方式,也不保證其它軟件是有應(yīng)用價(jià)值的。

    VERITAS VVR (Volume Replicator)通過(guò)基于Volume 和Log 的復(fù)制技術(shù),保證在任何時(shí)刻本地系統(tǒng)發(fā)生自然災(zāi)難時(shí),在異地的數(shù)據(jù)仍是可用的。

    VERITAS VVR 在異步模式下采用了Log 技術(shù)來(lái)跟蹤未及時(shí)復(fù)制的數(shù)據(jù)塊,這個(gè)Log 是一個(gè)先到先服務(wù)的堆棧,每一筆I/O 處理都會(huì)首先被放進(jìn)這個(gè)Log,并按到達(dá)先后順序被復(fù)制到異地服務(wù)器系統(tǒng)。

    下圖是其工作的結(jié)構(gòu)原理。


圖7-4 基于邏輯卷的異步數(shù)據(jù)復(fù)制


    從上圖,存儲(chǔ)工程師可以看到整個(gè)I/O 和復(fù)制的過(guò)程如下:


    服務(wù)器的另一個(gè)進(jìn)程:VVR 的進(jìn)程,負(fù)責(zé)將Log 隊(duì)列中的I/O 復(fù)制到異地服務(wù)器。這個(gè)過(guò)程和上面的I/O 過(guò)程在時(shí)間上無(wú)關(guān)。如上圖中的標(biāo)記:“I”和“II”。

    I: 本地VVR 進(jìn)程從Log 隊(duì)列中取出最先到達(dá)的I/O,復(fù)制到異地服務(wù)器

    II: 異地服務(wù)器接收到本地服務(wù)器VVR 發(fā)出的I/O 請(qǐng)求,將相應(yīng)數(shù)據(jù)寫到異地磁盤系統(tǒng),然后,通知本地系統(tǒng)VVR 進(jìn)程,要求下一個(gè)I/O。

    這里,跟蹤未及時(shí)復(fù)制的數(shù)據(jù)塊的Log 技術(shù)是保證異地?cái)?shù)據(jù)可用的必要條件。一個(gè)數(shù)據(jù)庫(kù)的I/O 是有嚴(yán)格順序的,這個(gè)順序是保證數(shù)據(jù)庫(kù)完整性的必要條件,一個(gè)完整性被破壞的數(shù)據(jù)庫(kù)一般是不可用的,比如根本無(wú)法啟動(dòng)、打開(kāi)該數(shù)據(jù)庫(kù),且是無(wú)法修復(fù)的。本地?cái)?shù)據(jù)庫(kù)的完整性是由數(shù)據(jù)庫(kù)本身來(lái)維護(hù)的。當(dāng)一個(gè)數(shù)據(jù)庫(kù)被實(shí)時(shí)復(fù)制到異地時(shí),要保證異地?cái)?shù)據(jù)庫(kù)的完整性,必然保證在異地磁盤I/O 上的I/O 順序和本地I/O 順序完全相同,否則,異地?cái)?shù)據(jù)庫(kù)的完整性就無(wú)法保證。

    VERITAS VVR 采用的I/O 控制機(jī)制是支持先到先服務(wù)的Log 技術(shù),因此,不管異地?cái)?shù)據(jù)比本地?cái)?shù)據(jù)落后多少時(shí)間,都能保證異地?cái)?shù)據(jù)庫(kù)數(shù)據(jù)的一致性。比如:本地系統(tǒng)在12:00 時(shí)發(fā)生自然災(zāi)難,由于部分?jǐn)?shù)據(jù)未被及時(shí)復(fù)制到異地,如有10 分鐘的數(shù)據(jù)未完成復(fù)制,那么在異地系統(tǒng)上存在11:50 分鐘以前的所有數(shù)據(jù),且這個(gè)數(shù)據(jù)庫(kù)是可用的。

    目前的基于磁盤系統(tǒng)的異地?cái)?shù)據(jù)復(fù)制技術(shù)采用Bitmap 技術(shù)和Timestamp 技術(shù),這兩種技術(shù)都不能保證本地向異地復(fù)制數(shù)據(jù)的順序嚴(yán)格和本地I/O 的順序相同,所以,這兩種方式都不能保證異地?cái)?shù)據(jù)庫(kù)的完整性。

    Bitmap(位圖)技術(shù)記錄未被及時(shí)復(fù)制的數(shù)據(jù)塊的方法是:對(duì)于每個(gè)數(shù)據(jù)塊(如32KB)用一個(gè)Bit 來(lái)對(duì)應(yīng),某一個(gè)Bit 被置為“1”時(shí),表示其對(duì)應(yīng)的數(shù)據(jù)塊已被修改過(guò),正在等待處理(這里是等待被復(fù)制)。由此可以看出,當(dāng)有一塊以上的數(shù)據(jù)塊未被及時(shí)復(fù)制時(shí),系統(tǒng)并無(wú)法確認(rèn)哪一塊數(shù)據(jù)塊應(yīng)該先復(fù)制到異地,所以,系統(tǒng)將任選一塊,即不按到達(dá)的時(shí)間先后進(jìn)行復(fù)制。

    可以看出,這種方式不能根本保證異地?cái)?shù)據(jù)庫(kù)數(shù)據(jù)的完整性、一致性。

    Timestamp 方式是對(duì)每個(gè)未及時(shí)傳送的數(shù)據(jù)塊蓋上一個(gè)時(shí)間戳。從表面上看,由于時(shí)間戳的關(guān)系,好像能確定一個(gè)數(shù)據(jù)塊被修改的時(shí)間順序了。其實(shí)不然:當(dāng)一個(gè)未被及時(shí)復(fù)制的數(shù)據(jù)塊被第2 次修改,并蓋上新的時(shí)間戳?xí)r,數(shù)據(jù)復(fù)制的順序就被破壞了。例如:

    現(xiàn)在有10 塊數(shù)據(jù)塊未被復(fù)制,編號(hào)“1、2、3、4、5、6、7、8、9、10”;這時(shí),第3 塊數(shù)據(jù)被再次修改,并被蓋上一個(gè)新的時(shí)間戳“11”;這時(shí),系統(tǒng)會(huì)按這樣的次序進(jìn)行復(fù)制:“1、2、(沒(méi)有3)、4、5、6、7、8、9、10、11”。存儲(chǔ)工程師可以看到,在復(fù)制進(jìn)行到“4~10”之間時(shí),異地?cái)?shù)據(jù)的完整性被破壞。

    事實(shí)上,在一個(gè)運(yùn)行繁忙的系統(tǒng)中,出現(xiàn)這種情況機(jī)率極高,甚至每時(shí)每刻都處在這種狀態(tài)之下。所以,本著嚴(yán)格的,對(duì)系統(tǒng)可用性負(fù)責(zé)任的態(tài)度,可以認(rèn)為“Timestamp”的技術(shù)雖然比Bitmap 技術(shù)有一定優(yōu)勢(shì),但實(shí)際上也無(wú)法保證異地?cái)?shù)據(jù)的完整性和可用性。

    Bitmap 和Timestamp 方式的技術(shù)弱點(diǎn):沒(méi)有l(wèi)og;

    作為磁盤系統(tǒng)內(nèi)置的數(shù)據(jù)復(fù)制功能,傳統(tǒng)的磁盤管理模式?jīng)]有考慮在磁盤系統(tǒng)內(nèi)部開(kāi)辟出一個(gè)磁盤塊給磁盤系統(tǒng)控制器本身使用,所以,磁盤系統(tǒng)無(wú)法采用log 模式進(jìn)行異步數(shù)據(jù)復(fù)制。

    磁盤系統(tǒng)保留異步傳輸模式的目的:復(fù)制,但不是容災(zāi)復(fù)制;

    數(shù)據(jù)復(fù)制的目的不僅僅是容災(zāi)。數(shù)據(jù)容災(zāi)要求兩地時(shí)時(shí)保持連接,數(shù)據(jù)復(fù)制過(guò)程在任一時(shí)間都在進(jìn)行(除非有線路或設(shè)備故障)。而非容災(zāi)性復(fù)制只要求在某一個(gè)時(shí)間段里將數(shù)據(jù)復(fù)制到異地,復(fù)制告一段落后(在某一時(shí)刻完全同步),復(fù)制工作會(huì)暫停。這種復(fù)制可能是為一個(gè)特殊目的只做一次,如在線業(yè)務(wù)遷移;也可能每天或每月追加一次。這樣,在異地就會(huì)存在一份最大損失數(shù)據(jù)量為1 天或1 個(gè)月的生產(chǎn)數(shù)據(jù)復(fù)制品,其對(duì)數(shù)據(jù)的保障能力,如同磁盤備份。這種方式復(fù)制數(shù)據(jù)的目的包括:1)在異地保存一份備份數(shù)據(jù)(如同磁帶備份異地保存)。2)在線業(yè)務(wù)遷移,當(dāng)信息中心或其中的一個(gè)服務(wù)要遷移到另一個(gè)地方,又希望少停機(jī)(實(shí)際上也可用磁帶備份和恢復(fù)來(lái)實(shí)現(xiàn))。3)利用與磁盤快照技術(shù)結(jié)合,為異地開(kāi)發(fā)中心提供一個(gè)與生產(chǎn)數(shù)據(jù)盡量相同的測(cè)試數(shù)據(jù)源。當(dāng)然,也可用于其它可能的目的。

    綜上所述,可以看出,雖然基于磁盤系統(tǒng)的異地?cái)?shù)據(jù)復(fù)制功能有異步傳輸模式,但實(shí)際上并不支持異步數(shù)據(jù)容災(zāi),只有像VERITAS Volume Replicator 這樣基于先進(jìn)先出的Log 技術(shù)的解決方案才真正支持異步數(shù)據(jù)容災(zāi)

分享到

多易

相關(guān)推薦