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