專利名稱:一種基于糾刪碼集群存儲(chǔ)系統(tǒng)的交叉重構(gòu)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于數(shù)據(jù)存儲(chǔ)領(lǐng)域,更具體地,涉及一種基于糾刪碼集群存儲(chǔ)系統(tǒng)的交叉重構(gòu)方法。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,集群存儲(chǔ)系統(tǒng)需要具有高存儲(chǔ)利用率和高容錯(cuò)率的容錯(cuò)技術(shù)以應(yīng)對(duì)海量數(shù)據(jù)對(duì)集群可靠性提出的挑戰(zhàn)。糾刪碼容錯(cuò)技術(shù)在上述兩方面具有優(yōu)勢而越來越受到重視。糾刪碼容錯(cuò)技術(shù)通過糾刪碼算法將數(shù)據(jù)進(jìn)行編碼得到少量冗余,再將數(shù)據(jù)與冗余一起存儲(chǔ)。如圖1所示,每個(gè)節(jié)點(diǎn)的磁盤空間被劃分成一個(gè)個(gè)條塊。整個(gè)集群的磁盤空間由一個(gè)個(gè)相互獨(dú)立的條帶組成。每個(gè)條帶將k個(gè)數(shù)據(jù)塊通過一定編碼算法計(jì)算出r個(gè)冗余塊,將這k+r個(gè)條塊分布到集群的不同節(jié)點(diǎn)。集群可以使用某一條帶中的任意k個(gè)條塊,解碼得到該條帶內(nèi)的所有數(shù)據(jù)塊和冗余塊。因此該集群存儲(chǔ)系統(tǒng)最多可以容忍r個(gè)節(jié)點(diǎn)失效。但是糾刪碼容錯(cuò)技術(shù)存在一個(gè)缺點(diǎn),即任意一個(gè)節(jié)點(diǎn)失效都需要通過網(wǎng)絡(luò)傳輸k個(gè)存活節(jié)點(diǎn)的數(shù)據(jù)來恢復(fù)這個(gè)失效節(jié)點(diǎn)上的數(shù)據(jù),這個(gè)過程的網(wǎng)絡(luò)帶寬開銷大。特別是隨著數(shù)據(jù)量的爆炸性增長,不斷增大的存儲(chǔ)規(guī)模使得出現(xiàn)失效節(jié)點(diǎn)已成為集群存儲(chǔ)系統(tǒng)的常態(tài)。為了恢復(fù)失效節(jié)點(diǎn)上的數(shù)據(jù)并替換失效的節(jié)點(diǎn),糾刪碼集群存儲(chǔ)系統(tǒng)需要讓新加入的節(jié)點(diǎn)向k個(gè)存活的節(jié)點(diǎn)獲取數(shù)據(jù)以進(jìn)行重構(gòu),引起網(wǎng)絡(luò)帶寬的大量占用。特別是當(dāng)集群中有f (f ^ 2)個(gè)節(jié)點(diǎn)同時(shí)失效時(shí),現(xiàn)有的重構(gòu)方法或者需要讓這f個(gè)替換節(jié)點(diǎn)各自向k個(gè)存活節(jié)點(diǎn)獲取數(shù)據(jù),需要占用fXk倍的網(wǎng)絡(luò)帶寬開銷,從而造成重構(gòu)時(shí)間的延長,降低集群的可靠性。所以,多節(jié)點(diǎn)同時(shí)失效而引起的大量網(wǎng)絡(luò)帶寬開銷是糾刪碼集群存儲(chǔ)系統(tǒng)的目前重構(gòu)方法面臨的巨大挑戰(zhàn)。
發(fā)明內(nèi)容
針對(duì)現(xiàn)有技術(shù)的缺陷,本發(fā)明的目的在于提供一種基于糾刪碼集群存儲(chǔ)系統(tǒng)的交叉重構(gòu)方法,旨在解決現(xiàn)有重構(gòu)方法面對(duì)糾刪碼集群存儲(chǔ)系統(tǒng)中出現(xiàn)多個(gè)節(jié)點(diǎn)同時(shí)失效的情況下造成大量網(wǎng)絡(luò)帶寬開銷的問題,本發(fā)明的方法將需要恢復(fù)的數(shù)據(jù)劃分給各個(gè)替換節(jié)點(diǎn),每個(gè)替換節(jié)點(diǎn)只負(fù)責(zé)一部分條帶的恢復(fù),各自重構(gòu)之后得到的少量數(shù)據(jù)在兩兩替換節(jié)點(diǎn)之間相互發(fā)送和接收,能夠降低網(wǎng)絡(luò)帶寬開銷和加快重構(gòu)速度,同時(shí)具有高可靠性和高可擴(kuò)展性。為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于糾刪碼集群存儲(chǔ)系統(tǒng)的交叉重構(gòu)方法,包括以下步驟:(1)糾刪碼集群存儲(chǔ)系統(tǒng)的第i個(gè)替換節(jié)點(diǎn)RNi將自身?xiàng)l帶號(hào)的基準(zhǔn)值rowstep初始化為0,其中i=l,…,f,f為系統(tǒng)中失效節(jié)點(diǎn)的數(shù)量;(2)替換節(jié)點(diǎn)RNi向集群中任意k個(gè)存活節(jié)點(diǎn)發(fā)出請求,獲取這k個(gè)存活節(jié)點(diǎn)的第rowstep+i個(gè)條塊,分別記為B1,…,Bk,其中k為系統(tǒng)中數(shù)據(jù)節(jié)點(diǎn)的數(shù)量;(3)替換節(jié)點(diǎn)RNi使用條塊B1,...,Bk根據(jù)下式計(jì)算出屬于集群的第rowstep+i個(gè)條帶的f個(gè)失效塊,分別記為RBratstel^1,…,RBrowstep+i,f:RBrow,j = DECj(B1,...,Bk)其中DECO代表水平編碼算法的解碼操作,row表示正在處理的是集群中第row個(gè)條帶的各個(gè)條塊,j表示通過這次解碼操作計(jì)算出來的是第j個(gè)替換節(jié)點(diǎn)上的失效塊,且有j=l,…,f ;(4)替換節(jié)點(diǎn)RNi將失效塊RBratstel^i寫入本地磁盤,成為本地的第rowstep+i個(gè)條塊;(5)替換節(jié)點(diǎn)RNi將失效塊
^^rowstep+i, I j ^^rowstep+i, 1-1 ^^rowstep+i, i+1 j ^^rowstep+i, f
一一對(duì)應(yīng)地發(fā)送給替換節(jié)點(diǎn)RN1,…,RNi+ RNi+1,…,RNf,同時(shí)替換節(jié)點(diǎn)RNi接收從替換節(jié)點(diǎn)RN1, -, RNi^1, RNi+1,…,RNf發(fā)來的各一個(gè)失效塊,一一對(duì)應(yīng)地記為RBratstel^i,…,
RRRR...RR-
^-^rowstep+1-l, i ^-^rowstep+i+l, i ,^-^rowstep+f, i (6)替換節(jié)點(diǎn)RNi將 在步驟(5)中從其他替換節(jié)點(diǎn)接收到的f_l個(gè)失效塊寫入本地磁盤;(7)替換節(jié)點(diǎn)RNi將自身?xiàng)l帶號(hào)的基準(zhǔn)值rowstep加f ;(8)替換節(jié)點(diǎn)尺隊(duì)判斷是否已恢復(fù)所有條塊,若是,則返回步驟(2),否則過程結(jié)束。條塊B1,…,Bk可以是數(shù)據(jù)塊,也可以是冗余塊。水平編碼算法包括CRS和VRS算法。步驟(3 )具體為,第i個(gè)替換節(jié)點(diǎn)RNi取row的值為rowstep+i ,然后依次取
j=l,…,f,分別計(jì)算出f個(gè)失效塊 RBrowstep+i,I, ,RBrowstep+i,f ο通過本發(fā)明所構(gòu)思的以上技術(shù)方案,與現(xiàn)有技術(shù)相比,本發(fā)明具有以下的有益效果:(I)網(wǎng)絡(luò)帶寬的開銷小:由于在步驟(2)中讓一個(gè)替換節(jié)點(diǎn)只向獲取存活節(jié)點(diǎn)獲取一部分?jǐn)?shù)據(jù),所以減少了重復(fù)的數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸量,從而減少了對(duì)網(wǎng)絡(luò)帶寬的占用。(2)重構(gòu)速度的加快使得集群可靠性良好:由于替換節(jié)點(diǎn)的網(wǎng)絡(luò)帶寬是制約重構(gòu)速度的瓶頸,步驟(2)帶來的小的網(wǎng)絡(luò)帶寬開銷能讓替換節(jié)點(diǎn)縮短重構(gòu)時(shí)間,減小集群在重構(gòu)期間出現(xiàn)下一個(gè)失效節(jié)點(diǎn)的可能,從而提高了集群的可靠性。(3)可擴(kuò)展性良好:由步驟(2)和步驟(5)可知,當(dāng)集群中同時(shí)失效的節(jié)點(diǎn)數(shù)量增多時(shí),每個(gè)替換節(jié)點(diǎn)需要向存活節(jié)點(diǎn)獲取的數(shù)據(jù)量將減小,替換節(jié)點(diǎn)兩兩之間相互傳遞已被重構(gòu)出來的數(shù)據(jù),保證了失效數(shù)據(jù)能夠被完整恢復(fù),因此本發(fā)明方法在失效節(jié)點(diǎn)個(gè)數(shù)越多的情況下重構(gòu)速度越快,從而具有良好的可擴(kuò)展性。
圖1為現(xiàn)有糾刪碼集群存儲(chǔ)系統(tǒng)的數(shù)據(jù)條帶化分布與重構(gòu)示意圖;圖2為本發(fā)明基于糾刪碼集群存儲(chǔ)系統(tǒng)的交叉重構(gòu)方法的流程圖;圖3為本發(fā)明方法的數(shù)據(jù)流向示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。首先給出本發(fā)明相關(guān)概念的定義: 條帶:在糾刪碼中,條帶是可以獨(dú)立地恢復(fù)出失效數(shù)據(jù)的信息集合。 條塊:處于同一存儲(chǔ)設(shè)備上的屬于同一條帶的數(shù)據(jù)的集合。一個(gè)條塊可以只包含數(shù)據(jù)或者冗余,也可以同時(shí)包含數(shù)據(jù)和冗余。本發(fā)明方法使用水平編碼,一個(gè)條塊只包含數(shù)據(jù)或者冗余。 水平編碼:一種糾刪碼,所有數(shù)據(jù)塊和校驗(yàn)塊在同一條帶上。 數(shù)據(jù)塊:只存儲(chǔ)原始數(shù)據(jù)的條塊,本說明書使用DBra^i表示屬于第row個(gè)條帶且位于第i個(gè)數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)塊。 冗余塊:只存儲(chǔ)冗余數(shù)據(jù)的條塊,本說明書使用PBratii表示屬于第row個(gè)條帶且位于第i個(gè)冗余節(jié)點(diǎn)的冗余塊。 數(shù)據(jù)節(jié)點(diǎn):存儲(chǔ)數(shù)據(jù)塊的節(jié)點(diǎn),本說明書使用DNi來表示第i個(gè)數(shù)據(jù)節(jié)點(diǎn)。 冗余節(jié)點(diǎn):存儲(chǔ)冗余塊的節(jié)點(diǎn),本說明書使用PNi來表示第i個(gè)冗余節(jié)點(diǎn)。 失效節(jié)點(diǎn):集群中由于存儲(chǔ)介質(zhì)損壞、網(wǎng)絡(luò)故障或者宕機(jī)等原因而不可使用的節(jié)點(diǎn)。 存活節(jié)點(diǎn):集群中能正常工作的節(jié)點(diǎn)。 替換節(jié)點(diǎn):新加 入集群中用來替換失效節(jié)點(diǎn)的節(jié)點(diǎn),本說明書使用RNi表示第i個(gè)替換節(jié)點(diǎn)。 失效數(shù)據(jù):位于失效節(jié)點(diǎn)上的數(shù)據(jù)。 重構(gòu):在替換節(jié)點(diǎn)上進(jìn)行的恢復(fù)失效數(shù)據(jù)的操作。 失效塊:位于失效節(jié)點(diǎn)上的條塊。特別地,本說明書中也使用“失效塊”來稱呼被重構(gòu)過程計(jì)算得到的條塊,它與被失效節(jié)點(diǎn)丟失的條塊在信息上是完全一致的,說明書中用RBrat, i來表示屬于集群中第row個(gè)條帶且位于第i個(gè)替換節(jié)點(diǎn)上的失效塊。本發(fā)明提供的一種基于糾刪碼集群存儲(chǔ)系統(tǒng)的交叉重構(gòu)方法使用IRS(k,r, f)表示,k, r, f均為正整數(shù)。其中k是數(shù)據(jù)節(jié)點(diǎn)的個(gè)數(shù),r是冗余節(jié)點(diǎn)的個(gè)數(shù),f是失效節(jié)點(diǎn)的個(gè)數(shù),也是替換節(jié)點(diǎn)的個(gè)數(shù)。該方法讓多個(gè)替換節(jié)點(diǎn)在重構(gòu)過程中相互合作,以達(dá)到減少網(wǎng)絡(luò)帶寬開銷,加快重構(gòu)速度的目的,適用于集群中同時(shí)出現(xiàn)多個(gè)節(jié)點(diǎn)失效的情況。如圖2所示,本發(fā)明基于糾刪碼集群存儲(chǔ)系統(tǒng)的交叉重構(gòu)方法包括以下步驟:(I)糾刪碼集群存儲(chǔ)系統(tǒng)的第i個(gè)替換節(jié)點(diǎn)RNi將自身?xiàng)l帶號(hào)的基準(zhǔn)值rowst印初始化為0,其中i=l,…,f,f為系統(tǒng)中失效節(jié)點(diǎn)的數(shù)量;具體而言,集群中每個(gè)替換節(jié)點(diǎn)都執(zhí)行本發(fā)明方法所示的步驟,這里使用標(biāo)號(hào)i來表示可以任意選取一個(gè)替換節(jié)點(diǎn);(2)替換節(jié)點(diǎn)RNi向集群中任意k個(gè)存活節(jié)點(diǎn)發(fā)出請求,獲取這k個(gè)存活節(jié)點(diǎn)的第rowstep+i個(gè)條塊,分別記為B1,…,Bk,其中k為系統(tǒng)中數(shù)據(jù)節(jié)點(diǎn)的數(shù)量;具體而言,條塊B1,…,Bk可以是數(shù)據(jù)塊,也可以是冗余塊;(3)替換節(jié)點(diǎn)RNi使用條塊B1,...,Bk根據(jù)下式計(jì)算出屬于集群的第rowstep+i個(gè)條帶的f個(gè)失效塊,分別記為RBratstel^1,…,RBMwstep+i,f。RBrow;j = DECj(B1, -,Bk)
上式中,DECO代表一種水平編碼算法,包括CRS (Cauchy Reed-Solomon), VRS(Vandermonde Reed-Solomon)等的解碼操作,它可以計(jì)算出f個(gè)失效塊,下標(biāo)row表示正在處理的是集群中第row個(gè)條帶的各個(gè)條塊,下標(biāo)j表示通過這次解碼操作計(jì)算出來的是第j個(gè)替換節(jié)點(diǎn)上的失效塊,其中j=l,…,f ;具體而言,第i個(gè)替換節(jié)點(diǎn)RNi取row的值為 rowstep+i,然后依次取 j=l,..., f,分別計(jì)算出 f 個(gè)失效塊 RBrowste3^1,..., RBrowstep+i;f ;因?yàn)樘鎿Q節(jié)點(diǎn)RNi表示集群中的任意一個(gè)替換節(jié)點(diǎn),因此到本步驟結(jié)束時(shí)為止替換節(jié)點(diǎn)RNi計(jì)算得到屬于第rowstep+i個(gè)條帶的f個(gè)失效塊ABratste^1…,RBrowste^f ;替換節(jié)點(diǎn)RN2計(jì)算得到屬于第rowstep+2個(gè)條帶的f個(gè)失效塊=RBratstelrtu,..., RBrowstep+2;f,依次類推;(4)替換節(jié)點(diǎn)RNi將失效塊RBratstel^i寫入本地磁盤,成為本地的第rowstep+i個(gè)條塊;(5)替換節(jié)點(diǎn)RNi將失效塊
^^rowstep+i, I j ^^rowstep+i, 1-1 ^^rowstep+i, i+1 j ^^rowstep+i, f
一一對(duì)應(yīng)地發(fā)送給替換節(jié)點(diǎn)RN1,…,RNh,RNi+1,…,RNf,在這里,替換節(jié)點(diǎn)的標(biāo)號(hào)與失效塊的第2個(gè)下標(biāo)對(duì)應(yīng),表示替換節(jié)點(diǎn)RNi將屬于第rowstep+i個(gè)條帶的失效塊發(fā)送給其他替換節(jié)點(diǎn);同時(shí),替換節(jié)點(diǎn)RNi接收從替換節(jié)點(diǎn)RN1,…,RNi^1, RNi+1,…,RNf發(fā)來的各一個(gè)失效塊,--對(duì)應(yīng)地記為
^■^rowstep+1, i ,^-^rowstep+1-lJ i,^-^rowstep+i+1, i ,^^rowstep+f, i
在這里,
替換節(jié)點(diǎn)的標(biāo)號(hào)與失效塊的第I個(gè)下標(biāo)對(duì)應(yīng),表示其他替換節(jié)點(diǎn)將應(yīng)該位于第i個(gè)失效節(jié)點(diǎn)上的失效塊發(fā)送給第i個(gè)替換節(jié)點(diǎn)RNi ;(6)替換節(jié)點(diǎn)RNi將在步驟(5)中從其他替換節(jié)點(diǎn)接收到的f_l個(gè)失效塊寫入本地磁盤;具體而言,到步驟(6)結(jié)束為止 ,替換節(jié)點(diǎn)RNi完成了對(duì)本地磁盤的第rowstep+i個(gè)到第rowstep+f個(gè)條塊的恢復(fù);因?yàn)樘鎿Q節(jié)點(diǎn)RNi表示集群中的任意一個(gè)替換節(jié)點(diǎn),所以到步驟(6)結(jié)束為止,集群中的第rowstep+i個(gè)到第rowstep+f個(gè)條帶都已經(jīng)被恢復(fù);(7)替換節(jié)點(diǎn)RNi將自身?xiàng)l帶號(hào)的基準(zhǔn)值rowstep加f ;(8)替換節(jié)點(diǎn)RNi判斷是否已恢復(fù)所有條塊,若是,則返回步驟(2),否則過程結(jié)束;具體而言,從步驟(2)到步驟(6),集群完成對(duì)當(dāng)前f個(gè)條帶的恢復(fù),之后以f為步長遞增rowstep進(jìn)行接下來的循環(huán),每一輪循環(huán)順序恢復(fù)f個(gè)條帶。為了使本發(fā)明方法更容易理解,下面結(jié)合圖3所示的實(shí)施例1RS(k,r,2)來說明。圖3為出現(xiàn)兩個(gè)失效節(jié)點(diǎn)(f=2)的情況下,本發(fā)明方法的數(shù)據(jù)流向示意圖。如圖3所示,DN1, -,DNk為數(shù)據(jù)節(jié)點(diǎn),PN1, -,PNr為冗余節(jié)點(diǎn),其中數(shù)據(jù)節(jié)點(diǎn)DN1和DN2失效,替換節(jié)點(diǎn)RN1和RN2進(jìn)行交叉重構(gòu)來替換失效節(jié)點(diǎn)DN1和DN2。圖3下方的虛線方框里是替換節(jié)點(diǎn)RNi和RN2在交叉重構(gòu)中根據(jù)步驟(2)到(6) —次循環(huán)計(jì)算出來的失效塊,箭頭為數(shù)據(jù)流向。為了便于顯示,圖3將替換節(jié)點(diǎn)RN1和RN2的條帶號(hào)基準(zhǔn)rowstep設(shè)置為O,并指定替換節(jié)點(diǎn)RN1獲取DN3, -,DNk, PN1, PN2這k個(gè)存活節(jié)點(diǎn)的第I個(gè)條塊,即條塊DB3,…,DBk7PB17PB2 ;同樣指定替換節(jié)點(diǎn)RN2獲取上述k個(gè)存活節(jié)點(diǎn)的第2個(gè)條塊。接著,替換節(jié)點(diǎn)RN1計(jì)算出屬于第I個(gè)條帶的2個(gè)失效塊RB1;1和RB1^并將失效塊RB1;1寫入本地磁盤,成為替換節(jié)點(diǎn)RN1的第I個(gè)條塊;替換節(jié)點(diǎn)RN2計(jì)算出屬于第2個(gè)條帶的2個(gè)失效塊RB2il和RB2j2,并將失效塊RB2,2寫入本地磁盤,成為替換節(jié)點(diǎn)RN2的第2個(gè)條塊。此時(shí),替換節(jié)點(diǎn)RN1多余的失效塊RBy是替換節(jié)點(diǎn)RN2需要的,替換節(jié)點(diǎn)RN2多余的失效塊RB2;1是替換節(jié)點(diǎn)RN1需要的。于是替換節(jié)點(diǎn)RN1和RN2相互交換上述2個(gè)失效塊。失效塊RB。成為替換節(jié)點(diǎn)RN1的第2個(gè)條塊,失效塊RBli2成為替換節(jié)點(diǎn)RN2的第I個(gè)條塊。所以整個(gè)集群的第I個(gè)和第2個(gè)條帶被完整恢復(fù)。替換節(jié)點(diǎn)RN1和RN2互相交換各自缺少的失效塊,是本發(fā)明方法被稱為交叉重構(gòu)的含義所在。本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于糾刪碼集群存儲(chǔ)系統(tǒng)的交叉重構(gòu)方法,其特征在于,包括以下步驟: (O糾刪碼集群存儲(chǔ)系統(tǒng)的第i個(gè)替換節(jié)點(diǎn)RNi將自身?xiàng)l帶號(hào)的基準(zhǔn)值rowstep初始化為0,其中i=l,…,f,f為系統(tǒng)中失效節(jié)點(diǎn)的數(shù)量; (2)替換節(jié)點(diǎn)RNi向集群中任意k個(gè)存活節(jié)點(diǎn)發(fā)出請求,獲取這k個(gè)存活節(jié)點(diǎn)的第rowstep+i個(gè)條塊,分別記為B1,…,Bk,其中k為系統(tǒng)中數(shù)據(jù)節(jié)點(diǎn)的數(shù)量; (3)替換節(jié)點(diǎn)RNi使用條塊B1,...,Bk根據(jù)下式計(jì)算出屬于集群的第rowstep+i個(gè)條帶的f個(gè)失效塊,分別記為RBratstel^1,…,RBrowstep+i, f.RBrow, j = DECj (B1,…,Bk) 其中DECO代表水平編碼算法的解碼操作,row表示正在處理的是集群中第row個(gè)條帶的各個(gè)條塊,j表示通過這次解碼操作計(jì)算出來的是第j個(gè)替換節(jié)點(diǎn)上的失效塊,且有j=l,…,f ; (4)替換節(jié)點(diǎn)RNi將失效塊RBrowstep+i,i寫入本地磁盤,成為本地的第rowst印+i個(gè)條塊; (5)替換節(jié)點(diǎn)RNdf失效塊^^rowstep+i, I ,^^rowstep+i, 1-1 ^^rowstep+i, i+1 ,^^rowstep+i, f一一對(duì)應(yīng)地發(fā)送給替換節(jié)點(diǎn)RN1,…,RNi+ RNi+1,…,RNf,同時(shí)替換節(jié)點(diǎn)RNi接收從替換節(jié)點(diǎn)RN1, -, RNi^1, RNi+1,…,RNf發(fā)來的各一個(gè)失效塊,一一對(duì)應(yīng)地記為RBratstel^i,…,RRRR...RR-^-^rowstep+1-l, i ^-^rowstep+i+l, i ,^-^rowstep+f, i(6)替換節(jié)點(diǎn)RNi將在步驟(5)中從其他替換節(jié)點(diǎn)接收到的f-Ι個(gè)失效塊寫入本地磁盤; (7)替換節(jié)點(diǎn)RNi將自身?xiàng)l帶號(hào)的基準(zhǔn)值rowstep加f; (8)替換節(jié)點(diǎn)RNi判斷是否已恢復(fù)所有條塊,若是,則返回步驟(2),否則過程結(jié)束。
2.根據(jù)權(quán)利要求1所述的交叉重構(gòu)方法,其特征在于,條塊B1,…,Bk可以是數(shù)據(jù)塊,也可以是冗余塊。
3.根據(jù)權(quán)利要求1所述的交叉重構(gòu)方法,其特征在于,水平編碼算法包括CRS和VRS算法。
4.根據(jù)權(quán)利要求1所述的交叉重構(gòu)方法,其特征在于,步驟(3)具體為,第i個(gè)替換節(jié)點(diǎn)RNi取row的值為rowstep+i,然后依次取j=l,..., f,分別計(jì)算出f個(gè)失效塊"RR..."RRjAurowsl:ep+i,I,,ivi^rOwstep+!, f °
全文摘要
本發(fā)明公開了一種基于糾刪碼集群存儲(chǔ)系統(tǒng)的交叉重構(gòu)方法,包括第i個(gè)替換節(jié)點(diǎn)RNi將自身?xiàng)l帶號(hào)的基準(zhǔn)值rowstep初始化為0,替換節(jié)點(diǎn)RNi向集群中任意k個(gè)存活節(jié)點(diǎn)發(fā)出請求,獲取這k個(gè)存活節(jié)點(diǎn)的第rowstep+i個(gè)條塊,分別記為B1,…,Bk,替換節(jié)點(diǎn)RNi使用條塊B1,…,Bk計(jì)算出屬于集群的第rowstep+i個(gè)條帶的f個(gè)失效塊,分別記為RBrowstep+i,1,…,RBrowstep+i,f,替換節(jié)點(diǎn)RNi將失效塊RBrowstep+i,i寫入本地磁盤,成為本地的第rowstep+i個(gè)條塊。本發(fā)明能夠降低網(wǎng)絡(luò)帶寬開銷和加快重構(gòu)速度。
文檔編號(hào)G06F11/14GK103106124SQ20121059129
公開日2013年5月15日 申請日期2012年12月29日 優(yōu)先權(quán)日2012年12月29日
發(fā)明者黃建忠, 曹強(qiáng), 謝長生, 黃思倜, 張峰豪 申請人:華中科技大學(xué)