摘 要:基于對Windows和Linux平臺卷管理系統的特性分析,提出一種基于卷復制的數據容災系統模型,并論述了其系統結構、工作原理以及關鍵技術。該系統的主要特點是采用模塊嵌入技術實現系統與平臺的有機結合,同時支持多種復制模式以保證數據的一致性,通過加密、壓縮傳輸以提高數據安全性并降低帶寬要求,另外提供災難恢復機制,保證了主數據系統在遭受災難的情況下可以方便地遷移和回遷。理論和實驗均證明,本數據容災系統較好地保證了數據可靠性和可用性。
關鍵詞:數據容災;多平臺;模塊嵌入;遠程復制;災難恢復
中圖法分類號:TP334.5文獻標識碼:A
文章編號:1001—3695(2007)02—0215—04
數據資料已經成為企事業單位的無形資產和重要財富,所以當遭受地震、洪水、臺風、恐怖襲擊等重大災害,以及發生大范圍停電、網絡中斷、硬件故障等事故時就會由于數據丟失破壞而造成重大損失。因此,考慮到大范圍內災難或故障發生的可能性,利用現有存儲設備資源為大量Windows和主流Linux平臺用戶制定完備的容災方案,構建簡單、經濟、可靠的容災系統,增強系統的抗災能力,最大限度地減少損失有著十分重要意義。遠程復制是實現數據容災的主要手段,實現方法通常分為硬件和軟件兩種。前者以磁盤陣列間磁盤塊的復制為代表,具有通用性強,對應用程序影響小的特點,但是系統構建成本比較昂貴;后者主要是文件復制和應用程序對象復制,實現起來相對經濟但通用性較差,例如文件復制系統就不適用于數據庫的復制。國際上知名的研究機構和IT公司紛紛圍繞遠程復制展開數據容災的研究,特別是EMC,VERITAS,IBM等知名公司先后推出其遠程復制產品,其中VERITAS面向Windows平臺推出了Storage Foundation 4.0,但價格較高,而Linux平臺數據容災軟件產品還較為缺乏。
考慮到當前Windows和主流Linux平臺均提供卷管理機制,本文提出了基于卷的塊級別遠程復制的多平臺數據容災系統。它較好地融合了上述兩類遠程復制系統的優點,達到了較好的性能要求,且通用性強、經濟適用、操作簡單,完全利用軟件在TCP/IP網絡環境中構建了一個遠程、動態的數據容災系統。實驗表明,本文提出的數據容災系統方案是有效的,有助于提高數據的可靠性和可用性,降低用戶存儲管理的復雜性和難度,從而控制總體擁有成本(Total Cost of Ownership ,TCO)。
1 系統概述
1.1 容災與卷管理
定義 1:通過在異地建立和維護一個備份系統,利用地理上分散性來保證系統對于災難事件的抵御能力的技術稱為容災(Disaster Tolerance)。
容災系統分為數據容災和應用容災兩個層次。前者指建立一個異地的數據系統,作為本地關鍵應用數據的一個備份;后者則是在前者基礎上,在異地建立一套完整的與本地應用系統相當的備份應用系統(可以互為備份)。在容災的兩個層次中,多平臺數據容災系統考慮到成本問題,采用了數據容災方案。
定義 2:在現有塊設備的基礎上虛擬出邏輯設備層,對邏輯設備進行劃分的基本單位稱為卷或邏輯卷(Volume或Logical Volume),也稱為分區。
Windows平臺由動態磁盤(Dynamic Disks)充當邏輯卷管理器,它是一種分區表機制,能夠方便地支持多分區系統中的分區大小調整以及新分區的創建,而主流Linux平臺如Redhat所提供的邏輯卷管理器(Logical Volume Manager,LVM)[1]已經成為其內核的一部分,兩者均提供對多硬盤系統的卷管理機制,在其所管理的邏輯卷上均可創建文件系統或數據庫系統。
利用Windows和Linux在邏輯設備層進行管理的特點,多平臺數據容災系統分別嵌入自行設計的遠程復制模塊,以磁盤塊(Block)為基本數據復制單位,實現數據的遠程復制,并進而實現災難的有效處理。整個復制過程獨立于具體的數據類型,因此操作透明,管理簡單,通用性很強。
1.2 拓撲結構與系統框架
定義 3:多平臺數據容災系統可以將一個平臺(如Windows)上的數據復制到遠程多個相同的平臺上,前者稱為主數據系統(Primary Data System),后者則稱為從數據系統(Secon-dary Data System)。一對相同平臺的主從數據系統稱為一個復制組(Replication Set)。
通常情況下,多平臺數據容災系統按照圖 1分別構建Windows平臺服務器之間和Linux平臺服務器之間的復制組,各服務器可以是普通PC,也可以是高檔服務器。同時,按照C/S模式提供了基于Java虛擬機的跨平臺控制終端,Client可以通過GUI和命令行的形式對各個服務器進行本地和遠程控制,實現多平臺的數據復制和災難處理。
每個復制組按照圖 2進行數據的遠程復制。首先截獲本地主數據系統服務器上對邏輯卷層的寫請求,在更新本地磁盤的同時通過TCP/IP網絡把寫請求發送到遠程從數據系統服務器,從而在遠程維護應用數據的副本,達到異地復制的目的。
1.3 關鍵技術
多平臺數據容災系統研究并實現的關鍵技術可以概括為三個方面:
(1)模塊嵌入技術。在現有Windows平臺和Linux平臺的邏輯卷管理系統中分別嵌入遠程復制模塊,以驅動形式工作,通過截獲和復制邏輯卷上所有的寫請求以實現數據的遠程復制。
(2)遠程復制技術。為了維護主從數據系統的數據一致性、適應不用的應用環境,支持并提供了同步、異步、軟同步等多種復制模式,并選擇了相應的傳輸協議和加密壓縮算法,確保了遠程復制的正常、安全和高效運行。
(3)災難恢復技術。為了實現系統的高可用性,在系統發生故障或者遭受災難時,實施了災難后遷移策略,選擇可用的從數據系統接管主數據系統為用戶提供服務,同時提出了Full/Fast兩種災難后回遷策略,在適當時刻對主數據系統進行數據恢復。
2 模塊嵌入技術
2.1 Windows平臺模塊嵌入
Windows 驅動程序模型(Windows Driver Model,WDM)[2]是PnP驅動程序之一,也是內核模式驅動程序之一。在WDM模型中,每個硬件設備除具有一個功能驅動程序(Function Driver)和一個總線驅動程序(Bus Driver)之外,還可能有過濾驅動程序(Filter Driver),后者用來變更標準設備驅動程序的行為。這些服務于同一個設備的驅動程序組成了一個設備驅動堆棧,與相應產生的設備對象堆棧一起構成層次結構。
為有效截獲上層用戶的請求,多平臺數據容災系統在Windows平臺上被設計成磁盤過濾驅動程序。該系統模塊加載在磁盤驅動程序之上,文件系統驅動程序之下。由于Windows的I/O管理采用包驅動的方式進行,即I/O管理器和設備驅動程序使用I/O請求包(I/O Request Packet,IRP)來管理I/O操作的具體細節,所以當上層應用程序向I/O管理器發送I/O請求時,I/O管理器將該I/O請求包裝成IRP發送給磁盤設備驅動程序堆棧的頂層。這個IRP首先經過文件系統驅動程序,然后經過多平臺數據容災系統模塊,在向下傳遞的同時如果是寫請求則被截獲封裝后進行遠程復制,最后到達磁盤驅動程序。由于一些數據庫系統向磁盤寫數據的時候會跳過文件系統,直接寫入磁盤,所以多平臺數據容災系統加載在磁盤驅動程序之上、文件系統驅動程序之下是很有必要的。而且,通過構造過濾驅動程序也使得該系統可以實現數據塊級別的數據復制,而與具體的文件系統無關。
2.2 Linux平臺模塊嵌入
Linux平臺提供了可卸載內核(Loadable Kernel Modules,LKMs)[3]機制,在保持內核較小的前提下方便地進行功能擴展。LKM是內核的一部分,其優點是不需要重新編譯整個內核,只需將其編譯成目標文件,在運行過程中根據需要動態地插入內核或從內核中移除。所以,LKM常被用作特殊設備的驅動程序(或文件系統)。
基于以上特性,多平臺數據容災系統在Linux平臺上利用LKM機制來擴展Linux系統功能。
首先,與LKM相結合構造多平臺數據容災系統模塊,通過insmod命令將其加載入Linux內核。該模塊包含兩個最基本的函數init_module() 和cleanup_module()與內核相連接,初始化函數在模塊被插入系統時調用,清除函數則在模塊移除系統時進行調用;然后,截獲本地I/O請求,將I/O請求的邏輯卷地址映射成物理設備地址,通知操作系統調用物理設備的驅動程序按照物理設備地址進行實際的I/O操作,同時對所截獲的寫操作I/O請求進行封裝并復制到遠程從數據系統。
多平臺數據容災系統在Linux平臺也考慮到某些數據庫系統跳過文件系統向磁盤寫數據的情況,所以對RAW設備也提供了很好的支持。
2.3 內核模塊劃分
多平臺數據容災系統模塊成功嵌入Windows和Linux平臺內核之后,就形成如圖 3所示的內核模塊組合,并按照所處位置完成相應功能。
3 遠程復制技術
3.1 復制模式
數據的可恢復性是衡量數據復制(或備份、鏡像)等技術的關鍵因素,而實現數據一致性(Data Consistency)是確保備份數據可恢復性的前提。在數據容災系統中,數據一致性主要是指主從數據系統數據的一致性。針對數據一致性的要求和磁盤塊(Block)級別復制的特點,多平臺數據容災系統共提供同步、異步、軟同步三種復制模式,并可以根據用戶需求和網絡狀況作動態調整。
(1)同步復制是指將本地主數據系統數據以完全同步的方式復制到遠程從數據系統。當主數據系統上層用戶向存儲設備(邏輯卷)發送一個寫操作I/O請求時,該請求被傳送到從數據系統,等到本地存儲設備寫操作完成且收到從數據系統的接收確認后,才向上層用戶返回完成信息并釋放系統資源,但不用等待從數據系統的寫操作完成確認信息。
(2)異步復制是指主數據系統存儲設備的I/O處理與數據復制過程無關。當主數據系統上層用戶向存儲設備(邏輯卷)發送一個寫操作I/O請求時,這個請求同時被傳送到從數據系統,等到本地存儲設備寫操作完成就可直接向上層用戶返回完成信息,從數據系統不需要向主數據系統返回接收確認,而主數據系統也不用等待從數據系統的寫確認信息。
(3)多平臺數據容災系統還提出了軟同步復制模式,可以對網絡狀況作出實時的調整。如果將同步復制模式看作“常規同步”,那么軟同步復制模式就可以看作“偽同步”。軟同步復制模式在通常情況下按照“常規同步”工作,當網絡狀況出現暫時阻塞引起傳輸損耗時,自動地變為異步復制模式;當網絡狀況好轉,傳輸損耗降低時,又可變為“常規同步”。
以上三種復制模式中,前兩種復制模式是研究重點。同步復制模式可以保證從數據系統對于主數據系統同步更新,但是主數據系統應用程序的響應時間會受到網絡狀況的影響,特別是當兩個系統距離較遠或通信速率不夠時,會造成主數據系統明顯延遲,所以同步模式適用于近距離、低網絡延遲和寫速率峰值不超過網絡帶寬的環境;異步復制模式適用于從數據系統不需要同步更新的情況,當某種因素造成數據傳輸失敗,可能出現數據一致性問題,需要提供良好的一致性維護機制,但是異步復制模式使本地主數據系統性能受到的影響很小,允許網絡和從數據系統的短暫損耗,對網絡帶寬要求小,而且傳輸距離長,所以適用于網絡帶寬小、傳輸距離遠的情況。
采用同步或是異步模式,主要取決于用戶需求、可用網絡帶寬、網絡延遲、加入的服務器數目和復制數據的數量等。但無論選擇何種復制模式,網絡的平均帶寬必須滿足應用程序的寫速率。
3.2 加密與壓縮
多平臺數據容災系統在LAN/WAN環境中基于TCP/IP實現數據的遠程復制,對數據傳輸安全和速率提出了很高要求,所以該系統對數據采用了加密與壓縮傳輸。
在加密算法中,公鑰加密性能較低,并且對基于文本的可加密數據的大小施加某些限制,所以多平臺數據容災系統采用了對稱密鑰加密,算法選用了高級加密標準(Advanced Encryption Standard,AES)算法中的最新標準Rijndael 算法[4]。Rijndael是一個密鑰迭代分組密碼,支持任意分組的大小,密鑰的大小可以為128bits,192bits,256bits的任意組合,能很好地滿足塊級別數據復制要求。而且它初始速度快,其固有的并行性可以有效地利用處理器資源,有很好的軟件性能,還具有應用范圍廣、等待時間短、相對容易隱藏、吞吐量高等優點。
由于有損壓縮會引起原始數據失真,使得多平臺數據容災系統在災難發生時無法正常啟用從數據系統數據,而無損壓縮算法利用數據的統計冗余進行壓縮,可完全恢復原始數據而不引入任何失真,所以該系統最終選用了無損壓縮方法。LZW(Lemple-Ziv-Welch)編碼[5]是一種通過把冗長數據轉換成短數據來實現無損信息的數據壓縮及還原的無損壓縮算法,比其他大多數壓縮技術壓縮效率較高,并且壓縮和還原速度很快,可廣泛用于文本數據、程序和圖像數據的壓縮。由于在線壓縮主要考慮速度和壓縮率,所以多平臺數據容災系統最終選擇了LZW壓縮算法,使得傳輸速率獲得較大提高。
通過Rijndael算法和LZW算法,可以對數據進行加密和壓縮,使得多平臺數據容災系統的傳輸安全性和速率獲得一定提高,能夠有效地防御外界攻擊,并降低了對網絡帶寬的要求。
3.3 遠程復制模塊處理
遠程復制模塊將加密和壓縮作為可選擇的預處理功能選項,并按照圖 4進行遠程復制。
本地主數據系統所有被截獲的寫請求數據經過預處理之后,進行TCP/IP的Socket報文封裝,最后實現遠程傳輸。當異地從數據系統接收到數據報文之后,先進行解析,然后解壓縮、解密,最后實現本地I/O操作。
4 災難恢復技術
4.1 遷移與回遷策略
為了更好地應付各類系統故障或自然災害對系統的影響,保護業務的不間斷運行,多平臺數據容災系統的災難恢復由以下兩個部分構成:
(1)災難后遷移(Disaster-Over)。當主數據系統發生災難遭到破壞時,則從數據系統立即啟動業務應用系統,服務遷移到從數據系統進行,從而保證業務的正常運行。
(2)災難后回遷(Disaster-Back)。當主數據系統修復可以正常工作時,則在適當時機將從數據系統的當前數據復制回主數據系統,然后將應用系統切回到主數據系統,從數據系統則重新回到備份狀態。
多平臺數據容災系統對災難后回遷有兩種實現方法:①將主數據系統完全按照從數據系統的數據進行恢復(Full Disaster-Back);②僅將主數據系統與從數據系統相差部分的數據進行增量恢復(Fast Disaster-Back或Incremental Disaster-Back)。通過提供Full/Fast Disaster-Back兩種回遷方法,多平臺數據容災系統可以較好地滿足用戶需求,特別是Fast Disaster-Back可以節約Disaster-Back的時間,從而提高系統性能。
4.2 構建高可用性集群
計算機系統的可用性常常通過系統的可靠性(Reliability)和可維護性(Maintainability)來度量,所以在高可用性(High Availability,HA)系統的設計中,可以同時采用這兩個方面的技術:①可靠性技術,包括使用商品化部件、避免單一故障點、實現系統的自我管理等;②可維護性技術,包括系統備份、系統監測和系統恢復等,及時地發現和定位部件的故障,然后迅速地從備份中將系統恢復,整個過程無須停機。
由于提高系統的可靠性一般采用部件級冗余技術將增加整個系統的成本,所以多平臺數據容災系統主要著重于采用了備份手段,即在異地維護多個數據備份,并與“健康監測”工具結合構造形成HA集群來提高系統對外服務的可用性。“健康監測”工具在Windows平臺可以使用LifeKeeper,ExpressCluster等,而在Linux平臺則可使用Heartbeat與Mon軟件。
5 評估與結論
5.1 評估
通常用恢復時間(Recovery Time Objective,RTO)、數據損失率(Recovery Point Objective,RPO)和管理開銷(Cost/ Overhead)三個主要因素來評價和衡量一個容災系統。多平臺數據容災系統主要從如下三方面來考慮三個因素:
(1)RTO。系統模塊與Windows和Linux平臺實現無縫結合,并且塊級別操作具有性能優勢, 同時遠程復制和災難恢復均采用了各種手段以確保主從系統數據的一致性,確保了災難發生以后,備份系統數據立即可用,使得RTO趨近于0。
(2)RPO。系統可以根據數據的重要程度、業務的繁忙程度和網絡狀況選擇同步或是異步復制模式,還提供了軟同步模式作為一種折中方案,同時支持數據的壓縮復制,盡量減少主從數據系統的數據差別,從而使得RPO可以降到很小。
(3)Cost。通過GUI、命令行以及腳本相結合的方式控制系統,大大降低了管理的復雜度和開銷, 而且基于卷管理系統實現,不依賴于特定的存儲設備,具有經濟性、靈活性和通用性。
原型實驗也同樣表明,多平臺數據容災系統實現了與Windows和Linux平臺的良好結合,并能夠無間斷地進行各種類型數據的復制和恢復,確保了用戶數據的高可靠性和高可用性。
5.2 結論
本文研究并設計了多平臺數據容災系統,重點介紹了其工作原理和關鍵技術,為廣大Windows和Linux平臺用戶提供了一個通用、經濟、高可用的數據容災方案。目前該系統的原型試驗已經完成,但容災集中在相同平臺之間,而且試驗只在局域網范圍內的自組環境和平臺上進行,還有以下需要進一步研究和改進的地方,所以可以考慮在Windows與Linux平臺之間實現跨平臺數據容災,將試驗范圍推廣到廣域網或者模擬廣域網的測試環境,并進一步完善測試數據和環境需要,進而構建一個標準化的評測平臺。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。