◆王勝杰 徐 龍
一種Ceph分布式塊存儲的持續(xù)數(shù)據(jù)保護方法
◆王勝杰 徐 龍
(四川大學計算機學院 四川 610065)
本文針對目前Ceph分布式塊存儲快照只能保護周期時間點的歷史數(shù)據(jù),不能夠保護任意時間點歷史數(shù)據(jù)的問題,提出一種適用于Ceph分布式塊存儲的持續(xù)數(shù)據(jù)保護(Continuous Data Protection,CDP)方法。通過對每次塊存儲設備寫操作的監(jiān)控,先拷貝將要被該寫操作覆蓋的數(shù)據(jù)至歷史數(shù)據(jù)塊設備,再執(zhí)行本次正常寫操作,最后記錄該過程至日志塊設備。數(shù)據(jù)恢復過程則按照日志記錄逆時序回寫歷史數(shù)據(jù)即可。通過實驗驗證所提出的數(shù)據(jù)持續(xù)保護方法能夠?qū)K存儲恢復至任意時間點的歷史數(shù)據(jù)狀態(tài)。
Ceph分布式塊存儲;快照;持續(xù)數(shù)據(jù)保護(CDP)
隨著云計算技術的興起和普及,云計算基石云存儲系統(tǒng)受到業(yè)界的重視。Ceph[1-2]分布式存儲系統(tǒng)以其穩(wěn)定、高可用、可擴展的特性,迅速成為最熱門的開源云Openstack的后端存儲系統(tǒng)。Ceph中的分布式塊存儲系統(tǒng)[3]可為云上虛擬機提供塊設備,采用多副本策略保證塊設備的高可靠性,但對塊設備歷史數(shù)據(jù)的保護方法只有快照??煺帐菈K設備在某個特定時間點的一份只讀副本,通過寫時拷貝(Copy-On-Write,COW)的快照方法對塊設備的歷史數(shù)據(jù)進行有效的備份和恢復。然而,快照僅能對周期時間點的塊設備數(shù)據(jù)進行周期保護,連續(xù)兩次相鄰的快照之間的數(shù)據(jù)將會丟失。在傳統(tǒng)容災系統(tǒng)中,通過持續(xù)數(shù)據(jù)保護(CDP)技術來降低關鍵數(shù)據(jù)丟失的風險,解決快照存在的問題。全球網(wǎng)絡存儲工業(yè)協(xié)會(SNIA)對CDP的定義是:一種能獨立對主要數(shù)據(jù)進行持續(xù)捕捉或跟蹤數(shù)據(jù)修改,并保存變化,從而實現(xiàn)從過去的任何非預設點恢復的方法[4]。目前CDP主要應用于傳統(tǒng)遠程災難備份領域,在主流分布式存儲系統(tǒng)中幾乎都沒有提供CDP技術的實現(xiàn)。所以,本文提出了一種適用于Ceph分布式塊存儲的CDP方法,該方法通過在Ceph塊存儲客戶端加入CDP監(jiān)控和管理模塊,實現(xiàn)對塊設備寫操作的監(jiān)控,完成歷史數(shù)據(jù)的備份.數(shù)據(jù)變化過程的記錄和控制塊設備數(shù)據(jù)的恢復。相比快照方法,本文提出的CDP方法能夠完成任意時間點歷史數(shù)據(jù)的保護,極大降低數(shù)據(jù)丟失的風險。
1.1 Ceph分布式塊存儲的快照方法
Ceph分布式塊存儲的快照框架如圖1所示。
圖1 Ceph分布式塊存儲的快照框架
Ceph分布式塊存儲RBD的快照,是服務端實現(xiàn)的,分布式對象存儲RADOS支持的,基于OSD存儲服務器的COW基礎實現(xiàn)的。
RBD快照的創(chuàng)建基本有兩個步驟:(1)向Monitor監(jiān)控集群獲取一個最新快照序號;(2)把本次快照信息保存到RBD的元數(shù)據(jù)中。整個過程并不觸發(fā)OSD端的數(shù)據(jù)操作,所以速度非常快。每間隔一定時間對塊設備進行快照的方法是一種提高歷史數(shù)據(jù)可靠性的有效方法,但無法避免歷史數(shù)據(jù)的丟失。例如正當圖1中所示塊設備(源塊設備)和其快照(源塊設備快照)的狀態(tài),此時源塊設備映射對象1`的歷史數(shù)據(jù)對象1已被拷貝至源塊設備快照,若在下一次快照周期到了之前,又有新數(shù)據(jù)寫入對象1`位置,對象1`變?yōu)閷ο?``,則對象1`這個歷史數(shù)據(jù)將永久性丟失。
1.2 Ceph分布式塊存儲的CDP方法
本文提出的Ceph分布式塊存儲CDP框架如圖2所示:
圖2 Ceph分布式塊存儲CDP框架
圖2 中源塊設備為用戶直接使用的數(shù)據(jù)塊設備,用戶可以對其完成正常的RBD塊設備操作。源塊設備在RADOS內(nèi)映射為對象,每個對象根據(jù)所在存儲池的存儲策略,存儲多個副本于不同的OSD,這些OSD可以在不同的服務器、機架、機房、甚至數(shù)據(jù)中心,以此來保持源塊設備的數(shù)據(jù)高可靠性。針對每個開啟CDP的源塊設備增加兩個輔助塊設備:(1)歷史塊設備,用于存儲歷史數(shù)據(jù),每次存入將被新數(shù)據(jù)覆蓋的舊數(shù)據(jù),而不是存儲整個新數(shù)據(jù)所在對象,總大小可根據(jù)需求動態(tài)變化;(2)日志塊設備,用于存儲每次數(shù)據(jù)變化的記錄信息,記錄信息包括:數(shù)據(jù)變化時間,源塊設備偏移量、歷史塊設備偏移量、變化數(shù)據(jù)大小。兩個輔助塊設備映射的object所在存儲池的存儲策略設置副本數(shù)為1,以此來減小CDP過程對存儲的消耗。
1.3 CDP寫流程
本文借鑒傳統(tǒng)CDP實現(xiàn)技術中的復制參考數(shù)據(jù)模式[5],在librbd的API中增加對CDP的支持,實現(xiàn)源塊設備的監(jiān)控模塊。寫請求依據(jù)源塊設備是否支持CDP來進行分流。不支持的寫請求按照原有流程下發(fā),完成正常寫操作。支持CDP的寫請求執(zhí)行流程:
(1)根據(jù)寫入位置和大小,讀取源塊設備舊數(shù)據(jù)。
(2)新數(shù)據(jù)寫入源塊設備,舊數(shù)據(jù)寫入歷史塊設備的上次寫入數(shù)據(jù)的尾部,本次數(shù)據(jù)變化記錄信息寫入日志塊設備的上次寫入日志的尾部。
(3)等待所有寫操作完成后,將寫結果返回給用戶,寫過程完成。
圖3 CDP寫流程
1.4 CDP恢復流程
塊設備恢復是實現(xiàn)Ceph塊存儲CDP的關鍵,其過程也較為復雜。CDP恢復流程如圖4:
圖4 CDP恢復流程
CDP恢復具體流程:
(1)用戶指定塊設備需要恢復到的任意時間點。
(2)判斷恢復時間點是否合法,即是否在CDP保護的時間范圍內(nèi)(啟動CDP和終止CDP時間段內(nèi))。合法則進入下一流程,不合法則恢復失敗,需要重選恢復時間點。
(3)對源塊設備打一個快照,用于保存當前源塊設備的數(shù)據(jù)狀態(tài)。
(4)逆序讀取日志設備中的記錄信息,記錄信息所占存儲空間較小,可一次讀取大量日志。
(5)根據(jù)每條日志信息,判斷恢復時間點是否小于或等于日志時間點。若是,則進入下一步;若否,則表示恢復完成。
(6)根據(jù)日志信息,讀取歷史塊設備數(shù)據(jù),寫入源塊設備,返回至(4)。
本實驗驗證本文方法能夠?qū)崿F(xiàn)對Ceph塊存儲設備任意時間點的保護,對比周期性快照能減小歷史數(shù)據(jù)的丟失風險,從而得出在保護關鍵數(shù)據(jù)方面,本文方法比快照更有優(yōu)勢。
2.1 實驗環(huán)境
由于本實驗主要目的是驗證本文方法實現(xiàn)的功能,故只在一臺服務器上完成Ceph分布式塊存儲系統(tǒng)、KVM/qemu虛擬化平臺的部署,服務器配置為:Intel Pentium E6600 3.3GHz CPU、8G內(nèi)存、1塊500G SATA硬盤、CentOS-7-x86_64-minimal操作系統(tǒng)。將Ceph分布式塊存儲系統(tǒng)與KVM/qemu虛擬化平臺集成,創(chuàng)建一臺KVM虛擬機,1核CPU,2G內(nèi)存,操作系統(tǒng)為CentOS-7-x86_64-minimal。
2.2 實驗方法
創(chuàng)建一個10G的Ceph塊設備,掛載至虛擬機。虛擬機內(nèi)部為該塊設備構建xfs文件系統(tǒng),掛載該塊設備至測試目錄/test。此時,啟動物理服務器上周期性創(chuàng)建塊設備快照的腳本,周期設置為10分鐘,啟動塊設備CDP。同時,虛擬機內(nèi)執(zhí)行測試腳本,該腳本功能是每隔1秒刪除/test目錄下所有文件,獲取當前時間作為文件名創(chuàng)建文件至/test,并向文件內(nèi)寫入當前時間。1小時后停止所有腳本和CDP,觀察快照和CDP恢復后的塊設備數(shù)據(jù)。
2.3 實驗結果與分析
實驗獲得6個時間點的快照,而CDP恢復時間可以任意取,故隨意選擇部分時間點,觀察快照和CDP所能恢復的測試文件,如表1所示。
表1 實驗結果
表1中,周期快照僅在10分鐘的整數(shù)倍時間點上有數(shù)據(jù),其他任意時間點上數(shù)據(jù)狀態(tài)均無法恢復,而CDP恢復的塊設備在任意時間點有數(shù)據(jù),由于數(shù)據(jù)寫入要經(jīng)過多級緩存和網(wǎng)絡傳輸才能完成最終落盤,所以恢復文件時間點與恢復選擇時間點略有差異,屬于正?,F(xiàn)象,可通過微調(diào)恢復時間獲得想要恢復的數(shù)據(jù)。由此實驗結果可知,本文提出的CDP方法對每次塊設備的寫操作都完成了監(jiān)控,每一次數(shù)據(jù)變化都被備份和記錄,恢復過程將備份按照記錄逆時序回寫至塊設備即可,這就驗證了本文提出的CDP可以保證對任意時間點的數(shù)據(jù)進行有效保護。
本文針對Ceph分布式塊存儲系統(tǒng)中周期性快照無法保護任意時間點數(shù)據(jù),導致歷史數(shù)據(jù)丟失的問題,通過監(jiān)控塊設備的寫操作,備份數(shù)據(jù)并記錄變化,利用備份數(shù)據(jù)和記錄日志可恢復塊設備至CDP期間任意時間點的數(shù)據(jù)狀態(tài)。通過實驗驗證了本文提出的Ceph分布式塊存儲CDP實現(xiàn)方法能夠保證任意時間點數(shù)據(jù)的安全。
[1]Sage A Weil,Scott A Brandt,Ethan L Miller,and Carlors Maltzahn.Crush:Controlled,scalable,decentralized placement of replicated data.In Proceedings of the 2006 ACM/IEEE conference on Supercomputing,.ACM,2006.
[2]Home Ceph.http://www.ceph.com/,2016.
[3]Ceph Block Device.http://docs.ceph.com/docs/master/r bd/rbd/,2016.
[4]顏 軍.CDP帶來的存儲新氣象[N].計算機時間報,2006.
[5]劉建毅.持續(xù)數(shù)據(jù)保護技術[J].中興通訊技術,2010.