帶有自適應(yīng)糾刪碼生成的存儲(chǔ)系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本公開內(nèi)容涉及數(shù)據(jù)存儲(chǔ)領(lǐng)域,并且具體而言,涉及與用于橫向擴(kuò)展存儲(chǔ)系統(tǒng)的糾刪碼的自適應(yīng)生成相關(guān)聯(lián)的設(shè)備、方法和存儲(chǔ)介質(zhì)。
【背景技術(shù)】
[0002]本文中提供的背景描述是為了概括介紹公開內(nèi)容的上下文。除非本文中另有指示,否則,此部分中描述的材料不是本申請(qǐng)的權(quán)利要求的現(xiàn)有技術(shù),并且未由于包含在本部分中而被承認(rèn)是現(xiàn)有技術(shù)。
[0003]隨著在集成電路、計(jì)算、連網(wǎng)和其它有關(guān)技術(shù)方面的發(fā)展,構(gòu)建有可擴(kuò)展數(shù)量的計(jì)算機(jī)存儲(chǔ)節(jié)點(diǎn)的存儲(chǔ)系統(tǒng)(也稱為橫向擴(kuò)展存儲(chǔ)系統(tǒng))已變得越來越普遍。為實(shí)現(xiàn)數(shù)據(jù)可靠性,如從數(shù)據(jù)錯(cuò)誤中恢復(fù),經(jīng)常采用將A個(gè)符號(hào)變換成#符號(hào)的糾刪碼以允許從個(gè)符號(hào)的子集恢復(fù)々個(gè)符號(hào),λ大于k。隨著普遍性增大,有效生成糾刪碼的能力已變成極大關(guān)注的主題。
【附圖說明】
[0004]結(jié)合附圖,通過下面的詳細(xì)描述,將容易理解實(shí)施例。為有助于此描述,類似的標(biāo)號(hào)指示類型的結(jié)構(gòu)元素。在附圖的圖形中,實(shí)施例以示例方式而不是限制方式示出。
[0005]圖1示出根據(jù)各種實(shí)施例的與本公開內(nèi)容的教導(dǎo)結(jié)合的存儲(chǔ)系統(tǒng)的組件視圖。
[0006]圖2示出根據(jù)各種實(shí)施例的與本公開內(nèi)容的教導(dǎo)結(jié)合的用于存儲(chǔ)數(shù)據(jù)的方法。
[0007]圖3-4示出根據(jù)各種實(shí)施例的用于為要存儲(chǔ)的數(shù)據(jù)生成糾刪碼的方法。
[0008]圖5示出根據(jù)各種實(shí)施例的適合用于實(shí)踐公開內(nèi)容的示例計(jì)算系統(tǒng)。
[0009]圖6示出根據(jù)各種實(shí)施例的帶有配置成允許設(shè)備實(shí)踐本公開內(nèi)容的指令的示例存儲(chǔ)介質(zhì)。
【具體實(shí)施方式】
[0010]本文公開了與生成用于要在存儲(chǔ)系統(tǒng)中存儲(chǔ)的數(shù)據(jù)的糾刪碼(erasure code)相關(guān)聯(lián)的設(shè)備、方法和存儲(chǔ)介質(zhì)。在實(shí)施例中,方法可包括由存儲(chǔ)系統(tǒng)至少部分基于存儲(chǔ)系統(tǒng)的硬件配置,啟動(dòng)糾刪碼生成模塊的多個(gè)實(shí)例。另外,方法可還包括由存儲(chǔ)系統(tǒng)至少部分基于存儲(chǔ)系統(tǒng)的當(dāng)前系統(tǒng)負(fù)載,設(shè)置糾刪碼生成模塊的多個(gè)實(shí)例的操作參數(shù)。此外,方法可包括由存儲(chǔ)系統(tǒng)操作糾刪碼生成模塊的多個(gè)實(shí)例以根據(jù)設(shè)置的操作參數(shù),生成用于要在存儲(chǔ)系統(tǒng)中存儲(chǔ)的數(shù)據(jù)的糾刪碼。
[0011]在實(shí)施例中,配置成實(shí)踐上述方法及其變型的存儲(chǔ)系統(tǒng)可包括糾刪碼生成模塊和分派引擎。在實(shí)施例中,設(shè)備可還包括系統(tǒng)監(jiān)視器和/或執(zhí)行監(jiān)視器。在實(shí)施例中,糾刪碼生成模塊的實(shí)例可協(xié)作以將第一數(shù)據(jù)塊復(fù)制到存儲(chǔ)系統(tǒng)的第一、第二和第三計(jì)算機(jī)存儲(chǔ)節(jié)點(diǎn),將第二數(shù)據(jù)塊復(fù)制到存儲(chǔ)系統(tǒng)的第一、第四和第五計(jì)算機(jī)存儲(chǔ)節(jié)點(diǎn),以及將第三數(shù)據(jù)塊復(fù)制到存儲(chǔ)系統(tǒng)的第一、第三和第四計(jì)算機(jī)存儲(chǔ)節(jié)點(diǎn)。糾刪碼生成模塊的實(shí)例隨后可協(xié)作以在第一計(jì)算機(jī)存儲(chǔ)節(jié)點(diǎn)上生成第一、第二和第三數(shù)據(jù)塊的第一和第二奇偶性。
[0012]下面將參照形成本文一部分的附圖,進(jìn)一步更詳細(xì)描述這些和其它方面。圖形中類似的標(biāo)號(hào)標(biāo)示所有圖形中的類似部分,并且其中作為說明,示出了可實(shí)踐的實(shí)施例。要理解的是,在不脫離本公開內(nèi)容的范圍的情況下可利用其它實(shí)施例,并且可進(jìn)行結(jié)構(gòu)或邏輯更改。因此,下面的詳細(xì)描述不可從限制的意義理解,并且實(shí)施例的范圍只由所附權(quán)利要求及其等同物定義。
[0013]各種操作可又以對(duì)理解所要求保護(hù)的主題最有幫助的方式描述為多個(gè)離散動(dòng)作或操作。然而,描述的順序不應(yīng)理解為暗示這些操作一定與順序相關(guān)。具體而言,可不以介紹的順序執(zhí)行這些操作。所述操作可以與所述實(shí)施例不同的順序執(zhí)行??蓤?zhí)行各種另外的操作,和/或可在另外的實(shí)施例中忽略所述操作。
[0014]為便于理解本公開內(nèi)容,短語“A和/或B”表示⑷、⑶或(A和B)。為便于理解本公開內(nèi)容,短語“A、B和/或C”表示(A)、⑶、(0、(厶和8)、(厶和0、化和0或(八、8和C)。
[0015]描述可使用短語“在一實(shí)施例中”或“在實(shí)施例中”,這均可指一個(gè)或多個(gè)相同或不同的實(shí)施例。此外,如相對(duì)于本公開內(nèi)容的實(shí)施例使用的術(shù)語“包括”、“具有”及諸如此類同義。
[0016]在包括權(quán)利要求的下文中使用時(shí),術(shù)語“模塊”可指以下所述、以下所述的一部分或包括以下所述:專用集成電路(“ASIC”)、電子電路、執(zhí)行一個(gè)或多個(gè)軟件或固件程序的處理器(共享、專用或群組)和/或存儲(chǔ)器(共享、專用或群組)、組合邏輯電路和/或提供所需功能性的其它適合組件。術(shù)語“封閉式題注"要包括傳統(tǒng)封閉式題注和/或子標(biāo)題。
[0017]現(xiàn)在參照?qǐng)D1,圖中示出根據(jù)各種實(shí)施例的與本公開內(nèi)容的教導(dǎo)結(jié)合的存儲(chǔ)系統(tǒng)的組件視圖。如圖所示,在實(shí)施例中,存儲(chǔ)系統(tǒng)100可包括連網(wǎng)在一起的多個(gè)計(jì)算機(jī)存儲(chǔ)節(jié)點(diǎn)102。每個(gè)計(jì)算機(jī)存儲(chǔ)節(jié)點(diǎn)102可具有一個(gè)或更多個(gè)微處理器104、一個(gè)或更多個(gè)高速緩存106、一個(gè)或更多個(gè)存儲(chǔ)器單元108及一個(gè)或更多個(gè)存儲(chǔ)單元110。在實(shí)施例中,一個(gè)或更多個(gè)微處理器104可包括多個(gè)處理器核。此外,存儲(chǔ)系統(tǒng)100可包括配置成生成用于在計(jì)算機(jī)存儲(chǔ)節(jié)點(diǎn)102的存儲(chǔ)區(qū)中存儲(chǔ)的數(shù)據(jù)的糾刪碼的糾刪碼生成模塊120。另外,存儲(chǔ)系統(tǒng)100可包括選擇性由系統(tǒng)負(fù)載監(jiān)視器114、執(zhí)行監(jiān)視器116和/或性能數(shù)據(jù)庫118輔助的分派引擎112,以允許糾刪碼生成模塊120的可變數(shù)量的實(shí)例自適應(yīng)啟動(dòng)和/或參數(shù)化,以生成用于在存儲(chǔ)單元110中存儲(chǔ)的數(shù)據(jù)的糾刪碼。在實(shí)施例中,糾刪碼生成模塊120的每個(gè)實(shí)例可在其自己的線程中執(zhí)行。在實(shí)施例中,糾刪碼生成模塊120的可變數(shù)量的實(shí)例可至少部分基于基礎(chǔ)硬件配置和/或存儲(chǔ)系統(tǒng)120的當(dāng)前系統(tǒng)負(fù)載,自適應(yīng)啟動(dòng)和參數(shù)化(例如,不同緩沖區(qū)大小、不同糾刪碼大小)。這些是存儲(chǔ)系統(tǒng)100的其它方面,將在下面更詳細(xì)描述。
[0018]在實(shí)施例中,如更早所述,分派引擎112可配置成至少部分基于為各種硬件配置預(yù)確定和存儲(chǔ)的優(yōu)化信息,自適應(yīng)啟動(dòng)136糾刪碼生成模塊120的多個(gè)實(shí)例/線程,以生成用于在存儲(chǔ)單元110中存儲(chǔ)的數(shù)據(jù)的糾刪碼。在實(shí)施例中,糾刪碼生成模塊120可配置成生成用于要存儲(chǔ)的數(shù)據(jù)的糾刪碼,將要存儲(chǔ)的k個(gè)數(shù)據(jù)符號(hào)變換成η個(gè)數(shù)據(jù)符號(hào),以允許從η個(gè)數(shù)據(jù)符號(hào)的子集恢復(fù)k個(gè)數(shù)據(jù)符號(hào),η大于k。下面將參照?qǐng)D3-4進(jìn)一步描述糾刪碼生成模塊120的示例實(shí)施例。
[0019]在實(shí)施例中,硬件配置信息可包括但不限于處理器類型/速度、存儲(chǔ)器容量、輸入/輸出(I/o)信道能力、數(shù)據(jù)塊大小等等。在實(shí)施例中,分派引擎112可配置成查詢存儲(chǔ)系統(tǒng)100的各種組件以收集存儲(chǔ)系統(tǒng)100的硬件配置數(shù)據(jù)132。在其它實(shí)施例中,存儲(chǔ)系統(tǒng)100的硬件配置數(shù)據(jù)132可預(yù)收集和存儲(chǔ)在諸如存儲(chǔ)系統(tǒng)100的只讀存儲(chǔ)器(ROM)等預(yù)留存儲(chǔ)區(qū)中。
[0020]在實(shí)施例中,用于各種硬件配置的優(yōu)化信息可由基準(zhǔn)引擎140預(yù)確定,并且存儲(chǔ)在性能數(shù)據(jù)庫118中?;鶞?zhǔn)引擎140可配置成預(yù)執(zhí)行用于各種硬件配置的基準(zhǔn)測(cè)試。
[0021]在實(shí)施例中,系統(tǒng)負(fù)載監(jiān)視器114可配置成監(jiān)視存儲(chǔ)系統(tǒng)100的當(dāng)前系統(tǒng)負(fù)載,并且為分派引擎112提供當(dāng)前系統(tǒng)負(fù)載數(shù)據(jù)134,以允許分派引擎112自適應(yīng)參數(shù)化糾刪碼生成模塊120的實(shí)例/線程。系統(tǒng)負(fù)載數(shù)據(jù)134的示例可包括但不限于處理器使用、存儲(chǔ)器使用、輸入/輸出(I/O)信道使用、高速緩存未命中、中斷量等等。糾刪碼生成模塊120的示例參數(shù)可包括但不限于不同緩沖區(qū)大小、不同糾刪碼大小,如不同(k,n-k)組合。
[0022]在實(shí)施例中,執(zhí)行監(jiān)視器116可配置成監(jiān)視糾刪碼生成模塊120的實(shí)例/線程的執(zhí)行,并且為分派引擎112提供關(guān)于分派引擎112采用的當(dāng)前和各種優(yōu)化啟動(dòng)和參數(shù)化的反饋。在實(shí)施例中,執(zhí)行監(jiān)視器116可在性能數(shù)據(jù)庫118中記錄其觀察138,并且經(jīng)性能數(shù)據(jù)庫118提供反饋到分派引擎112。觀察的示例可包括但不限于糾刪碼生成速率、在某個(gè)時(shí)間期內(nèi)忙、暫?;蜷e置線程的數(shù)量等等。
[0023]在實(shí)施例中,微處理器104、高速緩存106、存儲(chǔ)器108和存儲(chǔ)單元110可以是本領(lǐng)域熟知的范圍廣泛的這些元件的任何一個(gè)元件。分派引擎112、系統(tǒng)負(fù)載監(jiān)視器114、執(zhí)行監(jiān)視器116、糾刪碼生成模塊120及基準(zhǔn)引擎140可通過配置成將高級(jí)編程指令編譯成微處理器104的指令集體系的指令的編譯器,在任何高級(jí)編程指令中實(shí)現(xiàn)。在實(shí)施例中,一個(gè)或更多個(gè)分派引擎112、系統(tǒng)負(fù)載監(jiān)視器114、執(zhí)行監(jiān)視器116和/或基準(zhǔn)引擎140可部分或完全在硬件中實(shí)現(xiàn)。
[0024]現(xiàn)在參照?qǐng)D2,圖中示出根據(jù)各種實(shí)施例的與本公開內(nèi)容的教導(dǎo)結(jié)合的用于存儲(chǔ)數(shù)據(jù)的方法。如圖所示,用于存儲(chǔ)數(shù)據(jù)方法200可從框202開始。在框202,在上電或重置時(shí),可例如由更早描述的分派引擎112獲得存儲(chǔ)系統(tǒng)的系統(tǒng)硬件配置信息。從框202,方法200可繼續(xù)到框204。在框204,可例如由更早所述分派引擎112至少部分基于配置的獲得的系統(tǒng)硬件,啟動(dòng)糾刪碼生成模塊120的可變數(shù)量的實(shí)例/線程,以生成用于要在存儲(chǔ)系統(tǒng)中存儲(chǔ)的數(shù)據(jù)的糾刪碼。
[0025]從框204,方法200可繼續(xù)到框206。在框206,可例如由更早所述分派引擎112獲得存儲(chǔ)系統(tǒng)的系統(tǒng)負(fù)載信息。從框206,方法200可繼續(xù)到框208。在框208,可例如由更早所述分派引擎112至少部分基于獲得的當(dāng)前系統(tǒng)