本發(fā)明涉及數(shù)據(jù)存儲(chǔ)領(lǐng)域,尤其涉及一種用于棋盤raid的方法和系統(tǒng)。
背景技術(shù):
為了防止存儲(chǔ)系統(tǒng)中數(shù)據(jù)的潛在丟失,實(shí)現(xiàn)復(fù)制方案通常是有利的。當(dāng)前的復(fù)制方案只能在存儲(chǔ)系統(tǒng)內(nèi)的數(shù)據(jù)無法被讀取之前維持有限數(shù)量的錯(cuò)誤。
技術(shù)實(shí)現(xiàn)要素:
為了至少解決上述技術(shù)問題之一,本發(fā)明提出一種用于存儲(chǔ)數(shù)據(jù)的方法,包括:接收寫數(shù)據(jù)的請求;響應(yīng)于請求:在持久性儲(chǔ)存器中選擇一組空閑物理位置;確定所述一組空閑物理位置的合計(jì)故障率;做出合計(jì)故障率小于用于持久性儲(chǔ)存器的故障率閾值的第一確定;以及基于第一確定:利用數(shù)據(jù)的至少一部分計(jì)算奇偶校驗(yàn)值;及將數(shù)據(jù)和奇偶校驗(yàn)值寫入到所述一組空閑物理位置。
本發(fā)明還提出一種系統(tǒng),包括:存儲(chǔ)陣列,包括多個(gè)存儲(chǔ)設(shè)備(sd);及控制器,可操作地連接到存儲(chǔ)陣列并且配置為:接收寫數(shù)據(jù)的請求;響應(yīng)于請求:在所述多個(gè)sd中選擇一組空閑物理位置;確定所述一組空閑物理位置的合計(jì)故障率;做出合計(jì)故障率小于用于存儲(chǔ)陣列的故障率閾值的第一確定;基于第一確定:利用數(shù)據(jù)的至少一部分計(jì)算奇偶校驗(yàn)值;及將數(shù)據(jù)和奇偶校驗(yàn)值寫入到所述一組空閑物理位置。
本發(fā)明還提出一種非臨時(shí)性計(jì)算機(jī)可讀介質(zhì),包括指令,當(dāng)指令被至少一個(gè)處理器執(zhí)行時(shí),執(zhí)行方法,該方法包括:接收寫數(shù)據(jù)的請求;響應(yīng)于請求:在持久性儲(chǔ)存器中選擇一組空閑物理位置;確定所述一組空閑物理位置的合計(jì)故障率;做出合計(jì)故障率小于用于持久性儲(chǔ)存器的故障率閾值的第一確定;基于第一確定:利用數(shù)據(jù)的至少一部分計(jì)算奇偶校驗(yàn)值;及將數(shù)據(jù)和奇偶校驗(yàn)值寫入到所述一組空閑物理位置。
本發(fā)明還提出另一種用于存儲(chǔ)數(shù)據(jù)的方法,包括:接收寫數(shù)據(jù)的請求;響應(yīng)于請求:從一組一個(gè)或多個(gè)預(yù)定的條帶中選擇條帶,條帶包括持久性儲(chǔ)存器中的第一組空閑物理位置,其中條帶與合計(jì)故障率相關(guān)聯(lián),并且其中合計(jì)故障率低于用于持久性儲(chǔ)存器的故障率閾值;利用數(shù)據(jù)的至少一部分計(jì)算奇偶校驗(yàn)值;及將數(shù)據(jù)和奇偶校驗(yàn)值寫入到第一組空閑物理位置。
附圖說明
圖1示出了根據(jù)本技術(shù)的一種實(shí)施例的系統(tǒng);
圖2示出了根據(jù)本技術(shù)的一種實(shí)施例的數(shù)據(jù)結(jié)構(gòu);
圖3示出了根據(jù)本技術(shù)的一種或多種實(shí)施例的用于實(shí)現(xiàn)raid故障率閾值確定的流程圖;
圖4示出了根據(jù)本技術(shù)的一種或多種實(shí)施例的用于實(shí)現(xiàn)raid寫操作的流程圖;
圖5a-5d示出了根據(jù)本技術(shù)的一種或多種實(shí)施例的例子。
具體實(shí)施方式
現(xiàn)在將參考附圖詳細(xì)描述本技術(shù)的具體實(shí)施例。在以下對本技術(shù)的實(shí)施例的詳細(xì)描述中,闡述了各種具體細(xì)節(jié),以便提供對本技術(shù)的更透徹理解。但是,對本領(lǐng)域普通技術(shù)人員顯而易見的是,本技術(shù)沒有這些具體細(xì)節(jié)也可以被實(shí)踐。在其它情況下,眾所周知的特征沒有被詳細(xì)描述,以避免不必要地使描述復(fù)雜化。
在以下圖1-5d的描述中,在本技術(shù)的各種實(shí)施例中關(guān)于圖所描述的任何部件,可以等效于關(guān)于任何其它圖所描述的一個(gè)或多個(gè)相同名稱的部件。為簡潔起見,這些部件的描述將不對每個(gè)圖進(jìn)行重復(fù)。因此,每個(gè)圖的部件的每種實(shí)施例都通過引入被結(jié)合并且被假定為可選地存在于具有一個(gè)或多個(gè)相同名稱的部件的每個(gè)其它圖中。此外,根據(jù)本技術(shù)的各種實(shí)施例,圖中的部件的任何描述應(yīng)當(dāng)被解釋為可以作為關(guān)于在任何其它圖中對應(yīng)的相同名稱部件所描述的實(shí)施例的附加、與其結(jié)合、或者代替其來實(shí)現(xiàn)的可選實(shí)施例。
一般而言,本技術(shù)的實(shí)施例涉及利用raid方案在存儲(chǔ)陣列中存儲(chǔ)數(shù)據(jù)。更具體而言,raid方案使用關(guān)于存儲(chǔ)裝置的故障率的信息,以便選擇其中要存儲(chǔ)數(shù)據(jù)的各個(gè)存儲(chǔ)裝置上的物理位置。
為了本技術(shù)的目的,如本文所使用的術(shù)語“raid”指“獨(dú)立磁盤冗余陣列”。雖然“raid”指任何獨(dú)立磁盤陣列,但是本技術(shù)的實(shí)施例可以利用任何類型的持久性存儲(chǔ)裝置來實(shí)現(xiàn)。
圖1示出了根據(jù)本技術(shù)的一種實(shí)施例的系統(tǒng)。如在圖1中所示,系統(tǒng)包括一個(gè)或多個(gè)客戶端(100a,100m)、raid控制器(104)、存儲(chǔ)器(106)、可選地,現(xiàn)場可編程門陣列(fpga)(102)、以及存儲(chǔ)陣列(108)。這些部件中的每一個(gè)在下面進(jìn)行描述。
在本技術(shù)的一種實(shí)施例中,客戶端(100a,100m)是任何系統(tǒng)或在包括向raid控制器(104)發(fā)出讀請求或?qū)懻埱蟮墓δ艿南到y(tǒng)上執(zhí)行的過程。在本技術(shù)的一種實(shí)施例中,客戶端(100a,100m)的每個(gè)可以包括處理器(未示出)、存儲(chǔ)器(未示出)、以及持久性儲(chǔ)存器(未示出)。在本技術(shù)的一種實(shí)施例中,raid控制器(104)被配置為實(shí)現(xiàn)raid方案,其包括以與圖2-5d中所描述的實(shí)施例一致的方式將數(shù)據(jù)寫入到存儲(chǔ)陣列(108)。此外,raid控制器包括從存儲(chǔ)陣列(108)讀取數(shù)據(jù)(包括重建數(shù)據(jù))的功能。在本技術(shù)的一種實(shí)施例中,raid控制器(104)包括配置為執(zhí)行指令以實(shí)現(xiàn)本技術(shù)的一種或多種實(shí)施例的處理器,其中指令被存儲(chǔ)在位于或可操作地連接到raid控制器(104)的非臨時(shí)性計(jì)算機(jī)可讀介質(zhì)(未示出)上??商娲?,raid控制器(104)可以利用硬件來實(shí)現(xiàn)。本領(lǐng)域技術(shù)人員將理解,raid控制器(104)可以利用軟件和/或硬件的任意組合來實(shí)現(xiàn)。
在本技術(shù)的一種實(shí)施例中,raid控制器(104)可操作地連接到存儲(chǔ)器(106)。存儲(chǔ)器(106)可以是任何易失性存儲(chǔ)器,包括但不限于,動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、同步dram、sdrsdram和ddrsdram。在本技術(shù)的一種實(shí)施例中,存儲(chǔ)器(106)被配置為在各種數(shù)據(jù)(包括奇偶校驗(yàn)數(shù)據(jù))被存儲(chǔ)在存儲(chǔ)陣列中之前臨時(shí)存儲(chǔ)這些數(shù)據(jù)。
在本技術(shù)的一種實(shí)施例中,fpga(102)(如果存在的話)包括為了在存儲(chǔ)陣列(108)中存儲(chǔ)數(shù)據(jù)的目的計(jì)算奇偶校驗(yàn)值(例如,p奇偶校驗(yàn)值,q奇偶校驗(yàn)值)的功能和/或執(zhí)行恢復(fù)利用raid方案存儲(chǔ)的損壞的數(shù)據(jù)所需的各種計(jì)算的功能。根據(jù)本技術(shù)的一種或多種實(shí)施例,raid控制器(104)可以使用fpga(102)來卸載各種數(shù)據(jù)的處理。
在本技術(shù)的一種實(shí)施例中,存儲(chǔ)陣列(108)包括一個(gè)或多個(gè)存儲(chǔ)裝置(sdd)。每個(gè)存儲(chǔ)裝置包括持久性存儲(chǔ)介質(zhì)。存儲(chǔ)裝置的例子包括,但不限于,磁存儲(chǔ)器裝置、光存儲(chǔ)器裝置、相變存儲(chǔ)器裝置、固態(tài)存儲(chǔ)器裝置、帶驅(qū)動(dòng)器、任何其它合適類型的持久性存儲(chǔ)器裝置、或其任意組合。
本領(lǐng)域技術(shù)人員將理解,雖然圖1示出了fpga,但是本技術(shù)可以在沒有fpga的情況下實(shí)現(xiàn)。此外,本領(lǐng)域技術(shù)人員將理解,在不脫離本技術(shù)的情況下,其它部件可以代替fpga來使用。例如,本技術(shù)可以利用(一個(gè)或多個(gè))專用集成電路(asic)、(一個(gè)或多個(gè))圖形處理單元(gpu)、(一個(gè)或多個(gè))通用處理器、能夠?yàn)榱嗽诖鎯?chǔ)陣列中存儲(chǔ)數(shù)據(jù)的目的計(jì)算奇偶校驗(yàn)值和/或執(zhí)行恢復(fù)利用raid方案存儲(chǔ)的損壞數(shù)據(jù)所需的各種計(jì)算的任何其它硬件裝置、包括配置為為了在存儲(chǔ)陣列(108)中存儲(chǔ)數(shù)據(jù)的目的計(jì)算奇偶校驗(yàn)值和/或執(zhí)行恢復(fù)利用raid方案存儲(chǔ)的損壞數(shù)據(jù)所需的各種計(jì)算的硬件、固件和/或軟件的組合的任何裝置、或其任意組合。
本領(lǐng)域技術(shù)人員將理解,本技術(shù)不限于在圖1中示出的構(gòu)造。
圖2示出了系統(tǒng)中各種部件之間的關(guān)系。在本技術(shù)的一種實(shí)施例中,raid控制器(104)可以維護(hù)數(shù)據(jù)結(jié)構(gòu)來跟蹤下面關(guān)系中的一個(gè)或多個(gè)關(guān)系。
在本技術(shù)的一種或多種實(shí)施例中,存儲(chǔ)陣列中的每個(gè)物理位置(204)與邏輯地址(200)和物理地址(202)相關(guān)聯(lián)。此外,對于每個(gè)物理地址(202),raid控制器可以跟蹤以下信息:(i)狀態(tài)(206),其指示塊是空閑塊還是占用塊;(ii)條帶(208)從屬關(guān)系,即,物理位置是否是條帶的一部分(參見例如,圖5a-5d),并且如果是,是存儲(chǔ)陣列中的哪個(gè)條帶(208);(iii)個(gè)體故障率(210),其指示在該物理位置處發(fā)生讀或?qū)懝收系目赡苄?。此外,raid控制器還可以為條帶跟蹤合計(jì)故障率(212),它是特定條帶(208)中每個(gè)物理位置(204)的個(gè)體故障率(210)的合計(jì)。
在本技術(shù)的一種實(shí)施例中,個(gè)體故障率(210)可以由raid控制器來計(jì)算。可替代地,raid控制器可以從外部源獲得個(gè)體故障率(210)。在本技術(shù)的另一種實(shí)施例中,給定物理位置的個(gè)體故障率(210)可以是已在特定物理位置上執(zhí)行的編程/擦除(p/e)周期的數(shù)量的函數(shù)。在這種情況下,raid控制器可以為存儲(chǔ)陣列中的每個(gè)物理位置跟蹤p/e周期(例如,作為p/e周期值跟蹤)并且然后利用該信息為每個(gè)物理位置計(jì)算個(gè)體故障率(210)。
p/e周期值可以表示:(i)已在由物理地址限定的物理位置上執(zhí)行的p/e周期的數(shù)量或(ii)p/e周期范圍(例如,5,000-9,999個(gè)p/e周期),其中已在由物理地址(202)限定的物理位置(204)上執(zhí)行的p/e周期的數(shù)量在p/e周期范圍之內(nèi)。在本技術(shù)的一種實(shí)施例中,p/e周期是寫數(shù)據(jù)到擦除塊中的一個(gè)或多個(gè)頁面(即,對于擦除操作最小可尋址的單元,通常,一組多個(gè)頁面)和以任何次序擦除那一塊。在本技術(shù)的一種實(shí)施例中,物理位置(204)對應(yīng)于頁面。p/e周期值可以每組物理位置中每物理位置被保存,或者和/或以任何其它粒度級別被保存。在本技術(shù)的一種實(shí)施例中,p/e周期值可以基于每頁面、基于每塊、基于每組塊、和/或以任何其它粒度級別被存儲(chǔ)。raid控制器包括當(dāng)數(shù)據(jù)被寫入到存儲(chǔ)陣列中的物理位置(和/或從中擦除)時(shí),適當(dāng)?shù)馗聀/e周期值的功能。
圖3-4示出了根據(jù)本技術(shù)的一種或多種實(shí)施例的流程圖。更具體而言,圖3-4示出了根據(jù)本技術(shù)的一種或多種實(shí)施例的用于在存儲(chǔ)陣列中存儲(chǔ)數(shù)據(jù)的方法。雖然流程圖中的各個(gè)步驟被順序地呈現(xiàn)和描述,但是普通技術(shù)人員將理解,這些步驟中的一些或全部可以以不同的次序執(zhí)行、可以被組合或省略、并且步驟中的一些或全部可以被并行地執(zhí)行。在本技術(shù)的一種實(shí)施例中,圖3-4中示出的方法可以被并行地執(zhí)行。
圖3示出了根據(jù)本技術(shù)的一種或多種實(shí)施例的用于確定故障率閾值確定的流程圖。在步驟302中,raid控制器獲得關(guān)于存儲(chǔ)陣列的信息。具體而言,raid控制器可以獲得關(guān)于存儲(chǔ)陣列中盤或ssd的數(shù)量、條帶的寬度(例如,與每個(gè)raid條帶相關(guān)聯(lián)的物理位置的數(shù)量)、被實(shí)現(xiàn)的raid方案的類型(例如,raid4,raid5等)的信息。在步驟304中,獲得存儲(chǔ)陣列中的每個(gè)盤和/或ssd的個(gè)體故障率。個(gè)體故障率可以以上述的方式來確定。
在步驟306中,raid控制器基于在步驟304中獲得的個(gè)體故障率數(shù)據(jù)確定故障率閾值。在本技術(shù)的一種實(shí)施例中,故障率閾值被確定為,使得具有小于或等于故障率閾值的合計(jì)故障率的足夠數(shù)量的條帶可以被存儲(chǔ)在存儲(chǔ)陣列中。例如,如果故障率閾值被設(shè)置為低于用于存儲(chǔ)陣列中的物理位置的平均個(gè)體故障率,則只有有限數(shù)量的物理位置可以被使用來生成具有小于或等于故障率閾值的合計(jì)故障率的條帶。這會(huì)導(dǎo)致存儲(chǔ)陣列的低效使用??商娲?,如果故障率閾值被設(shè)置為高于存儲(chǔ)陣列中的物理位置的平均個(gè)體故障率,則具有小于或等于故障率閾值的合計(jì)故障率的大量條帶可以被存儲(chǔ)在存儲(chǔ)陣列中。雖然這會(huì)導(dǎo)致存儲(chǔ)陣列的更高效使用,但是這也會(huì)導(dǎo)致在存儲(chǔ)陣列中具有寬廣范圍的合計(jì)故障率閾值的條帶。
在本技術(shù)的一種實(shí)施例中,故障率閾值利用關(guān)于在步驟302和304中的信息來實(shí)驗(yàn)性地確定??商娲?,用于確定存儲(chǔ)陣列的故障率閾值的模型可以由raid控制器來實(shí)現(xiàn),其中模型采用在步驟302和304中獲得的信息作為輸入,并且輸出故障率閾值。
在本技術(shù)的一種實(shí)施例中,raid控制器可以采用個(gè)體故障率(在步驟304中獲得)的平均值,并且確定可接受的與平均值的偏差??山邮艿钠羁梢允牵?,平均值的5%-10%。本領(lǐng)域技術(shù)人員將理解,可接受的偏差可以基于系統(tǒng)的負(fù)載、數(shù)據(jù)的關(guān)鍵性、或由管理員或其他第三方傳送到raid控制器的其它配置文件信息,覆蓋可變的范圍。raid控制器可以使用前面提到的可接受的偏差過濾掉在步驟304中獲得的這組個(gè)體故障率中的異常值。然后可以利用結(jié)果得到的這組個(gè)體故障率來確定故障率閾值。
在圖3中繪出的過程可以由raid控制器在任何時(shí)間啟動(dòng)。例如,在圖3中示出的方法可以在預(yù)定的時(shí)間段之后、如果對于給定盤或者ssd達(dá)到寫錯(cuò)誤的閾值、當(dāng)盤或sdd被替換時(shí)、當(dāng)已在持久性儲(chǔ)存器上執(zhí)行特定數(shù)量的p/e周期時(shí)等來執(zhí)行,此外,該過程也可以由管理員或其他第三方啟動(dòng)。在本技術(shù)的一種實(shí)施例中,可以至少部分地通過raid控制器上的負(fù)載確定圖3中示出的方法以其來執(zhí)行的頻率(例如,圖3中示出的方法可以在較低數(shù)量的讀或?qū)懻埱笃陂g被啟動(dòng))。
圖4示出了根據(jù)本技術(shù)的一種或多種實(shí)施例的用于實(shí)現(xiàn)raid寫操作的流程圖。在步驟402中,從客戶端接收到寫數(shù)據(jù)的請求。在步驟404中,raid控制器獲得故障率閾值。在本技術(shù)的一種實(shí)施例中,由于故障率閾值可以隨著時(shí)間而改變,因此步驟404在其中存儲(chǔ)陣列的故障率隨著時(shí)間而改變的情景下執(zhí)行。在其中存儲(chǔ)陣列的故障率閾值不隨時(shí)間而改變的情景中,步驟404可以只被raid控制器執(zhí)行一次。
在步驟406中,raid控制器選擇一組空閑物理位置作為新raid條帶的一部分。該組空閑物理位置可以通過獲得存儲(chǔ)陣列中的空閑物理位置的集合并且然后選擇對應(yīng)于條帶寬度的多個(gè)物理位置來確定。例如,如果條帶寬度是五,則五個(gè)物理位置被選擇。此外,用于條帶的物理位置的選擇也可以考慮物理位置與其相關(guān)聯(lián)的獨(dú)立故障域(ifd)。在本技術(shù)的一種或多種實(shí)施例中,ifd對應(yīng)于導(dǎo)致在給定位置處的數(shù)據(jù)不可訪問的故障模式。每個(gè)ifd對應(yīng)于存儲(chǔ)陣列中獨(dú)立的故障模式。例如,如果數(shù)據(jù)被存儲(chǔ)在包括包含nand閃速的ssd的存儲(chǔ)陣列中,則ifd可以是(i)ssd和(ii)ssd內(nèi)的nand裸片。相應(yīng)地,在本技術(shù)的一種實(shí)施例中,用于條帶的物理位置跨至少一個(gè)ifd分布。例如,如果ifd是盤,則用于條帶的物理位置可以被選擇為,使得每個(gè)物理位置在單獨(dú)的盤上。
在步驟408中,raid控制器獲得在步驟406中確定的新raid條帶中的每個(gè)物理位置的個(gè)體故障率,并且基于個(gè)體故障率計(jì)算新raid條帶的合計(jì)故障率。合計(jì)故障率可以根據(jù)一個(gè)或多個(gè)數(shù)學(xué)公式來計(jì)算。例如,合計(jì)故障率可以是個(gè)體故障率的平均值。
在步驟410中,raid控制器確定計(jì)算出的合計(jì)故障率是否超過在步驟306中確定的故障率閾值。如果計(jì)算出的合計(jì)故障率低于故障率閾值,則該方法前進(jìn)到步驟412;否則該方法進(jìn)行到步驟418。
在本技術(shù)的一種實(shí)施例中,在步驟410中,raid控制器可以確定條帶的合計(jì)故障率是否大于或等于最小故障率閾值和小于或等于最大故障率閾值。在這個(gè)情景下,合計(jì)故障率閾值在范圍之內(nèi)。范圍的大小可能基于本技術(shù)的實(shí)現(xiàn)而不同。
繼續(xù)圖4的討論,在步驟412中,raid控制器(或fpga)計(jì)算用于raid條帶的奇偶校驗(yàn)值(例如,p-奇偶校驗(yàn),q-奇偶校驗(yàn)等)。在步驟414中,raid控制器將數(shù)據(jù)(在步驟402中獲得的)和(一個(gè)或多個(gè))奇偶校驗(yàn)值(在步驟412中獲得的)寫入到raid條帶中的物理位置(在步驟406中確定的)。在一個(gè)或多個(gè)實(shí)施例中,當(dāng)確定哪些數(shù)據(jù)被存儲(chǔ)在哪些物理位置中時(shí),raid控制器也可以考慮個(gè)體故障率。例如,一些數(shù)據(jù)可能具有比其它數(shù)據(jù)更高的優(yōu)先級,并且因此,將被寫入到raid條帶中的具有較低個(gè)體故障率的物理位置。在一種或多種其它實(shí)施例中,raid控制器可以將奇偶校驗(yàn)寫入到具有最高個(gè)體故障率的物理位置。
在步驟416中,raid控制器向客戶端通知成功的寫操作。
返回到步驟410,如果計(jì)算出的合計(jì)故障率超過步驟410中的故障率閾值,則raid控制器前進(jìn)到步驟418。在步驟418中,raid控制器確定是否存在可以被選擇用于新raid條帶的其它空閑物理位置的組合。如果存在其它組合可用,則過程前進(jìn)到步驟406。如果不存在其它組合可用,則raid控制器在步驟416向客戶端通知寫操作已失敗。
在本技術(shù)的一種或多種實(shí)施例中,選擇具有在故障率閾值內(nèi)的合計(jì)故障率的raid條帶位置失敗可以觸發(fā)raid控制器來計(jì)算新的故障率閾值,即前進(jìn)到圖3的步驟302。在本技術(shù)的一種或多種可替代的實(shí)施例中,選擇具有在故障率閾值內(nèi)的合計(jì)故障率的raid條帶位置失敗可以觸發(fā)服務(wù)狀態(tài)或通知,以指示sdd中的一個(gè)或多個(gè)應(yīng)該被修理或替換。
在本技術(shù)的一種或多種實(shí)施例中,raid控制器可以預(yù)先確定具有在故障率閾值內(nèi)的合計(jì)故障率的一個(gè)或多個(gè)raid條帶。換句話說,在一種或多種實(shí)施例中,raid控制器可以主動(dòng)地執(zhí)行,例如,步驟406-410。在一種或多種實(shí)施例中,raid控制器可以隨機(jī)選擇空閑物理位置來組成具有在故障率閾值內(nèi)的合計(jì)故障率的一個(gè)或多個(gè)預(yù)先確定的raid條帶。在一個(gè)或多個(gè)可替代的實(shí)施例中,對包含在特定raid條帶中的空閑物理位置的選擇可以是隨機(jī)的、根據(jù)特定的圖案(例如直線、棋盤或其它圖案)、或者根據(jù)一些其它選擇方案。
在一種或多種實(shí)施例中,raid控制器可以存儲(chǔ)具有在故障率閾值內(nèi)的合計(jì)故障率的預(yù)先確定的(一個(gè)或多個(gè))raid條帶的列表。此外,在一種或多種實(shí)施例中,raid控制器可以在例如,如在圖3中描述的故障率閾值確定期間生成預(yù)先確定的(一個(gè)或多個(gè))raid條帶的列表。
在一種或多種實(shí)施例中,raid控制器可以使用在故障率閾值內(nèi)的預(yù)先確定的raid條帶的列表。換句話說,在一種或多種實(shí)施例中,raid控制器可以響應(yīng)于在步驟402中接收到寫請求,選擇預(yù)先確定的raid條帶之一并且然后前進(jìn)到步驟412。
以下部分描述了根據(jù)本技術(shù)的一種或多種實(shí)施例的各種例子。這些例子不是要限制本技術(shù)的范圍。
圖5a-5d示出了根據(jù)本技術(shù)的一種或多種實(shí)施例的例子。雖然圖5a-5d示出了具有特定幾何形狀的raid系統(tǒng)的例子,但是本領(lǐng)域技術(shù)人員將理解,本技術(shù)不限于此類幾何形狀并且適用于其它raid實(shí)現(xiàn)。
參考圖5a,根據(jù)本技術(shù)的一種或多種實(shí)施例的存儲(chǔ)陣列可以具有,例如,五個(gè)sdd(sdd1-sdd5)。此外,每個(gè)sdd在這個(gè)例子中具有四個(gè)物理存儲(chǔ)位置。相應(yīng)地,示例系統(tǒng)的總存儲(chǔ)是標(biāo)記為a-t的20個(gè)物理存儲(chǔ)位置。每個(gè)物理位置具有對應(yīng)于該位置將變得損壞的概率或百分比的個(gè)體故障率。
考慮其中所有物理位置最初是空閑并且寫請求隨后被接收到的情景。響應(yīng)于接收到寫請求,raid控制器選擇第一線性集合空閑物理位置a-e。參見圖5b。
一旦raid控制器選擇空閑物理位置a-e來組成raid條帶,raid控制器就如上所述通過獲得每個(gè)物理位置的個(gè)體故障率來計(jì)算raid條帶的合計(jì)故障率。假定合計(jì)故障率小于故障率閾值,則raid控制器然后計(jì)算奇偶校驗(yàn)并且將奇偶校驗(yàn)和數(shù)據(jù)寫入到物理位置a-e。但是,如果合計(jì)故障率不小于故障率閾值,則raid控制器不能寫入到選定的空閑物理位置的raid條帶并且必須選擇新的raid條帶。
在本例子中,假定空閑物理位置a-e的合計(jì)故障率大于故障率閾值。相應(yīng)地,參考圖5c,raid控制器選擇要被包含在條帶中的一組新的物理位置(即,物理位置a、b、h、d和e)。在一種或多種實(shí)施例中,raid控制器可以通過選擇完全新的一組位置來選擇新的raid條帶??商娲?,在其它實(shí)施例中,raid控制器可以確定具有最高個(gè)體故障率的物理位置,例如c,并且用新的物理位置,例如h,替換它。假定新raid條帶的合計(jì)故障率小于故障率閾值,則raid控制器然后計(jì)算奇偶校驗(yàn)并且將奇偶校驗(yàn)和數(shù)據(jù)寫入到物理位置a、b、h、d和e。但是,如果合計(jì)故障率不小于故障率閾值,則raid控制器不能寫入到選定的空閑物理位置的raid條帶并且必須再次選擇新的raid條帶。
在本例子中,假定空閑物理位置a-e的合計(jì)故障率大于故障率閾值。相應(yīng)地,參考圖5d,raid控制器選擇另一組物理位置(即,物理位置a、q、h、n和j)。再次,raid控制器可以通過選擇完全新的一組位置來選擇新的raid條帶??商娲兀谄渌鼘?shí)施例中,raid控制器可以選擇性地用其它物理位置替換物理位置。在這個(gè)例子中,a仍然在選定的組中、b被替換為q、h被替換為m、d被替換為s并且e被替換為j。raid控制器也可以考慮空閑的和那些不空閑的位置。例如,在圖5d中,物理位置f、l、r、i和e可能不是空閑的(即,它們當(dāng)前存儲(chǔ)數(shù)據(jù)或者由于物理位置的個(gè)體故障率使得數(shù)據(jù)不應(yīng)該被寫入到這個(gè)物理位置而已被指定為不可用)。
本領(lǐng)域技術(shù)人員將理解,雖然本技術(shù)已相對于單個(gè)維度的raid方案進(jìn)行了描述,但是本技術(shù)的實(shí)施例可以擴(kuò)展到任何多維raid方案。例如,本技術(shù)的實(shí)施例可以擴(kuò)展到在美國專利no.8,316,260(其通過引用被結(jié)合于此)中描述的多維raid方案。
有利地,實(shí)現(xiàn)本技術(shù)的一種或多種實(shí)施例的系統(tǒng)和方法可以展現(xiàn)出每條帶大致在4倍和5倍之間的故障率改進(jìn)。
本技術(shù)的一種或多種實(shí)施例可以利用由系統(tǒng)中的一個(gè)或多個(gè)處理器執(zhí)行的指令來實(shí)現(xiàn)。此外,此類指令可以對應(yīng)于存儲(chǔ)在一個(gè)或多個(gè)非臨時(shí)性計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)可讀指令。
雖然本技術(shù)已經(jīng)關(guān)于有限數(shù)量的實(shí)施例進(jìn)行了描述,但是受益于本公開內(nèi)容的本領(lǐng)域技術(shù)人員將理解,可以設(shè)計(jì)出不背離如本文所公開的技術(shù)范圍的其它實(shí)施例。因此,本技術(shù)的范圍應(yīng)當(dāng)只由所附權(quán)利要求來限定。