楊 涌,陳勇源,劉磊鋒
(中國(guó)科學(xué)院重慶綠色智能技術(shù)研究院高性能計(jì)算應(yīng)用研究中心,重慶400714)
云災(zāi)備是利用虛擬化的、易于擴(kuò)展的云存儲(chǔ)資源池提供數(shù)據(jù)級(jí)和應(yīng)用級(jí)容災(zāi)的解決方案。云災(zāi)備是災(zāi)備領(lǐng)域的一個(gè)新興概念,能為企業(yè)提供一套行之有效的存儲(chǔ)備份解決方案。云災(zāi)備是將災(zāi)備看做一種服務(wù),由客戶付費(fèi)使用,災(zāi)備服務(wù)提供商將根據(jù)客戶需要提供針對(duì)性的存儲(chǔ)備份服務(wù)模式。采用這種模式,客戶可以利用服務(wù)提供商的優(yōu)勢(shì)網(wǎng)絡(luò)資源、技術(shù)資源、豐富的災(zāi)備項(xiàng)目實(shí)施經(jīng)驗(yàn)和成熟的運(yùn)維管理流程,快速實(shí)現(xiàn)自身的災(zāi)備目標(biāo),降低運(yùn)維成本和工作強(qiáng)度,大幅度降低建設(shè)成本。
云災(zāi)備的基礎(chǔ)問(wèn)題是數(shù)據(jù)存儲(chǔ),即在新興的云存儲(chǔ)架構(gòu)上儲(chǔ)存數(shù)據(jù),而不是傳統(tǒng)本地存儲(chǔ),因此,需要引入適合云存儲(chǔ)架構(gòu)的路由算法來(lái)解決數(shù)據(jù)傳輸和存儲(chǔ)等問(wèn)題。DHT(Distributed Hash Table,分布式哈希表)算法就是使用分布式哈希函數(shù)來(lái)解決結(jié)構(gòu)化的分布式存儲(chǔ)問(wèn)題[1]。分布式哈希表實(shí)際上是一張散列表,每個(gè)節(jié)點(diǎn)被分配給一個(gè)屬于自己的散列塊,并成為這個(gè)散列塊的管理者。目前,典型的DHT協(xié)議包括美國(guó)MIT的Chord、UC Berkeley的Tapestry和 CAN、紐約大學(xué)的Kademlia。文中設(shè)計(jì)的云災(zāi)備模型擬采用Kademlia協(xié)議實(shí)現(xiàn)路由算法核心功能[2]。
為了解決云災(zāi)備中存在的架構(gòu)設(shè)計(jì)難題,以目前主流的云計(jì)算和分布式存儲(chǔ)技術(shù)為基礎(chǔ),設(shè)計(jì)了一種基于DHT的分布式云災(zāi)備模型,該模型包括3層:物理設(shè)備層、Kaemlia路由協(xié)議層和應(yīng)用數(shù)據(jù)管理層?;贒HT的分布式云災(zāi)備模型構(gòu)架如圖1所示[3-6]。
(1)物理設(shè)備層
主要負(fù)責(zé)存儲(chǔ)節(jié)點(diǎn)的物理規(guī)劃和布局,從硬件角度解決數(shù)據(jù)存儲(chǔ)資源的收集和規(guī)劃。理論上隸屬因特網(wǎng)范圍內(nèi)的所有計(jì)算機(jī)存儲(chǔ)系統(tǒng)都能成為該災(zāi)備云網(wǎng)絡(luò)的節(jié)點(diǎn)之一。同時(shí),該層還需要配置一定帶寬的通信網(wǎng)絡(luò),滿足大流量數(shù)據(jù)傳輸策略。本層是該云災(zāi)備模型的基本組成元素,貢獻(xiàn)給整個(gè)系統(tǒng)的是存儲(chǔ)空間、計(jì)算資源以及物理通信網(wǎng)絡(luò)。
(2)Kaemlia路由協(xié)議層
在路由協(xié)議設(shè)計(jì)方面,采用Kaemlia結(jié)構(gòu)化路由算法,從而實(shí)現(xiàn)對(duì)松散網(wǎng)絡(luò)節(jié)點(diǎn)資源的綜合利用;另外,以底層存儲(chǔ)物理資源互通為前提,在邏輯上實(shí)現(xiàn)DHT網(wǎng)絡(luò)的全覆蓋;該路由算法主要實(shí)現(xiàn)如下功能:①建立文件存儲(chǔ)的地址空間映射關(guān)系;②使用對(duì)稱加密技術(shù),實(shí)現(xiàn)存儲(chǔ)加密和取數(shù)據(jù)解密的功能。通常使用分組密碼或者序列密碼對(duì)上層已分塊的數(shù)據(jù)包進(jìn)行密鑰控制加密。此加密方式的簡(jiǎn)單、高效、安全等特性是該系數(shù)據(jù)存儲(chǔ)的核心安全機(jī)制;③負(fù)責(zé)數(shù)據(jù)的糾刪冗余性檢測(cè),以達(dá)到一定的容錯(cuò)性。
傳統(tǒng)的用于分布式系統(tǒng)的糾刪碼,如RS糾刪碼、陣列糾刪碼和LDPC糾刪碼等,都可以作為該云災(zāi)備模型中的備選糾刪碼[7-8]。
(3)應(yīng)用數(shù)據(jù)管理層
在整個(gè)系統(tǒng)中位于最上層,包含數(shù)據(jù)管理、用戶管理、數(shù)據(jù)分塊和恢復(fù)策略等災(zāi)備核心業(yè)務(wù)。首先提供給云災(zāi)備用戶文件存儲(chǔ)服務(wù)的接口和認(rèn)證方式,提供給每個(gè)用戶的云存儲(chǔ)空間為100GB或者更大,主要依據(jù)底層存儲(chǔ)總資源的大小和用戶的信用等級(jí),并能根據(jù)需要?jiǎng)討B(tài)調(diào)整;然后對(duì)用戶個(gè)人信息的認(rèn)證和數(shù)據(jù)前端加密,保證多用戶各自的獨(dú)立目錄空間,給予必要用戶數(shù)據(jù)安全性;最后針對(duì)數(shù)據(jù)的分塊操作,利用高響應(yīng)緩存來(lái)管理副本和元數(shù)據(jù),文件數(shù)據(jù)按照固定大小分塊加密封裝傳至下層DHT網(wǎng)絡(luò)的各個(gè)存儲(chǔ)節(jié)點(diǎn)。在完全副本冗余和就刪冗余等技術(shù)的協(xié)助下實(shí)現(xiàn)數(shù)據(jù)塊高效的索引和存取操作。
針對(duì)不同的災(zāi)備業(yè)務(wù)對(duì)災(zāi)備等級(jí)的要求,具體物理層實(shí)施方案可分為以下2種:
(1)支持虛擬節(jié)點(diǎn)級(jí)別的服務(wù)器集群實(shí)施方案
對(duì)于大型的云計(jì)算平臺(tái),可采用主流的虛擬化平臺(tái),如:VMware、XenServer、KVM 等,按照用戶需求將資源池的計(jì)算資源化分成若干虛擬的硬件資源,并采用遷移技術(shù)和云平臺(tái)管理系統(tǒng),使虛擬服務(wù)器群在統(tǒng)一的界面下進(jìn)行管理,當(dāng)物理服務(wù)器因各種原因停機(jī)時(shí),可以在網(wǎng)絡(luò)中實(shí)現(xiàn)自動(dòng)切換功能,從而達(dá)到不中斷業(yè)務(wù)的目的。
(2)支持跨地域數(shù)據(jù)災(zāi)備實(shí)施方案
該方案實(shí)施時(shí)可分為2種方案:①將Internet網(wǎng)上的所有用戶PC作為災(zāi)備的節(jié)點(diǎn)進(jìn)行實(shí)施;②在異地電信級(jí)數(shù)據(jù)機(jī)房租用存儲(chǔ)備份資源進(jìn)行異地災(zāi)備處理。
在Kademlia算法中,每個(gè)Kademlia節(jié)點(diǎn)都有一個(gè)160比特的ID作為標(biāo)識(shí)符。節(jié)點(diǎn)利用DHT儲(chǔ)存資料完成索引。所有節(jié)點(diǎn)被當(dāng)作一個(gè)二叉樹(shù)的葉子節(jié)點(diǎn),并且每個(gè)節(jié)點(diǎn)的位置都由其ID值的最短前綴唯一確定。每個(gè)節(jié)點(diǎn)知道其各非空子樹(shù)的至少一個(gè)節(jié)點(diǎn)。Kademlia算法基于網(wǎng)絡(luò)中兩個(gè)節(jié)點(diǎn)之間的距離進(jìn)行計(jì)算,該距離是兩個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)ID號(hào)的異或,計(jì)算的結(jié)果最終被作為整型數(shù)值進(jìn)行返回。另外,關(guān)鍵字和節(jié)點(diǎn)ID有同樣的格式和長(zhǎng)度,因此,可以使用相同的方法計(jì)算關(guān)鍵字和節(jié)點(diǎn)ID之間的距離。
在Kademlia算法中,兩個(gè)節(jié)點(diǎn)之間的距離定義為兩個(gè)ID值異或的結(jié)果。Value值就存放在ID值和key值相同或者最接近的那個(gè)節(jié)點(diǎn)上。
在Kademlia網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)都維護(hù)了160個(gè)列表,其中,每個(gè)列表均被稱作一個(gè)k桶(k-bucket)。在第i個(gè)k桶中,記錄了當(dāng)前節(jié)點(diǎn)已知的與自身距離為2i~2i+1的一些其他對(duì)等節(jié)點(diǎn)的網(wǎng)絡(luò)信息(包括Node ID、IP地址、UDP端口等信息),每一個(gè)k桶中最多存放k個(gè)對(duì)端節(jié)點(diǎn)信息。每一個(gè)k桶中的對(duì)等節(jié)點(diǎn)信息均按訪問(wèn)時(shí)間進(jìn)行排序,Kademlia網(wǎng)絡(luò)中節(jié)點(diǎn)的路由表結(jié)構(gòu)如圖2所示。
圖2 Kademlia網(wǎng)絡(luò)中節(jié)點(diǎn)的路由表結(jié)構(gòu)Fig.2 Routing table structure of node in Kademlia network
網(wǎng)絡(luò)中的節(jié)點(diǎn)信息的加入與更新是隨著網(wǎng)絡(luò)中的節(jié)點(diǎn)被某現(xiàn)有節(jié)點(diǎn)不斷地發(fā)現(xiàn)而逐漸完成的,它們被逐步加入到該節(jié)點(diǎn)的相應(yīng)的列表中。這個(gè)過(guò)程中發(fā)現(xiàn)的所有節(jié)點(diǎn)都將被加入到節(jié)點(diǎn)的列表之中,因此,節(jié)點(diǎn)對(duì)整個(gè)網(wǎng)絡(luò)的具有動(dòng)態(tài)感知能力,整個(gè)網(wǎng)絡(luò)的信息將保持按一定頻繁進(jìn)行更新,從而提高了網(wǎng)絡(luò)抵御錯(cuò)誤和攻擊的能力。
基于DHT的云災(zāi)備模型中,采用糾刪碼冗余的方式進(jìn)行分布式冗余數(shù)據(jù)存儲(chǔ)管理。
對(duì)于RS(Reed-Solomon)糾刪碼,根據(jù)其生成矩陣的不同,可以把RS碼分為范德蒙碼和柯西碼。假若RS糾刪碼的生成矩陣G為一個(gè)k×n的矩陣,該生成矩陣由兩部分聯(lián)合構(gòu)成G=(Ik×k|Pk(nk)),其中前半部分的Ik×k是一個(gè)k階的單位矩陣,如果后面分的矩陣Pk(n-k)是范德蒙矩陣,則該RS糾刪碼為范德蒙糾刪碼;如果Pk(n-k)是柯西矩陣,那么該 RS糾刪碼為柯西糾刪碼[10-11]。RS碼數(shù)據(jù)分割編碼過(guò)程如圖3所示。
圖3 RS碼數(shù)據(jù)分割編碼過(guò)程示意Fig.3 RS code data partitioning process schematic diagram
對(duì)于糾刪碼的具體使用,首先,數(shù)據(jù)的源節(jié)點(diǎn)通過(guò)糾刪碼的編碼規(guī)則冗余生成較多的分塊;然后,系統(tǒng)將數(shù)據(jù)分塊和冗余分塊分發(fā)給相應(yīng)的存儲(chǔ)結(jié)點(diǎn)進(jìn)行分別存儲(chǔ);最后,當(dāng)用戶需要進(jìn)行文件重組操作時(shí),需要讀取一定數(shù)量的分塊文件,最終完成數(shù)據(jù)的恢復(fù)與重組。
隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,極大地推動(dòng)了云計(jì)算及其產(chǎn)業(yè)的快速培育,并對(duì)該領(lǐng)域帶來(lái)革命性變革。雖然,短期內(nèi)很難在云計(jì)算產(chǎn)業(yè)上出現(xiàn)類似文中提出的覆蓋整個(gè)因特網(wǎng)的基于DHT云災(zāi)備存儲(chǔ)架構(gòu),但文中提出的云災(zāi)備模型還是具有研究和實(shí)用價(jià)值。我們有理由相信,在不久的將來(lái),覆蓋因特網(wǎng)甚至私人網(wǎng)絡(luò)的云存儲(chǔ)實(shí)體將會(huì)出現(xiàn),云計(jì)算終究在災(zāi)備領(lǐng)域中嶄露鋒芒。
[1]楊峰,李鳳霞,余宏,等.一種基于分布式哈希表的混合對(duì)等發(fā)現(xiàn)算法[J].軟件學(xué)報(bào),2007,3(30):714-721.YANG Feng,LI Feng - Xia,YU Hong - Liang etc.,A Hybrid Peer-to-Peer Lookup Service Algorithm on Distributed Hash Table[J].Journal of Software,2007,3(30):714-721.
[2]孫知信,駱冰清,陳亞當(dāng),等.一種基于多維DHT空間映射的 P2P安全拓?fù)浞桨福跩].中國(guó)科學(xué),2013,43(03):343-60.SUN Zhi-xin,LUO Bing-qing,CHEN Ya-dang etc.A P2P Topology Multi DHT based on Space Mapping[J].China Science,2013,43(03):343 -60.
[3]DABEK F,LI J,SIT E,et al.Designing a DHT for Low Latency and High Throughput[C]//Proceedings of NSDI.SanFrancisco,USA:[s.n.],2004.
[4]CHEN Guihai,WU Fan,LI Hongxing,et al.Redundancy Schemes for High Availability in DHTs[J].Chinese Journal of Computers,2008,10(31):990 -1000.
[5]陳釗.基于云災(zāi)備的數(shù)據(jù)安全存儲(chǔ)關(guān)鍵技術(shù)研究[D].北京:北京郵電大學(xué),2012.CHEN Zhao.Research on Key Technologies of Cloud Backup Data Security based Storage[D].Beijing:Doctoral Dissertation of Beijing University of Posts and Telecommunications,2012.
[6]溫安寧.基于DHT的key_value分布式存儲(chǔ)系統(tǒng)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2010.WEN An-ning.The Key_Value Distributed Storage System based on DHT[D].Harbin:Harbin Institute of Technology,2010.
[7]楊楠.基于Kademlia的P2P網(wǎng)絡(luò)資源定位模型改進(jìn)[D].湖北:湖北工業(yè)大學(xué),2010.YANG Nan.Improved P2P Cyber Source Location Model based on Kademlia[D].Hubei:Hubei University of Technology,2010.
[8]馮丹.網(wǎng)絡(luò)存儲(chǔ)關(guān)鍵技術(shù)的研究及進(jìn)展[J].移動(dòng)通信,2009,33(11):35 -39.FENG Dan.Research and Development of Key Technologies of Network Storage[J].The Mobile Communication,2009,33(11):35 -39.
[9]侯建,帥仁俊,侯文.基于云計(jì)算的海量數(shù)據(jù)存儲(chǔ)模型[J].通信技術(shù),2011,44(05):163 -165.HOU Jian,SHUAI Ren - jun,HOU Wen.Massive Data Storage Model based on Cloud Computing[J].Communications Technology,2011,44(05):163 -165.
[10]陶鈞,沙基昌,王暉.基于Erasure Code的分割文件P2P存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)[J].國(guó)防科技大學(xué)學(xué)報(bào),2008,30(06):57-62.TAO Jun,SHA Ji- Chang,WANG Hui.A Design for the Erasure Code Based Segmented File P2P Storage Structure[J].Journal of National University of Defense Technology,2008,30(06):57 -62.
[11]彭榮華.基于DHT的存儲(chǔ)系統(tǒng)中糾刪碼技術(shù)研究[D].西安:西安電子科技大學(xué),2013.PENG Rong-h(huán)ua.Research on Erasure Code Storage System based on DHT[D].Xi'an:Xi'an Electronic and Science University,2013.