用于多維raid重構(gòu)和缺陷避免的方法和系統(tǒng)的制作方法
【專利說明】用于多維RAID重構(gòu)和缺陷避免的方法和系統(tǒng)
【背景技術(shù)】
[0001] 為了防止存儲(chǔ)系統(tǒng)中的數(shù)據(jù)的潛在損失,實(shí)現(xiàn)復(fù)制方案常常是有利的。當(dāng)前的復(fù) 制方案僅能夠忍受存儲(chǔ)系統(tǒng)內(nèi)的數(shù)據(jù)不能被讀取之前的有限量的錯(cuò)誤。
【發(fā)明內(nèi)容】
[0002] -般地,在一個(gè)方面中,本發(fā)明設(shè)及一種用于存儲(chǔ)數(shù)據(jù)的方法。該方法包括:接收 寫入數(shù)據(jù)的請(qǐng)求;響應(yīng)于所述請(qǐng)求,選擇RAID網(wǎng)格中的第一RAID網(wǎng)格位置W寫入所述數(shù) 據(jù);確定永久性存儲(chǔ)器中對(duì)應(yīng)于所述第一RAID網(wǎng)格位置的第一物理地址;生成包括所述數(shù) 據(jù)和第一帶外(00B)的第一頁,其中第一 00B包括針對(duì)RAID網(wǎng)格的第一網(wǎng)格幾何形狀、W 及針對(duì)所述RAID網(wǎng)格內(nèi)的頁的第一條帶成員;和將所述第一頁寫入永久性存儲(chǔ)器中對(duì)應(yīng) 于所述第一物理地址的第一物理位置。
[0003] -般地,在一個(gè)方面中,本發(fā)明設(shè)及一種用于重構(gòu)數(shù)據(jù)的方法。該方法包括:接收 對(duì)于第一數(shù)據(jù)的請(qǐng)求;得到包括所述數(shù)據(jù)的第一頁,其中所述第一頁是從永久性存儲(chǔ)器中 的第一物理位置得到的,W及其中所述第一物理位置與第一物理地址和RAID網(wǎng)格中的第 一RAID網(wǎng)格位置相關(guān)聯(lián);確定所述第一頁是從損壞的和沒得到的構(gòu)成的組中選擇的一個(gè); 基于所述確定:識(shí)別所述RAID網(wǎng)格中的所述第一RAID網(wǎng)格位置的相鄰RAID網(wǎng)格位置,其 中所述RAID網(wǎng)格包括行,其中所述第一RAID網(wǎng)格位置和所述相鄰網(wǎng)格位置位于所述行中; 從所述相鄰RAID網(wǎng)格位置得到第二頁;從所述第二頁得到帶外(00B)數(shù)據(jù),其中00B包括 針對(duì)所述RAID網(wǎng)格的網(wǎng)格圖、針對(duì)所述RAID網(wǎng)格的網(wǎng)格幾何形狀、W及針對(duì)所述RAID網(wǎng) 格內(nèi)的所述第二頁的條帶成員;使用所述網(wǎng)格幾何形狀和所述條帶成員識(shí)別所述行內(nèi)包括 數(shù)據(jù)頁的RAID網(wǎng)格位置;使用所述網(wǎng)格圖和所述網(wǎng)格幾何形狀得到所述行內(nèi)的所述數(shù)據(jù) 頁;使用所述網(wǎng)格幾何形狀和所述條帶成員識(shí)別所述行中包括奇偶校驗(yàn)值的RAID網(wǎng)格位 置;使用所述網(wǎng)格圖和所述網(wǎng)格幾何形狀得到所述行內(nèi)的所述奇偶校驗(yàn)值;使用所述數(shù)據(jù) 頁和所述奇偶校驗(yàn)值重構(gòu)所述第一頁,W得到重構(gòu)的頁;從所構(gòu)造的頁得到數(shù)據(jù);W及向 客戶機(jī)提供重構(gòu)的數(shù)據(jù)。
[0004] 從W下的描述和所附的權(quán)利要求,本發(fā)明的其它方面將十分清楚明了。
【附圖說明】
[0005] 圖1示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)。
[0006] 圖2示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的RAID網(wǎng)格。
[0007] 圖3示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的RAID立方體和RAID立方體的各種視圖。 [000引圖4A-4D示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的RAID立方體的示例。
[0009] 圖5A-5C示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的頁。
[0010] 圖6示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的數(shù)據(jù)結(jié)構(gòu)。
[0011] 圖7A-7D示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的流程圖。
[0012] 圖8A-8C示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的示例。
[0013] 圖9A-9B示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的流程圖。
[0014] 圖10A-10D示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的示例。
[0015] 圖11A-11D示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的示例。
【具體實(shí)施方式】
[0016] 現(xiàn)在參照附圖詳細(xì)描述本發(fā)明的具體實(shí)施例。在本發(fā)明的實(shí)施例的W下詳細(xì)描述 中,為了使得能夠更徹底地理解本發(fā)明,闡述大量的特定細(xì)節(jié)。但是,對(duì)于本領(lǐng)域技術(shù)人員 來說,很顯然,可W在沒有該些具體細(xì)節(jié)的情況下實(shí)施本發(fā)明。在其它情況下,為了避免不 必要地使描述復(fù)雜化,沒有描述公知的特征。
[0017] 在圖1~11D的W下描述中,在本發(fā)明的各種實(shí)施例中針對(duì)附圖描述的任何組件 可W與針對(duì)任何其它附圖描述的一個(gè)或更多個(gè)名稱類似的組件等同。為了簡便起見,對(duì)該 些組件的描述并不針對(duì)每個(gè)附圖進(jìn)行重復(fù)。因此,各附圖的組件的每一個(gè)實(shí)施例通過參考 被加入,并且被假定為可選地存在于具有一個(gè)或更多個(gè)名稱類似的組件的每一個(gè)其它附圖 中。另外,根據(jù)本發(fā)明的各種實(shí)施例,附圖的組件的任何描述要被解釋為可選實(shí)施例,該可 選實(shí)施例的實(shí)施可W附加于、結(jié)合于或者替代針對(duì)其他任意附圖中相應(yīng)的名稱類似組件所 描述的實(shí)施例。
[0018] 一般地,本發(fā)明的實(shí)施例設(shè)及使用多維RAID方案復(fù)制數(shù)據(jù)的方法和系統(tǒng)。更具體 地,本發(fā)明的實(shí)施例提供了一種實(shí)現(xiàn)2DRAID方案和3DRAID方案的方法和系統(tǒng)。另外,本 發(fā)明的實(shí)施例設(shè)及在RAID網(wǎng)格內(nèi)的每頁中存儲(chǔ)帶外(00B)數(shù)據(jù)并且使用00B重構(gòu)RAID網(wǎng) 格內(nèi)的頁。此外,本發(fā)明的實(shí)施例設(shè)及選擇RAID網(wǎng)格中用于存儲(chǔ)奇偶校驗(yàn)值的位置,其中 該種選擇部分基于潛在的物理存儲(chǔ)位置是否是壞的(或者說不能被寫入)。
[0019] 使用2DRAID方案,當(dāng)在給定RAID條帶中存在多于兩個(gè)錯(cuò)誤時(shí),可恢復(fù)實(shí)現(xiàn)該種 RAID方案的RAID網(wǎng)格內(nèi)存儲(chǔ)的數(shù)據(jù)。類似地,使用3DRAID方案,當(dāng)在給定RAID條帶中存 在多于兩個(gè)錯(cuò)誤時(shí),可恢復(fù)實(shí)現(xiàn)該種RAID方案的RAID立方體內(nèi)存儲(chǔ)的數(shù)據(jù)。另外,在本發(fā) 明的各個(gè)實(shí)施例中,當(dāng)在多于一個(gè)獨(dú)立故障域(IFD)中存在故障時(shí),可恢復(fù)所有數(shù)據(jù)。
[0020] 在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,IFD對(duì)應(yīng)于導(dǎo)致給定位置的數(shù)據(jù)不可訪問的故 障模式。各IFD對(duì)應(yīng)于存儲(chǔ)陣列中的獨(dú)立故障模式。例如,如果數(shù)據(jù)存儲(chǔ)在NAND閃存中,其 中NAND閃存是存儲(chǔ)模塊(在一些實(shí)施例中也可稱為閃存模塊)(包括多個(gè)NAND晶粒)的 一部分,則I抑可W是(i)存儲(chǔ)模塊、(U)通道(即,存儲(chǔ)模塊中由閃存控制器(未示出) 使用的向NAND閃存寫入數(shù)據(jù)的通道)、(iii)NAND晶粒。
[0021] 對(duì)于本發(fā)明的目的,該里使用的術(shù)語"RAID"指的是"獨(dú)立盤冗余陣列"。雖然 "RAID"指的是獨(dú)立盤的任何陣列,但可通過使用任何類型的永久性存儲(chǔ)設(shè)備實(shí)現(xiàn)本發(fā)明的 實(shí)施例,其中基于本發(fā)明的實(shí)現(xiàn)(例如參見圖1和6),RAID網(wǎng)格位置(例如參見圖2)可分 布在一個(gè)或多個(gè)永久性存儲(chǔ)設(shè)備上。
[0022] 在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,在RAID網(wǎng)格內(nèi)的每頁中存儲(chǔ)00B使得能夠使用 RAID網(wǎng)格內(nèi)存儲(chǔ)的數(shù)據(jù)代替依靠外部數(shù)據(jù)結(jié)構(gòu)來重構(gòu)RAID網(wǎng)格內(nèi)的頁。特別地,給定頁中 的00B包括使得能夠重構(gòu)給定頁所處的條帶中的頁的足夠信息。另外,在RAID網(wǎng)格中的所 有頁上復(fù)制00B的各部分,W及如此,可W使用00B信息使得能夠重構(gòu)RAID網(wǎng)格的重要部 分,而無需附加的外部數(shù)據(jù)結(jié)構(gòu)。因?yàn)?0B與它描述的用戶數(shù)據(jù)(下面定義)同地協(xié)作,所 WRAID網(wǎng)格內(nèi)的頁的重構(gòu)可輕而易舉地分流到RAID控制器之外的處理器。
[0023] 圖1示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)。如圖1所示,所述系統(tǒng)包括一個(gè)或更 多個(gè)客戶機(jī)(100A、100M)、RAID控制器(104)、存儲(chǔ)器(106)、FPGA(102)(可W可選地存在) 和存儲(chǔ)陣列(108)。
[0024] 在本發(fā)明的一個(gè)實(shí)施例中,客戶機(jī)(100AU00M)是在包括向RAID控制器(104)發(fā) 出讀取請(qǐng)求或?qū)懭胝?qǐng)求的功能的系統(tǒng)上執(zhí)行的處理或任何系統(tǒng)。在本發(fā)明的一個(gè)實(shí)施例 中,每個(gè)客戶機(jī)(100AU00M)可包括處理器(未示出)、存儲(chǔ)器(未示出)和永久存儲(chǔ)(未 示出)。在本發(fā)明的一個(gè)實(shí)施例中,RAID控制器(104)被配置為實(shí)現(xiàn)多維RAID方案,包括 W與多維RAID方案一致的方式將數(shù)據(jù)寫入到存儲(chǔ)陣列(參見圖7A-7D)和W與多維RAID方 案一致的方式從數(shù)據(jù)陣列讀取數(shù)據(jù)(包括重構(gòu)數(shù)據(jù))(參見圖9A-9B)。在本發(fā)明的一個(gè)實(shí) 施例中,RAID控制器(104)包括被配置為執(zhí)行用于實(shí)現(xiàn)本發(fā)明的一個(gè)或更多個(gè)實(shí)施例的指 令的處理器,該里,指令存儲(chǔ)于位于RAID控制器(104)內(nèi)或者與其可操作地連接的非暫時(shí) 性計(jì)算機(jī)可讀介質(zhì)(未示出)上。作為替代方案,可通過使用硬件實(shí)現(xiàn)RAID控制器(104)。 本領(lǐng)域技術(shù)人員可W理解,可通過使用軟件和/或硬件的任意組合實(shí)現(xiàn)RAID控制器(104)。
[0025] 在本發(fā)明的一個(gè)實(shí)施例中,RAID控制器(104)與存儲(chǔ)器(106)可操作地連接。存 儲(chǔ)器(106)可W是任何易失性存儲(chǔ)器或非易失性存儲(chǔ)器,包括但不限于動(dòng)態(tài)隨機(jī)存儲(chǔ)器 值RAM)、同步DRAM、SDRSDRAM和孤RSDRAM。在本發(fā)明的一個(gè)實(shí)施例中,存儲(chǔ)器(106)被配 置為在各種數(shù)據(jù)(包括奇偶校驗(yàn)數(shù)據(jù))被存儲(chǔ)于存儲(chǔ)陣列中之前暫時(shí)存儲(chǔ)該些數(shù)據(jù)。
[0026] 在本發(fā)明的一個(gè)實(shí)施例中,F(xiàn)PGA(102)(如果存在的話)包括出于在存儲(chǔ)陣列 (108)中存儲(chǔ)數(shù)據(jù)的目的計(jì)算P奇偶校驗(yàn)值和/或Q奇偶校驗(yàn)值的功能,和/或執(zhí)行恢復(fù)通 過使用多維RAID方案存儲(chǔ)的損壞或丟失數(shù)據(jù)所需要