跨多個區(qū)的糾刪編碼的制作方法
【專利說明】跨多個區(qū)的糾刪編碼
[0001]背景
[0002]數(shù)據(jù)中心可以使用容錯存儲技術(shù)來實(shí)現(xiàn)專業(yè)且可靠的數(shù)據(jù)存儲。具體地,糾刪編碼技術(shù)可被用于提供降低的存儲開銷。糾刪編碼可以跨存儲節(jié)點(diǎn)(例如盤、服務(wù)器和機(jī)架)來實(shí)現(xiàn)。然而,常規(guī)的糾刪編碼技術(shù)無法容適由于大規(guī)模中斷(例如,建筑物崩塌、數(shù)據(jù)中心燒毀、或?qū)φ麄€區(qū)域的天氣相關(guān)的破壞)而導(dǎo)致的故障。
[0003]概述
[0004]提供本概述以便以簡化的形式介紹以下在詳細(xì)描述中進(jìn)一步描述的一些概念。該
【發(fā)明內(nèi)容】
不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或本質(zhì)特征,也不旨在獨(dú)立地用于幫助確定所要求保護(hù)的主題的范圍。
[0005]本發(fā)明的各實(shí)施例提供了一種用于跨多個存儲區(qū)對數(shù)據(jù)進(jìn)行糾刪編碼的方法和系統(tǒng)。這可以通過將數(shù)據(jù)塊劃分成多個子片段來實(shí)現(xiàn)。多個子片段中的每一者與一個區(qū)相關(guān)聯(lián)。區(qū)包括提供存儲服務(wù)的建筑、數(shù)據(jù)中心和地理區(qū)域。多個重構(gòu)奇偶校驗(yàn)被計算。多個重構(gòu)奇偶校驗(yàn)中的每一者使用來自多個子片段中的至少一個子片段來計算。多個重構(gòu)奇偶校驗(yàn)包括至少一個跨區(qū)奇偶校驗(yàn)??鐓^(qū)奇偶校驗(yàn)提供對數(shù)據(jù)塊的一部分的跨區(qū)重構(gòu)。另夕卜,本發(fā)明的各實(shí)施例提供了一種用于至少部分地基于每一糾刪編碼方案的折衷或各維度(dimens1n)來跨多個區(qū)進(jìn)行糾刪編碼的方法和系統(tǒng)。具體地,維度(諸如成本、性能和可靠性)定義與跨區(qū)的不同糾刪編碼方案相關(guān)聯(lián)的實(shí)現(xiàn)約束。每一糾刪編碼方案指定經(jīng)糾刪編碼數(shù)據(jù)的放置以達(dá)成容錯的特定目標(biāo)。
[0006]附圖簡述
[0007]下面參考附圖詳細(xì)描述本發(fā)明,其中:
[0008]圖1是適用于在實(shí)現(xiàn)本發(fā)明的各實(shí)施例中使用的示例性計算環(huán)境的框圖;
[0009]圖2是其中可以使用本發(fā)明各實(shí)施例的示例性分布存儲系統(tǒng)的框圖;
[0010]圖3是示出根據(jù)本發(fā)明的各實(shí)施例的示例性糾刪編碼方案的示意圖;
[0011]圖4是示出根據(jù)本發(fā)明的各實(shí)施例的示例性糾刪編碼方案的示意圖;
[0012]圖5是示出根據(jù)本發(fā)明的各實(shí)施例的示例性糾刪編碼方案的示意圖;
[0013]圖6是示出根據(jù)本發(fā)明的各實(shí)施例的示例性糾刪編碼方案的示意圖;
[0014]圖7是示出根據(jù)本發(fā)明的各實(shí)施例的比較糾刪編碼方案的各實(shí)現(xiàn)約束的圖表;
[0015]圖8是根據(jù)本發(fā)明的各實(shí)施例的示出用于跨多個區(qū)對數(shù)據(jù)進(jìn)行糾刪編碼的方法的流程圖;以及
[0016]圖9是根據(jù)本發(fā)明的各實(shí)施例的示出用于跨多個區(qū)對數(shù)據(jù)進(jìn)行糾刪編碼的方法的流程圖。
[0017]詳細(xì)描述
[0018]本文中用細(xì)節(jié)來描述本發(fā)明各實(shí)施例的主題以滿足法定要求。然而,該描述本身并非旨在限制本專利的范圍。相反,發(fā)明人已設(shè)想所要求保護(hù)的主題還可結(jié)合其它當(dāng)前或未來技術(shù)以其它方式來實(shí)施,以包括不同的步驟或類似于本文中所描述的步驟的步驟組合。此外,盡管術(shù)語“步驟”和/或“框”可在此處用于指示所采用的方法的不同元素,但除非而且僅當(dāng)明確描述了各個步驟的順序時,該術(shù)語不應(yīng)被解釋為意味著此處公開的各個步驟之中或之間的任何特定順序。
[0019]出于本公開的目的,單詞“包括”(including)具有與單詞“包含” (comprising) —樣廣義的含義。另外,諸如“一(a)”和“一(an)”包括復(fù)數(shù)以及單數(shù),除非另外相反地指明。這樣,例如,“一個特征”的要求在存在一個或多個特征的情況下被滿足。同樣,術(shù)語“或”包括合取、析取及這兩者(a或b由此包括a或b任一,以及a和b)。
[0020]出于下文詳細(xì)討論的目的,參考基于被示意性地描繪為用于三個區(qū)的糾刪編碼方案來跨多個區(qū)對數(shù)據(jù)進(jìn)行糾刪編碼來描述本發(fā)明的各實(shí)施例;然而,本文描繪的三個區(qū)僅僅是示例性的且設(shè)想了多個區(qū)可以與本文描述的糾刪編碼方案一起使用。此外,盡管本發(fā)明的各實(shí)施例可一般引用在本文描述的分布式存儲系統(tǒng)和圖表,但設(shè)想了所描述的技術(shù)可被擴(kuò)展到其他實(shí)現(xiàn)上下文。
[0021]—般而言,容錯指的是系統(tǒng)在其組件中的一些出現(xiàn)故障(或一個或多個故障)的情況下繼續(xù)工作的能力。例如,容錯技術(shù)包括復(fù)制和糾刪編碼。糾刪編碼指的是用來從所存儲的數(shù)據(jù)的故障中恢復(fù)的糾錯算法。數(shù)據(jù)可以用不同類型的存儲服務(wù)存儲在不同類型的存儲硬件中。糾刪編碼可被實(shí)現(xiàn)以向所存儲的數(shù)據(jù)提供容錯。另外,糾刪編碼還可提供降低的存儲開銷。例如,代替復(fù)制數(shù)據(jù)流,數(shù)據(jù)可被分成各片段并與一個或多個奇偶校驗(yàn)相關(guān)聯(lián),且隨后各片段以從剩余片段中重構(gòu)丟失片段的能力來被存儲。如此,糾刪編碼提供硬件、數(shù)據(jù)中心占用的成本節(jié)省以及因不必運(yùn)行附加硬件的功率節(jié)省。
[0022]然而,伴隨跨各區(qū)(例如,數(shù)據(jù)中心、建筑、或地區(qū))對數(shù)據(jù)進(jìn)行糾刪編碼而來的是折衷或維度,如下文更詳細(xì)地討論的。例如,在對數(shù)據(jù)進(jìn)行編碼以及從跨多個存儲區(qū)進(jìn)行糾刪編碼的數(shù)據(jù)的失敗中恢復(fù)數(shù)據(jù)時,成本、性能、以及可靠性具有特定實(shí)現(xiàn)約束。這些折衷可以與不同的糾刪編碼方案相關(guān)聯(lián),尤其是在糾刪編碼針對存儲在不同區(qū)的數(shù)據(jù)執(zhí)行時。
[0023]—般而言,糾刪碼使用特定類型的代碼來對數(shù)據(jù)進(jìn)行編碼。例如,Reed-Solomon是用于對數(shù)據(jù)進(jìn)行糾刪編碼的常規(guī)辦法。Reed-Solomon實(shí)現(xiàn)可包括6個數(shù)據(jù)片段和用于恢復(fù)6個數(shù)據(jù)片段的3個代碼(奇偶校驗(yàn))段。另一類型的糾刪編碼是局部重構(gòu)代碼(LRC)。與Reed-Solomon相比,LRC降低了在重構(gòu)離線的數(shù)據(jù)片段時需要讀取的糾刪編碼片段的數(shù)量,同時將存儲開銷保持得很低。例如,對于6個數(shù)據(jù)片段,LRC生成4個奇偶校驗(yàn)片段,而非3個。兩個局部奇偶校驗(yàn)片段(每一個與6個片段中的3個數(shù)據(jù)片段的不同集合相關(guān)聯(lián))以及針對6個數(shù)據(jù)片段的兩個全局奇偶校驗(yàn)片段。所以,與使用奇偶校驗(yàn)和5個數(shù)據(jù)片段來重構(gòu)失敗的數(shù)據(jù)片段的Reed-Solomon形成對比,LRC使用局部奇偶校驗(yàn)和同一集合中的2個數(shù)據(jù)片段來重構(gòu)失敗的數(shù)據(jù)片段。在平衡存儲開銷對重構(gòu)成本時,LRC相比Reed-Solomon提供了更多的靈活性。對于以上示例,LRC比Reed-Solomon增加了一個奇偶校驗(yàn),同時將重構(gòu)成本減半?;蛘?,LRC可保持與Reed-Solomon相同的重構(gòu)成本,同時顯著地降低了存儲開銷。
[0024]局部重構(gòu)代碼可在形式上定義。(k,l,r)LRC將k個數(shù)據(jù)片段分成1組,其中每一組有k/Ι個數(shù)據(jù)片段。糾刪編碼方案計算每一組內(nèi)的一個局部奇偶校驗(yàn)。另外,它根據(jù)所有數(shù)據(jù)片段來計算r個全局奇偶校驗(yàn)。令η是片段總數(shù)(數(shù)據(jù)+奇偶校驗(yàn))。則η = k+1+r。因而,歸一化的存儲開銷是n/k = l+(l+r)/k0在該示例中,LRC是(6,2,2)LRC,具有存儲成本 1+4/6 = 1.67 倍。
[0025]此外,LRC代碼可以基于所選擇的編碼方程來確定,使得LRC達(dá)到最大可恢復(fù)(MR)屬性,這意味著它可解碼信息理論上可解碼的任何故障模式。例如,參考以上示例,如果3個數(shù)據(jù)片段和與數(shù)據(jù)片段相關(guān)聯(lián)的奇偶校驗(yàn)的集合發(fā)生故障,則該模式是不可解碼的,因?yàn)槠溆鄡蓚€奇偶校驗(yàn)不能解碼3個數(shù)據(jù)片段,因而它在信息理論上是不可解碼的。否則,可能重構(gòu)的故障模式被稱為在信息理論上是可解碼的。LRC可與達(dá)到最大可恢復(fù)屬性的單個編碼方程組相關(guān)聯(lián)。
[0026]本發(fā)明的各實(shí)施例基于跨多個存儲區(qū)對數(shù)據(jù)進(jìn)行糾刪編碼來提供針對大規(guī)模中斷的容錯,同時確??煽啃院涂捎眯?。區(qū)指的是提供存儲服務(wù)的特定的建筑、數(shù)據(jù)中心和地理區(qū)域??缍鄠€區(qū)的糾刪編碼涵蓋在該區(qū)中存儲服務(wù)所定義的任何容錯水平處提供糾刪編碼。如此,跨各區(qū)實(shí)現(xiàn)糾刪編碼創(chuàng)建實(shí)現(xiàn)考慮和機(jī)會的不同集合。具體而言,跨各區(qū)的糾刪編碼可基于唯一性跨區(qū)特性來被優(yōu)化,如各區(qū)之間的帶寬,因?yàn)楦鲄^(qū)之間的帶寬比區(qū)內(nèi)的帶寬稀缺和昂貴得多。同樣,區(qū)故障的概率是相關(guān)因子?;旧?,與存儲節(jié)點(diǎn)相比,整個區(qū)發(fā)生故障的可能性低得多。預(yù)期一區(qū)將發(fā)生故障,或各區(qū)可能離線以便于維護(hù)。這允許各區(qū)被構(gòu)建得比傳統(tǒng)數(shù)據(jù)中心更便宜,從而向存儲服務(wù)提供顯著成本節(jié)省。
[0027]由于涉及跨區(qū)特性,取決于各區(qū)的目標(biāo),各區(qū)在實(shí)現(xiàn)跨區(qū)的數(shù)據(jù)糾刪編碼時引入各種折衷。折衷是指糾刪編碼方案維度,如定義與不同糾刪編碼方案相關(guān)聯(lián)的實(shí)現(xiàn)約束的成本、性能以及可靠性。每一糾刪編碼方案指定經(jīng)糾刪編碼數(shù)據(jù)的放置以達(dá)成容錯的特定目標(biāo)。如此,糾刪編碼可以用包括以下各項的目標(biāo)的組合來實(shí)現(xiàn):開銷/跨區(qū)帶寬消耗的最小化、性能的最大化、同時維持所需耐久性。
[0028]示例性糾刪編碼方案包括可使用LRC以及常規(guī)糾刪編碼方案來提供區(qū)內(nèi)的局部重構(gòu)以及跨區(qū)容錯的第一糾刪編碼方案(例如,XLRC)??赏ㄟ^聯(lián)合選擇區(qū)內(nèi)和跨區(qū)的編碼系數(shù)來提供區(qū)內(nèi)的局部重構(gòu)以及跨區(qū)容錯兩者的第二糾刪編碼方案(例如,BLRC)以及可通過以跨區(qū)網(wǎng)絡(luò)帶寬換取存儲效率來達(dá)到高存儲效率同時提供跨區(qū)容錯的第三糾刪編碼方案。
[0029]三個維度可以與跨區(qū)容錯數(shù)據(jù)存儲相關(guān)聯(lián)。它們包括:成本(例如,開銷/跨區(qū)帶寬消耗的最小化)、性能(例如,性能最大化)、以及可靠性(例如,離線耐久性)。成本是與跨多個區(qū)的分布式存儲系統(tǒng)相關(guān)聯(lián)的度量。分布式存儲系統(tǒng)可包括若干子存儲系統(tǒng),每一個在單個區(qū)內(nèi)。子系統(tǒng)中的每一者可以由跨各區(qū)的網(wǎng)絡(luò)中樞鏈接在一起。就此,總成本可以基于單區(qū)子存儲系統(tǒng)和跨區(qū)網(wǎng)絡(luò)中樞來被確定。單區(qū)子存儲系統(tǒng)可以是存儲開銷的函數(shù)一一存儲指定量的用戶數(shù)據(jù)所需的物理存儲空間的總量??鐓^(qū)網(wǎng)絡(luò)中樞可以是要被供應(yīng)以支持存儲系統(tǒng)的網(wǎng)絡(luò)帶寬量的函數(shù)。
[0030]性能度量可以指從不同類型的故障場景恢復(fù)的能力。不同類型的故障對系統(tǒng)性能具有不同影響。每一類型的故障可被不同地處理。例如,在區(qū)內(nèi)的存儲節(jié)點(diǎn)或錯誤域發(fā)生故障時,該系統(tǒng)以降級模式來運(yùn)行。然而,在整個區(qū)發(fā)生故障時,該系統(tǒng)以災(zāi)難模式運(yùn)行。為了表征性能,例如,在降級模式中,降級的讀取成本(即,從發(fā)生故障的存儲節(jié)點(diǎn)讀出一個單位的用戶數(shù)據(jù)所需的盤I/O的數(shù)量)可被定義。類似地,災(zāi)難讀取成本可被定義為讀取處于故障區(qū)中的一個單位的用戶數(shù)據(jù)所需的盤I/O的數(shù)量。盤I/O被設(shè)想為包括用于傳達(dá)數(shù)據(jù)的網(wǎng)絡(luò)傳輸成本。此外,可靠性與數(shù)據(jù)存儲系統(tǒng)可容忍的故障類型和故障量相關(guān)聯(lián)。因而,可靠性基于在一個或多個機(jī)器發(fā)生故障或變得不可用之后重構(gòu)數(shù)據(jù)的能力。例如,可靠性可基于平均數(shù)據(jù)丟失時間(MTTDL)來評估。
[0031]特定編碼方案可包括異或-LRC或XLRC方案,采用兩種類型的糾刪碼。每一區(qū)內(nèi)的LRC以及跨所有區(qū)的異或(XOR)。LRC向單個區(qū)內(nèi)的任意(r+Ι)且上至(r+Ι)個故障提供數(shù)據(jù)片段的恢復(fù),而無需跨區(qū)恢復(fù)。使用三區(qū)部署作為示例,對于XLRC,數(shù)據(jù)塊在兩個區(qū)之間被均勻地分成子片段。在每一區(qū)內(nèi),子片段由多個局部奇偶校驗(yàn)和區(qū)奇偶校驗(yàn)來保護(hù)。局部奇偶校驗(yàn)是從每一區(qū)中的子片段生成的且允許該區(qū)內(nèi)的高效故障重構(gòu)。區(qū)奇偶校驗(yàn)是從每一區(qū)中的所有子片段生成的且提供最大容錯。如所討論的,最大容錯包括使用特別確定的編碼方程達(dá)到最大可恢復(fù)屬