數(shù)據(jù)冗余處理方法、裝置和分布式存儲系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種數(shù)據(jù)冗余處理方法、裝置和分布式存儲系統(tǒng)。所述裝置包括數(shù)據(jù)分段模塊、冗余數(shù)據(jù)生成模塊和存儲模塊。所述方法為將寫入數(shù)據(jù)進行等長切分,不足長度用二進制0填充,對切分的每個片段再等長切分為4個數(shù)據(jù)塊,通過冗余算法計算出4個冗余數(shù)據(jù)塊,將每個片段的8個數(shù)據(jù)塊存儲到至少4個存儲節(jié)點上。所述分布式存儲系統(tǒng)利用所述裝置或方法存儲數(shù)據(jù),并包括4個以上的存儲節(jié)點。當一個片段的8個數(shù)據(jù)塊中部分數(shù)據(jù)出現(xiàn)損壞時,可利用剩余數(shù)據(jù)塊對損壞的數(shù)據(jù)進行恢復(fù)。本發(fā)明提高了存儲空間的利用率,降低了存儲節(jié)點的負載,節(jié)省了數(shù)據(jù)訪問時間,且支持多種類型的冗余備份方式,靈活性較高。
【專利說明】數(shù)據(jù)冗余處理方法、裝置和分布式存儲系統(tǒng)
【技術(shù)領(lǐng)域】:
[0001]本發(fā)明涉及存儲技術(shù),尤其涉及一種數(shù)據(jù)冗余處理方法、裝置和分布式存儲系統(tǒng)?!颈尘凹夹g(shù)】:
[0002]分布式存儲系統(tǒng)包括通過網(wǎng)絡(luò)互聯(lián)的多個存儲節(jié)點,數(shù)據(jù)可以被分散地存儲到不同的存儲節(jié)點上,以實現(xiàn)大容量、高可靠性且易擴展的存儲應(yīng)用。
[0003]現(xiàn)有的分布式存儲系統(tǒng)可以采用基于對象的存儲方式。對于這種存儲方式來說,現(xiàn)有技術(shù)采用存儲節(jié)點間的多份機制以保證數(shù)據(jù)存儲的可靠性。具體來說,該多份機制即為將該分布式存儲系統(tǒng)中的某一個或者某幾個存儲節(jié)點作為主存儲節(jié)點的備份節(jié)點。在寫數(shù)據(jù)時,需要將數(shù)據(jù)在這些存儲節(jié)點上寫入多份相同的數(shù)據(jù),從而實現(xiàn)數(shù)據(jù)的冗余備份,在一個存儲節(jié)點發(fā)生故障時,其它存儲節(jié)點上的數(shù)據(jù)是可用的。
[0004]但是,上述現(xiàn)有的多份機制只是筒單地向多個存儲節(jié)點中寫入相同的數(shù)據(jù),如果要保證損壞N個存儲節(jié)點后數(shù)據(jù)仍可用,則數(shù)據(jù)至少需要重復(fù)寫N+1份,則存儲節(jié)點的空間利用率最多為1/(N+1),因此,存儲空間的利用率較低,存儲節(jié)點的負載增高;而且,這種多份機制不能支持多種類型的冗余備份方式,靈活性較低。
【發(fā)明內(nèi)容】
:
[0005]本發(fā)明針對現(xiàn)有多份機制所需的存儲空間利用率低且不支持多種類型的冗余備份方式的缺點,提供了一種數(shù)據(jù)冗余處理方法、裝置和分布式存儲系統(tǒng)。
[0006]本發(fā)明提供的一種數(shù)據(jù)冗余處理方法,具體是:首先,將寫入數(shù)據(jù)以固定長度L進行切分,得到K個片段數(shù)據(jù),當最后一個片段的長度小于L時,以二進制值00000000進行填充,L為4N個字節(jié),K為不小于I的自然數(shù),N為正整數(shù);然后,將每個片段數(shù)據(jù)等分成4個數(shù)據(jù)塊,由4個數(shù)據(jù)塊計算出4個冗余數(shù)據(jù)塊;最后,對每個片段數(shù)據(jù),將對應(yīng)的4個數(shù)據(jù)塊和4個冗余數(shù)據(jù)塊存儲到至少4個存儲節(jié)點上,每個存儲節(jié)點包含每個片段數(shù)據(jù)的至多2個數(shù)據(jù)塊。所述的4個冗余數(shù)據(jù)塊通過對4個數(shù)據(jù)塊進行邏輯異或操作(XOR)計算得到。
[0007]本發(fā)明提供的一種數(shù)據(jù)冗余處理裝置,包括:數(shù)據(jù)分段模塊、冗余數(shù)據(jù)生成模塊以及存儲模塊。數(shù)據(jù)分段模塊用于將寫入數(shù)據(jù)以固定長度L進行切分,設(shè)共得到K個片段數(shù)據(jù),當最后一個片段的長度小于L時,以二進制值00000000進行填充,L為4N個字節(jié),K為不小于I的自然數(shù),N為正整數(shù)。冗余數(shù)據(jù)生成模塊,將每個片段數(shù)據(jù)等分成4個數(shù)據(jù)塊,并由4個數(shù)據(jù)塊計算出4個冗余數(shù)據(jù)塊。所述的4個冗余數(shù)據(jù)塊通過對4個數(shù)據(jù)塊進行邏輯異或操作計算得到。存儲模塊將每個片段數(shù)據(jù)所對應(yīng)的4個數(shù)據(jù)塊和4個冗余數(shù)據(jù)塊存儲到至少4個存儲節(jié)點上,每個存儲節(jié)點包含每個片段數(shù)據(jù)的至多2個數(shù)據(jù)塊。
[0008]本發(fā)明還提供了一種分布式存儲系統(tǒng),使用所述的數(shù)據(jù)冗余處理方法和裝置,該系統(tǒng)中最少包含4個存儲節(jié)點,每個存儲節(jié)點包含每個片段數(shù)據(jù)的至多2個數(shù)據(jù)塊。
[0009]所述的片段的長度L為固定值,且對于同一個系統(tǒng)中的數(shù)據(jù),片段長度是唯一的。
[0010]本發(fā)明的數(shù)據(jù)冗余處理方法、裝置和分布式存儲系統(tǒng),提高了存儲空間的利用率,降低了存儲節(jié)點的負載,且支持多種類型的冗余備份方式,靈活性較高。對于大容量數(shù)據(jù),本發(fā)明的分塊存儲可以提高數(shù)據(jù)的訪問速度,例如在進行數(shù)據(jù)遷移和校驗時,對散布在不同節(jié)點的數(shù)據(jù)可以進行并行的操作,相比對一個大文件的線性處理,節(jié)省時間。本發(fā)明的備份方式按照實際占用的容量,需要兩倍于原數(shù)據(jù)的存儲容量,并且通過邏輯異或操作產(chǎn)生的存儲塊,可在分塊不完整的情況下恢復(fù)丟失的數(shù)據(jù)。而典型的分布式數(shù)據(jù)存儲系統(tǒng)(如Apache的HDFS)中不使用數(shù)據(jù)恢復(fù)編碼,而是直接使用三個一致的副本和簡單的檢錯碼。相比之下,本發(fā)明的數(shù)據(jù)冗余處理方法、裝置和分布式存儲系統(tǒng)占用更少的存儲空間。
【專利附圖】
【附圖說明】:
[0011]圖1為本發(fā)明的數(shù)據(jù)冗余處理裝置的結(jié)構(gòu)示意圖;
[0012]圖2為本發(fā)明的數(shù)據(jù)冗余處理方法中對數(shù)據(jù)處理的示意圖。
【具體實施方式】:
[0013]下面將結(jié)合附圖和實施例對本發(fā)明的技術(shù)方案進行詳細說明。
[0014]如圖1所示,本發(fā)明提供了一種數(shù)據(jù)冗余處理裝置,包括數(shù)據(jù)分段模塊1、冗余數(shù)據(jù)生成模塊2以及存儲模塊3。
[0015]所述的數(shù)據(jù)分段模塊I將寫入數(shù)據(jù)切分為等長的K個片段數(shù)據(jù),K為不小于I的自然數(shù),每個片段的長度為L。最后的第K個片段有可能小于所設(shè)定的長度L,則使用二進制值00000000來進行填充,使第K個片段的長度為L。片段的長度L在具體實施時采用固定值,對于一個系統(tǒng)中的數(shù)據(jù),片段長度L是唯一的。設(shè)置片段長度L為4N個字節(jié),N為正整數(shù)。
[0016]所述的冗余數(shù)據(jù)生成模塊2將每個片段數(shù)據(jù)進一步均等地切分成4個數(shù)據(jù)塊,通過邏輯異或操作(XOR)對4個數(shù)據(jù)塊進行計算,得到4個冗余數(shù)據(jù)塊。所述的4個塊數(shù)據(jù)和4個冗余數(shù)據(jù)塊中,當任意損壞至多4個數(shù)據(jù)時,都能夠利用未損壞的數(shù)據(jù)塊恢復(fù)損壞的數(shù)據(jù)。
[0017]所述的存儲模塊3對于每一個片段數(shù)據(jù)的4個數(shù)據(jù)塊和4個冗余數(shù)據(jù)塊都存儲到位于至少4個存儲節(jié)點的對象中。對于一個片段數(shù)據(jù),共存儲8個數(shù)據(jù)塊,并且每個存儲節(jié)點包含每個片段數(shù)據(jù)的至多2個數(shù)據(jù)塊。本發(fā)明提供的數(shù)據(jù)冗余處理方法,包括如下三個步驟:
[0018]步驟1:將寫入數(shù)據(jù)以固定長度L進行切分,得到K個片段數(shù)據(jù)。當最后一個片段的長度小于L時,以二進制值00000000進行填充,L為4N個字節(jié),K為不小于I的自然數(shù),N為正整數(shù)。如圖2所示。
[0019]步驟2:將每個片段數(shù)據(jù)等分成4個數(shù)據(jù)塊,并對得到的4個數(shù)據(jù)塊通過冗余數(shù)據(jù)算法計算出4個冗余數(shù)據(jù)塊。如圖2所示。所述的冗余數(shù)據(jù)算法可為邏輯異或操作算法。
[0020]步驟3:對每個片段數(shù)據(jù),將對應(yīng)的4個數(shù)據(jù)塊和4個冗余數(shù)據(jù)塊存儲到至少4個存儲節(jié)點上,每個存儲節(jié)點包含每個片段數(shù)據(jù)的至多2個數(shù)據(jù)塊。
[0021]本發(fā)明將所述的數(shù)據(jù)冗余處理裝置或方法應(yīng)用到分布式存儲系統(tǒng)中,得到一種分布式存儲系統(tǒng),該分布式存儲系統(tǒng)最少包含4個存儲節(jié)點,每個存儲節(jié)點存儲每個片段數(shù)據(jù)中的至多2個數(shù)據(jù)塊。[0022]實施例:
[0023]寫入數(shù)據(jù)被切分為等長的K個片段數(shù)據(jù),K為不小于I的自然數(shù)。每個片段數(shù)據(jù)的長度為64MB。K個片段中的最后一個數(shù)據(jù)塊有可能小于固定的長度,使用二進制值00000000來進行填充。
[0024]每個數(shù)據(jù)片段被進一步等分成4個數(shù)據(jù)塊,每個數(shù)據(jù)塊長度為16MB。通過邏輯異或操作,由4個數(shù)據(jù)塊計算出4個冗余數(shù)據(jù)塊,每個冗余數(shù)據(jù)塊的長度為16MB。所述4個數(shù)據(jù)塊和4個冗余數(shù)據(jù)塊中任意損壞至多4個時,能夠利用未損壞的數(shù)據(jù)塊來恢復(fù)損壞的數(shù)據(jù)。
[0025]對于每一個數(shù)據(jù)片段,將該數(shù)據(jù)片段的4個數(shù)據(jù)塊和4個冗余數(shù)據(jù)塊分別存儲到位于至少4個存儲節(jié)點上的對象中,共存儲8個數(shù)據(jù)塊,每個存儲節(jié)點包含每個片段數(shù)據(jù)的至多2個數(shù)據(jù)塊。
[0026]冗余數(shù)據(jù)塊是采用冗余算法對片段數(shù)據(jù)的4個數(shù)據(jù)塊進行冗余運算獲取得到,冗余數(shù)據(jù)塊是保證在數(shù)據(jù)塊和冗余數(shù)據(jù)塊中任意幾個數(shù)據(jù)出錯時,采用剩余的數(shù)據(jù)塊均能夠恢復(fù)出原始數(shù)據(jù),而具體可以允許幾個數(shù)據(jù)塊出錯,則由冗余算法確定。
[0027]本發(fā)明的技術(shù)方案并非在各個存儲節(jié)點上進行多份存儲,而是通過將塊數(shù)據(jù)和冗余塊數(shù)據(jù)分別存儲在位于至少4個存儲節(jié)點上,從而可以實現(xiàn)存儲節(jié)點之間的冗余處理,可以提高存儲空間地利用率且降低了存儲節(jié)點的負載,另外,本發(fā)明實施例可以支持不同的冗余算法,從而滿足客戶不同的可靠性需求,靈活性較高。
【權(quán)利要求】
1.一種數(shù)據(jù)冗余處理方法,其特征在于,具體實現(xiàn)方案為:首先,將寫入數(shù)據(jù)以固定長度L進行切分,得到K個片段數(shù)據(jù),當最后一個片段的長度小于L時,以二進制值00000000進行填充,L為4N個字節(jié),K為不小于I的自然數(shù),N為正整數(shù);然后,將每個片段數(shù)據(jù)等分成4個數(shù)據(jù)塊,由4個數(shù)據(jù)塊計算出4個冗余數(shù)據(jù)塊;最后,對每個片段數(shù)據(jù),將對應(yīng)的4個數(shù)據(jù)塊和4個冗余數(shù)據(jù)塊存儲到至少4個存儲節(jié)點上,每個存儲節(jié)點包含每個片段數(shù)據(jù)的至多2個數(shù)據(jù)塊。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)冗余處理方法,其特征在于,所述的4個冗余數(shù)據(jù)塊,通過對4個數(shù)據(jù)塊進行邏輯異或操作計算得到。
3.一種數(shù)據(jù)冗余處理裝置,其特征在于,包括:數(shù)據(jù)分段模塊、冗余數(shù)據(jù)生成模塊以及存儲模塊;數(shù)據(jù)分段模塊用于將寫入數(shù)據(jù)以固定長度L進行切分,設(shè)共得到K個片段數(shù)據(jù),當最后一個片段的長度小于L時,以二進制值00000000進行填充,L為4N個字節(jié),K為不小于I的自然數(shù),N為正整數(shù);冗余數(shù)據(jù)生成模塊,將每個片段數(shù)據(jù)等分成4個數(shù)據(jù)塊,并根據(jù)所述的4個數(shù)據(jù)塊計算出4個冗余數(shù)據(jù)塊;存儲模塊將每個片段數(shù)據(jù)所對應(yīng)的4個數(shù)據(jù)塊和4個冗余數(shù)據(jù)塊存儲到至少4個存儲節(jié)點上,每個存儲節(jié)點包含每個片段數(shù)據(jù)的至多2個數(shù)據(jù)塊。
4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)冗余處理裝置,其特征在于,所述的4個冗余數(shù)據(jù)塊,通過對4個數(shù)據(jù)塊進行邏輯異或操作計算得到。
5.一種分布式存儲系統(tǒng),其特征在于,利用權(quán)利要求1所述的數(shù)據(jù)冗余處理方法或者利用權(quán)利要求2所述的數(shù)據(jù)冗余處理裝置,將寫入數(shù)據(jù)進行存儲,所述分布式存儲系統(tǒng)最少包含4個存儲節(jié)點,每個存儲節(jié)點包含每個片段數(shù)據(jù)的至多2個數(shù)據(jù)塊。
【文檔編號】G06F3/06GK103559102SQ201310499656
【公開日】2014年2月5日 申請日期:2013年10月22日 優(yōu)先權(quán)日:2013年10月22日
【發(fā)明者】王雷, 吳興博, 龍翔 申請人:北京航空航天大學(xué)