一種分布式存儲(chǔ)系統(tǒng)中加速數(shù)據(jù)重建的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,具體涉及一種分布式存儲(chǔ)系統(tǒng)中加速數(shù)據(jù)重建的方法。
【背景技術(shù)】
[0002]在數(shù)據(jù)大爆炸的今天,需要存儲(chǔ)的數(shù)據(jù)量日益增長(zhǎng)。據(jù)權(quán)威機(jī)構(gòu)統(tǒng)計(jì),在飛速增長(zhǎng)的數(shù)據(jù)中,非結(jié)構(gòu)化數(shù)據(jù)的增長(zhǎng)率遠(yuǎn)高于結(jié)構(gòu)化數(shù)據(jù)的增長(zhǎng)。因此,為了滿足很多行業(yè)對(duì)非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)需求,一批分布式集群存儲(chǔ)系統(tǒng)應(yīng)運(yùn)而生,這其中的代表者如開源的lustre、IBM的GPFS、EMC的Isilon、華為的N9000等。所有的分布式集群存儲(chǔ),無(wú)一例外,均采用存儲(chǔ)虛擬化技術(shù),即將大批的存儲(chǔ)節(jié)點(diǎn)和磁盤統(tǒng)一管理起來(lái),對(duì)外呈現(xiàn)統(tǒng)一的命名空間。
[0003]隨著磁盤技術(shù)的發(fā)展,磁盤容量快速增長(zhǎng),截止到2013年,4T硬盤已經(jīng)上市;但是,磁盤的讀寫帶寬并沒有隨容量那樣線性增長(zhǎng)。這就給分布式存儲(chǔ)系統(tǒng)帶來(lái)了這樣的問題:當(dāng)磁盤損壞后,數(shù)據(jù)重建的速率較慢,因此在磁盤數(shù)據(jù)重建期間,系統(tǒng)中很有可能有其他磁盤損壞,加劇了整個(gè)系統(tǒng)數(shù)據(jù)丟失的風(fēng)險(xiǎn)。而很多應(yīng)用,如內(nèi)容分發(fā)系統(tǒng)、數(shù)字圖書館、網(wǎng)盤等,存儲(chǔ)大量的小文件,這樣一來(lái),磁盤1會(huì)降低,導(dǎo)致單塊磁盤損壞后數(shù)據(jù)重建周期更長(zhǎng),風(fēng)險(xiǎn)更大。
[0004]分布式存儲(chǔ)系統(tǒng)長(zhǎng)期工作在大并發(fā)、高負(fù)載的環(huán)境當(dāng)中,因此即便對(duì)于單個(gè)文件,其數(shù)據(jù)塊在磁盤上的分布由于受其他文件寫入的影響而處于離散狀態(tài),因此對(duì)于后續(xù)讀取的性能有一定影響,從而影響數(shù)據(jù)重建的性能。
[0005]對(duì)于小文件密集的應(yīng)用,如網(wǎng)盤、內(nèi)容分發(fā)系統(tǒng)等,由于在單塊磁盤上存儲(chǔ)了上千萬(wàn)的小文件,由于小文件磁盤讀寫速率小于1MB每秒,假定系統(tǒng)中同時(shí)有多個(gè)節(jié)點(diǎn)和多個(gè)磁盤一起參與,重建速率能夠達(dá)到100MB每秒。那么對(duì)于4T硬盤,存儲(chǔ)系統(tǒng)無(wú)負(fù)載情況下,全部數(shù)據(jù)重建完成約需要12小時(shí)。由于存儲(chǔ)系統(tǒng)中,同一批次硬盤的壽命基本相近,因此在此重建期間,其他硬盤損壞的概率比較大,導(dǎo)致系統(tǒng)數(shù)據(jù)安全性進(jìn)一步惡化。
[0006]為了彌補(bǔ)數(shù)據(jù)重建的效率低下,降低數(shù)據(jù)丟失的風(fēng)險(xiǎn),大部分分布式存儲(chǔ)系統(tǒng)引入更高的冗余度來(lái)保證系統(tǒng)能夠同時(shí)容忍多塊磁盤失效,如Isilon、N9000等均采用糾刪碼或三副本的方式來(lái)進(jìn)行數(shù)據(jù)保護(hù)。采用更高的冗余度,能夠在一定程度上降低整系統(tǒng)數(shù)據(jù)丟失的風(fēng)險(xiǎn),但隨之帶來(lái)的是對(duì)于網(wǎng)絡(luò)帶寬浪費(fèi)和增加成本的問題。
【發(fā)明內(nèi)容】
[0007]針對(duì)現(xiàn)有技術(shù)的問題,本發(fā)明提出一種分布式存儲(chǔ)系統(tǒng)中加速數(shù)據(jù)重建的方法,所述方法包括:引入數(shù)據(jù)聚合策略,將小文件數(shù)據(jù)存放在大的容器中進(jìn)行重建;集中分配存有容器文件的磁盤塊,并將每個(gè)磁盤上的重建任務(wù)串行化。該方案不僅解決了數(shù)據(jù)重建的速率較慢和單塊磁盤損壞后數(shù)據(jù)重建周期長(zhǎng),風(fēng)險(xiǎn)大的問題,而且減少了資源浪費(fèi),節(jié)約了成本。
[0008]本發(fā)明的目的是采用下述技術(shù)方案實(shí)現(xiàn)的:
[0009]一種分布式存儲(chǔ)系統(tǒng)中加速數(shù)據(jù)重建的方法,所述方法包括下述步驟:
[0010]優(yōu)選的,(I)引入數(shù)據(jù)聚合策略,將小文件數(shù)據(jù)存放在大的容器中進(jìn)行重建;
[0011]優(yōu)選的,(2)集中分配存有容器文件的磁盤塊,并將每個(gè)磁盤上的重建任務(wù)串行化。
[0012]優(yōu)選的,所述步驟(I)包括,將多個(gè)小文件數(shù)據(jù)存儲(chǔ)在同一個(gè)容器中,且每個(gè)容器以文件的形式存儲(chǔ)在磁盤上。
[0013]進(jìn)一步地,所述容器用于放置小文件數(shù)據(jù)信息,所述文件信息包括文件標(biāo)識(shí)和文件元數(shù)據(jù)的位置信息。
[0014]進(jìn)一步地,所述小文件數(shù)據(jù)添加后,在該文件元數(shù)據(jù)中記錄此文件所在的容器號(hào)以及小文件數(shù)據(jù)在容器文件中所在位置;需要訪問時(shí),通過解析該文件元數(shù)據(jù),以獲取容器號(hào)和對(duì)應(yīng)的容器文件,再把文件的數(shù)據(jù)從容器的相應(yīng)位置讀出即可。
[0015]優(yōu)選的,所述容器在存儲(chǔ)系統(tǒng)中屬于隱藏文件,大小為1MB以上,其操作和正常文件一致;當(dāng)磁盤損壞時(shí),以容器文件為單位進(jìn)行修復(fù),從而減少1次數(shù)。
[0016]優(yōu)選的,所述(2)包括,當(dāng)多個(gè)容器文件同時(shí)寫入時(shí),由于磁盤塊分配不均,將磁盤塊分配的操作進(jìn)行串行化;
[0017]所述串行化的具體過程如下:當(dāng)磁盤分配時(shí),一次分配4M磁盤塊,使數(shù)據(jù)連續(xù)地寫在磁盤上,保證其磁盤空間中分配的各個(gè)容器文件互不影響;當(dāng)所述容器文件關(guān)閉時(shí),將沒有用到的預(yù)分配的磁盤塊釋放。
[0018]進(jìn)一步地,當(dāng)所述容器文件正常寫入時(shí),按照文件寫入時(shí)間的順序,依次進(jìn)行數(shù)據(jù)重建;
[0019]優(yōu)選的,所述數(shù)據(jù)重建的方法包括下述步驟:
[0020]a)按照文件修改時(shí)間,將重建任務(wù)按照文件所在的磁盤歸類和排序,并為每個(gè)磁盤生成一個(gè)重建任務(wù)列表,該任務(wù)列表上包括本磁盤的重建任務(wù);
[0021]b)對(duì)于所述每個(gè)磁盤的文件重建任務(wù)列表,采用單個(gè)線程,對(duì)任務(wù)隊(duì)列上的任務(wù)逐個(gè)處理。
[0022]與最接近的現(xiàn)有技術(shù)比,本發(fā)明的優(yōu)異效果為:
[0023]通過本發(fā)明中的方法,有效提高數(shù)據(jù)重建的效率,大大降低了由于二次故障而導(dǎo)致的系統(tǒng)數(shù)據(jù)丟失風(fēng)險(xiǎn);在極大程度減少了 1次數(shù)的同時(shí),充分提升了磁盤帶寬,從而使磁盤的存儲(chǔ)壓力得到了釋放,有效地提高了硬盤使用壽命;不僅解決了數(shù)據(jù)重建速率較慢和單塊磁盤損壞后數(shù)據(jù)重建周期長(zhǎng)、風(fēng)險(xiǎn)大的問題,而且減少了資源浪費(fèi),大大節(jié)約了成本。
【附圖說明】
[0024]如圖1所示為本發(fā)明提供的小文件在容器里存儲(chǔ)的示意圖。
【具體實(shí)施方式】
[0025]下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。
[0026]如圖1所示,一種分布式存儲(chǔ)系統(tǒng)中加速數(shù)據(jù)重建的方法,所述方法包括下述步驟:
[0027](I)引入數(shù)據(jù)聚合策略,將小文件數(shù)據(jù)存放在大的容器中進(jìn)行重建;
[0028]所述步驟(I)包括,將多個(gè)小文件數(shù)據(jù)存儲(chǔ)在同一個(gè)容器中,且每個(gè)容器以文件的形式存儲(chǔ)在磁盤上。
[0029]所述容器用于放置小文件數(shù)據(jù)信息,所述信息包括文件標(biāo)識(shí)和文件元數(shù)據(jù)的位置信息。
[0030]所述小文件數(shù)據(jù)添加后,在該文件元數(shù)據(jù)中記錄此文件所在的容器號(hào)以及小文件數(shù)據(jù)在容器文件中所在位置;需要訪問時(shí),通過解析該文件元數(shù)據(jù),以獲取容器號(hào)和對(duì)應(yīng)容器的文件,再把文件的數(shù)據(jù)從容器的相應(yīng)位置讀出即可。
[0031]所述容器在存儲(chǔ)系統(tǒng)中屬于隱藏文件,大小為幾十MB以上,其操作和正常文件一致;當(dāng)磁盤損壞時(shí),以容器文件為單位進(jìn)行修復(fù),從而大大減少1次數(shù)。
[0032](2)集中分配存有容器文件的磁盤塊,并將每個(gè)磁盤上的重建任務(wù)串行化。
[0033]所述(2)包括,當(dāng)多個(gè)容器文件同時(shí)寫入時(shí),由于磁盤塊分配不均,將磁盤塊分配的操作進(jìn)行串行化;
[0034]所述串行化的具體過程如下:當(dāng)磁盤分配時(shí),一次分配4M磁盤塊,使數(shù)據(jù)連續(xù)地寫在磁盤上,保證其磁盤空間中分配的各個(gè)容器文件互不影響;當(dāng)所述容器文件關(guān)閉時(shí),將沒有用到的預(yù)分配的磁盤塊釋放。
[0035]當(dāng)所述容器文件正常寫入時(shí),按照文件寫入時(shí)間的順序,依次進(jìn)行數(shù)據(jù)重建;
[0036]所述數(shù)據(jù)重建的方法包括下述步驟:
[0037]a)按照文件修改時(shí)間,將重建任務(wù)按照文件所在的磁盤歸類和排序,并為每個(gè)磁盤生成一個(gè)重建任務(wù)列表,該任務(wù)列表上包括本磁盤的重建任務(wù);
[0038]b)對(duì)于所述每個(gè)磁盤的文件重建任務(wù)列表,采用單個(gè)線程,對(duì)任務(wù)隊(duì)列上的任務(wù)逐個(gè)處理。
[0039]最后應(yīng)當(dāng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非對(duì)其限制,盡管參照上述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,所屬領(lǐng)域的普通技術(shù)人員依然可以對(duì)本發(fā)明的【具體實(shí)施方式】進(jìn)行修改或者等同替換,而這些未脫離本發(fā)明精神和范圍的任何修改或者等同替換,其均在申請(qǐng)待批的本發(fā)明的權(quán)利要求保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種分布式存儲(chǔ)系統(tǒng)中加速數(shù)據(jù)重建的方法,其特征在于,所述方法包括下述步驟: (1)引入數(shù)據(jù)聚合策略,將小文件數(shù)據(jù)存放在大的容器中進(jìn)行重建; (2)集中分配存有容器文件的磁盤塊,并將每個(gè)磁盤上的重建任務(wù)串行化。2.如權(quán)利要求1所述一種分布式存儲(chǔ)系統(tǒng)中加速數(shù)據(jù)重建的方法,其特征在于,所述步驟(I)包括,將多個(gè)小文件數(shù)據(jù)存儲(chǔ)在同一個(gè)容器中,且每個(gè)容器以文件的形式存儲(chǔ)在磁盤上。3.如權(quán)利要求2所述一種分布式存儲(chǔ)系統(tǒng)中加速數(shù)據(jù)重建的方法,其特征在于,所述容器用于放置小文件數(shù)據(jù)信息,所述信息包括文件標(biāo)識(shí)和文件元數(shù)據(jù)的位置信息。4.如權(quán)利要求3所述一種分布式存儲(chǔ)系統(tǒng)中加速數(shù)據(jù)重建的方法,其特征在于,所述小文件數(shù)據(jù)添加后,在該文件元數(shù)據(jù)中記錄此文件所在的容器號(hào)以及小文件數(shù)據(jù)在容器文件中所在位置;需要訪問時(shí),通過解析該文件的元數(shù)據(jù),以獲取容器號(hào)和對(duì)應(yīng)的容器文件,再把文件的數(shù)據(jù)從容器的相應(yīng)位置讀出即可。5.如權(quán)利要求4所述一種分布式存儲(chǔ)系統(tǒng)中加速數(shù)據(jù)重建的方法,其特征在于,所述容器在存儲(chǔ)系統(tǒng)中屬于隱藏文件,大小為1MB以上;當(dāng)磁盤損壞時(shí),以容器文件為單位進(jìn)行修復(fù),從而減少1次數(shù)。6.如權(quán)利要求1所述的方法,其特征在于,所述(2)包括,當(dāng)多個(gè)容器文件同時(shí)寫入時(shí),由于磁盤塊分配不均,將磁盤塊分配的操作進(jìn)行串行化; 所述串行化的具體過程如下:當(dāng)磁盤分配時(shí),一次分配4M磁盤塊,使數(shù)據(jù)連續(xù)地寫在磁盤上,保證其磁盤空間中分配的各個(gè)容器文件互不影響;當(dāng)所述容器文件關(guān)閉時(shí),將沒有用到的預(yù)分配的磁盤塊釋放。7.如權(quán)利要求6所述的方法,其特征在于,當(dāng)所述容器文件正常寫入時(shí),按照文件寫入時(shí)間的順序,依次進(jìn)行數(shù)據(jù)重建。8.如權(quán)利要求7所述數(shù)據(jù)重建的方法,其特征在于,所述數(shù)據(jù)重建的方法包括下述步驟: a)按照文件修改時(shí)間,將重建任務(wù)按照文件所在的磁盤歸類和排序,并為每個(gè)磁盤生成一個(gè)重建任務(wù)列表,該任務(wù)列表上包括本磁盤的重建任務(wù); b)對(duì)于所述每個(gè)磁盤的文件重建任務(wù)列表,采用單個(gè)線程,對(duì)任務(wù)隊(duì)列上的任務(wù)逐個(gè)處理。
【專利摘要】本發(fā)明涉及一種分布式存儲(chǔ)系統(tǒng)中加速數(shù)據(jù)重建的方法,所述方法包括下述步驟:引入數(shù)據(jù)聚合策略,將小文件數(shù)據(jù)存放在大的容器中進(jìn)行重建;集中分配存有容器文件的磁盤塊,并將每個(gè)磁盤上的重建任務(wù)串行化。該方法在極大程度減少了IO次數(shù)的同時(shí),充分提升了磁盤帶寬,從而使磁盤的存儲(chǔ)壓力得到了釋放;不僅解決了數(shù)據(jù)重建速率較慢和單塊磁盤損壞后數(shù)據(jù)重建周期長(zhǎng)、風(fēng)險(xiǎn)大的問題,而且減少了資源浪費(fèi),大大節(jié)約了成本。
【IPC分類】G06F12/02
【公開號(hào)】CN105630689
【申請(qǐng)?zhí)枴緾N201410603479
【發(fā)明人】楊浩, 馬照云, 王利虎, 苗艷超, 劉新春, 邵宗有
【申請(qǐng)人】曙光信息產(chǎn)業(yè)股份有限公司
【公開日】2016年6月1日
【申請(qǐng)日】2014年10月30日