隨著社會信息化程度的提高和企事業單位對信息系統依賴性的增強,信息系統的容災備份成為災難發生時確保業務連續性和數據可用性的重要手段。
云災備作為災備領域的一個新興概念,它的出現為企業提供了一個行之有效的解決方案。云災備是指將災備看做一種服務,由客戶付費使用災備服務提供商提供的災備服務的模式。采用這種模式,客戶可以利用服務提供商的優勢技術資源、豐富的災備項目經驗和成熟的運維管理流程,快速實現客戶的災備目標,降低客戶的運維成本和工作強度,降低災備系統的總體擁有成本。
云災備模式之所以被提出并逐漸得到應用,相關技術的發展起到了至關重要的作用。
1 重復數據刪除技術
重復數據刪除技術是指將存儲系統中存在的大量內容相同的數據刪除,只保留其中一份,從而縮減存儲空間的技術。在云災備中,該技術既能大幅減少災備中心存儲的數據量,降低災備中心的建設和運維成本,又能大幅減少數據備份和恢復過程中用戶和災備提供商間的數據傳輸量,提高備份和恢復的性能,是一項十分重要的技術。
按照檢查重復數據的粒度不同,重復數據刪除技術可以分為對象/文件級和塊級的重復數據刪除。文件級刪重技術是在文件級別的粒度下查找重復數據的方法。該技術計算速度快,但粒度太粗,即使不同文件內部存在很多相同的數據,也不能被檢測并實現冗余消除。塊級別的重復數據刪除根據切分數據塊方法的不同,又可分為固定分塊和可變分塊的刪重技術。固定分塊技術是使用固定大小的分塊策略在存儲系統中識別相同數據的一種方法,可以提供很高的處理速度,但是對編輯和修改的序列很敏感,處理效率低。變長分塊是一種基于內容技術的分塊方法。與固定分塊不同的是它的塊斷點不以一個預設值來確定,而是以其文件內容進行計算,當滿足一定的標準之后方認為其為塊斷點。其優點是對于插入問題和刪除問題處理高效。無論是插入還是刪除一小部分字節,只會影響一到兩個塊,其余的塊保持不變。其主要缺點是計算開銷較大和檢測重復塊時指紋值索引查找的開銷較大。由于其對數據變化的低敏感性,變長分塊逐漸成為重復數據刪除技術的主流。
隨著災備中心的規模不斷增大,存儲的數據量和訪問量不斷增加,單一節點上的重復數據刪除方法已不能滿足性能和容量的需求。除上述基本重復數據刪除技術外,一些優化和改進技術對云災備是至關重要的,包括高性能、可擴展的、分布式的重復數據刪除技術,以及為提高災備中心數據可靠性的高可靠重復數據刪除技術。
1.1 高性能可擴展重復數據刪除技術
在提高重復數據刪除性能方面,可以使用減輕磁盤瓶頸技術。在重復數據刪除系統中,為了節約成本,一些系統僅具有少量的內存,因而不能支持所有的數據索引一次性地進入內存進行檢測,從而導致了大量的磁盤訪問,這成為性能下降的最主要因素。針對這種情況,Data Domain重復數據刪除文件系統中采用了減輕磁盤瓶頸的3種技術,它們分別是:
(1)摘要向量,一種內存中緊湊的數據結構,用于辨別新的塊。
(2)基于流的塊排列,一種用于提高磁盤上的被連續訪問塊的訪問局部性的數據排列方法。
(3)局部性保持,保持了重復塊的指紋值的局部性從而達到緩存的高命中率。
應用這3種技術,可實現高吞吐率、低開銷的相同塊刪除存儲系統。
在提高重復數據刪除可擴展性方面,Extreme Binning技術利用文件的相似性,可以將每個文件的磁盤訪問次數降至一次,達到較好的吞吐率。在具有多個節點的系統中,每個文件通過一個路由算法分配到唯一的一個節點。每個節點是與其他節點相獨立的自治節點,從而允許查找相似文件的操作最大地并行化。當數據量增大時,吞吐率也會隨著節點數目的增多而增大。
1.2 高可靠重復數據刪除技術
在高可靠性重復數據刪除方面,R-ADMAD高可靠性提供機制將變長數據塊打包成定長對象,利用糾錯碼對將象編碼后分存到一個冗余組中的多個存儲節點上。冗余組是根據系統的當前狀態和失效域動態創建的。R-ADMAD還提出了一個分布式和動態的恢復過程。
2 云存儲安全技術
在云災備應用環境中,用戶的數據存放在由云服務提供商管理和維護的服務器上,不再受用戶的直接控制,增加了數據的潛在風險。各種因素,如云服務提供商的系統故障、服務器被攻擊、云服務提供商內部人員的泄密或蓄意破壞等,都有可能造成用戶數據的泄密、損壞或丟失。
可以說,數據安全已成為限制云災備在企業中進一步推廣和應用的關鍵因素,而云存儲安全技術則試圖解決云災備服務模式帶來的種種數據安全問題。云災備環境由3個參與方組成:用戶(云災備服務的使用者)、云服務提供商、可信第三方。
2.1 完整性檢查和持有性證明技術
完整性檢查是指檢查從CSP讀回的數據和之前寫入的數據是否一致,即數據是否被篡改。基本方法是寫文件時使用某種單向哈希函數對數據計算得到一個哈希值,存放在本地可靠存儲中。讀文件時進行同樣計算得到哈希值并和本地的哈希值比較。為了降低完整性檢查的復雜度,可以采用Merkle哈希樹的方法,將文件分成若干數據塊,最底層的樹葉節點對應數據塊的哈希值,次底層節點是每兩個哈希值的哈希值,由此逐層遞歸構造出一個二叉樹,根節點對應最終的哈希值。此時檢查一個數據塊完整性的復雜度由O(n)降為O(log n),其中n為數據塊個數。
上述方法可以驗證CSP返回的數據的完整性。然而在很多情況下用戶需要知道其數據是否始終由CSP完好保存并可獲取。當用戶在云中存儲大量數據時,如果用戶每次將所有數據下載到本地,用上述完整性驗證方法檢查數據是否完好,這種做法顯然是不可行的。為此研究者提出了持有性證明,即CSP可以通過某種方法向用戶證明其仍然完好的持有用戶數據,并且數據是可獲取的,而不需要提供完整數據。
這些方法可以分為兩類:基于RSA公鑰密碼算法的和基于對稱密碼算法的。基于RSA的方法利用了基于RSA的哈希函數的同態性。令N=pq為一RSA模數,其中p和q為大質數,F為代表文件的大整數,用戶保存k=F mod Φ(N ),其中Φ(N )=(p-1)(q-1)。在一次挑戰-應答過程中,用戶發送ZN中的隨機元素g,CSP返回s=g F mod N,用戶驗證是否g F mod N="s"。這類方法的最大優點是允許用戶發起無限次的檢查,缺點是由于需要進行有限域上以文件數據塊為指數的指數運算,計算開銷較大,尤其在文件預處理階段。
基于對稱密碼算法的持有性證明的基本思想是首先將文件加密并用糾錯碼編碼,然后在編碼后的文件的一些隨機位置插入和文件數據不可區分的“崗哨”。用戶在挑戰時要求CSP返回在這些隨機位置的崗哨,可以證明只要CSP以大于一定值的概率做出有效應答,則文件是可恢復的。該類方法的優點是計算開銷小,但只適用于加密的文件,并且只允許用戶進行有限次的檢查。
除上述基本方法外,為了解決持有性證明在實際應用中面臨各種問題,還提出了多種擴展和增強的持有性證明方法。這些擴展和增強對提供安全可靠的云災備服務是至關重要的,包括:對公開審計的支持,由可信的第三方代替用戶行使驗證數據完好的職能,減輕用戶的負擔,同時保持數據對第三方的機密性;對動態數據的支持,從而允許用戶對數據(文件)進行增、刪、改等操作;對分布式存儲和數據冗余編碼的支持,當用戶通過持有性證明發現某些節點的數據損壞時,能及時通過存儲在其他節點的冗余數據進行恢復。
2.2 可問責技術
通過上述方法可以發現CSP破壞數據安全性的行為,然而仍需涉及一旦這種行為發生如何處理的問題。可以仿照現有云存儲服務提供數據訪問性能和可用性保證的方法,由用戶和CSP間簽訂關于數據安全(如數據機密性、完整性)的服務水平協議(SLA)。CSP按照協議要求提供服務,保證用戶數據的安全性,用戶為服務支付費用。一旦CSP不能達到協議要求,用戶可以根據協議要求賠償。安全服務水平協議的引入可能會導致糾紛:例如:當數據安全性被破壞時,CSP為減少經濟損失可能宣稱該錯誤是由用戶導致(如用戶客戶端軟件缺陷),或者數據安全性本未破壞,而用戶虛假指控CSP違反協議,試圖不當得利。
為解決上述問題,研究者提出了可問責性的概念。一個多方參與的分布式系統稱作是可問責的,如果它滿足以下兩個條件:(1)能夠可靠地發現錯誤。(2)每個錯誤能以不可否認的方式歸咎到至少一個過失方。在一個可問責的云存儲環境中,當CSP違反安全服務水平協議(例如破壞了數據的完整性或可用性),用戶能夠發現并向第三方機構(如法律仲裁機構)證明CSP的違規行為,從而要求經濟賠償。可問責性是雙向的,當CSP沒有違規行為或過錯是由用戶導致時,用戶無法無端指控CSP,從而轉嫁責任或不當得利。
可問責性證明可以通過鑒證機制實現。鑒證是將用戶和其發出的請求綁定以及將CSP和數據的某個狀態綁定的簽名消息。可以利用這些鑒證在一個輕量級的審計協議中驗證CSP的行為。
3 操作系統虛擬化技術
除了數據級的災備,還應提供系統級的災備。即在將數據復制到云端的同時,也將受保護的應用程序的狀態復制到云端,當災難發生時可以立即切換到云端的應用程序運行,保證業務連續性。系統級災備是通過操作系統虛擬化和檢查點實現的。檢查點用來捕獲進程某一時刻的運行狀態,從而實現進程遷移。進程遷移既可以是用戶應用程序進程到云災備中心的遷移,也可以是云災備中心內部的虛擬機池間進程遷移,以實現根據前端用戶的需求自動地調節災備服務提供商有限的硬件與軟件資源,動態地、彈性的反應前端業務對災備的需求。
當程序因故障中斷,如果不能保留其中間運行狀態,恢復后從頭運行將會帶來極大的消耗。檢查點技術能夠解決這個問題。通過保留各個進程的運行狀態,恢復時能夠復原到最近一次保留的數據映像。
傳統的檢查員機制是基于庫的檢查點機制。例如以靜態庫的形式實現,或通過加載動態鏈接庫來追蹤程序運行過程中的數據變化。也有一些檢查點機制實現于內核級別甚至硬件級別。例如通過在文件系統層之上引入一個中間層來實現保留文件系統狀態的檢查點機制;或者借助Fuse內核模塊實現的支持檢查點機制的文件系統,通過Fuse偵測、攔截內核級別的文件系統操作并將控制權傳遞給用戶,從而能夠在用戶空間對文件系統狀態進行保留。
隨著操作系統虛擬化技術的發展,基于虛擬容器的檢查點技術也得到了很好的應用。虛擬容器是通過系統虛擬化技術構建出來的一個進程運行的較獨立的上下文環境。虛擬容器檢查點技術能夠有效保護容器內運行的應用程序和服務而不需要對應用進行修改。
用于構建虛擬容器的系統虛擬化技術可以分為如下3類:
(1)基于容器的操作系統級別虛擬化技術。這類技術通過對系統內核的修改,能夠將特定的進程進行封裝,形成相對獨立的進程運行環境。其優點是構建進程運行環境,即虛擬容器,僅僅需要對系統資源做邏輯上的重新組織和調度,不需要在容器底層設立復雜的指令模擬層和Hypervisor(虛擬化系統管理程序)。因此這是一種輕量級的系統虛擬化技術,額外開銷小。這類技術的缺點是應用范圍有局限,不能支持多種內核,虛擬容器內部的運行環境必須與包含容器的物理主機上的宿主系統相類似。
(2)半系統虛擬化技術。這類技術采用了根據操作系統內核定制的Hypervisor,力求在保留Hypervisor帶來的隔離性和安全性基礎上,盡量提升虛擬容器內部進程的運行效率。其典型代表是Xen。Xen通過修改Linux系統的內核,在半虛擬化Hypervisor中集成了半虛擬化系統調用層,能夠快速響應虛擬容器內部進程發出的系統調用等特權指令。同時,對于普通指令,半虛擬化Hypervisor不做任何處理,而直接將CPU資源開放給虛擬容器使用。通過這樣的機制,大大減少了Hypervisor中間層帶來的額外開銷。但是,半虛擬化機制需要定制內核,因此也部分喪失了 Hypervisor的靈活性,無法支持多種內核。
(3)全系統虛擬化技術。這類技術的實質是設計一個居于中間的用來完成硬件抽象功能的虛擬化系統管理程序。對于虛擬容器內部進程的每條指令,Hypervisor都能夠攔截并通過一個仿真器將其翻譯為宿主機的硬件CPU指令。對于其他的系統資源,例如PCI設備、網絡,Hypervisor也負責地址的轉換和在邏輯上進行抽象。全虛擬化的優點是非常靈活,宿主機上能夠同時運行不同種類的操作系統內核,而月 Hyperisor能夠全面監控虛擬容器內部進程的運行狀況和對資源的訪問情況,隔離性和安全性高;缺點是其Hypervisor形成了一個厚重的中間層,帶來了較大的性能損失。對于全虛擬化的實現,也有很多種類,例如借助硬件支持實現的全虛擬化;基于仿真器的純軟件全虛擬化。后兩種虛擬容器實現技術又可以統稱為基于Hypervisor的虛擬化技術,總體來說,其性能由于中間抽象層的引入而有較大的損失。
基于虛擬容器的檢查點技術的代表是Capsule。Capsule被定義為一組進程及其運行時的CPU、內存、I/O設備等相應狀態的集合。其設計思想是將這個集合作為一個整體,在生成檢查點時保留整體集合的一致狀態。其實現是通過設計一個虛擬的運行環境(基于VMware GSX Hypervisor)并令進程運行于其中,借助該Hypervisor的相關機制而對虛擬運行環境中的所有進程及狀態保留檢查點,進而實現檢查點的傳送和異地恢復,達到進程遷移的效果。
4 結束語
云災備是一種重要的災難備份形式,本文介紹了云災備中的3個關鍵技術:重復數據刪除、云存儲安全和操作系統虛擬化。前兩者解決數據級云災備中的效率和安全性問題,后者解決系統級云災備的靈活性問題。重復數據刪除和操作系統虛擬化技術經過多年研究,已經相對成熟;相比之下,云存儲安全技術的研究尚處于起步階段,還有很多理論和實際問題需要解決。該技術的發展是云災備能否得到廣泛應用的一個決定因素,值得高度重視和大力研究。隨著相關技術的發展和成熟,以及各行業數據中心、災備中心建設的深入開展,云災備必將發展成為中國災難備份市場的主流方式。
評論
查看更多