本申請涉及數(shù)據(jù)存儲系統(tǒng)與處理方法,具體涉及一種基于再生碼的分布式存儲系統(tǒng)與處理方法。
背景技術(shù):
分布式存儲系統(tǒng)是將數(shù)據(jù)分散存儲在多臺獨立的設(shè)備上。傳統(tǒng)的網(wǎng)絡(luò)存儲系統(tǒng)采用集中的存儲服務(wù)器存放所有數(shù)據(jù),存儲服務(wù)器成為系統(tǒng)性能的瓶頸,也是可靠性和安全性的焦點,不能滿足大規(guī)模存儲應(yīng)用的需要。分布式網(wǎng)絡(luò)存儲系統(tǒng)采用可擴展的系統(tǒng)結(jié)構(gòu),利用多臺存儲服務(wù)器分擔(dān)存儲負(fù)荷,利用位置服務(wù)器定位存儲信息,它不但提高了系統(tǒng)的可靠性、可用性和存取效率,還易于擴展。
在傳統(tǒng)分布式存儲系統(tǒng)中為提高系統(tǒng)可靠性,因此采用再生碼(regeneratingcodes)的數(shù)據(jù)恢復(fù)。再生碼是一種基于糾錯碼理論的分支。透過網(wǎng)絡(luò)在數(shù)據(jù)傳輸過程中發(fā)生錯誤后,數(shù)據(jù)接收端能透過糾錯碼自行發(fā)現(xiàn)錯誤或糾正。再生碼的修復(fù)過程中,新節(jié)點需要在剩下的存儲節(jié)點中連接d個存儲節(jié)點并分別從這d個存儲節(jié)點中下載p大小的數(shù)據(jù),所以再生碼的修復(fù)帶寬為d*p。同時給出了再生碼功能修復(fù)的模型并提出了再生碼的兩類最佳碼:最小帶寬再生碼(msr,minimum-storageregenerating)和最小修復(fù)帶寬再生碼(mbr,minimum-bandwidthregenerating)。
但傳統(tǒng)的分布式存儲系統(tǒng)無法針對存儲數(shù)據(jù)的特性而對數(shù)據(jù)的可靠性進(jìn)行調(diào)整。由于傳統(tǒng)的分布式存儲系統(tǒng)中的存儲節(jié)點數(shù)量是固定的。所以遇到頻繁被存取的數(shù)據(jù)的情況時,該數(shù)據(jù)可能發(fā)生延遲傳輸?shù)膯栴}。
技術(shù)實現(xiàn)要素:
本申請所要解決的技術(shù)問題在于提供一種基于再生碼的分布式存儲系統(tǒng),其特征在于編碼數(shù)據(jù)傳輸至各節(jié)點后,可擴展至指定的節(jié)點。
為了解決上述問題,本申請揭示了一種基于再生碼的分布式存儲系統(tǒng)包括數(shù)據(jù)源端與多個存儲節(jié)點。數(shù)據(jù)源端具有控制模塊與編碼器,該控制模塊對接收的輸入數(shù)據(jù)組切分成多個數(shù)據(jù)分塊,該數(shù)據(jù)分塊通過該編碼器時,該編碼器根據(jù)編碼向量輸出子數(shù)據(jù)條帶,且該些編碼向量彼此為非線性相關(guān)。存儲節(jié)點網(wǎng)絡(luò)連接于該數(shù)據(jù)源端,該數(shù)據(jù)源端根據(jù)該些編碼向量派送不同的該子數(shù)據(jù)條帶至對應(yīng)的該存儲節(jié)點。數(shù)據(jù)源端接收節(jié)點擴展命令用于擴展所指定的該存儲節(jié)點,該數(shù)據(jù)源端任意選取至少兩個該存儲節(jié)點,該數(shù)據(jù)源端根據(jù)所選取的該些子數(shù)據(jù)條帶與所屬的該些編碼向量進(jìn)行線性組合,并輸出擴展節(jié)點。
為了解決上述問題,本申請更揭示一種基于再生碼的分布式存儲系統(tǒng)包括以下步驟:數(shù)據(jù)源端將輸入數(shù)據(jù)組切分為多個數(shù)據(jù)分塊;數(shù)據(jù)源端根據(jù)編碼向量將數(shù)據(jù)分塊編碼轉(zhuǎn)換為子數(shù)據(jù)條帶;數(shù)據(jù)源端根據(jù)子數(shù)據(jù)條帶與相應(yīng)的編碼向量發(fā)送至存儲節(jié)點,并將子數(shù)據(jù)條帶記錄于存儲節(jié)點;數(shù)據(jù)源端接收節(jié)點擴展命令,并指定任一存儲節(jié)點;數(shù)據(jù)源端另選取至少兩個以上的存儲節(jié)點,數(shù)據(jù)源端根據(jù)所選取的存取節(jié)點、編碼向量與子數(shù)據(jù)條帶生成擴展節(jié)點。
與現(xiàn)有技術(shù)相比,本申請可以獲得包括以下技術(shù)效果:
1)本申請相比傳統(tǒng)的由編碼控制器統(tǒng)一選擇固定的節(jié)點進(jìn)行拓展的辦法,具有消耗帶寬少、編碼效率高、計算成本低及適應(yīng)高動態(tài)變化的網(wǎng)絡(luò)狀況等優(yōu)點。
2)本申請可以應(yīng)用于塊存儲、基于對象存儲的分布式存儲系統(tǒng)的編解碼和分發(fā)模塊。對應(yīng)的存儲系統(tǒng)更適合一次性寫入、讀頻率不高,但可靠性要求較高場景,例如歸檔系統(tǒng)。
當(dāng)然,實施本申請的任一產(chǎn)品必不一定需要同時達(dá)到以上所述的所有技術(shù)效果。
附圖說明
此處所說明的附圖用來提供對本申請的進(jìn)一步理解,構(gòu)成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。
圖1a為本申請的硬體架構(gòu)示意圖。
圖1b為本申請的數(shù)據(jù)傳輸架構(gòu)示意圖。
圖2為本申請的運作步驟示意圖。
圖3a為本申請的數(shù)據(jù)分塊與編碼的過程示意圖。
圖3b為本申請的存儲節(jié)點的數(shù)據(jù)恢復(fù)示意圖。
圖4為本申請的擴展存儲節(jié)點的示意圖。
具體實施方式
以下請配合附圖及實施例來詳細(xì)說明本申請的實施方式,藉此對本申請如何應(yīng)用技術(shù)手段來解決技術(shù)問題并達(dá)成技術(shù)功效的實現(xiàn)過程能充分理解并據(jù)以實施。
請參考圖1a與圖1b所示,其系為本申請的硬體架構(gòu)與數(shù)據(jù)傳輸架構(gòu)示意圖。本申請的基于再生碼的分布式存儲系統(tǒng)100包括數(shù)據(jù)源端110與多個存儲節(jié)點120。本申請中數(shù)據(jù)源端110所指的是存儲系統(tǒng)對于數(shù)據(jù)輸入的前臺接口,數(shù)據(jù)源端110可以是但不限定為磁盤、因特網(wǎng)(internet)或人機輸入界面(interface)等。數(shù)據(jù)源端110透過網(wǎng)絡(luò)連接于存儲節(jié)點120。
數(shù)據(jù)源端110包括控制模塊111與編碼器112??刂颇K111將接收的輸入數(shù)據(jù)組切分成多個數(shù)據(jù)分塊。編碼器112記錄編碼向量矩陣,編碼向量矩陣記錄多筆編碼向量。數(shù)據(jù)分塊通過編碼器112時,由編碼器112從編碼向量矩陣中選擇任一編碼向量。編碼器112根據(jù)編碼向量輸出相應(yīng)數(shù)據(jù)分塊的子數(shù)據(jù)條帶,且這些編碼向量彼此為非線性相關(guān)。數(shù)據(jù)源端110根據(jù)不同的編碼向量并派送子數(shù)據(jù)條帶至對應(yīng)的存儲節(jié)點120。存儲節(jié)點120的種類為硬盤、固態(tài)硬盤或閃存等。存儲節(jié)點120用于存儲子數(shù)據(jù)條帶。
在圖1b中的左側(cè)系為數(shù)據(jù)源端110(datasource),最右側(cè)系為數(shù)據(jù)收集端130(datacollector)。在數(shù)據(jù)源端110與數(shù)據(jù)收集端130之間存在多個存儲節(jié)點120。數(shù)據(jù)收集端130包括譯碼器131。譯碼器131根據(jù)所接獲部分的子數(shù)據(jù)條帶反譯回指定的數(shù)據(jù)分塊。在圖1b中的存儲節(jié)點120以xi表示,其中i為編號。在圖1b中以存在的存儲節(jié)點120以短虛線表示,而欲擴展的存儲節(jié)點120以長虛線表示。
假設(shè)輸入數(shù)據(jù)組的數(shù)據(jù)大小為b,d為擴展節(jié)點時所需的存儲節(jié)點120的個數(shù),α為每個存儲節(jié)點120所存儲的子條帶數(shù)據(jù)的數(shù)量。以b=4,α=2,d=3為例,意即輸入數(shù)據(jù)組b包括4個數(shù)據(jù)分塊。每一個存儲節(jié)點120可以存儲1個子數(shù)據(jù)條帶,而一個子數(shù)據(jù)條帶記錄2個數(shù)據(jù)分塊(意即為α)。產(chǎn)生一個新的擴展節(jié)點需要連接3個存儲節(jié)點120(意即為d)。
為清楚說明輸入數(shù)據(jù)組的數(shù)據(jù)分塊與子數(shù)據(jù)條帶的產(chǎn)生過程,本申請以一個存儲節(jié)點120并可記錄兩個子條帶數(shù)據(jù)作為說明,但并非僅局限于說明中的數(shù)量或順序。請參考圖2所示,其系為本申請的運作步驟示意圖。
步驟s210:數(shù)據(jù)源端將輸入數(shù)據(jù)組切分為多個數(shù)據(jù)分塊;
步驟s220:數(shù)據(jù)源端根據(jù)編碼向量將數(shù)據(jù)分塊編碼轉(zhuǎn)換為子數(shù)據(jù)條帶;
步驟s230:數(shù)據(jù)源端根據(jù)子數(shù)據(jù)條帶與相應(yīng)的編碼向量發(fā)送至存儲節(jié)點,并將子數(shù)據(jù)條帶記錄于存儲節(jié)點;
步驟s240:數(shù)據(jù)源端接收節(jié)點擴展命令,并指定任一存儲節(jié)點;以及
步驟s250:數(shù)據(jù)源端另選取至少兩個以上的存儲節(jié)點,數(shù)據(jù)源端根據(jù)所選取的存取節(jié)點、編碼向量與子數(shù)據(jù)條帶生成擴展節(jié)點。
首先,數(shù)據(jù)源端110接收輸入數(shù)據(jù)組并將輸入數(shù)據(jù)組切分成多個數(shù)據(jù)分塊。在此假設(shè)共有k個存儲節(jié)點120,且存儲節(jié)點120記作nodei,其中i表示第i個存儲節(jié)點且i≦k(未避免所有的存儲節(jié)點均使用同一標(biāo)號,因此后文以存儲節(jié)點的標(biāo)號作為區(qū)分)。再以b=4,α=2,d=3為例,輸入數(shù)據(jù)組包括4個數(shù)據(jù)分塊,分別為u11,u12,u13與u14。此一說明中,存儲節(jié)點中可記錄1個子數(shù)據(jù)條帶,每一個子數(shù)據(jù)條帶包括2個數(shù)據(jù)分塊,請配合參考圖3a所示。前述的數(shù)據(jù)分塊u11,u12,u13與u14可兩兩組成一組向量
數(shù)據(jù)源端110再把經(jīng)過編碼后的子數(shù)據(jù)條帶與所屬的編碼向量發(fā)送至存儲節(jié)點,并令存儲節(jié)點記錄子數(shù)據(jù)條帶與編碼向量。當(dāng)數(shù)據(jù)收集端130發(fā)現(xiàn)份任一存儲節(jié)點毀損時,數(shù)據(jù)收集端130可根據(jù)現(xiàn)有的存儲節(jié)點與所存子數(shù)據(jù)條帶對已毀損的存儲節(jié)點進(jìn)行數(shù)據(jù)恢復(fù),請配合參考圖3b所示。當(dāng)存儲節(jié)點nodem發(fā)生毀損,數(shù)據(jù)收集端130從其它存活的存儲節(jié)點選擇至少兩個以上的存儲節(jié)點,在此分別定義存儲節(jié)點為nodei與nodej。存儲節(jié)點nodei與nodej各自存儲兩子數(shù)據(jù)條帶,而兩子數(shù)據(jù)條帶分別為
前述的矩陣在符合滿秩的條件時,可以透過線性消去的方式進(jìn)一步得到u11,u12,u13與u14四個數(shù)據(jù)分塊。而由于
本申請除了存儲節(jié)點的數(shù)據(jù)恢復(fù)外,更可以針對指定的存儲節(jié)點進(jìn)行擴展。本申請的節(jié)點擴展的作用在于可透過其它存儲節(jié)點的資訊來克隆所指定的存儲節(jié)點與所屬資料,并請配合圖4。
在此以存儲節(jié)點a、存儲節(jié)點b與存儲節(jié)點c作為新存儲節(jié)點的擴展依據(jù),而欲擴展的存儲節(jié)點則定義為存儲節(jié)點d。存儲節(jié)點a、存儲節(jié)點b與存儲節(jié)點c分別記錄數(shù)據(jù)分塊
解(1),可以得到下述兩等式(3)與(4)
由于
代入(4)中,有:
方便起見,記作:
任意給定一對k3≠0,??3的值,即可通過該方程解出組合系數(shù)k1,k2,k3以及??1,??2,??3(其中
接下來,解第二個方程:
解(10)得到:
所述裝置與前述的方法流程描述對應(yīng),不足之處參考上述方法流程的敘述,不再一一贅述。上述說明示出并描述了本申請的若干優(yōu)選實施例,但如前所述,應(yīng)當(dāng)理解本申請并非局限于本文所披露的形式,不應(yīng)看作是對其它實施例的排除,而可用于各種其它組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識進(jìn)行改動。而本領(lǐng)域人員所進(jìn)行的改動和變化不脫離本申請的精神和范圍,則都應(yīng)在本申請所附權(quán)利要求的保護(hù)范圍內(nèi)。