專利名稱:一種提高基于糾刪碼的存儲集群恢復(fù)性能的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機存儲領(lǐng)域,更具體地,涉及一種提高基于糾刪碼的存儲集群恢復(fù)性能的方法。
背景技術(shù):
在今天的大型數(shù)據(jù)中心,數(shù)據(jù)集的規(guī)模和復(fù)雜性急劇增加,由數(shù)百到數(shù)千節(jié)點組成的大規(guī)模存儲集群部署提供在線服務(wù)與龐大的數(shù)據(jù)容量,以滿足需求。這樣的大型系統(tǒng),故障并不少見。它的關(guān)鍵是確保數(shù)據(jù)的可用性,這通常是由存儲集群的冗余技術(shù)實現(xiàn)。施羅德在故障統(tǒng)計分析中發(fā)現(xiàn),在五個不同的大型集群中,根據(jù)他們的觀察,磁盤故障率遠遠高于制造商聲稱的故障率。年故障率為2 4%的磁盤,實際故障率通常可提高到13%,即相應(yīng)磁盤平均故障時間約為8 50年。他們還發(fā)現(xiàn),一個磁盤發(fā)生故障,那么很有可能短期內(nèi)另一個磁盤會發(fā)生故障。此外,大規(guī)模存儲集群在復(fù)雜的環(huán)境中因為其它如硬件,軟件,網(wǎng)絡(luò)和電源等的問題會引起系統(tǒng)不可用。不可用事件的發(fā)生概率遠高于磁盤故障(節(jié)點的平均故障時間約為
4.3月)。大約有10%的這類事件可以維持10分鐘以上。作為一種流行的數(shù)據(jù)冗余方案,多副本技術(shù)將數(shù)據(jù)塊被復(fù)制到整個節(jié)點和集群在許多系統(tǒng)中被廣泛采用,包括谷歌文件系統(tǒng)和Hadoop分布式文件系統(tǒng)(HadoopDistribution File System,簡稱HDFS),用以提供高可用性和可靠性。然而,在即將到來的云時代,隨著大數(shù)據(jù)應(yīng)用迅速增加,多副本技術(shù)在今天的大型數(shù)據(jù)中心,負責(zé)管理大數(shù)據(jù)的代價是非常昂貴的。例如,谷歌每天處理超過20PB的數(shù)據(jù)。Facebook的存儲用戶上傳的照片在2010年超過650億張,此外每周上傳的新照片約為十億張,合60TB的數(shù)據(jù),峰值為每秒訪問百萬張。在2011年4月,美國國會圖書館收集235TB的數(shù)據(jù)。對于如此大的數(shù)據(jù)量(數(shù)十到數(shù)百PB的數(shù)據(jù)),復(fù)制成N份將會帶來巨大的額外開銷。作為一種替代多副本技術(shù)的方法,糾刪碼可以以較低的成本提供高可靠性和可用性。糾刪碼的基本思想是:從一組數(shù)據(jù)塊(也被稱為數(shù)據(jù)條帶單元)生成校驗條帶單元;這些數(shù)據(jù)條帶單元與他們相關(guān)聯(lián)的校驗條帶一起形成條帶,當(dāng)條帶單元發(fā)生故障時其可用于恢復(fù)數(shù)據(jù);數(shù)據(jù)和校驗條帶單元分布在不同存儲節(jié)點上,從而實現(xiàn)高可靠性。近年來,學(xué)術(shù)界和工業(yè)界正試圖在大型系統(tǒng)中使用糾刪碼取代多副本技術(shù)。在數(shù)據(jù)中心使用糾刪碼所面臨的最大挑戰(zhàn)之一是由于其復(fù)雜的編碼/解碼操作所帶來的性能問題。例如,從故障節(jié)點訪問數(shù)據(jù)時,復(fù)雜的解碼操作需要從其它存儲群集群節(jié)點來恢復(fù)數(shù)據(jù),這種操作采用傳統(tǒng)的集中式解碼方法會導(dǎo)致大量額外的數(shù)據(jù)傳輸。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)的缺陷,本發(fā)明的目的在于提供一種提高基于糾刪碼的存儲集群恢復(fù)性能的方法,旨在解決現(xiàn)有集中式解碼方法中存在的會導(dǎo)致大量額外的數(shù)據(jù)傳輸?shù)膯栴}。
為實現(xiàn)上述目的,本發(fā)明提供了一種提高基于糾刪碼的存儲集群恢復(fù)性能的方法,包括以下步驟:(I)重構(gòu)控制節(jié)點向重構(gòu)源節(jié)點SN1, SN2,...,SNx發(fā)送重構(gòu)讀請求,同時向重構(gòu)目的節(jié)點DN1, DN2,...,DNy發(fā)送重構(gòu)寫請求,其中X為重構(gòu)源節(jié)點的數(shù)量,y為重構(gòu)目的節(jié)點的數(shù)量;(2)所有的重構(gòu)源節(jié)點SN1, SN2,...,SNx根據(jù)重構(gòu)讀請求執(zhí)行重構(gòu)讀優(yōu)化,同時所有的重構(gòu)目的節(jié)點DN1, DN2,...,DNy根據(jù)重構(gòu)寫請求執(zhí)行重構(gòu)寫優(yōu)化;(3)每個重構(gòu)源節(jié)點SN1, SN2,...,SNx分別從磁盤讀取參與此次重構(gòu)的數(shù)據(jù)(Iata1、data2、...、datay,并分別將數(shù)據(jù)分成 y 個數(shù)據(jù)塊(datan, data12, data13, , dataly)、((1β £121 (1β £122 (1β £123 ...,...( d£lt£lxi,(1β £Ιχ2 (1β £Ιχ3 ...,Clcltclsy);(4)所有的重構(gòu)源節(jié)點SN1, SN2,...,SNx分別將此次參與重構(gòu)的數(shù)據(jù)的y個數(shù)據(jù)
(diltilii,d£lt£li2,diltilig,...,d£lt£liy)、( (ΙΞ^ι,d£lt£l23,...,...(( £Ι £Ιχι,
datax2,datax3,...,dataxy)通過網(wǎng)絡(luò)同時傳輸?shù)綄?yīng)的重構(gòu)目的節(jié)點DN1, DN2,...,DNy上;(5)每個重構(gòu)目的節(jié)點DN1, DN2,...,DNy分別采用重構(gòu)算法將接收到的來自所有重構(gòu)源節(jié)點 SN1, SN2,..., SNx 的數(shù)據(jù)塊(datan, data21,…dataxl)、Cdata12, data22,...datax2)…(dataly, data2y,…dataxy)進行重構(gòu),以得到完整有效的數(shù)據(jù)塊C1'Cf Cy ;(6)每一個重構(gòu)目的節(jié)點DN1, DN2,...,DNy分別將重構(gòu)得到的數(shù)據(jù)塊C:、C2,…Cy返回客戶端。步驟(2)具體為,所有的重構(gòu)源節(jié)點SN1, SN2,...,SNx提高重構(gòu)讀請求的優(yōu)先級,根據(jù)不同的優(yōu)先級設(shè)置讀任務(wù)隊列, 將重構(gòu)讀請求在讀任務(wù)隊列中提高至最高優(yōu)先級處,使得重構(gòu)源節(jié)點SN1, SN2, SNx會優(yōu)先執(zhí)行重構(gòu)讀請求,并暫停通過網(wǎng)絡(luò)發(fā)送正常的數(shù)據(jù),當(dāng)本機上的重構(gòu)任務(wù)完成后,所有的重構(gòu)源節(jié)點SN1;SN2,...,SNx恢復(fù)正常工作流程,所有的重構(gòu)目的節(jié)點DN1;DN2,...,DNy暫停通過網(wǎng)絡(luò)接收正常的寫數(shù)據(jù),當(dāng)本機上的重構(gòu)任務(wù)完成后,所有的重構(gòu)目的節(jié)點DN1, DN2,...,DNy恢復(fù)正常的寫流程。重構(gòu)的數(shù)據(jù)包括基于糾刪碼的存儲集群并通過糾刪碼算法將原數(shù)據(jù)進行編碼得到的少量冗余數(shù)據(jù)以及原數(shù)據(jù)。重構(gòu)算法是根據(jù)不同糾刪碼的解碼矩陣,利用該數(shù)據(jù)通過異或操作或查表操作重新計算出不可用數(shù)據(jù)塊。通過本發(fā)明所構(gòu)思的以上技術(shù)方案,與現(xiàn)有技術(shù)相比,本發(fā)明具有以下的有益效果:( I)克服大量額外的數(shù)據(jù)傳輸:通過步驟(3)和步驟(4),采用分布式解碼算法,將同源節(jié)點的失效數(shù)據(jù)分塊,并將不同的塊傳到不同的目的節(jié)點參與重構(gòu),使得重構(gòu)目的節(jié)點能夠并行地接收重構(gòu)所需的數(shù)據(jù),從而克服大量額外的數(shù)據(jù)傳輸,提高重構(gòu)效率。(2)加快讀取參與重構(gòu)數(shù)據(jù)的速度:由于重構(gòu)源節(jié)點在進行重構(gòu)任務(wù)時,正常的工作任務(wù)也需要讀取磁盤步驟,通過(2)步驟提高了重構(gòu)任務(wù)對磁盤讀取請求的優(yōu)先級,從而提高了重構(gòu)源節(jié)點從磁盤讀取參與重構(gòu)的數(shù)據(jù)的速度。(3)充分利用網(wǎng)絡(luò)帶寬:由于在步驟(2)中暫停了重構(gòu)源節(jié)點對網(wǎng)絡(luò)正常的輸出,同時暫停重構(gòu)目的節(jié)點從網(wǎng)絡(luò)接收正常的寫數(shù)據(jù),減少了正常進程對網(wǎng)絡(luò)帶寬的占用,從而提高了參與重構(gòu)的數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸速度。
圖1是本發(fā)明基于糾刪碼的存儲集群失效數(shù)據(jù)重構(gòu)方法的示意圖。圖2是本發(fā)明提高基于糾刪碼的存儲集群恢復(fù)性能的基本流程圖。圖3為本發(fā)明方法在一種簡單情況下的示意圖。圖4為本發(fā)明方法執(zhí)行重構(gòu)讀優(yōu)化和重構(gòu)寫優(yōu)化的示意圖。
具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說 明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。首先給出本發(fā)明相關(guān)術(shù)語的定義: 重構(gòu)源節(jié)點:存儲部分參與此次重構(gòu)的數(shù)據(jù)的節(jié)點,本說明書使用SNi表示第i個重構(gòu)源節(jié)點。對于不同的SN1^PSNtl,可能屬于同一臺物理機器。記SNiI存儲的參與此次重構(gòu)的數(shù)據(jù)為Clatai。 重構(gòu)目的節(jié)點:失效數(shù)據(jù)塊進行重構(gòu)的節(jié)點,本說明書使用DNi來表示第i個重構(gòu)目的節(jié)點。對于不同的DNp和DN,,可能屬于同一臺物理機器。 失效數(shù)據(jù):集群中某節(jié)點由于存儲介質(zhì)損壞、網(wǎng)絡(luò)故障或者宕機等原因而不可使用的數(shù)據(jù)。 有效數(shù)據(jù):進行重構(gòu)后所恢復(fù)的數(shù)據(jù)塊,本說明書使用Ci來表示恢復(fù)所得數(shù)據(jù)的第i個數(shù)據(jù)分塊。 重構(gòu)控制節(jié)點:當(dāng)客戶端向集群請求數(shù)據(jù)不可用時,由重構(gòu)控制節(jié)點向各節(jié)點發(fā)出重構(gòu)控制命令,重構(gòu)控制節(jié)點可以是客戶端。 重構(gòu)控制命令:各節(jié)點根據(jù)重構(gòu)控制命令完成整個數(shù)據(jù)重構(gòu)過程。 重構(gòu):在重構(gòu)目的節(jié)點上進行的恢復(fù)失效數(shù)據(jù)的操作。如圖1所示,本發(fā)明提高基于糾刪碼的存儲集群恢復(fù)性能的方法是應(yīng)用到一種基于糾刪碼的存儲集群中,該存儲集群包括重構(gòu)源節(jié)點SNi和重構(gòu)目的節(jié)點(其中i和j為正整數(shù))以及其它節(jié)點。如圖1所示,整個集群的磁盤空間由一個個相互獨立的數(shù)據(jù)塊組成。本發(fā)明采用分布式解碼算法,將同源節(jié)點的失效數(shù)據(jù)分塊,并將不同的塊傳到不同的節(jié)點參與重構(gòu),能夠并行地接收重構(gòu)所需的數(shù)據(jù)。如圖2所示,本發(fā)明提高基于糾刪碼的存儲集群恢復(fù)性能的方法包括以下步驟:(I)重構(gòu)控制節(jié)點向重構(gòu)源節(jié)點SN1, SN2,...,SNx (其中x為重構(gòu)源節(jié)點的數(shù)量,且為正整數(shù))發(fā)送重構(gòu)讀請求,同時向重構(gòu)目的節(jié)點DN1, DN2,...,DNy (其中y為重構(gòu)目的節(jié)點的數(shù)量,且為正整數(shù))發(fā)送重構(gòu)寫請求;具體而言,集群中每個重構(gòu)源節(jié)點和重構(gòu)目的節(jié)點都執(zhí)行本發(fā)明方法所示的步驟。在本實施方式中,重構(gòu)控制節(jié)點是客戶端PC ;(2)所有的重構(gòu)源節(jié)點SN1;SN2,...,SNx根據(jù)重構(gòu)讀請求執(zhí)行重構(gòu)讀優(yōu)化,同時,所有的重構(gòu)目的節(jié)點DN1, DN2,...,DNy根據(jù)重構(gòu)寫請求執(zhí)行重構(gòu)寫優(yōu)化;具體而言,所有的重構(gòu)源節(jié)點SN1, SN2,...,SNx提高重構(gòu)讀請求的優(yōu)先級,根據(jù)不同的優(yōu)先級設(shè)置讀任務(wù)隊列,將重構(gòu)讀請求在讀任務(wù)隊列中提高至最高優(yōu)先級處,使得重構(gòu)源節(jié)點SN1, SN2,...,3隊會優(yōu)先執(zhí)行重構(gòu)讀請求,并暫停通過網(wǎng)絡(luò)發(fā)送正常的數(shù)據(jù),當(dāng)本機上的重構(gòu)任務(wù)完成后,所有的重構(gòu)源節(jié)點SN1, SN2,...,SNx恢復(fù)正常工作流程;所有的重構(gòu)目的節(jié)點DN1, DN2,...,DNy暫停通過網(wǎng)絡(luò)接收正常的寫數(shù)據(jù),當(dāng)本機上的重構(gòu)任務(wù)完成后,所有的重構(gòu)目的節(jié)點DN1,DN2,...,DNy恢復(fù)正常的寫流程。如圖4所示,本步驟通過對重構(gòu)源節(jié)點進行重構(gòu)讀優(yōu)化和對重構(gòu)目的節(jié)點進行重構(gòu)與優(yōu)化,可以有效提聞源節(jié)點執(zhí)行重構(gòu)讀的效率,同時可以有效提聞目的節(jié)點接收重構(gòu)源數(shù)據(jù)的效率。(3)每個重構(gòu)源節(jié)點SN1, SN2,….,SNx分別從磁盤讀取參與此次重構(gòu)的數(shù)據(jù)(Iata1、data2、...、datay,并分別將數(shù)據(jù)分成 y 個數(shù)據(jù)塊(datan, data12, data13, , dataly)、Cdata21, data22, data23,..., data2y)…Cdataxl, datax2, datax3,...,data”);該數(shù)據(jù)包括基于糾刪碼的存儲集群并通過糾刪碼算法將原數(shù)據(jù)進行編碼得到的少量冗余數(shù)據(jù)以及原數(shù)據(jù);具體而言,SN1 將 Clata1 分成 y 塊,用(datan, data12, data13,..., dataly)表示,SN2 將 data2分成 Y 塊,用(data21, data22, data23, , data2y)表不,SN3 將 data3 分成 y 塊,用(data31,data32, data33, , data3y)表不,SNx 將 datax 分成 y 塊,用(dataxl, datax2, datax3, ,dataxy)表不。特別地,此處分塊不一定要求均勻分塊,不同的分塊可以有交集,只需保證Clatali,data2i, data3i,..., dataxi 根據(jù)重構(gòu)算法可以恢復(fù)得到有效數(shù)據(jù)。(4)所有的重構(gòu)源節(jié)點SN1, SN2,...,SNx將此次參與重構(gòu)的數(shù)據(jù)的y個數(shù)據(jù)塊通過網(wǎng)絡(luò)同時傳輸?shù)綄?yīng)的重構(gòu)目的節(jié)點DN1, DN2,...,DNy上;具體而言,所有的重構(gòu)源節(jié)點SN1, SN2,...SNx中的每一個重構(gòu)源節(jié)點同時將從磁盤讀取參與此次重構(gòu)的數(shù)據(jù)的第I個數(shù)據(jù)塊datan, data21,…dataxl通過網(wǎng)絡(luò)發(fā)送到DN1,第2個數(shù)據(jù)塊data12, data22,…datax2通過網(wǎng)絡(luò)發(fā)送到DN2,...第y個數(shù)據(jù)塊dataly, data2y,…dataxy通過網(wǎng)絡(luò)發(fā)送到DNy。本步驟采用分布式解碼算法,將同源節(jié)點的失效數(shù)據(jù)分塊,并將不同的塊傳到不同的節(jié)點參與重構(gòu),能夠并行地接收重構(gòu)所需的數(shù)據(jù),從而提高重構(gòu)效率。(5)每個重構(gòu)目的節(jié)點DN1, DN2,...,DNy分別采用重構(gòu)算法將接收到的來自所有重構(gòu)源節(jié)點 SN1, SN2,..., SNx 的數(shù)據(jù)塊(datan, data21,…dataxl)、Cdata12, data22,...datax2)…(dataly, data2y,…dataxy)進行重構(gòu),以得到完整有效的數(shù)據(jù)塊C1'Cf Cy。具體而言,重構(gòu)算法(Reconstruction algorithm)是根據(jù)不同糾刪碼的解碼矩陣,利用該數(shù)據(jù)通過異或操作或查表操作重新計算出不可用數(shù)據(jù)塊;當(dāng)DN1接收到datan,data21,data31,...,dataxl后根據(jù)重構(gòu)算法進行重構(gòu)得到有效的數(shù)據(jù)分塊C1,當(dāng)DN1接收到datan,data21,data31,..., dataxl后根據(jù)重構(gòu)算法進行重構(gòu)得到有效的數(shù)據(jù)分塊C1,當(dāng)DN2接收到data12,data22,data32,...,datax2后根據(jù)重構(gòu)算法進行重構(gòu)得到有效的數(shù)據(jù)分塊C2,...,當(dāng)DNy接收到dataly, data2y, data3y,..., dataxy后根據(jù)重構(gòu)算法進行重構(gòu)得到有效的數(shù)據(jù)分塊Cy ;(6)每一個重構(gòu)目的節(jié)點DN1, DN2,...,DNy分別將重構(gòu)得到的數(shù)據(jù)塊C:、C2,…Cy返回客戶端;特別地,DN和SN僅代表邏輯節(jié)點,即SNp與DNq可能為同一物理節(jié)點。如存儲集群中某實際物理節(jié)點既是重構(gòu)源節(jié)點節(jié)點SN2同時又是重構(gòu)目的節(jié)點DN1,則該節(jié)點在接收到重構(gòu)控制命令后需要先暫停通過網(wǎng)絡(luò)接收正常的寫數(shù)據(jù),即暫停網(wǎng)絡(luò)對該節(jié)點的正常寫入,同時暫停對網(wǎng)絡(luò)的正常輸出并提高重構(gòu)讀請求的優(yōu)先級;然后磁盤讀取參與此次重構(gòu)的數(shù)據(jù)并分塊;然后發(fā)送數(shù)據(jù)塊時,該節(jié)點作為SN2,將數(shù)據(jù)的第2個數(shù)據(jù)塊通過網(wǎng)絡(luò)發(fā)送到DN2,…第y個數(shù)據(jù)塊通過網(wǎng)絡(luò)發(fā)送到DNy,以上發(fā)送任務(wù)同時進行;該節(jié)點作為DN1,保留數(shù)據(jù)的第I個數(shù)據(jù)塊,同時接收從SN1, SN3,...SNx^1傳來的參與此次重構(gòu)的數(shù)據(jù)的第I個數(shù)據(jù)塊,最后將所有第I個數(shù)據(jù)塊重構(gòu)恢復(fù)得到有效數(shù)據(jù)塊C1,并返回給客戶端。為了使本發(fā)明方法更容易理解,下面結(jié)合圖3所示的實例來說明。圖3為兩個重構(gòu)源節(jié)點和三個目的節(jié)點的情況下,本發(fā)明方法的數(shù)據(jù)流向示意圖。當(dāng)SN1收到重構(gòu)控制命令后,SN1提高重構(gòu)讀請求優(yōu)先級,并暫停對網(wǎng)絡(luò)的正常傳輸,然后從磁盤讀取參與此次重構(gòu)的數(shù)據(jù),并將第I個數(shù)據(jù)塊通過網(wǎng)絡(luò)發(fā)送到DN1,同時將第2個數(shù)據(jù)塊通過網(wǎng)絡(luò)發(fā)送到DN2,同時將第3個數(shù)據(jù)塊通過網(wǎng)絡(luò)發(fā)送到DN3 ;當(dāng)SN2收到重構(gòu)控制命令后,SN2提高重構(gòu)讀請求優(yōu)先級,并暫停對網(wǎng)絡(luò)的正常傳輸,然后從磁盤讀取參與此次重構(gòu)的數(shù)據(jù),并將第I個數(shù)據(jù)塊通過網(wǎng)絡(luò)發(fā)送到DN1,同時將第2個數(shù)據(jù)塊通過網(wǎng)絡(luò)發(fā)送到DN2,同時將第3個數(shù)據(jù)塊通過網(wǎng)絡(luò)發(fā)送到DN3。當(dāng)DN1收到重構(gòu)控制命令后,暫停接收從網(wǎng)絡(luò)傳過來的正常寫數(shù)據(jù),并接收從SN17SN2傳來的參與此次重構(gòu)的數(shù)據(jù)的第I個數(shù)據(jù)塊;當(dāng)DN2收到重構(gòu)控制命令后,暫停接收從網(wǎng)絡(luò)傳過來的正常寫數(shù)據(jù),并接收從SN1, SN2傳來的參與此次重構(gòu)的數(shù)據(jù)的第2個數(shù)據(jù)塊;當(dāng)DN3收到重構(gòu)控制命令后,暫停接收從網(wǎng)絡(luò)傳過來的正常寫數(shù)據(jù),并接收從SN1,SN2傳來的參與此次重構(gòu)的數(shù)據(jù)的第3個數(shù)據(jù)塊。當(dāng)DN1接收到由SN1, SN2傳來的第I個數(shù)據(jù)塊后進行重構(gòu)得到有效數(shù)據(jù)分塊C1 ;當(dāng)DN2接收到由SN1, SN2傳來的第2個數(shù)據(jù)塊后進行重構(gòu)得到有效數(shù)據(jù)分塊C2 ;當(dāng)DN3接收到由SN1, SN2傳來的第3個數(shù)據(jù)塊后進行重構(gòu)得到有效數(shù)據(jù)分塊C3。綜上所述,本發(fā)明的方法具有以下的優(yōu)點:(I)并行處理 來自同源節(jié)點的重構(gòu)所需數(shù)據(jù):通過步驟(3)和步驟(4),采用分布式解碼算法,將來自同源節(jié)點的重構(gòu)所需數(shù)據(jù)分塊,并將不同的塊傳到不同的目的節(jié)點參與重構(gòu),使得重構(gòu)目的節(jié)點能夠并行地接收重構(gòu)所需的數(shù)據(jù),有效提高重構(gòu)帶寬,從而加快重構(gòu)速度。(2)加快讀取參與重構(gòu)數(shù)據(jù)的速度:由于重構(gòu)源節(jié)點在進行重構(gòu)任務(wù)時,正常的工作任務(wù)也需要讀取磁盤步驟,通過(2)步驟提高了重構(gòu)任務(wù)對磁盤讀取請求的優(yōu)先級,從而提高了重構(gòu)源節(jié)點從磁盤讀取參與重構(gòu)的數(shù)據(jù)的速度。(3)充分利用網(wǎng)絡(luò)帶寬:由于在步驟(2)中暫停了重構(gòu)源節(jié)點對網(wǎng)絡(luò)正常的輸出,同時暫停重構(gòu)目的節(jié)點從網(wǎng)絡(luò)接收正常的寫數(shù)據(jù),減少了正常進程對網(wǎng)絡(luò)帶寬的占用,從而提高了參與重構(gòu)的數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸速度。本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種提高基于糾刪碼的存儲集群恢復(fù)性能的方法,其特征在于,包括以下步驟: (1)重構(gòu)控制節(jié)點向重構(gòu)源節(jié)點SN1,SN2,...,SNx發(fā)送重構(gòu)讀請求,同時向重構(gòu)目的節(jié)點DN1, DN2,...,DNy發(fā)送重構(gòu)寫請求,其中X為重構(gòu)源節(jié)點的數(shù)量,y為重構(gòu)目的節(jié)點的數(shù)量; (2)所有的重構(gòu)源節(jié)點SN1,SN2,...,SNx根據(jù)重構(gòu)讀請求執(zhí)行重構(gòu)讀優(yōu)化,同時所有的重構(gòu)目的節(jié)點DN1, DN2,...,DNy根據(jù)重構(gòu)寫請求執(zhí)行重構(gòu)寫優(yōu)化; (3)每個重構(gòu)源節(jié)點SN1,SN2,...,SNx分別從磁盤讀取參與此次重構(gòu)的數(shù)據(jù)data”data2、...、datay,并分別將數(shù)據(jù)分成 y 個數(shù)據(jù)塊(datan, data12, data13, , dataly)、...,...((IataxI,...,(Iataxy); (4)所有的重構(gòu)源節(jié)點SN1,SN2,...,SNx分別將此次參與重構(gòu)的數(shù)據(jù)的y個數(shù)據(jù)塊 (diltilii,d£lt£li2,diltilig,...,(Iiltiliy )、( (ΙΞ^ι,...,d£lt£l2y)...( ( £Ι £Ιχι,( £Ι £Ιχ2,datax3,...,dataxy)通過網(wǎng)絡(luò)同時傳輸?shù)綄?yīng)的重構(gòu)目的節(jié)點DN1, DN2,...,DNy上; (5)每個重構(gòu)目的節(jié)點DN1,DN2,...,DNy分別采用重構(gòu)算法將接收到的來自所有重構(gòu)源節(jié)點 SN1, SN2,..., SNx 的數(shù)據(jù)塊(datan, data21,…dataxl)、Cdata12, data22,…datax2)…Cdataly, data2y,…dataxy)進行重構(gòu),以得到完整有效的數(shù)據(jù)塊C1'Cy ; (6)每一個重構(gòu)目的節(jié)點DN1,DN2,..., DNy分別將重構(gòu)得到的數(shù)據(jù)塊C1X2'返回客戶端。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟(2)具體為,所有的重構(gòu)源節(jié)點SN1,SN2, SNx提高重構(gòu)讀請求的優(yōu)先級,根據(jù)不同的優(yōu)先級設(shè)置讀任務(wù)隊列,將重構(gòu)讀請求在讀任務(wù)隊列中提高至最高優(yōu)先級處,使得重構(gòu)源節(jié)點SN1, SN2, SNx會優(yōu)先執(zhí)行重構(gòu)讀請求,并暫停通過網(wǎng)絡(luò)發(fā)送正常的數(shù)據(jù),當(dāng)本機上的重構(gòu)任務(wù)完成后,所有的重構(gòu)源節(jié)點SN1, SN2,...,SNx恢復(fù)正常工作流程,所有的重構(gòu)目的節(jié)點DN1, DN2,...,DNy暫停通過網(wǎng)絡(luò)接收正常的寫數(shù)據(jù),當(dāng)本機上的重構(gòu)任務(wù)完成后,所有的重構(gòu)目的節(jié)點DN1, DN2,...,DNy恢復(fù)正常的寫流程。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,重構(gòu)的數(shù)據(jù)包括基于糾刪碼的存儲集群并通過糾刪碼算法將原數(shù)據(jù)進行編碼得到的少量冗余數(shù)據(jù)以及原數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,重構(gòu)算法是根據(jù)不同糾刪碼的解碼矩陣,利用該數(shù)據(jù)通過異或操作或查表操作重新計算出不可用數(shù)據(jù)塊。
全文摘要
本發(fā)明公開了一種提高基于糾刪碼的存儲集群恢復(fù)性能的方法,包括重構(gòu)控制節(jié)點向重構(gòu)源節(jié)點發(fā)送重構(gòu)讀請求,同時向重構(gòu)目的節(jié)點發(fā)送重構(gòu)寫請求,所有的重構(gòu)源節(jié)點根據(jù)重構(gòu)讀請求執(zhí)行重構(gòu)讀優(yōu)化,同時所有的重構(gòu)目的節(jié)點根據(jù)重構(gòu)寫請求執(zhí)行重構(gòu)寫優(yōu)化,每個重構(gòu)源節(jié)點分別從磁盤讀取參與此次重構(gòu)的數(shù)據(jù),并分別將數(shù)據(jù)分成多個數(shù)據(jù)塊,所有的重構(gòu)源節(jié)點分別將多個數(shù)據(jù)塊通過網(wǎng)絡(luò)同時傳輸?shù)綄?yīng)的重構(gòu)目的節(jié)點上,每個重構(gòu)目的節(jié)點分別采用重構(gòu)算法將接收到的來自所有重構(gòu)源節(jié)點的數(shù)據(jù)塊進行重構(gòu),每一個重構(gòu)目的節(jié)點分別將重構(gòu)得到的數(shù)據(jù)塊返回客戶端。本發(fā)明能夠解決現(xiàn)有集中式解碼方法中存在的會導(dǎo)致大量額外的數(shù)據(jù)傳輸?shù)膯栴}。
文檔編號H04L29/08GK103209210SQ20131006774
公開日2013年7月17日 申請日期2013年3月4日 優(yōu)先權(quán)日2013年3月4日
發(fā)明者萬勝剛, 曹強, 謝長生, 陳迪, 涂劍洪 申請人:華中科技大學(xué)