一種基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)系統(tǒng)及實(shí)現(xiàn)方法
【專利摘要】本發(fā)明公開了一種基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)系統(tǒng)及實(shí)現(xiàn)方法,涉及分布式文件系統(tǒng),該方法包括建立元數(shù)據(jù)管理節(jié)點(diǎn)、數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)、修復(fù)管理節(jié)點(diǎn)、工作管理節(jié)點(diǎn)、客戶端節(jié)點(diǎn),根據(jù)糾刪碼技術(shù),通過該元數(shù)據(jù)管理節(jié)點(diǎn)、該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)和該客戶端節(jié)點(diǎn)進(jìn)行數(shù)據(jù)的存儲(chǔ)和讀取,其中通過該修復(fù)管理節(jié)點(diǎn)和該工作管理節(jié)點(diǎn)修復(fù)采用糾刪碼技術(shù)后丟失或損壞的數(shù)據(jù)塊。本發(fā)明通過將糾刪碼的修復(fù)過程與云儲(chǔ)存系統(tǒng)文件管理節(jié)點(diǎn)相互分離,減輕修復(fù)過程元數(shù)據(jù)管理節(jié)點(diǎn)的負(fù)擔(dān),保證修復(fù)過程中系統(tǒng)的穩(wěn)定性,高可靠性和高可用性。
【專利說明】一種基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)系統(tǒng)及實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明創(chuàng)造屬于分布式文件系統(tǒng),特別是為了保證分布式文件系統(tǒng)的高可靠性、聞可用性以及聞容錯(cuò)性。
【背景技術(shù)】
[0002]近年來,隨著數(shù)據(jù)呈現(xiàn)爆炸式的增長(zhǎng)趨勢(shì),高性能計(jì)算、醫(yī)學(xué)影像、石油和天然氣勘探、數(shù)字媒體和社交網(wǎng)絡(luò)等大量數(shù)據(jù)密集型應(yīng)用導(dǎo)致數(shù)據(jù)的井噴,據(jù)研究顯示,2020年數(shù)字宇宙將達(dá)到35.2ZB,比2009年的0.8ZB猛增44倍,而如何保證系統(tǒng)在盡可能低的空間開銷情況下,保證存儲(chǔ)數(shù)據(jù)的高可靠性、高穩(wěn)定性和高可用性。
[0003]在傳統(tǒng)的云存儲(chǔ)系統(tǒng)中,采用復(fù)制的策略提高分布式文件系統(tǒng)的可靠性,在一定程度上能夠保證系統(tǒng)的可靠性,但隨著數(shù)據(jù)的爆炸式增長(zhǎng),采用單一的復(fù)制策略,不但可能造成很大的空間開銷,同時(shí)也可能造成副本全部丟失所帶來的不可恢復(fù)性文件丟失,從而對(duì)系統(tǒng)的可靠性帶來一定的風(fēng)險(xiǎn)性。糾刪碼(Erasure Code)作為一種前向糾錯(cuò)技術(shù)分布式存儲(chǔ)系統(tǒng)利用它作為一種冗余機(jī)制來保證分布式存儲(chǔ)系統(tǒng)數(shù)據(jù)的高可靠性、高可用性和高容錯(cuò)性。其基本思想是:如圖1所示,將要存儲(chǔ)在系統(tǒng)中的文件分割成k塊,然后對(duì)其編碼得到的η個(gè)數(shù)據(jù)塊并進(jìn)行分布存儲(chǔ),則只需存在k個(gè)可用的數(shù)據(jù)塊,就可以重構(gòu)出原始文件。
[0004]在云存儲(chǔ)系統(tǒng)中采用糾刪碼技術(shù)對(duì)文件進(jìn)行保存,在一定程度上降低系統(tǒng)的空間開銷,但同時(shí)由于文件修復(fù)帶來的巨大的網(wǎng)絡(luò)開銷可能導(dǎo)致整個(gè)系統(tǒng)的網(wǎng)絡(luò)或者部分節(jié)點(diǎn)的網(wǎng)絡(luò)擁塞而無(wú)法提供服務(wù),影響系統(tǒng)的性能。同時(shí)對(duì)于存儲(chǔ)和傳輸?shù)腎O讀寫的開銷也會(huì)加大,這可能會(huì)降低系統(tǒng)吞吐量??紤]到以上問題,為了將糾刪碼的修復(fù)過程與云存儲(chǔ)系統(tǒng)文件管理節(jié)點(diǎn)相互分離,減輕修復(fù)過程元數(shù)據(jù)管理節(jié)點(diǎn)的負(fù)擔(dān),保證修復(fù)過程中系統(tǒng)的穩(wěn)定性,本發(fā)明提出一種改進(jìn)的云儲(chǔ)存系統(tǒng)新架構(gòu)。
[0005]發(fā)明專利“云存儲(chǔ)系統(tǒng)及其元數(shù)據(jù)寫入方法、元數(shù)據(jù)讀取方法”公開了一種云存儲(chǔ)系統(tǒng)及其元數(shù)據(jù)寫入方法、元數(shù)據(jù)讀取方法。包括:元數(shù)據(jù)服務(wù)器集群、視圖管理模塊和客戶端??蛻舳讼蛴脩籼峁┰L問云存儲(chǔ)系統(tǒng)的接口并解析用戶要訪問的元數(shù)據(jù)服務(wù)器的視圖位置;視圖管理模塊存儲(chǔ)全部元數(shù)據(jù)視圖信息,根據(jù)全部元數(shù)據(jù)視圖信息構(gòu)建各元數(shù)據(jù)服務(wù)器之間的邏輯關(guān)聯(lián)關(guān)系,并向每個(gè)元數(shù)據(jù)服務(wù)器分發(fā)與元數(shù)據(jù)服務(wù)器自身相關(guān)聯(lián)的元數(shù)據(jù)視圖信息;各元數(shù)據(jù)服務(wù)器存儲(chǔ)由視圖管理模塊分發(fā)的元數(shù)據(jù)視圖信息,并確定的元數(shù)據(jù)服務(wù)器的網(wǎng)絡(luò)訪問地址信息;元數(shù)據(jù)服務(wù)器分層部署,最底層的元數(shù)據(jù)服務(wù)器還存儲(chǔ)元數(shù)據(jù)內(nèi)容和元數(shù)據(jù)視圖信息并根據(jù)用戶請(qǐng)求將自身存儲(chǔ)的元數(shù)據(jù)信息提供給用戶。該發(fā)明專利能減小帶寬消耗。但是該發(fā)明專利只說明了元數(shù)據(jù)的讀取方法,并沒有涉及到數(shù)據(jù)塊損壞或丟失后的恢復(fù)方法。
[0006]發(fā)明專利“一種云存儲(chǔ)系統(tǒng)及實(shí)現(xiàn)方法”公開了一種云存儲(chǔ)系統(tǒng)及其實(shí)現(xiàn)方法,涉及計(jì)算機(jī)以及網(wǎng)絡(luò)信息【技術(shù)領(lǐng)域】。該發(fā)明公開的云存儲(chǔ)系統(tǒng),包括:所述訪問特征數(shù)據(jù)庫(kù),記錄所述云存儲(chǔ)系統(tǒng)內(nèi)各文件被訪問的次數(shù);所述訪問特征分析與副本調(diào)度模塊,接收客戶端對(duì)云存儲(chǔ)系統(tǒng)內(nèi)文件發(fā)起的訪問請(qǐng)求,從所述訪問特征數(shù)據(jù)庫(kù)中查詢所接收到的訪問請(qǐng)求所要訪問的文件被訪問的次數(shù),若所查詢到的文件被訪問的次數(shù)滿足設(shè)定條件,則向所述數(shù)據(jù)副本模塊發(fā)起數(shù)據(jù)副本創(chuàng)建指令;所述數(shù)據(jù)副本模塊,接收所述數(shù)據(jù)副本創(chuàng)建指令,根據(jù)該數(shù)據(jù)副本創(chuàng)建指令為所接收到的訪問請(qǐng)求所要訪問的文件創(chuàng)建數(shù)據(jù)副本。該發(fā)明實(shí)施例在一定程度上提高了云存儲(chǔ)系統(tǒng)的可用性,改善了云存儲(chǔ)系統(tǒng)的可靠性。但是該發(fā)明所采用的數(shù)據(jù)備份方式仍然是傳統(tǒng)的復(fù)制策略,這種策略在隨著需要儲(chǔ)存的數(shù)據(jù)量爆炸式增長(zhǎng)過程中,將帶來很大存儲(chǔ)空間的浪費(fèi),不利于綠色資源調(diào)度和綠色數(shù)據(jù)中心的發(fā)展。而本發(fā)明是基于糾刪碼編碼技術(shù)架構(gòu)的云存儲(chǔ)系統(tǒng),采用糾刪碼編碼技術(shù)取代傳統(tǒng)的副本復(fù)制備份策略,不但可以降低副本備份所帶來的巨大空間開銷,同時(shí)提高數(shù)據(jù)存儲(chǔ)的可靠性。
【發(fā)明內(nèi)容】
[0007]針對(duì)上述云儲(chǔ)存系統(tǒng)的架構(gòu)以及糾刪碼原理的介紹,本發(fā)明在原生的云儲(chǔ)存系統(tǒng)架構(gòu)中加入修復(fù)管理節(jié)點(diǎn),該節(jié)點(diǎn)主要負(fù)責(zé)采用糾刪碼技術(shù)對(duì)丟失或損壞的數(shù)據(jù)塊進(jìn)行修復(fù),將修復(fù)管理節(jié)點(diǎn)與元數(shù)據(jù)管理節(jié)點(diǎn)相互分離,從而減輕元數(shù)據(jù)管理節(jié)點(diǎn)在修復(fù)過程中的負(fù)載,保證系統(tǒng)的高可靠性、高可用性和高穩(wěn)定性。同時(shí)在此架構(gòu)的基礎(chǔ)上對(duì)采用糾刪碼算法處理的數(shù)據(jù)塊進(jìn)一步增加采用基于異或運(yùn)算的數(shù)據(jù)信息塊,在單點(diǎn)發(fā)生故障時(shí),能夠快速及時(shí)的恢復(fù)丟失或損壞的數(shù)據(jù)塊。
[0008]具體地講,本發(fā)明公開了一種基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)實(shí)現(xiàn)方法,其特征在于,包括建立元數(shù)據(jù)管理節(jié)點(diǎn)、數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)、修復(fù)管理節(jié)點(diǎn)、工作管理節(jié)點(diǎn)、客戶端節(jié)點(diǎn),根據(jù)糾刪碼技術(shù),通過該元數(shù)據(jù)管理節(jié)點(diǎn)、該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)和該客戶端節(jié)點(diǎn)進(jìn)行數(shù)據(jù)的存儲(chǔ)和讀取,其中通過該修復(fù)管理節(jié)點(diǎn)和該工作管理節(jié)點(diǎn)修復(fù)采用糾刪碼技術(shù)后丟失或損壞的數(shù)據(jù)塊。
[0009]所述的基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)實(shí)現(xiàn)方法,還包括生成異或數(shù)據(jù)塊,具體步驟如下:
[0010]該修復(fù)管理節(jié)點(diǎn)向該元數(shù)據(jù)管理節(jié)點(diǎn)發(fā)送讀取數(shù)據(jù)塊信息表和用戶的可靠性等級(jí)請(qǐng)求;該修復(fù)管理節(jié)點(diǎn)根據(jù)該數(shù)據(jù)塊信息表和該用戶的可靠性等級(jí),向該工作管理節(jié)點(diǎn)提交生成異或信息塊任務(wù);該工作管理節(jié)點(diǎn)根據(jù)該數(shù)據(jù)塊信息表和該用戶可靠性等級(jí)向該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)提交生成異或信息塊任務(wù);該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)生成異或信息塊并將該異或信息塊的位置信息返回給該修復(fù)管理節(jié)點(diǎn);該修復(fù)管理節(jié)點(diǎn)生成異或信息塊表,同時(shí)通知該元數(shù)據(jù)管理節(jié)點(diǎn)該異或信息塊已生成。
[0011]所述的基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)實(shí)現(xiàn)方法,還包括:
[0012]該修復(fù)管理節(jié)點(diǎn)周期性掃描數(shù)據(jù)塊的狀態(tài),當(dāng)發(fā)現(xiàn)異常時(shí),讀取用戶可靠性等級(jí),并向該工作管理節(jié)點(diǎn)提交修復(fù)數(shù)據(jù)塊任務(wù),該工作管理節(jié)點(diǎn)將該修復(fù)數(shù)據(jù)塊任務(wù)發(fā)送到該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)讀取本地?cái)?shù)據(jù)塊信息表并啟動(dòng)修復(fù)進(jìn)程,并向該修復(fù)管理節(jié)點(diǎn)發(fā)送修復(fù)后數(shù)據(jù)塊所在節(jié)點(diǎn)的位置信息,該修復(fù)管理節(jié)點(diǎn)向該元數(shù)據(jù)管理節(jié)點(diǎn)發(fā)送元數(shù)據(jù)表更新信息,該元數(shù)據(jù)管理節(jié)點(diǎn)根據(jù)該元數(shù)據(jù)表更新信息更新元數(shù)據(jù)表。
[0013]所述的基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)實(shí)現(xiàn)方法,還包括:
[0014]根據(jù)修復(fù)后數(shù)據(jù)塊所在節(jié)點(diǎn)的位置信息與該修復(fù)管理節(jié)點(diǎn)保存的數(shù)據(jù)塊信息表比對(duì),如果是異或信息表更新,將更新信息更新到異或信息塊表;若是元數(shù)據(jù)表信息表更新,將更新信息更新到元數(shù)據(jù)表。
[0015]本發(fā)明還公開了一種基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)系統(tǒng),其特征在于,包括元數(shù)據(jù)管理節(jié)點(diǎn)、數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)、修復(fù)管理節(jié)點(diǎn)、工作管理節(jié)點(diǎn)、客戶端節(jié)點(diǎn),根據(jù)糾刪碼技術(shù),通過該元數(shù)據(jù)管理節(jié)點(diǎn)、該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)和該客戶端節(jié)點(diǎn)進(jìn)行數(shù)據(jù)的存儲(chǔ)和讀取,其中通過該修復(fù)管理節(jié)點(diǎn)和該工作管理節(jié)點(diǎn)修復(fù)采用糾刪碼技術(shù)后丟失或損壞的數(shù)據(jù)塊。
[0016]所述的基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)系統(tǒng),還包括生成異或數(shù)據(jù)塊:該修復(fù)管理節(jié)點(diǎn)用于向該元數(shù)據(jù)管理節(jié)點(diǎn)發(fā)送讀取數(shù)據(jù)塊信息表和用戶的可靠性等級(jí)請(qǐng)求;該修復(fù)管理節(jié)點(diǎn)根據(jù)該數(shù)據(jù)塊信息表和該用戶的可靠性等級(jí),向該工作管理節(jié)點(diǎn)提交生成異或信息塊任務(wù);該工作管理節(jié)點(diǎn)根據(jù)該數(shù)據(jù)塊信息表和該用戶可靠性等級(jí)向該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)提交生成異或信息塊任務(wù);該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)生成異或信息塊并將該異或信息塊的位置信息返回給該修復(fù)管理節(jié)點(diǎn);該 修復(fù)管理節(jié)點(diǎn)生成異或信息塊表,同時(shí)通知該元數(shù)據(jù)管理節(jié)點(diǎn)該異或信息塊已生成。
[0017]所述的基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)系統(tǒng),還包括:
[0018]該修復(fù)管理節(jié)點(diǎn)周期性掃描數(shù)據(jù)塊的狀態(tài),當(dāng)發(fā)現(xiàn)異常時(shí),讀取用戶可靠性等級(jí),并向該工作管理節(jié)點(diǎn)提交修復(fù)數(shù)據(jù)塊任務(wù),該工作管理節(jié)點(diǎn)將該修復(fù)數(shù)據(jù)塊任務(wù)發(fā)送到該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)讀取本地?cái)?shù)據(jù)塊信息表并啟動(dòng)修復(fù)進(jìn)程,并向該修復(fù)管理節(jié)點(diǎn)發(fā)送修復(fù)后數(shù)據(jù)塊所在節(jié)點(diǎn)的位置信息,該修復(fù)管理節(jié)點(diǎn)向該元數(shù)據(jù)管理節(jié)點(diǎn)發(fā)送元數(shù)據(jù)表更新信息,該元數(shù)據(jù)管理節(jié)點(diǎn)根據(jù)該元數(shù)據(jù)表更新信息更新元數(shù)據(jù)表。
[0019]所述的基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)系統(tǒng),還包括:根據(jù)修復(fù)后數(shù)據(jù)塊所在節(jié)點(diǎn)的位置信息與該修復(fù)管理節(jié)點(diǎn)保存的數(shù)據(jù)塊信息表比對(duì),如果是異或信息表更新,將更新信息更新到異或信息塊表;若是元數(shù)據(jù)信息表更新,將更新信息更新到元數(shù)據(jù)表。
[0020]目前的云儲(chǔ)存系統(tǒng)中的數(shù)據(jù)是靠復(fù)制策略來保證冗余的。采用復(fù)制策略占用和浪費(fèi)了大量的存儲(chǔ)空間,在集群規(guī)模較小的時(shí)候可能還不是非常明顯,但是對(duì)于大規(guī)模集群就比較顯著了。如果按照當(dāng)前IGB存儲(chǔ)空間的成本是I Y來算,若數(shù)據(jù)的規(guī)模是5TB,那么兩備份(IOT)和三備份(15T)的成本差距是5000 ¥ ;而如果數(shù)據(jù)規(guī)模到了 5PB的話,兩備份和三備份的成本差距就有5,000,000 Y。本發(fā)明能夠有效減少成本,提高系統(tǒng)運(yùn)行效率,特別具有推廣和應(yīng)用的價(jià)值。
【專利附圖】
【附圖說明】
[0021]圖1為糾刪碼編碼與解碼;
[0022]圖2為基于糾刪碼改進(jìn)的云儲(chǔ)存系統(tǒng)文件系統(tǒng)架構(gòu);
[0023]圖3為基于糾刪碼改進(jìn)的云儲(chǔ)存系統(tǒng)系統(tǒng)數(shù)據(jù)寫入過程;
[0024]圖4為基于糾刪碼改進(jìn)的云儲(chǔ)存系統(tǒng)系統(tǒng)數(shù)據(jù)讀取過程;
[0025]圖5為基于糾刪碼改進(jìn)的云儲(chǔ)存系統(tǒng)系統(tǒng)異或信息塊生成過程;
[0026]圖6為基于糾刪碼改進(jìn)的云儲(chǔ)存系統(tǒng)系統(tǒng)損壞或丟失的數(shù)據(jù)塊修復(fù)過程;
[0027]其中,附圖標(biāo)記為:
[0028]I為客戶端節(jié)點(diǎn);
[0029]11為z?存儲(chǔ)系統(tǒng)客戶端;[0030]12為分布式文件系統(tǒng)對(duì)象實(shí)例;
[0031]13為數(shù)據(jù)輸入流;
[0032]131為分布式文件系統(tǒng)輸入流;
[0033]132為輸入流轉(zhuǎn)化器;
[0034]133為RS譯碼器;
[0035]14為數(shù)據(jù)輸出流;
[0036]141為分布式文件系統(tǒng)輸出流;
[0037]142為數(shù)據(jù)流轉(zhuǎn)化器;
[0038]143為RS編碼器;
[0039]2為元數(shù)據(jù)管理節(jié)點(diǎn);
[0040]3為修復(fù)管理節(jié)點(diǎn);
[0041]4為工作管理節(jié)點(diǎn);
[0042]5為數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)。
【具體實(shí)施方式】
[0043]本發(fā)明針對(duì)云存儲(chǔ)系統(tǒng)中文件備份策略進(jìn)行改進(jìn),進(jìn)一步降低由于冗余備份所帶來的空間占用開銷,同時(shí)保證系統(tǒng)的可靠性、可用性和容錯(cuò)性。下面結(jié)合附圖和【具體實(shí)施方式】,對(duì)本發(fā)明的文件上傳和數(shù)據(jù)塊恢復(fù)過程做進(jìn)一步的說明。
[0044]如圖2所示,基于糾刪碼技術(shù)改進(jìn)的云儲(chǔ)存系統(tǒng)架構(gòu)中包含的節(jié)點(diǎn)和功能:
[0045]元數(shù)據(jù)管理節(jié)點(diǎn)2。元數(shù)據(jù)管理節(jié)點(diǎn)2是云儲(chǔ)存系統(tǒng)中原始數(shù)據(jù)的管理者,它負(fù)責(zé)管理文件系統(tǒng)的命名空間,維護(hù)文件系統(tǒng)的文件樹及所有的文件和目錄的元數(shù)據(jù)。同時(shí),元數(shù)據(jù)管理節(jié)點(diǎn)2中還保存了每個(gè)文件與分布式存儲(chǔ)下每個(gè)數(shù)據(jù)塊與其所在的數(shù)據(jù)儲(chǔ)存節(jié)點(diǎn)5的映射關(guān)系,這些信息將被用于其他功能組件查找所需文件資源的數(shù)據(jù)存儲(chǔ)服務(wù)器使用。
[0046]數(shù)據(jù)儲(chǔ)存節(jié)點(diǎn)5。數(shù)據(jù)儲(chǔ)存節(jié)點(diǎn)5是云存儲(chǔ)系統(tǒng)文件系統(tǒng)中保存數(shù)據(jù)的節(jié)點(diǎn)。分布式的云存儲(chǔ)系統(tǒng)中的文件通常被分割為多個(gè)數(shù)據(jù)塊,通過編碼后分發(fā)到不同的數(shù)據(jù)儲(chǔ)存節(jié)點(diǎn)5中。數(shù)據(jù)儲(chǔ)存節(jié)點(diǎn)5定期向元數(shù)據(jù)管理節(jié)點(diǎn)2報(bào)告其存儲(chǔ)的所有數(shù)據(jù)塊列表和健康狀態(tài),以備使用者通過直接訪問數(shù)據(jù)儲(chǔ)存節(jié)點(diǎn)5獲得相應(yīng)的數(shù)據(jù)。
[0047]修復(fù)管理節(jié)點(diǎn)3。在云存儲(chǔ)系統(tǒng)中使用糾刪碼技術(shù)重構(gòu)和異或處理的信息塊儲(chǔ)存后,由于修復(fù)損壞或丟失的數(shù)據(jù)塊的過程中會(huì)頻繁與元數(shù)據(jù)管理節(jié)點(diǎn)2通信,為了減輕元數(shù)據(jù)管理節(jié)點(diǎn)2的負(fù)擔(dān),將修復(fù)過程與管理節(jié)點(diǎn)進(jìn)行隔離,由單獨(dú)一個(gè)修復(fù)管理節(jié)點(diǎn)3完成損壞或丟失的數(shù)據(jù)塊恢復(fù),保證數(shù)據(jù)塊的完整性和一致性。
[0048]客戶端節(jié)點(diǎn)I??蛻舳斯?jié)點(diǎn)I是云存儲(chǔ)文件系統(tǒng)的使用者,它通過調(diào)用云存儲(chǔ)系統(tǒng)提供的API對(duì)系統(tǒng)的文件進(jìn)行讀寫操作。在進(jìn)行讀寫操作時(shí),客戶端節(jié)點(diǎn)I需要首先從元數(shù)據(jù)管理節(jié)點(diǎn)2獲得文件存儲(chǔ)的元數(shù)據(jù)信息,然后從元數(shù)據(jù)信息中解析出再與請(qǐng)求讀寫文件所屬的若干個(gè)數(shù)據(jù)儲(chǔ)存節(jié)點(diǎn)5信息,最后與多個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5通信進(jìn)行數(shù)據(jù)讀寫操作。
[0049]如圖3所示,基于糾刪碼改進(jìn)的云儲(chǔ)存系統(tǒng)的客戶端節(jié)點(diǎn)I向文件系統(tǒng)創(chuàng)建一個(gè)文件,并將數(shù)據(jù)寫入到云存儲(chǔ)文件系統(tǒng)中的過程是:
[0050]客戶端節(jié)點(diǎn)I生成分布式文件系統(tǒng)對(duì)象實(shí)例12,并創(chuàng)建一個(gè)文件。[0051]分布式文件系統(tǒng)對(duì)象實(shí)例12通過遠(yuǎn)程過程調(diào)用模塊RPC向元數(shù)據(jù)管理節(jié)點(diǎn)2發(fā)出創(chuàng)建文件的請(qǐng)求。元數(shù)據(jù)管理節(jié)點(diǎn)2在確認(rèn)請(qǐng)求創(chuàng)建的文件在云存儲(chǔ)中沒有出現(xiàn)重復(fù)并且符合命名規(guī)則,同時(shí)云存儲(chǔ)系統(tǒng)客戶端11對(duì)于云存儲(chǔ)具有寫入權(quán)限后,在命名空間中創(chuàng)建此文件的對(duì)應(yīng)記錄。在此過程中如果出現(xiàn)異常,元數(shù)據(jù)管理節(jié)點(diǎn)將向云存儲(chǔ)客戶端11返回IO異常并進(jìn)行IO異常和回退處理。
[0052]分布式文件系統(tǒng)對(duì)象實(shí)例12在獲得元數(shù)據(jù)管理節(jié)點(diǎn)2返回的創(chuàng)建成功和分配的存儲(chǔ)節(jié)點(diǎn)分布信息(包含存儲(chǔ)節(jié)點(diǎn)的IP地址、可用的存儲(chǔ)地址等)后,生成一個(gè)數(shù)據(jù)輸出流14返回給云存儲(chǔ)系統(tǒng)客戶端11。數(shù)據(jù)輸出流包含一個(gè)分布式文件系統(tǒng)輸出流141,負(fù)責(zé)后續(xù)的文件內(nèi)容寫入處理。
[0053]云存儲(chǔ)系統(tǒng)客戶端11向數(shù)據(jù)輸出流14發(fā)送需要寫入文件的數(shù)據(jù)。分布式文件系統(tǒng)輸出流141在收到待寫入的數(shù)據(jù)后會(huì)將數(shù)據(jù)拆分后放入數(shù)據(jù)隊(duì)列。
[0054]RS編碼器143負(fù)責(zé)從數(shù)據(jù)隊(duì)列中不斷取出數(shù)據(jù)塊進(jìn)行Reed Solomon編碼(里所編碼),通過數(shù)據(jù)流轉(zhuǎn)化器142和分布式文件系統(tǒng)輸出流141將編碼后的數(shù)據(jù)塊和原始數(shù)據(jù)塊依據(jù)之前獲取的分配存儲(chǔ)節(jié)點(diǎn)分布信息(包含存儲(chǔ)節(jié)點(diǎn)的IP地址、可用的存儲(chǔ)地址等)寫入到若干個(gè)對(duì)應(yīng)的數(shù)據(jù)儲(chǔ)存節(jié)點(diǎn)5中客戶端節(jié)點(diǎn)I從元數(shù)據(jù)管理節(jié)點(diǎn)2獲取分配的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5的列表及在數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5上的存儲(chǔ)位置信息,之后云存儲(chǔ)系統(tǒng)客戶端11根據(jù)上述信息將創(chuàng)建的文件分解成與數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5數(shù)量對(duì)應(yīng)的若干段,然后將對(duì)應(yīng)的段發(fā)送給對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5中,然后每個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5返回給數(shù)據(jù)輸出流14,經(jīng)匯總后再向元數(shù)據(jù)管理節(jié)點(diǎn)2上傳文件寫入結(jié)果,之后(以下內(nèi)容屬于數(shù)據(jù)云存儲(chǔ)系統(tǒng)的內(nèi)部處理流程)每個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5將保存的數(shù)據(jù)塊進(jìn)行RS編碼,然后將編碼后的數(shù)據(jù)塊發(fā)送到其他同樣保存此文件的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5中,最后數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5將原始文件信息、數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5保存的數(shù)據(jù)塊、里所編碼塊保存節(jié)點(diǎn)、數(shù)據(jù)完整校驗(yàn)碼等信息向元數(shù)據(jù)管理節(jié)點(diǎn)2進(jìn)行上傳。
[0055]每個(gè)數(shù)據(jù)儲(chǔ)存節(jié)點(diǎn)5完成寫入后,會(huì)向數(shù)據(jù)流轉(zhuǎn)化器142和分布式文件系統(tǒng)輸出流141返回保存情況以完成數(shù)據(jù)塊寫入操作,之后數(shù)據(jù)流轉(zhuǎn)化器142和分布式文件系統(tǒng)輸出流141將完整的文件寫入情況上傳給元數(shù)據(jù)管理節(jié)點(diǎn)2完成數(shù)據(jù)塊寫入處理。
[0056]當(dāng)云存儲(chǔ)系統(tǒng)客戶端11完成所有數(shù)據(jù)寫入后,將調(diào)用數(shù)據(jù)輸入流結(jié)束本次文件寫入操作。
[0057]如圖4所示,基于糾刪碼改進(jìn)的云儲(chǔ)存系統(tǒng)中的客戶端節(jié)點(diǎn)I從文件系統(tǒng)中讀取數(shù)據(jù)的過程:
[0058]云存儲(chǔ)系統(tǒng)客戶端11生成分布式文件系統(tǒng)對(duì)象實(shí)例12,并打開一個(gè)文件。
[0059]分布式文件系統(tǒng)對(duì)象實(shí)例12通過RPC向元數(shù)據(jù)管理節(jié)點(diǎn)2發(fā)出文件打開請(qǐng)求,以獲得文件相關(guān)的數(shù)據(jù)塊位置信息。元數(shù)據(jù)管理節(jié)點(diǎn)2將包含此文件相關(guān)數(shù)據(jù)塊所在的數(shù)據(jù)儲(chǔ)存節(jié)點(diǎn)5地址及節(jié)點(diǎn)中存儲(chǔ)位置信息,經(jīng)過與云存儲(chǔ)系統(tǒng)客戶端11相關(guān)的距離進(jìn)行排序后,返回給分布式文件系統(tǒng)對(duì)象實(shí)例12。
[0060]分布式文件系統(tǒng)對(duì)象實(shí)例12在獲得數(shù)據(jù)塊相關(guān)的信息后,生成一個(gè)數(shù)據(jù)輸入流13返回給分布式文件系統(tǒng)對(duì)象實(shí)例12。數(shù)據(jù)輸入流13包含一個(gè)分布式文件系統(tǒng)輸入流132,負(fù)責(zé)存儲(chǔ)數(shù)據(jù)塊信息及數(shù)據(jù)儲(chǔ)存節(jié)點(diǎn)地址信息。
[0061]數(shù)據(jù)輸入流13中的分布式文件系統(tǒng)輸入流131選擇與云存儲(chǔ)系統(tǒng)客戶端11距離最近的恢復(fù)文件所需要數(shù)目的數(shù)據(jù)塊。通過輸入流轉(zhuǎn)化器132輸入,隨之輸入RS譯碼器133進(jìn)行RS解碼處理,直到所需要的數(shù)據(jù)塊讀取完成,云存儲(chǔ)系統(tǒng)客戶端11通過元數(shù)據(jù)管理節(jié)點(diǎn)2從數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5中獲取用來保存源文件的數(shù)據(jù)塊的信息及該源文件在數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5上的位置信息,云存儲(chǔ)系統(tǒng)客戶端11根據(jù)以上信息分別與數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5進(jìn)行通信,獲取文件內(nèi)容。
[0062]當(dāng)云存儲(chǔ)系統(tǒng)客戶端11讀取完所有數(shù)據(jù)后,將調(diào)用數(shù)據(jù)輸入流13結(jié)束本次文件讀取操作。
[0063]如圖5所示,基于糾刪碼改進(jìn)的云儲(chǔ)存系統(tǒng)中生成異或數(shù)據(jù)塊的過程:
[0064]在元數(shù)據(jù)管理節(jié)點(diǎn)2收到所有數(shù)據(jù)儲(chǔ)存節(jié)點(diǎn)5數(shù)據(jù)塊寫入成功后,通過RPC向修復(fù)管理節(jié)點(diǎn)3發(fā)送數(shù)據(jù)塊分發(fā)成功信號(hào)。
[0065]修復(fù)管理節(jié)點(diǎn)3接收到元數(shù)據(jù)管理節(jié)點(diǎn)2發(fā)送的信號(hào),向元數(shù)據(jù)管理節(jié)點(diǎn)2發(fā)送讀取數(shù)據(jù)塊信息表和用戶的可靠性等級(jí)請(qǐng)求。
[0066]修復(fù)管理節(jié)點(diǎn)3接收到元數(shù)據(jù)管理節(jié)點(diǎn)2發(fā)送來的數(shù)據(jù)塊信息表和用戶的可靠性等級(jí)信息,向工作管理節(jié)點(diǎn)4提交生成異或信息塊任務(wù)。
[0067]工作管理節(jié)點(diǎn)4接收到修復(fù)管理節(jié)點(diǎn)3發(fā)送的任務(wù)請(qǐng)求,根據(jù)數(shù)據(jù)塊信息表和用戶可靠性等級(jí)向數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5下發(fā)任務(wù)。
[0068]數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5完成任務(wù)將生成的異或信息塊所存儲(chǔ)的位置信息返回給修復(fù)管理節(jié)點(diǎn)3。
[0069]修復(fù)管理節(jié)點(diǎn)3接收到數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5發(fā)來的任務(wù)完成信息,統(tǒng)計(jì)生成異或信息塊表,同時(shí)向元數(shù)據(jù)管理節(jié)點(diǎn)2發(fā)送異或信息塊生成完成。
[0070]異或信息塊是通過兩個(gè)或者四個(gè)數(shù)據(jù)塊逐位進(jìn)行異或計(jì)算后獲得對(duì)的數(shù)據(jù)塊,在異或恢復(fù)之前,首先要對(duì)其他數(shù)據(jù)塊和異或數(shù)據(jù)塊的校驗(yàn)碼進(jìn)行驗(yàn)證,查看是否正確,然后這幾個(gè)數(shù)據(jù)塊進(jìn)行異或恢復(fù)處理。
[0071]異或信息塊針對(duì)的是用戶可靠性等級(jí)很高的用戶,本發(fā)明為這些用戶提供了兩套數(shù)據(jù)恢復(fù)方案:糾刪碼恢復(fù)(恢復(fù)計(jì)算量大,時(shí)間較慢,容錯(cuò)度高)、異或信息塊恢復(fù)(計(jì)算量小,恢復(fù)時(shí)間快,容錯(cuò)度較低)。
[0072]如圖6所示,基于糾刪碼改進(jìn)的云儲(chǔ)存系統(tǒng)中數(shù)據(jù)塊損壞或丟失的修復(fù)的過程:
[0073]修復(fù)管理節(jié)點(diǎn)3周期性的掃描各個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5中數(shù)據(jù)塊的健康狀態(tài)。
[0074]當(dāng)修復(fù)管理節(jié)點(diǎn)3掃描中發(fā)現(xiàn)其中的數(shù)據(jù)塊出現(xiàn)異常時(shí),修復(fù)管理節(jié)點(diǎn)3會(huì)從元數(shù)據(jù)管理節(jié)點(diǎn)2中讀取用戶可靠性的等級(jí),向工作管理節(jié)點(diǎn)4下發(fā)修復(fù)數(shù)據(jù)塊的任務(wù)。
[0075]工作管理節(jié)點(diǎn)4接收到來自修復(fù)管理節(jié)點(diǎn)3的任務(wù)后,向數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5下發(fā)修復(fù)數(shù)據(jù)塊任務(wù)。
[0076]數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)5讀取本地保存的數(shù)據(jù)塊信息表,啟動(dòng)修復(fù)進(jìn)程。完成數(shù)據(jù)塊的修復(fù)后向修復(fù)管理節(jié)點(diǎn)3發(fā)送修復(fù)后數(shù)據(jù)塊所在節(jié)點(diǎn)的位置信息。
[0077]修復(fù)管理節(jié)點(diǎn)3接受到新的修復(fù)的數(shù)據(jù)塊位置信息與自己所保存的數(shù)據(jù)塊信息表比對(duì)。如果是異或信息表更新,將相應(yīng)的更新信息更新到異或信息塊表;若是元數(shù)據(jù)表信息表更新,將相應(yīng)的更新信息更新到元數(shù)據(jù)表,同時(shí)發(fā)送更新元數(shù)據(jù)表發(fā)送給元數(shù)據(jù)管理節(jié)點(diǎn)2。
[0078]元數(shù)據(jù)管理節(jié)點(diǎn)2接收到修復(fù)管理節(jié)點(diǎn)3發(fā)送的元數(shù)據(jù)表更新信息,將接收到的元數(shù)據(jù)表更新到保存的元數(shù)據(jù)表。
【權(quán)利要求】
1.一種基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)實(shí)現(xiàn)方法,其特征在于,包括建立元數(shù)據(jù)管理節(jié)點(diǎn)、數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)、修復(fù)管理節(jié)點(diǎn)、工作管理節(jié)點(diǎn)、客戶端節(jié)點(diǎn),根據(jù)糾刪碼技術(shù),通過該元數(shù)據(jù)管理節(jié)點(diǎn)、該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)和該客戶端節(jié)點(diǎn)進(jìn)行數(shù)據(jù)的存儲(chǔ)和讀取,其中通過該修復(fù)管理節(jié)點(diǎn)和該工作管理節(jié)點(diǎn)修復(fù)采用糾刪碼技術(shù)后丟失或損壞的數(shù)據(jù)塊。
2.如權(quán)利要求1所述的基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)實(shí)現(xiàn)方法,其特征在于,還包括生成異或數(shù)據(jù)塊,具體步驟如下: 該修復(fù)管理節(jié)點(diǎn)向該元數(shù)據(jù)管理節(jié)點(diǎn)發(fā)送讀取數(shù)據(jù)塊信息表和用戶的可靠性等級(jí)請(qǐng)求;該修復(fù)管理節(jié)點(diǎn)根據(jù)該數(shù)據(jù)塊信息表和該用戶的可靠性等級(jí),向該工作管理節(jié)點(diǎn)提交生成異或信息塊任務(wù);該工作管理節(jié)點(diǎn)根據(jù)該數(shù)據(jù)塊信息表和該用戶可靠性等級(jí)向該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)提交生成異或信息塊任務(wù);該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)生成異或信息塊并將該異或信息塊的位置信息返回給該修復(fù)管理節(jié)點(diǎn);該修復(fù)管理節(jié)點(diǎn)生成異或信息塊表,同時(shí)通知該元數(shù)據(jù)管理節(jié)點(diǎn)該異或信息塊已生成。
3.如權(quán)利要求1所述的基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)實(shí)現(xiàn)方法,其特征在于,還包括: 該修復(fù)管理節(jié)點(diǎn)周期性掃描數(shù)據(jù)塊的狀態(tài),當(dāng)發(fā)現(xiàn)異常時(shí),讀取用戶可靠性等級(jí),并向該工作管理節(jié)點(diǎn)提交修復(fù)數(shù)據(jù)塊任務(wù),該工作管理節(jié)點(diǎn)將該修復(fù)數(shù)據(jù)塊任務(wù)發(fā)送到該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)讀取本地?cái)?shù)據(jù)塊信息表并啟動(dòng)修復(fù)進(jìn)程,并向該修復(fù)管理節(jié)點(diǎn)發(fā)送修復(fù)后數(shù)據(jù)塊所在節(jié) 點(diǎn)的位置信息,該修復(fù)管理節(jié)點(diǎn)向該元數(shù)據(jù)管理節(jié)點(diǎn)發(fā)送元數(shù)據(jù)表更新信息,該元數(shù)據(jù)管理節(jié)點(diǎn)根據(jù)該元數(shù)據(jù)表更新信息更新元數(shù)據(jù)表。
4.如權(quán)利要求1或3所述的基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)實(shí)現(xiàn)方法,其特征在于,還包括: 根據(jù)修復(fù)后數(shù)據(jù)塊所在節(jié)點(diǎn)的位置信息與該修復(fù)管理節(jié)點(diǎn)保存的數(shù)據(jù)塊信息表比對(duì),如果是異或信息表更新,將更新信息更新到異或信息塊表;若是元數(shù)據(jù)表信息表更新,將更新信息更新到元數(shù)據(jù)表。
5.一種基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)系統(tǒng),其特征在于,包括元數(shù)據(jù)管理節(jié)點(diǎn)、數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)、修復(fù)管理節(jié)點(diǎn)、工作管理節(jié)點(diǎn)、客戶端節(jié)點(diǎn),根據(jù)糾刪碼技術(shù),通過該元數(shù)據(jù)管理節(jié)點(diǎn)、該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)和該客戶端節(jié)點(diǎn)進(jìn)行數(shù)據(jù)的存儲(chǔ)和讀取,其中通過該修復(fù)管理節(jié)點(diǎn)和該工作管理節(jié)點(diǎn)修復(fù)采用糾刪碼技術(shù)后丟失或損壞的數(shù)據(jù)塊。
6.如權(quán)利要求5所述的基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)系統(tǒng),其特征在于,還包括生成異或數(shù)據(jù)塊:該修復(fù)管理節(jié)點(diǎn)用于向該元數(shù)據(jù)管理節(jié)點(diǎn)發(fā)送讀取數(shù)據(jù)塊信息表和用戶的可靠性等級(jí)請(qǐng)求;該修復(fù)管理節(jié)點(diǎn)根據(jù)該數(shù)據(jù)塊信息表和該用戶的可靠性等級(jí),向該工作管理節(jié)點(diǎn)提交生成異或信息塊任務(wù);該工作管理節(jié)點(diǎn)根據(jù)該數(shù)據(jù)塊信息表和該用戶可靠性等級(jí)向該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)提交生成異或信息塊任務(wù);該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)生成異或信息塊并將該異或信息塊的位置信息返回給該修復(fù)管理節(jié)點(diǎn);該修復(fù)管理節(jié)點(diǎn)生成異或信息塊表,同時(shí)通知該元數(shù)據(jù)管理節(jié)點(diǎn)該異或信息塊已生成。
7.如權(quán)利要求5所述的基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)系統(tǒng),其特征在于,還包括: 該修復(fù)管理節(jié)點(diǎn)周期性掃描數(shù)據(jù)塊的狀態(tài),當(dāng)發(fā)現(xiàn)異常時(shí),讀取用戶可靠性等級(jí),并向該工作管理節(jié)點(diǎn)提交修復(fù)數(shù)據(jù)塊任務(wù),該工作管理節(jié)點(diǎn)將該修復(fù)數(shù)據(jù)塊任務(wù)發(fā)送到該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),該數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)讀取本地?cái)?shù)據(jù)塊信息表并啟動(dòng)修復(fù)進(jìn)程,并向該修復(fù)管理節(jié)點(diǎn)發(fā)送修復(fù)后數(shù)據(jù)塊所在節(jié)點(diǎn)的位置信息,該修復(fù)管理節(jié)點(diǎn)向該元數(shù)據(jù)管理節(jié)點(diǎn)發(fā)送元數(shù)據(jù)表更新信息,該元數(shù)據(jù)管理節(jié)點(diǎn)根據(jù)該元數(shù)據(jù)表更新信息更新元數(shù)據(jù)表。
8.如權(quán)利要求5或7所述的基于糾刪碼技術(shù)改進(jìn)的云存儲(chǔ)系統(tǒng),其特征在于,還包括:根據(jù)修復(fù)后數(shù)據(jù)塊所在節(jié)點(diǎn)的位置信息與該修復(fù)管理節(jié)點(diǎn)保存的數(shù)據(jù)塊信息表比對(duì),如果是異或信息表更新,將更新信息更新到異或信息塊表;若是元數(shù)據(jù)信息表更新,將更新信息更新 到元數(shù)據(jù)表。
【文檔編號(hào)】G06F17/30GK103944981SQ201410148335
【公開日】2014年7月23日 申請(qǐng)日期:2014年4月14日 優(yōu)先權(quán)日:2014年4月14日
【發(fā)明者】劉曉東, 孫毓忠 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所