两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

在存儲(chǔ)系統(tǒng)中復(fù)制和使用網(wǎng)格層級(jí)元數(shù)據(jù)的方法和系統(tǒng)的制作方法

文檔序號(hào):10724830閱讀:392來源:國(guó)知局
在存儲(chǔ)系統(tǒng)中復(fù)制和使用網(wǎng)格層級(jí)元數(shù)據(jù)的方法和系統(tǒng)的制作方法
【專利摘要】一般地,本技術(shù)的實(shí)施例涉及一種保護(hù)持久性儲(chǔ)存器中的數(shù)據(jù)的方法和系統(tǒng)。更具體地,本技術(shù)的各種實(shí)施例涉及使用不同的復(fù)制方案來保護(hù)持久性儲(chǔ)存器的不同類型的數(shù)據(jù)。
【專利說明】在存儲(chǔ)系統(tǒng)中復(fù)制和使用網(wǎng)格層級(jí)元數(shù)據(jù)的方法和系統(tǒng)
【背景技術(shù)】
[0001] 為了防止存儲(chǔ)系統(tǒng)中的潛在數(shù)據(jù)丟失,實(shí)現(xiàn)復(fù)制方案常常是有利的。
【附圖說明】
[0002] 圖1示出了根據(jù)本技術(shù)的一個(gè)實(shí)施例的系統(tǒng)。
[0003] 圖2示出了根據(jù)本技術(shù)的一個(gè)實(shí)施例的RAID網(wǎng)格層。
[0004]圖3示出了根據(jù)本技術(shù)的一個(gè)實(shí)施例的RAID立方體和RAID立方體的各種視圖。
[0005] 圖4A-4D示出了根據(jù)本技術(shù)的一個(gè)或多個(gè)實(shí)施例的RAID立方體的示例。
[0006] 圖5A-5C示出了根據(jù)本技術(shù)的一個(gè)或多個(gè)實(shí)施例的塊。
[0007] 圖6示出了根據(jù)本技術(shù)的一個(gè)或多個(gè)實(shí)施例的示例。
[0008] 圖7示出了根據(jù)本技術(shù)的一個(gè)實(shí)施例的數(shù)據(jù)結(jié)構(gòu)。
[0009] 圖8-9示出了根據(jù)本技術(shù)的一個(gè)實(shí)施例的流程圖。
【具體實(shí)施方式】
[0010] 現(xiàn)在將參考附圖來詳細(xì)地描述本技術(shù)的特定實(shí)施例。在本技術(shù)的實(shí)施例的以下詳 細(xì)描述中,闡述了許多特定細(xì)節(jié)以便提供本技術(shù)的更透徹理解。然而,對(duì)于本領(lǐng)域的技術(shù)人 員而言將顯而易見的是可在沒有這些特定細(xì)節(jié)的情況下實(shí)施本技術(shù)。在其它情況下,并未 詳細(xì)地描述眾所周知的特征以避免不必要地使本描述變得復(fù)雜。
[0011] 在圖1 一9的以下描述中,在本技術(shù)的各種實(shí)施例中相對(duì)于圖所述的任何部件可等 價(jià)于相對(duì)于任何其它圖所述的一個(gè)或多個(gè)相同名稱部件。為了簡(jiǎn)便起見,將不會(huì)相對(duì)于每 個(gè)圖重復(fù)這些部件的描述。因此,每個(gè)圖的部件的每個(gè)實(shí)施例是通過引用而結(jié)合的,并且被 假設(shè)為可選地存在于具有一個(gè)或多個(gè)相同命名的部件的每個(gè)其它圖內(nèi)。另外,根據(jù)本技術(shù) 的各種實(shí)施例,應(yīng)將圖的部件的任何描述解釋為相對(duì)于任何其它圖中的相應(yīng)相同命名部件 所描述的實(shí)施例額外添加、與之相結(jié)合或作為其替代可實(shí)現(xiàn)的可選實(shí)施例。
[0012] -般地,本技術(shù)的實(shí)施例涉及一種保護(hù)持久性儲(chǔ)存器中的數(shù)據(jù)的方法和系統(tǒng)。更 具體地,本技術(shù)的實(shí)施例涉及使用不同的復(fù)制方案來保護(hù)持久性儲(chǔ)存器中的不同類型的數(shù) 據(jù)。在本技術(shù)的一個(gè)實(shí)施例中,使用多維RAID方案(例如,2D RAID方案、3D RAID方案等)來 保護(hù)用戶數(shù)據(jù)(例如,客戶端數(shù)據(jù)、塊層級(jí)元數(shù)據(jù)以及奇偶數(shù)據(jù)),并且使用復(fù)制方案(例如, 標(biāo)簽)來保護(hù)網(wǎng)格層級(jí)元數(shù)據(jù)(例如,網(wǎng)格幾何結(jié)構(gòu)、壞位置信息以及P/E計(jì)數(shù))。
[0013] 在本技術(shù)的一個(gè)實(shí)施例中,使用2D RAID方案,當(dāng)在給定RAID條帶中存在超過兩個(gè) 錯(cuò)誤時(shí),可恢復(fù)實(shí)現(xiàn)此類RAID方案的RAID網(wǎng)格內(nèi)存儲(chǔ)的用戶數(shù)據(jù)。相似地,使用3D RAID方 案,當(dāng)在給定RAID條帶中存在超過兩個(gè)錯(cuò)誤時(shí),可恢復(fù)實(shí)現(xiàn)此類RAID方案的RAID立方體內(nèi) 存儲(chǔ)的用戶數(shù)據(jù)。此外,在本技術(shù)的各種實(shí)施例中,當(dāng)在超過一個(gè)獨(dú)立故障域(ΙΠ ))中存在 故障時(shí)可恢復(fù)所有用戶數(shù)據(jù)。在本技術(shù)的一個(gè)實(shí)施例中,要求網(wǎng)格層級(jí)元數(shù)據(jù)以實(shí)現(xiàn)多維 RAID方案。更具體地,網(wǎng)格層級(jí)元數(shù)據(jù)可包括但不限于關(guān)于網(wǎng)格尺寸、在多維RAID方案中使 用的奇偶值的數(shù)目以及奇偶值的位置的信息??梢笊鲜鲂畔⒁詫?shí)現(xiàn)多維RAID方案。
[0014] 在本技術(shù)的一個(gè)或多個(gè)實(shí)施例中,iro對(duì)應(yīng)于故障模式,該故障模式導(dǎo)致給定位置 處的數(shù)據(jù)不可訪問。每個(gè)ΙΠ )對(duì)應(yīng)于存儲(chǔ)陣列中的故障的獨(dú)立模式。例如,如果數(shù)據(jù)被存儲(chǔ) 在NAND閃存中,其中NAND閃存是存儲(chǔ)模塊(其在某些實(shí)施例中也可稱為閃存模塊)(其包括 多個(gè)NAND管芯)的一部分,則IFD可以是(i)存儲(chǔ)模塊、(i i)通道(即,被存儲(chǔ)模塊中的閃存控 制器(未示出)用來向NAND閃存寫入數(shù)據(jù)的通道)、以及(iii)NAND管芯。
[0015] 出于本技術(shù)的目的,如本文所使用的術(shù)語"RAID"指代"獨(dú)立磁盤冗余陣列"。雖然 "RAID"指代獨(dú)立磁盤的任何陣列,但可使用可基于本技術(shù)的實(shí)施方式將RAID網(wǎng)格位置跨一 個(gè)或多個(gè)持久性存儲(chǔ)設(shè)備分布的任何類型的持久性存儲(chǔ)設(shè)備來實(shí)現(xiàn)本技術(shù)的實(shí)施方式。
[0016] 圖1示出了根據(jù)本技術(shù)的一個(gè)實(shí)施例的系統(tǒng)。如圖1中所示,該系統(tǒng)包括一個(gè)或多 個(gè)客戶端100A和100M、控制器104、存儲(chǔ)器106、FPGA 102(其可以可選地存在)以及存儲(chǔ)陣列 108〇
[0017] 在本技術(shù)的一個(gè)實(shí)施例中,客戶端100A、100M是在包括用以向控制器104發(fā)布讀請(qǐng) 求或?qū)懻?qǐng)求的功能的系統(tǒng)上執(zhí)行的任何系統(tǒng)或過程。在本技術(shù)的一個(gè)實(shí)施例中,客戶端 100A、100M的每個(gè)可以包括處理器(未示出)、存儲(chǔ)器(未示出)以及持久性儲(chǔ)存器(未示出)。 在本技術(shù)的一個(gè)實(shí)施例中,控制器104被配置成實(shí)現(xiàn)圖8-9中所示的方法。此外,控制器包 括用以根據(jù)多維RAID方案來存儲(chǔ)用戶數(shù)據(jù)(參見例如圖5A,501)的功能,其包括以與多維 RAID方案一致的方式向存儲(chǔ)陣列寫入數(shù)據(jù)(參見例如圖2-4D)和以與多維RAID方案一致的 方式從存儲(chǔ)陣列讀取數(shù)據(jù)(包括重構(gòu)數(shù)據(jù))(參見例如圖2-4D)。在本技術(shù)的一個(gè)實(shí)施例中, 控制器104包括被配置成執(zhí)行用以實(shí)現(xiàn)本技術(shù)的一個(gè)或多個(gè)實(shí)施例的指令的處理器,其中, 該指令被存儲(chǔ)在位于控制器104內(nèi)或被可操作地連接到控制器104的非臨時(shí)計(jì)算機(jī)可讀介 質(zhì)(未示出)上??商鎿Q地,可使用硬件來實(shí)現(xiàn)控制器104。本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到可使 用軟件和/或硬件的任何組合來實(shí)現(xiàn)控制器104。
[0018] 在本技術(shù)的一個(gè)實(shí)施例中,控制器104被可操作地連接到存儲(chǔ)器106。存儲(chǔ)器106可 以是任何易失性存儲(chǔ)器或非易失性存儲(chǔ)器,包括但不限于動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、同 步DRAM、SDR SDRAM以及DDR SDRAM。在本技術(shù)的一個(gè)實(shí)施例中,存儲(chǔ)器106被配置成在臨時(shí) 地存儲(chǔ)各種數(shù)據(jù)之后(包括奇偶數(shù)據(jù))將此類數(shù)據(jù)存儲(chǔ)在存儲(chǔ)陣列中(參見例如圖7中所述 的數(shù)據(jù))。
[0019] 在本技術(shù)的一個(gè)實(shí)施例中,F(xiàn)PGA 102(如果存在的話)包括出于將數(shù)據(jù)存儲(chǔ)在存儲(chǔ) 陣列108中的目的而計(jì)算P和/或Q奇偶值的功能和/或執(zhí)行恢復(fù)使用多維RAID方案存儲(chǔ)的已 毀壞或漏失數(shù)據(jù)所需的各種計(jì)算的功能。在本技術(shù)的一個(gè)實(shí)施例中,F(xiàn)PGA可包括用以執(zhí)行 圖8和9中所述的方法的全部或一部分的功能。根據(jù)本技術(shù)的一個(gè)或多個(gè)實(shí)施例,控制器104 可使用FPGA102來卸載各種數(shù)據(jù)的處理。
[0020] 在本技術(shù)的一個(gè)實(shí)施例中,存儲(chǔ)陣列108包括許多單獨(dú)的持久性存儲(chǔ)設(shè)備,包括但 不限于:磁性存儲(chǔ)器設(shè)備、光學(xué)存儲(chǔ)器設(shè)備、固態(tài)存儲(chǔ)器設(shè)備、相變存儲(chǔ)器設(shè)備、任何其它適 當(dāng)類型的持久性存儲(chǔ)器設(shè)備或其任何組合。在本技術(shù)的一個(gè)實(shí)施例中,每個(gè)存儲(chǔ)陣列108可 包括許多存儲(chǔ)模塊,其中,每個(gè)存儲(chǔ)模塊包括固態(tài)存儲(chǔ)器和存儲(chǔ)模塊控制器。在此類實(shí)施例 中,存儲(chǔ)模塊控制器包括用以從控制器接收頁并將該頁寫入到固態(tài)存儲(chǔ)器中的響應(yīng)物理位 置的功能。此外,存儲(chǔ)模塊控制器可包括用以在頁被寫入到固態(tài)存儲(chǔ)器之前生成用于每個(gè) 頁的糾錯(cuò)碼(ECC)。另外,存儲(chǔ)模塊控制器可包括用以根據(jù)多維RAID方案來重構(gòu)頁的功能。
[0021]本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到雖然圖1示出了 FPGA,但可在沒有FPGA的情況下實(shí)現(xiàn) 本技術(shù)。此外,本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到在不脫離本技術(shù)的情況下可使用其它部件代替 FPGA。例如,可使用ASIC、圖形處理單元(GPU)、通用處理器、能夠出于將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)陣 列中和/或執(zhí)行恢復(fù)使用多維RAID方案存儲(chǔ)的已毀壞數(shù)據(jù)所需的各種計(jì)算的目的計(jì)算P和/ 或Q奇偶值的任何其它硬件設(shè)備、包括被配置成出于將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)陣列108中和/或執(zhí) 行恢復(fù)使用多維RAID方案存儲(chǔ)的已毀壞數(shù)據(jù)所需的各種計(jì)算的目的計(jì)算P和/或Q奇偶值的 硬件、固件和/或軟件的組合的任何設(shè)備或其任何組合來實(shí)現(xiàn)本技術(shù)。
[0022] 在本技術(shù)的一個(gè)實(shí)施例中,如果控制器實(shí)現(xiàn)2D RAID方案或3D RAID方案(參見圖 3 ),則控制器以RAID網(wǎng)格來存儲(chǔ)數(shù)據(jù),其中,RAID網(wǎng)格包括一組RAID網(wǎng)格層(參見例如圖2, 200)。狀10網(wǎng)格包括一組RAID網(wǎng)格位置,其中,每個(gè)RAID網(wǎng)格位置與塊相關(guān)聯(lián)。此外,每個(gè)塊 與一組頁相關(guān)聯(lián)。
[0023] 例如,考慮其中存在4 X 4RAID網(wǎng)格且RAID網(wǎng)格中的每個(gè)RAID網(wǎng)格位置與包括256 個(gè)頁的塊相關(guān)聯(lián)的情形。在這種情形中,RAID網(wǎng)格可由最多達(dá)255個(gè)RAID網(wǎng)格層構(gòu)成(參見 例如圖2,200),其中,每個(gè)RAID網(wǎng)格層包括16個(gè)頁(即,來自與RAID網(wǎng)格相關(guān)聯(lián)的每個(gè)塊一 個(gè)頁)。16個(gè)塊(即,與RAID網(wǎng)格相關(guān)聯(lián)的塊)中的每一個(gè)中的剩余頁被用來存儲(chǔ)標(biāo)簽(參見 例如圖5,508)。
[0024] 繼續(xù)本示例,如果RAID網(wǎng)格與第一維度上的第一IFD =存儲(chǔ)模塊(SM)和第二維度 上的第二IFD =通道(CH)相關(guān)聯(lián),則可如下表示用于給定RAID網(wǎng)格層中的16個(gè)頁中的每一 個(gè)的物理地址:
[0025] 表1:RAID網(wǎng)格層中的物理地址
[0027] 如上表中所示,芯片啟用(CE)、邏輯單元(LUN)、平面、塊以及頁對(duì)于給定RAID網(wǎng)格 層中的每頁而言是相同的。此外,在給定RAID網(wǎng)格的不同RAID網(wǎng)格層內(nèi),芯片啟用(CE)、邏 輯單元(LUN)、平面以及塊保持恒定,而頁號(hào)改變。例如,RAID網(wǎng)格中的第一 RAID網(wǎng)格層中的 頁可對(duì)應(yīng)于包括 < 塊37,頁1 >的物理地址的頁,而同一RAID網(wǎng)格中的第二RAID網(wǎng)格層中的 頁可包括包含<塊37,頁2>的物理地址。換言之,在本技術(shù)的一個(gè)實(shí)施例中,針對(duì)RAID網(wǎng)格 中的所有頁在物理地址中指定的塊是相同的,而針對(duì)RAID網(wǎng)格內(nèi)的頁在物理地址中指定的 頁對(duì)于給定RAID網(wǎng)格層中的所有頁而言是相同的,但是對(duì)于與其它RAID網(wǎng)格層相關(guān)聯(lián)的頁 而言是不同的。
[0028] 圖2示出了根據(jù)本技術(shù)的一個(gè)實(shí)施例的RAID網(wǎng)格層。更具體地,圖2示出了根據(jù)本 技術(shù)的一個(gè)或多個(gè)實(shí)施例的RAID網(wǎng)格層的概念部分。RAID網(wǎng)格層200包括許多RAID網(wǎng)格層 位置,其中,每個(gè)RAID網(wǎng)格層位置最終對(duì)應(yīng)于與物理地址相關(guān)聯(lián)的存儲(chǔ)陣列中的頁。
[0029]關(guān)于RAID網(wǎng)格層的結(jié)構(gòu),每個(gè)RAID網(wǎng)格層200包括:(i)數(shù)據(jù)網(wǎng)格202,其包括存儲(chǔ) 從客戶端接收到的客戶端數(shù)據(jù)(即,客戶端已命令控制器寫入到存儲(chǔ)陣列的數(shù)據(jù))的RAID網(wǎng) 格層位置;(ii)行P奇偶組204,其包括在其中存儲(chǔ)使用一行中的RAID網(wǎng)格層位置上的數(shù)據(jù) 計(jì)算的P奇偶值的RAID網(wǎng)格層位置(下面描述行Q奇偶組206,其包括在其中存儲(chǔ)使 用一行中的RAID網(wǎng)格層位置上的數(shù)據(jù)計(jì)算的Q奇偶值的RAID網(wǎng)格層位置(下面描述);(iv) 列P奇偶組208,其包括在其中存儲(chǔ)使用一列中的RAID網(wǎng)格層位置上的數(shù)據(jù)計(jì)算的P奇偶值 的RAID網(wǎng)格層位置(下面描述);(v)列Q奇偶組210,其包括在其中存儲(chǔ)使用一列中的RAID網(wǎng) 格層位置上的數(shù)據(jù)計(jì)算的Q奇偶值的RAID網(wǎng)格層位置(下面描述);以及(vi)交集奇偶組 212,其包括使用(a)來自行P奇偶組204中的RAID網(wǎng)格層位置的數(shù)據(jù)、(b)來自行Q奇偶組206 中的RAID網(wǎng)格層位置的數(shù)據(jù)、(c)來自列P奇偶組208中的RAID網(wǎng)格層位置的數(shù)據(jù)、以及(d) 來自列Q奇偶組210中的RAID網(wǎng)格層位置的數(shù)據(jù)(下面描述)計(jì)算的奇偶值。
[0030] 參考行214,在本技術(shù)的一個(gè)實(shí)施例中,通過對(duì)包括數(shù)據(jù)(例如,PrffKD^D^Ds, D4)的行214中的所有RAID網(wǎng)格層位置應(yīng)用P奇偶函數(shù)來計(jì)算存儲(chǔ)在行214中的表示為Pr2的 RAID網(wǎng)格層位置上的奇偶值。同樣地,在本技術(shù)的一個(gè)實(shí)施例中,通過對(duì)包括數(shù)據(jù)(例如,Qr2 = 的行214中的所有RAID網(wǎng)格層位置應(yīng)用Q奇偶函數(shù)來計(jì)算存儲(chǔ)在行214中 的表示為Qrf的RAID網(wǎng)格層位置上的奇偶值。
[0031] 參考列216,在本技術(shù)的一個(gè)實(shí)施例中,通過對(duì)包括數(shù)據(jù)(例如,PC6 = fP(D5,D2,D6, D7)的列216中的所有RAID網(wǎng)格層位置應(yīng)用P奇偶函數(shù)來計(jì)算存儲(chǔ)在列216中的表示為Pc6的 RAID網(wǎng)格層位置上的奇偶值。同樣地,在本技術(shù)的一個(gè)實(shí)施例中,通過對(duì)包括數(shù)據(jù)(例如,QC6 = fQ(D5,D2,D6,D7)的列216中的所有RAID網(wǎng)格層位置應(yīng)用Q奇偶函數(shù)來計(jì)算存儲(chǔ)在列216中 的表示為Q C6的RAID網(wǎng)格層位置上的數(shù)據(jù)。
[0032]參考交集奇偶組212,在本技術(shù)的一個(gè)實(shí)施例中,可通過對(duì)行P奇偶組204中的所有 RAID網(wǎng)格層位置應(yīng)用P奇偶函數(shù)或者對(duì)列P奇偶組208中的所有RAID網(wǎng)格層位置應(yīng)用P奇偶 函數(shù)來計(jì)算存儲(chǔ)在表示為Irl的RAID網(wǎng)格層位置上的數(shù)據(jù)。例如,I rl = fP(Prl,Pr2,Pr3,Pr4M Irl = fp(Pc5,Pc6,Pc7,Pc8) 〇
[0033] 在本技術(shù)的一個(gè)實(shí)施例中,可通過對(duì)行Q奇偶組204中的所有RAID網(wǎng)格層位置應(yīng)用 P奇偶函數(shù)或者對(duì)列P奇偶組208中的所有RAID網(wǎng)格層位置應(yīng)用Q奇偶函數(shù)來計(jì)算存儲(chǔ)在表 示為Ir2的RAID網(wǎng)格層位置上的數(shù)據(jù)。例如,I r2 = fp(Qrl,Qr2,Qr3,Qr4)Slr2 = fQ(PC5,PC6,PC7, Pc8) 〇
[0034] 在本技術(shù)的一個(gè)實(shí)施例中,可通過對(duì)列Q奇偶組210中的所有RAID網(wǎng)格層位置應(yīng)用 P奇偶函數(shù)或者對(duì)行P奇偶組204中的所有RAID網(wǎng)格層位置應(yīng)用Q奇偶函數(shù)來計(jì)算存儲(chǔ)在表 示為 Ir3 的 RAID 網(wǎng)格層位置上的數(shù)據(jù)。例如,Ir3 = f P ( Qc5,Qc6,QC7,Qc8 )或 Ir3 = f Q ( Prl,Pr2,Pr3, Pr4) 〇
[0035] 在本技術(shù)的一個(gè)實(shí)施例中,可通過對(duì)列Q奇偶組210中的所有RAID網(wǎng)格層位置應(yīng)用 Q奇偶函數(shù)或者對(duì)行Q奇偶組206中的所有RAID網(wǎng)格層位置應(yīng)用Q奇偶函數(shù)來計(jì)算存儲(chǔ)在表 不為 Ir4的RAID網(wǎng)格層位置上的數(shù)據(jù)。例如,Ir4 = f Q ( Qrl,Qr2,Qr3,Qr4)或 Ir4 = f Q ( Qc5,Qc6,Qc7, Qc8 ) 〇
[0036] 在本技術(shù)的一個(gè)實(shí)施例中,用來計(jì)算用于所有奇偶組的值的P和Q奇偶函數(shù)可對(duì)應(yīng) 于被用來實(shí)現(xiàn)RAID 6的任何P和Q奇偶函數(shù)。
[0037] 如上文所討論的,圖2中所示的RAID網(wǎng)格層200表示RAID網(wǎng)格層的概念布局。然而, 當(dāng)單獨(dú)RAID網(wǎng)格層位置被寫入到存儲(chǔ)陣列時(shí),各種RAID網(wǎng)格層位置的相對(duì)位置可跨行和/ 或列改變。例如,參考行214,當(dāng)行214內(nèi)的RAID網(wǎng)格層位置被寫入到存儲(chǔ)陣列時(shí),包括用戶 數(shù)據(jù)(用"D"表示)的RAID網(wǎng)格層位置和包括奇偶數(shù)據(jù)的RAID網(wǎng)格層位置(即,表示為"P r"和 "Qr" 的 RAID 網(wǎng)格層位置)的相對(duì)位置可如下:〈Di,D2, Pr2,D3Qr2,D4>、<Pr2,Qr2,Di,D 2,D3,D4>或 行內(nèi)214的任何其它布置。同樣地,參考列216,當(dāng)行214內(nèi)的RAID網(wǎng)格層位置被寫入到存儲(chǔ) 陣列時(shí),包括用戶數(shù)據(jù)(用"D"表示)的RAID網(wǎng)格層位置和包括奇偶數(shù)據(jù)的RAID網(wǎng)格層位置 (即,表示為"P。"和"Q。"的RAID網(wǎng)格層位置)的相對(duì)位置可如下:<D 5,D2,D6,Pc6,D?,Qc6>、<P c6, D5,D2,0。6,〇6,〇7>或行列216的任何其它布置。
[0038] 在本技術(shù)的一個(gè)實(shí)施例中,(i)行P奇偶組,(ii)行Q奇偶組,(iii)列P奇偶組以及 (iv)列Q奇偶組中的每一個(gè)的位置可基于本技術(shù)的實(shí)施方式而改變。此外,在此類實(shí)施例 中,基于上述奇偶組的位置來確定交集奇偶組的位置。
[0039]繼續(xù)圖2的討論,控制器(或系統(tǒng)中的另一實(shí)體)可確定與每個(gè)RAID網(wǎng)格位置相關(guān) 聯(lián)的數(shù)據(jù)被寫入到存儲(chǔ)陣列中的哪個(gè)物理地址。此確定可在從客戶端接收到用于特定RAID 網(wǎng)格(或RAID網(wǎng)格層)的任何客戶端數(shù)據(jù)(其是表示為"D"的用戶數(shù)據(jù)的一部分)之前進(jìn)行。 可替換地,該確定可在將與RAID網(wǎng)格層位置相關(guān)聯(lián)的任何數(shù)據(jù)寫入到存儲(chǔ)陣列之前進(jìn)行。
[0040] 在本技術(shù)的一個(gè)實(shí)施例中,使用如圖2中所述的2D RAID方案來保護(hù)構(gòu)成RAID網(wǎng)格 的每個(gè)RAID網(wǎng)格層的頁內(nèi)的用戶數(shù)據(jù)(參見例如圖5,501)(或其部分)。
[0041] 本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到雖然圖2示出了 6X6的RAID網(wǎng)格層,但在不脫離本技 術(shù)的情況下可使用任何其它尺寸來實(shí)現(xiàn)RAID網(wǎng)格層。此外,雖然圖2僅示出了 RAID網(wǎng)格的單 個(gè)RAID網(wǎng)格層,但構(gòu)成RAID網(wǎng)格的每個(gè)RAID網(wǎng)格層的RAID尺寸是相同的。例如,RAID網(wǎng)格可 由全部具有相同尺寸的255個(gè)RAID網(wǎng)格層構(gòu)成。此外,單獨(dú)RAID網(wǎng)格層內(nèi)的奇偶數(shù)據(jù)的位置 可以跨RAID網(wǎng)格內(nèi)的所有RAID網(wǎng)格層是相同的,或者可替換地,奇偶數(shù)據(jù)可在RAID網(wǎng)格內(nèi) 的不同RAID網(wǎng)格層中的不同位置上。
[0042]在本技術(shù)的一個(gè)實(shí)施例中,P奇偶值是里德一所羅門特征群(syndrome),并且同樣 地,P奇偶函數(shù)可對(duì)應(yīng)于可以產(chǎn)生里德一所羅門特征群的任何函數(shù)。在本技術(shù)的一個(gè)實(shí)施例 中,P奇偶函數(shù)是X0R函數(shù)。
[0043]在本技術(shù)的一個(gè)實(shí)施例中,Q奇偶值是里德-所羅門特征群,并且同樣地,Q奇偶函 數(shù)可對(duì)應(yīng)于可以產(chǎn)生里德-所羅門特征群的任何函數(shù)。在本技術(shù)的一個(gè)實(shí)施例中,Q奇偶值 是里德一所羅門代碼。在本技術(shù)的一個(gè)實(shí)施例中,Q = g° · Do+g1 · Di+g2 · D2+…+81^1 · Dn, 其中,Q對(duì)應(yīng)于相對(duì)于圖2定義的Q個(gè)奇偶值中的任何一個(gè),g是字段的發(fā)生器,并且D的值對(duì) 應(yīng)于數(shù)據(jù)(其可包括來自數(shù)據(jù)網(wǎng)格的值和/或來自包括P或Q奇偶值的一個(gè)或多個(gè)行或列的 值)。
[0044]本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到雖然圖2中所示的RAID網(wǎng)格層包括用于每個(gè)行和列的 P和Q個(gè)奇偶值,但在不脫離本技術(shù)的情況下可使用更多或更少的奇偶值來實(shí)現(xiàn)本技術(shù)的實(shí) 施例。例如,每個(gè)行和列可僅包括P奇偶值。在另一實(shí)施例中,每個(gè)行和列可包括三個(gè)奇偶 值。上述示例并不意圖限制本技術(shù)的范圍。在本技術(shù)的一個(gè)實(shí)施例中,無論在本技術(shù)的實(shí)施 方式中使用的奇偶值的數(shù)目如何,每個(gè)奇偶值都是里德一所羅門特征群。
[0045]圖3示出了根據(jù)本技術(shù)的一個(gè)實(shí)施例的RAID立方體和RAID立方體的各種視圖。如 圖3中所示,RAID立方體300對(duì)應(yīng)于RAID網(wǎng)格302的概念堆棧。如上文所討論的,控制器(或系 統(tǒng)中的另一實(shí)體)選擇用于每個(gè)RAID網(wǎng)格位置的數(shù)據(jù)(包括用戶數(shù)據(jù)和標(biāo)簽)將存儲(chǔ)到其中 的存儲(chǔ)陣列內(nèi)的物理地址。在本技術(shù)的一個(gè)實(shí)施例中,可根據(jù)RAID網(wǎng)格(或RAID立方體)被 設(shè)計(jì)成針對(duì)其進(jìn)行保護(hù)的IFD來確定物理地址的選擇。換言之,可以以將針對(duì)一個(gè)或多個(gè) IFD中的故障進(jìn)行保護(hù)的方式來選擇物理地址。例如,如圖3中所示,與用于給定RAID網(wǎng)格 302、304的每個(gè)RAID網(wǎng)格位置(例如,塊中的數(shù)據(jù),參見圖5,500)相關(guān)聯(lián)的數(shù)據(jù)被寫入到使 用來自IFD 1和IFD 2的唯--對(duì)值選擇的存儲(chǔ)陣列(未示出)中的一組物理地址(或者將被 寫入到設(shè)定物理地址),但是對(duì)于IFD 3而言具有相同的值。例如,如果存儲(chǔ)陣列中的數(shù)據(jù) (即,用戶數(shù)據(jù)和標(biāo)簽)被存儲(chǔ)在NAND閃存中,其中,NAND閃存是存儲(chǔ)模塊(其包括多個(gè)NAND 管芯)的一部分,則IFD可如下:(i)IFD 1=存儲(chǔ)模塊,(ii)iro 2 =通道,并且(iii)IFD 3 = NAND管芯。因此,在給定RAID網(wǎng)格中,與每個(gè)RAID網(wǎng)格位置相關(guān)聯(lián)的數(shù)據(jù)被寫入到存儲(chǔ)模塊 IFD 1和通道IFD 2的唯一組合,但是被寫入到同一NAND管芯(在每個(gè)存儲(chǔ)模塊上)。本領(lǐng)域 的技術(shù)人員將認(rèn)識(shí)到本技術(shù)不限于上述三個(gè)獨(dú)立故障域。此外,本領(lǐng)域的技術(shù)人員將認(rèn)識(shí) 到本技術(shù)不限于包括NAND閃存的存儲(chǔ)陣列。
[0046] 繼續(xù)圖3,如上文所討論的,RAID立方體300是RAID網(wǎng)格的概念堆棧。更具體地,在 本技術(shù)的一個(gè)實(shí)施例中,RAID立方體300可包括(i)數(shù)據(jù)部分316,其包括兩個(gè)或更多RAID網(wǎng) 格304、306、308、310和奇偶部分318,其包括?奇偶1^10網(wǎng)格312和〇奇偶1^10網(wǎng)格314。
[0047] 在本技術(shù)的一個(gè)實(shí)施例中,數(shù)據(jù)部分316中的RAID網(wǎng)格304、306、308、310包括奇偶 數(shù)據(jù)(例如,P奇偶或Q奇偶值),其允許僅使用RAID網(wǎng)格內(nèi)的數(shù)據(jù)(包括奇偶數(shù)據(jù))來恢復(fù) RAID網(wǎng)格內(nèi)的數(shù)據(jù)。在本技術(shù)的一個(gè)實(shí)施例中,RAID立方體被布置成使得可使用來自其它 RAID網(wǎng)格(即,數(shù)據(jù)部分316和奇偶部分318兩者中的RAID網(wǎng)格)的數(shù)據(jù)(包括奇偶數(shù)據(jù))來恢 復(fù)與給定RAID網(wǎng)格304、306、308、310中的給定1^10網(wǎng)格位置相關(guān)聯(lián)的數(shù)據(jù)。在本技術(shù)的一 個(gè)實(shí)施例中,RAID立方體的奇偶部分318使得能夠?qū)崿F(xiàn)此類機(jī)制。
[0048] 在本技術(shù)的一個(gè)實(shí)施例中,P奇偶RAID網(wǎng)格312與底層RAID網(wǎng)格304、306、308、310 是相同尺寸,其中,通過對(duì)來自數(shù)據(jù)部分316中的RAID網(wǎng)格中的塊的數(shù)據(jù)(包括奇偶數(shù)據(jù))應(yīng) 用P奇偶函數(shù)(例如,X0R函數(shù))來計(jì)算存儲(chǔ)在與P奇偶RAID網(wǎng)格內(nèi)的每個(gè)RAID網(wǎng)格位置相關(guān) 聯(lián)的塊中的數(shù)據(jù)(參見例如圖4A-4D)。同樣地,Q奇偶RAID網(wǎng)格314與底層RAID網(wǎng)格304、 306、308、310是相同尺寸,其中,通過對(duì)來自數(shù)據(jù)部分316中的RAID網(wǎng)格的數(shù)據(jù)(包括奇偶數(shù) 據(jù))應(yīng)用Q奇偶函數(shù)來計(jì)算存儲(chǔ)在與Q奇偶RAID網(wǎng)格內(nèi)的每個(gè)RAID網(wǎng)格位置相關(guān)聯(lián)的塊中的 數(shù)據(jù)(參見例如圖4A-4D)
[0049]圖4A-4D示出了根據(jù)本技術(shù)的一個(gè)或多個(gè)實(shí)施例的填充RAID立方體的示例。本示 例并不意圖限制本技術(shù)的范圍。
[0050] 考慮在圖4D中描繪的RAID立方體,其包括RAID網(wǎng)格A 400、1^10網(wǎng)格財(cái)02、1^10網(wǎng) 格C 404、P奇偶RAID網(wǎng)格406以及Q奇偶RAID網(wǎng)格408。此外,RAID立方體中的每個(gè)RAID網(wǎng)格 400、402、404、406、408包括跨1?0 1和1?0 2寫入的1^10網(wǎng)格位置,但是具有1?0 3的恒定 值。因此,在本技術(shù)的一個(gè)實(shí)施例中,可使用以下各項(xiàng)來恢復(fù)與RAID網(wǎng)格中的RAID網(wǎng)格位置 ("目標(biāo)RAID網(wǎng)格位置")相關(guān)聯(lián)的塊中的數(shù)據(jù)(在一個(gè)或多個(gè)頁上):(i)僅存儲(chǔ)在與目標(biāo) RAID網(wǎng)格位于其中的行或列中的RAID網(wǎng)格位置相關(guān)聯(lián)的塊中的數(shù)據(jù);(ii)使用與目標(biāo)RAID 網(wǎng)格位置位于其中的RAID網(wǎng)格內(nèi)的任何RAID網(wǎng)格位置相關(guān)聯(lián)的塊中的數(shù)據(jù);或者(iii)使 用與目標(biāo)RAID網(wǎng)格位置位于其中的RAID立方體內(nèi)的任何RAID網(wǎng)格位置相關(guān)聯(lián)的塊中的數(shù) 據(jù)。換言之,在本技術(shù)的一個(gè)實(shí)施例中,RAID網(wǎng)格和/或RAID立方體內(nèi)的數(shù)據(jù)和奇偶值的布 置允許當(dāng)在目標(biāo)RAID網(wǎng)格位置位于其中的行和列中的每一個(gè)中存在超過兩個(gè)錯(cuò)誤時(shí)恢復(fù) 與目標(biāo)RAID網(wǎng)格位置相關(guān)聯(lián)的塊中的數(shù)據(jù)(在一個(gè)或多個(gè)頁上)。
[0051 ] 參考圖4A,圖4A包括三個(gè)RAID網(wǎng)格400、402、404,去構(gòu)成1^10立方體的數(shù)據(jù)部分。 每個(gè)RAID網(wǎng)格400、402、404中的每個(gè)RAID網(wǎng)格位置包括定義RAID網(wǎng)格位置中的數(shù)據(jù)被寫入 其中的存儲(chǔ)陣列中的位置的3元組。在本示例中,3元組中的元素對(duì)應(yīng)于如下IFD:〈IFD1, 正02,1^)3>。3元組圖示出如何跨各種ΙΠ )選擇存儲(chǔ)陣列中的位置。特別地,RAID網(wǎng)格A中的 每個(gè)RAID網(wǎng)格位置包括IFD1和IFD2的唯一組合,但是對(duì)于IFD 3而言具有相同的值。例如, 如果IFD1是存儲(chǔ)模塊,IFD2是通道,并且IFD3是NAND管芯,則3元組〈4,2,1>指示與特定RAID 網(wǎng)格位置相關(guān)聯(lián)的塊中的數(shù)據(jù)(在一個(gè)或多個(gè)頁上)將被使用通道2寫入到位于存儲(chǔ)模塊4 中的NAND管芯中的物理位置。同樣地,3元組〈2,3,1>指示與特定RAID網(wǎng)格位置相關(guān)聯(lián)的塊 中的數(shù)據(jù)(在一個(gè)或多個(gè)頁上)將被使用通道3寫入到存儲(chǔ)模塊2中的NAND 1中的物理地址。
[0052] RAID網(wǎng)格B 402和RAID網(wǎng)格C 404被以與RAID網(wǎng)格A 400類似的方式布置。然而,用 于針對(duì)RAID網(wǎng)格B 402中的RAID網(wǎng)格位置的3元組中的IFD 3的值不同于用于針對(duì)RAID網(wǎng)格 A 400的RAID網(wǎng)格位置的3元組中的IFD3的值。此外,用于針對(duì)RAID網(wǎng)格C 404中的RAID網(wǎng)格 位置的3元組中的IFD3的值不同于用于針對(duì)RAID網(wǎng)格A 400且針對(duì)RAID網(wǎng)格B 402的RAID網(wǎng) 格位置的3元組中的IFD3的值。
[0053]參考圖4B,與P奇偶RAID網(wǎng)格406中的每個(gè)RAID網(wǎng)格位置相關(guān)聯(lián)的塊中的數(shù)據(jù)(在 一個(gè)或多個(gè)頁上)被以與RAID網(wǎng)格A 400、RAID網(wǎng)格B 402)以及RAID網(wǎng)格C 404類似的方式 布置。此外,如上所述,使用RAID立方體(即,RAID網(wǎng)格A 400、RAID網(wǎng)格B 402、RAID網(wǎng)格C 404)中的每個(gè)數(shù)據(jù)網(wǎng)格中的一個(gè)RAID網(wǎng)格位置相關(guān)聯(lián)的塊中的數(shù)據(jù)(在一個(gè)或多個(gè)頁上) 來計(jì)算與P奇偶RAID網(wǎng)格406中的每個(gè)RAID網(wǎng)格相關(guān)聯(lián)的塊中的數(shù)據(jù)(在一個(gè)或多個(gè)頁上)。 例如,通過對(duì)與以下RAID網(wǎng)格位置中的一個(gè)相關(guān)聯(lián)的塊中的數(shù)據(jù)(在一個(gè)或多個(gè)頁上)應(yīng)用 P奇偶函數(shù)(例如,X0R函數(shù))來確定與P奇偶RAID網(wǎng)格406中的RAID網(wǎng)格位置〈1,1,4>相關(guān)聯(lián) 的塊中的數(shù)據(jù)(在一個(gè)或多個(gè)頁上):(i)與RAID網(wǎng)格A(400)〈l,1,1>相關(guān)聯(lián)的塊中的數(shù)據(jù) (在一個(gè)或多個(gè)頁上來自RAID網(wǎng)格B 402〈1,1,2>的數(shù)據(jù)以及(iii)與RAID網(wǎng)格C 404 〈1,1,3>相關(guān)聯(lián)的塊中的數(shù)據(jù)(在一個(gè)或多個(gè)頁上)。以類似方式計(jì)算與P奇偶RAID網(wǎng)格406 中的其它RAID網(wǎng)格位置相關(guān)聯(lián)的塊中的數(shù)據(jù)(在一個(gè)或多個(gè)頁上)。
[0054]參考圖4C,與Q奇偶RAID網(wǎng)格408中的每個(gè)RAID網(wǎng)格位置相關(guān)聯(lián)的塊中的數(shù)據(jù)(在 一個(gè)或多個(gè)頁上)被以與RAID網(wǎng)格A 400、RAID網(wǎng)格B 402以及RAID網(wǎng)格C 404類似的方式布 置。此外,如上所述,使用RAID立方體(即,RAID網(wǎng)格A 400、RAID網(wǎng)格B 402、RAID網(wǎng)格C 404) 中的每個(gè)數(shù)據(jù)網(wǎng)格中的一個(gè)RAID網(wǎng)格位置相關(guān)聯(lián)的塊中的數(shù)據(jù)(在一個(gè)或多個(gè)頁上)來計(jì) 算與Q奇偶RAID網(wǎng)格408中的每個(gè)RAID網(wǎng)格相關(guān)聯(lián)的塊中的數(shù)據(jù)(在一個(gè)或多個(gè)頁上)。例 如,通過對(duì)與以下RAID網(wǎng)格位置中的一個(gè)相關(guān)聯(lián)的塊中的數(shù)據(jù)(在一個(gè)或多個(gè)頁上)應(yīng)用Q 奇偶函數(shù)(如上所述)來確定與Q奇偶RAID網(wǎng)格408中的RAID網(wǎng)格位置〈1,1,5>相關(guān)聯(lián)的塊中 的數(shù)據(jù)(在一個(gè)或多個(gè)頁上):(i)與RAID網(wǎng)格A 400〈1,1,1>相關(guān)聯(lián)的塊中的數(shù)據(jù)(在一個(gè)或 多個(gè)頁上),(ii)與RAID網(wǎng)格B 402〈1,1,2>相關(guān)聯(lián)的塊中的數(shù)據(jù)(在一個(gè)或多個(gè)頁上),以及 (iii)與RAID網(wǎng)格C 404〈1,1,3>相關(guān)聯(lián)的塊中的數(shù)據(jù)(在一個(gè)或多個(gè)頁上)。以類似方式計(jì) 算與Q奇偶RAID網(wǎng)格408中的其它RAID網(wǎng)格位置相關(guān)聯(lián)的塊中的數(shù)據(jù)(在一個(gè)或多個(gè)頁上)。 [0055]圖5A-5C示出了根據(jù)本技術(shù)的一個(gè)或多個(gè)實(shí)施例的塊500。在本技術(shù)的一個(gè)實(shí)施 例中,RAID網(wǎng)格(上文討論)中的每個(gè)RAID位置被配置成存儲(chǔ)塊500,其中,該塊包括一組頁。 參考圖5A,塊500至少包括包含用戶數(shù)據(jù)501的一個(gè)或多個(gè)頁和包含標(biāo)簽508的至少一個(gè)頁。 在本技術(shù)的一個(gè)實(shí)施例中,用戶數(shù)據(jù)501可包括客戶端數(shù)據(jù)502、塊層級(jí)元數(shù)據(jù)506和奇偶數(shù) 據(jù)504。用戶數(shù)據(jù)501被存儲(chǔ)在塊500內(nèi)的一個(gè)或多個(gè)頁中。在本技術(shù)的一個(gè)實(shí)施例中,用戶 數(shù)據(jù)502對(duì)應(yīng)于從客戶端接收到的任何數(shù)據(jù)。在本技術(shù)的一個(gè)實(shí)施例中,塊層級(jí)元數(shù)據(jù)506 包括用于存儲(chǔ)在塊500中的客戶端數(shù)據(jù)502的元數(shù)據(jù)。在本技術(shù)的一個(gè)實(shí)施例中,塊層級(jí)元 數(shù)據(jù)對(duì)應(yīng)于如在美國(guó)專利號(hào)8,370,567中描述的內(nèi)容表?xiàng)l目,其被通過引用結(jié)合到本文中。 繼續(xù)圖5A的討論,奇偶數(shù)據(jù)504包括根據(jù)如上文在圖2-4D中所述和在被通過引用結(jié)合到本 文中的美國(guó)專利號(hào)8,327,185中所述的多維RAID方案生成的奇偶值。在本技術(shù)的一個(gè)實(shí)施 例中,標(biāo)簽508對(duì)應(yīng)于用于區(qū)(即,RAID網(wǎng)格的一部分)(參見例如圖6)和/或用于塊500位于 其中的RAID網(wǎng)格的元數(shù)據(jù)。標(biāo)簽508可被存儲(chǔ)在塊500內(nèi)的單獨(dú)頁中。換言之,每個(gè)塊可包括 其中存儲(chǔ)在頁中的唯一內(nèi)容是標(biāo)簽(或其一部分)的至少一個(gè)頁。在圖5B、5C和6中描述了關(guān) 于標(biāo)簽508的附加細(xì)節(jié)。
[0056]圖5B示出了根據(jù)本技術(shù)的一個(gè)或多個(gè)實(shí)施例的用于塊500的標(biāo)簽508。如圖5B中所 示,標(biāo)簽508可包括:(i)存儲(chǔ)模塊ID 510、用于區(qū)512的P/E計(jì)數(shù)、網(wǎng)格幾何結(jié)構(gòu)514、時(shí)間戳 516以及用于區(qū)(518)的壞位置信息。下面描述這些部件中的每一個(gè)。
[0057]在本技術(shù)的一個(gè)實(shí)施例中,存儲(chǔ)模塊ID 510指定標(biāo)簽位于其上面的存儲(chǔ)陣列108 內(nèi)的存儲(chǔ)模塊。更具體地,標(biāo)簽最初被存儲(chǔ)在存儲(chǔ)模塊(未示出)上的塊500中,存儲(chǔ)模塊ID 對(duì)應(yīng)于此存儲(chǔ)模塊。在本技術(shù)的一個(gè)實(shí)施例中,使用整數(shù)來表示存儲(chǔ)模塊ID 508字段。
[0058]在本技術(shù)的一個(gè)實(shí)施例中,用于區(qū)512的程序/擦除(P/E)計(jì)數(shù)對(duì)應(yīng)于在特定時(shí)間 點(diǎn)的用于該區(qū)的P/E計(jì)數(shù)。P/E計(jì)數(shù)可表示:(i)已對(duì)塊500內(nèi)的頁執(zhí)行的P/E循環(huán)的數(shù)目或 (ii)P/E循環(huán)范圍(例如,5,000-9,999P/E循環(huán)),其中,已在塊內(nèi)的頁上執(zhí)行的P/E循環(huán)的 數(shù)目在P/E循環(huán)范圍內(nèi)。在本技術(shù)的一個(gè)實(shí)施例中,P/E循環(huán)是數(shù)據(jù)到擦除塊中的一個(gè)或多 個(gè)頁的寫入(即,用于擦除操作的最小可尋址單元,通常是一組的多個(gè)頁)和該塊的擦除,按 照任一順序。在本技術(shù)的一個(gè)實(shí)施例中,控制模塊包括用以跟蹤用于存儲(chǔ)池中的每個(gè)塊的 P/E計(jì)數(shù)的功能。
[0059]在本技術(shù)的一個(gè)實(shí)施例中,網(wǎng)格幾何結(jié)構(gòu)514指定關(guān)于RAID網(wǎng)格的幾何結(jié)構(gòu)的信 息。在圖5C中描述了關(guān)于網(wǎng)格幾何結(jié)構(gòu)514的附加細(xì)節(jié)。
[0060] 在本技術(shù)的一個(gè)實(shí)施例中,時(shí)間戳516對(duì)應(yīng)于標(biāo)簽508被寫入到存儲(chǔ)陣列中的塊 500內(nèi)的頁的時(shí)間。時(shí)間戳的精度可基于本技術(shù)的實(shí)施方式而改變。此外,在不脫離本技術(shù) 的情況下可使用序號(hào)來代替時(shí)間戳。
[0061] 在本技術(shù)的一個(gè)實(shí)施例中,用于區(qū)518的壞位置信息可包括:(i)壞存儲(chǔ)模塊信息; (ii)壞塊信息;和/或(iii)壞頁信息。壞存儲(chǔ)模塊信息指定哪些存儲(chǔ)模塊(被用來存儲(chǔ)用于 特定RAID網(wǎng)格的用戶數(shù)據(jù))可用于或不可用于執(zhí)行寫請(qǐng)求。壞塊信息指定上述存儲(chǔ)模塊內(nèi) 的哪些塊不應(yīng)被用來存儲(chǔ)任何數(shù)據(jù)(包括用戶數(shù)據(jù)和標(biāo)簽)。如果不能成功地從塊內(nèi)的大多 數(shù)(某個(gè)閾值數(shù)目)的頁擦除、向其寫入和/或從其檢索數(shù)據(jù),則可將給定塊視為壞塊。例如, 如果不能從塊中的75%的頁擦除、向塊中的75%的頁寫入和/或檢索塊中的75%的頁,則可 將特定塊視為壞塊。在本技術(shù)的另一實(shí)施例中,可在塊內(nèi)的數(shù)據(jù)不可檢索或塊不能成功地 存儲(chǔ)數(shù)據(jù)之前基于關(guān)于塊(或塊內(nèi)的頁)的其它信息的分析來將給定塊視為壞塊。例如,可 使用諸如總P/E循環(huán)、原始位出錯(cuò)率等信息來主動(dòng)地將給定塊標(biāo)記為壞塊。
[0062]在本技術(shù)的一個(gè)實(shí)施例中,壞頁信息指定被用來存儲(chǔ)用于RAID網(wǎng)格的數(shù)據(jù)的上述 塊內(nèi)的哪些頁不應(yīng)被用來存儲(chǔ)任何數(shù)據(jù)(包括用戶數(shù)據(jù)和標(biāo)簽)。如果超過時(shí)間的閾值值 (例如,90%)不能成功地從給定頁擦除、向給定頁寫入和/或從給定頁檢索數(shù)據(jù),則可將該 頁視為壞頁。
[0063] 可使用一個(gè)或多個(gè)位圖來將上述壞位置信息編碼。例如,可存在用于壞存儲(chǔ)模塊 信息的位圖、用于壞塊信息的一組位圖以及用于壞頁信息的一組位圖。該位圖可使用"0"來 表示壞存儲(chǔ)模塊、壞塊或壞頁,并且可使用"Γ來表示所有其它存儲(chǔ)模塊、塊以及頁。在不脫 離本技術(shù)的情況下可使用其它位圖編碼方案。
[0064] 參考圖5C,網(wǎng)格幾何結(jié)構(gòu)(514)可包括:(i)網(wǎng)格尺寸字段520、(ii)網(wǎng)格位置522字 段、以及(iii) 一個(gè)或多個(gè)奇偶位置524、526。下面描述這些部件中的每一個(gè)。
[0065]在本技術(shù)的一個(gè)實(shí)施例中,網(wǎng)格尺寸520信息可包括RAID網(wǎng)格中的行和列的數(shù)目 和與每個(gè)RAID網(wǎng)格尺寸相關(guān)聯(lián)的IFD。在本技術(shù)的一個(gè)實(shí)施例中,網(wǎng)格位置522字段可包括 塊500內(nèi)的網(wǎng)格的位置。
[0066]在本技術(shù)的一個(gè)實(shí)施例中,網(wǎng)格幾何結(jié)構(gòu)包括用于每個(gè)維度上的每種奇偶的一個(gè) 奇偶位置524、526。例如,如果RAID網(wǎng)格在兩個(gè)維度上都包括P和Q奇偶,則網(wǎng)格幾何結(jié)構(gòu)將 包括P奇偶行組、Q奇偶行組、P奇偶列組以及Q奇偶列組的奇偶位置。在本技術(shù)的一個(gè)實(shí)施例 中,基于每個(gè)維度(例如,行和列)對(duì)每個(gè)奇偶類型(例如,P、Q等)指定奇偶位置。本領(lǐng)域的技 術(shù)人員將認(rèn)識(shí)到在不脫離本技術(shù)的情況下可使用更多(例如,使用P、Q以及R奇偶)或更少的 奇偶值(例如,使用P奇偶)來實(shí)現(xiàn)本技術(shù)的實(shí)施例。此外,本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到在不 脫離本技術(shù)的情況下每個(gè)維度可包括不同數(shù)目的奇偶值。
[0067]雖然圖5A-5C示出了存儲(chǔ)在塊中的各種類型的數(shù)據(jù),但在不脫離本技術(shù)的情況下 可用包括附加(或不同)數(shù)據(jù)和/或不同數(shù)據(jù)排序的塊來實(shí)現(xiàn)本技術(shù)的實(shí)施例。此外,在不脫 離本技術(shù)的情況下可使用任何編碼方案對(duì)標(biāo)簽內(nèi)的各種字段中的值進(jìn)行編碼。
[0068] 圖6示出了根據(jù)本技術(shù)的一個(gè)或多個(gè)實(shí)施例的示例。更具體地,圖6示出了用來保 護(hù)存儲(chǔ)在RAID網(wǎng)格內(nèi)的塊中的標(biāo)簽(參見圖5,508)的復(fù)制方案的示例。關(guān)于圖6,圖6示出了 包括48個(gè)RAID網(wǎng)格位置(C)的示例性6 X8RAID網(wǎng)格600,其中,第一維度基于IFD1且第二維 度基于IFD2。在本示例中,假設(shè)IFD1對(duì)應(yīng)于存儲(chǔ)模塊且IFD2對(duì)應(yīng)于通道。此外,假設(shè)針對(duì)標(biāo) 簽指定的復(fù)制量(R)是16。因此,RAID網(wǎng)格600中的區(qū)的數(shù)目是3(即,在本示例中C/R或48/ 16)。此外,由于每個(gè)區(qū)具有兩個(gè)側(cè)面(表示為側(cè)面A和側(cè)面B),所以區(qū)內(nèi)的每個(gè)側(cè)面中的 RAID網(wǎng)格位置的數(shù)目是16/2 = 8。
[0069] 如上文所討論的,每個(gè)RAID網(wǎng)格位置與標(biāo)簽相關(guān)聯(lián)。然而,標(biāo)簽的內(nèi)容可跨與給定 RAID網(wǎng)格相關(guān)聯(lián)的標(biāo)簽而改變。更具體地,在本技術(shù)的一個(gè)實(shí)施例中,標(biāo)簽包括標(biāo)簽特定元 數(shù)據(jù)(例如,存儲(chǔ)模塊ID)、側(cè)面層級(jí)元數(shù)據(jù)(例如,時(shí)間戳)、區(qū)層級(jí)元數(shù)據(jù)(例如,用于區(qū)的 P/E計(jì)數(shù)、用于區(qū)的壞位置信息)以及網(wǎng)格層級(jí)元數(shù)據(jù)(例如,網(wǎng)格幾何結(jié)構(gòu))。因此,參考圖 6,在RAID網(wǎng)格內(nèi)存在網(wǎng)格幾何結(jié)構(gòu)的48個(gè)拷貝且在給定區(qū)內(nèi)存在時(shí)間戳的16個(gè)拷貝。此 外,在給定區(qū)內(nèi),存在用于區(qū)的P/E計(jì)數(shù)的8 -16個(gè)拷貝和用于區(qū)的壞位置信息的8 -16個(gè)拷 貝。相對(duì)于區(qū)的P/E計(jì)數(shù)和用于區(qū)的壞位置信息,此數(shù)據(jù)在區(qū)內(nèi)被基于側(cè)面更新(參見圖8)。 因此,在某些時(shí)間,給定區(qū)中的兩個(gè)側(cè)面具有用于區(qū)的P/E計(jì)數(shù)的相同內(nèi)容和用于區(qū)的相同 壞位置信息,而在其它時(shí)間,給定區(qū)內(nèi)的兩個(gè)側(cè)面具有針對(duì)用于區(qū)的P/E計(jì)數(shù)的不同內(nèi)容和 針對(duì)用于區(qū)的壞位置信息的不同內(nèi)容。下面所述的圖8提供了在各種時(shí)間的關(guān)于標(biāo)簽內(nèi)容 的附加細(xì)節(jié)。
[0070] 本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到給定區(qū)可包括任何量的復(fù)制(R),條件是R<C(即網(wǎng)格 位置的數(shù)目),使得區(qū)內(nèi)的每個(gè)側(cè)面包括在R/2與R-1之間的RAID網(wǎng)格位置。
[0071] 在圖6中示出并在上文描述的示例并不意圖限制本技術(shù)的范圍。
[0072] 圖7示出了根據(jù)本技術(shù)的一個(gè)實(shí)施例中的系統(tǒng)內(nèi)的各種部件之間的關(guān)系。在本技 術(shù)的一個(gè)實(shí)施例中,控制器包括一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)以跟蹤關(guān)于各種部件的信息和/或關(guān) 于一個(gè)或多個(gè)部件之間的關(guān)系的信息。
[0073] 在本技術(shù)的一個(gè)實(shí)施例中,每個(gè)RAID網(wǎng)格702包括一個(gè)或多個(gè)RAID網(wǎng)格位置704。 此外,在控制器實(shí)現(xiàn)3D RAID方案的情況下,RAID網(wǎng)格702可與RAID立方體700相關(guān)聯(lián)。此外, 每個(gè)RAID網(wǎng)格位置704與塊708相關(guān)聯(lián),其中,每個(gè)塊進(jìn)一步與一個(gè)或多個(gè)頁710相關(guān)聯(lián)。每 個(gè)頁710與物理地址712相關(guān)聯(lián)。此外,雖然在圖7中未示出,但每個(gè)頁710還與RAID網(wǎng)格層相 關(guān)聯(lián)(參見例如圖2)。
[0074]在本技術(shù)的一個(gè)實(shí)施例中,控制器跟蹤由客戶端提供的數(shù)據(jù)與存儲(chǔ)陣列中的此類 數(shù)據(jù)的物理地址之間的映射。在本技術(shù)的一個(gè)實(shí)施例中,控制器使用從客戶端的角度出發(fā) 識(shí)別數(shù)據(jù)的邏輯地址(例如,〈對(duì)象,偏移>714)與識(shí)別存儲(chǔ)陣列內(nèi)的數(shù)據(jù)位置的物理地址 712之間的映射來跟蹤上述信息。在本技術(shù)的一個(gè)實(shí)施例中,映射可以是在從對(duì)〈對(duì)象,偏移 >應(yīng)用散列函數(shù)(例如,MD5、SHA 1)得到的散列值與相應(yīng)物理地址712之間。本領(lǐng)域的技術(shù)人 員將認(rèn)識(shí)到在不脫離本技術(shù)的情況下可使用任何形式的邏輯地址。在本技術(shù)的一個(gè)實(shí)施例 中,使用塊層級(jí)元數(shù)據(jù)來確定物理地址712到邏輯地址714映射。在本技術(shù)的一個(gè)實(shí)施例中, 根據(jù)在美國(guó)專利號(hào)8,370,567中描述的方法來確定上述映射。
[0075]在本技術(shù)的一個(gè)實(shí)施例中,控制器跟蹤哪個(gè)RAID網(wǎng)格702(包括數(shù)據(jù)部分和奇偶部 分中的RAID網(wǎng)格)與哪個(gè)RAID立方體700相關(guān)聯(lián)(假設(shè)控制器正在實(shí)現(xiàn)3D RAID方案)以及哪 些RAID網(wǎng)格位置(704)與每個(gè)RAID網(wǎng)格(702)相關(guān)聯(lián)。
[0076]在本技術(shù)的一個(gè)實(shí)施例中,控制器跟蹤每個(gè)RAID網(wǎng)格位置706的狀態(tài)716。在本技 術(shù)的一個(gè)實(shí)施例中,可將RAID網(wǎng)格位置的狀態(tài)716設(shè)定為已填充(表示塊已被寫入到RAID網(wǎng) 格位置)或空(表示沒有東西被寫入到RAID網(wǎng)格位置)。在本技術(shù)的一個(gè)實(shí)施例中,如果控制 器已識(shí)別到要寫入到RAID網(wǎng)格位置的數(shù)據(jù),控制器頁可將RAID網(wǎng)格位置的狀態(tài)設(shè)置成已填 充(參見圖8)。當(dāng)最初創(chuàng)建RAID網(wǎng)格時(shí),控制器可在最初將每個(gè)RAID網(wǎng)格位置的狀態(tài)設(shè)置成 空的。
[0077]在本技術(shù)的一個(gè)實(shí)施例中,控制器跟蹤每個(gè)RAID網(wǎng)格位置(706)被關(guān)聯(lián)到哪個(gè)〈 區(qū),側(cè)面>(718)。在本技術(shù)的一個(gè)實(shí)施例中,控制器跟蹤與每個(gè)RAID網(wǎng)格位置相關(guān)聯(lián)的每個(gè) 標(biāo)簽(720)(參見例如圖5A-5C)的內(nèi)容。
[0078] 圖8-9示出了根據(jù)本技術(shù)的一個(gè)或多個(gè)實(shí)施例的流程圖。更具體地,雖然按順序 提出并描述了流程圖中的各種步驟,但本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到某些或所有步驟可按照 不同順序執(zhí)行,可被組合或省略,并且某些或所有步驟可并行地執(zhí)行。在本技術(shù)的一個(gè)實(shí)施 例中,可并行地執(zhí)行圖8-9中所示的方法。
[0079] 參考圖8,圖8示出了根據(jù)本技術(shù)的一個(gè)或多個(gè)實(shí)施例的用于將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)陣 列中的方法。
[0080] 在步驟800中,獲得用于RAID網(wǎng)格的客戶端數(shù)據(jù)和塊層級(jí)元數(shù)據(jù)。在本技術(shù)的一個(gè) 實(shí)施例中,可通過來自客戶端的一系列寫請(qǐng)求來獲得客戶端數(shù)據(jù)。此外,例如根據(jù)美國(guó)專利 號(hào)8,370,567,獲得塊層級(jí)元數(shù)據(jù)可包括在接收到客戶端數(shù)據(jù)之后生成塊層級(jí)元數(shù)據(jù)。
[0081]在步驟802中,使用在步驟800中獲得的塊層級(jí)元數(shù)據(jù)和客戶端數(shù)據(jù)來生成奇偶 值。可根據(jù)多維RAID方案(諸如上文所述的)來生成奇偶值。
[0082] 在步驟804中,生成針對(duì)用于RAID網(wǎng)格中的每個(gè)區(qū)中的側(cè)面A中的每個(gè)RAID網(wǎng)格位 置的標(biāo)簽。該標(biāo)簽包括如例如上文相對(duì)于圖5A-5C和6所述的內(nèi)容。在步驟804中產(chǎn)生的標(biāo) 簽是基于針對(duì)用于區(qū)的至少P/E計(jì)數(shù)的當(dāng)前值和用于區(qū)的壞位置信息,該壞位置信息是由 控制器維護(hù)的。更具體地,在數(shù)據(jù)(包括用戶數(shù)據(jù)和標(biāo)簽)最后一次被寫入到區(qū)內(nèi)的塊期間 確定用于區(qū)的P/E計(jì)數(shù)和用于區(qū)的壞位置信息。
[0083] 在步驟806中,擦除與用于每個(gè)區(qū)的側(cè)面A的RAID網(wǎng)格位置相關(guān)聯(lián)的所有塊的內(nèi) 容。
[0084] 在步驟808中,使用擦除操作的結(jié)果來更新由控制器維護(hù)的一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)。 更具體地,可更新針對(duì)所有區(qū)的用于側(cè)面A的P/E計(jì)數(shù)和針對(duì)RAID網(wǎng)格中的所有區(qū)的用于側(cè) 面A的壞塊信息。例如,擦除操作可導(dǎo)致P/E計(jì)數(shù)的更新,并且在對(duì)于給定塊而言擦除操作失 敗的情況下可更新壞塊信息。
[0085]在步驟810中,向與RAID網(wǎng)格內(nèi)的所有區(qū)中的側(cè)面A相關(guān)聯(lián)的RAID網(wǎng)格位置發(fā)布 寫。更具體地,包括相應(yīng)標(biāo)簽的一頁被寫入到與用于RAID網(wǎng)格中的每個(gè)區(qū)的側(cè)面A相關(guān)聯(lián)的 每個(gè)RAID網(wǎng)格位置。
[0086] 在步驟812中,擦除與用于每個(gè)區(qū)的側(cè)面B的RAID網(wǎng)格位置相關(guān)聯(lián)的所有塊的內(nèi) 容。
[0087] 在步驟814中,使用擦除操作的結(jié)果來更新由控制器維護(hù)的一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)。 更具體地,可更新針對(duì)所有區(qū)的用于側(cè)面B的P/E計(jì)數(shù)和針對(duì)RAID網(wǎng)格中的所有區(qū)的用側(cè)面 B的壞塊信息。例如,擦除操作可導(dǎo)致P/E計(jì)數(shù)的更新,并且在對(duì)于給定塊而言擦除操作失敗 的情況下可更新壞塊信息。在此階段,用于區(qū)的當(dāng)前P/E計(jì)數(shù)和用于區(qū)的當(dāng)前壞塊信息可用 于控制器。換言之,在步驟808中,用于每個(gè)區(qū)的當(dāng)前P/E計(jì)數(shù)的僅一部分是已知的,因?yàn)橛?于與每個(gè)區(qū)的側(cè)面A相關(guān)聯(lián)的RAID網(wǎng)格位置的僅已更新信息可用(即,因?yàn)閮H對(duì)與用于給定 區(qū)的側(cè)面A相關(guān)聯(lián)的RAID網(wǎng)格位置執(zhí)行擦除操作)。
[0088] 在步驟816中,生成針對(duì)用于RAID網(wǎng)格中的每個(gè)區(qū)中的側(cè)面B中的每個(gè)RAID網(wǎng)格位 置的標(biāo)簽。該標(biāo)簽包括如例如上文關(guān)于圖5A-5C和6所述的內(nèi)容。在步驟804中產(chǎn)生的標(biāo)簽是 基于由控制器維護(hù)的至少用于區(qū)的P/E計(jì)數(shù)的當(dāng)前值和用于區(qū)的壞位置信息(即,至少部分 地在步驟808和814中獲得的已更新內(nèi)容)。
[0089]在步驟818中,向與RAID網(wǎng)格內(nèi)的所有區(qū)中的側(cè)面B相關(guān)聯(lián)的RAID網(wǎng)格位置發(fā)布 寫。更具體地,包括相應(yīng)標(biāo)簽的一個(gè)頁被寫入到與用于RAID網(wǎng)格中的每個(gè)區(qū)的側(cè)面B相關(guān)聯(lián) 的每個(gè)RAID網(wǎng)格位置。
[0090] 在步驟820中,將相應(yīng)的用戶數(shù)據(jù)(例如,圖5中的501)寫入到RAID網(wǎng)格。
[0091]參考圖9,圖9示出了根據(jù)本技術(shù)的一個(gè)或多個(gè)實(shí)施例的用于從RAID網(wǎng)格導(dǎo)入數(shù)據(jù) 的方法。更具體地,圖9示出了用于確定來自存儲(chǔ)模塊的先前存儲(chǔ)內(nèi)容是否有效,且在有效 的情況下然后將內(nèi)容的適當(dāng)部分導(dǎo)入到存儲(chǔ)控制器的存儲(chǔ)器中的方法。圖9中所示的方法 在控制器(和/或系統(tǒng)中的其它部件)失去電源且然后其隨后被用備用電源供電時(shí)發(fā)生。
[0092] 轉(zhuǎn)到圖9,假設(shè)可向系統(tǒng)恢復(fù)電源。一旦電源已經(jīng)恢復(fù),則該過程可前進(jìn)至(直接地 或在已執(zhí)行重新啟動(dòng)系統(tǒng)有關(guān)的其它步驟(未示出)之后)步驟900。在步驟900中,選擇RAID 網(wǎng)格。在步驟902中,選擇RAID網(wǎng)格內(nèi)的區(qū)。
[0093] 在步驟904中,從所選區(qū)的側(cè)面B中的每個(gè)塊獲得有效標(biāo)簽。在本技術(shù)的實(shí)施例中, 可不從所選區(qū)的側(cè)面B中的每個(gè)塊獲得有效標(biāo)簽。在本技術(shù)的一個(gè)實(shí)施例中,有效標(biāo)簽對(duì)應(yīng) 于可從存儲(chǔ)陣列成功地讀取的標(biāo)簽。
[0094]在步驟906中,進(jìn)行關(guān)于至少每個(gè)有效標(biāo)簽中的時(shí)間戳是否一致的確定。如果標(biāo)簽 (和/或標(biāo)簽內(nèi)的其它內(nèi)容)(例如,網(wǎng)格幾何結(jié)構(gòu)、壞位置信息等)是不一致(即,相同)的,則 過程前進(jìn)至步驟908;可替換地,過程前進(jìn)至步驟912。
[0095]在步驟908中,選擇來自在步驟904中獲得的有效標(biāo)簽組的標(biāo)簽。在步驟910中,進(jìn) 行關(guān)于在RAID網(wǎng)格中是否存在要處理的附加區(qū)的確定。如果在RAID網(wǎng)格中存在要處理的附 加區(qū),則過程前進(jìn)至步驟902;否則,過程前進(jìn)至步驟922。
[0096]關(guān)于步驟906,如果至少每個(gè)有效標(biāo)簽中的時(shí)間戳是不一致的,則過程前進(jìn)至步驟 912。在步驟912中,選擇RAID網(wǎng)格中的區(qū)。在步驟914中,從已從步驟912選擇的區(qū)的側(cè)面A中 的每個(gè)塊獲得有效標(biāo)簽。在本技術(shù)的一個(gè)實(shí)施例中,可不從所選區(qū)的側(cè)面A中的每個(gè)塊獲得 有效標(biāo)簽。
[0097]在步驟916中,進(jìn)行關(guān)于至少每個(gè)有效標(biāo)簽中的時(shí)間戳是否一致的確定。如果標(biāo)簽 (和/或標(biāo)簽內(nèi)的其它內(nèi)容)(例如,網(wǎng)格幾何結(jié)構(gòu)、壞位置信息等)是不一致(即,相同)的,則 過程前進(jìn)至步驟924;可替換地,過程前進(jìn)至步驟918。
[0098]在步驟918中,選擇來自在步驟914中獲得的有效標(biāo)簽組的標(biāo)簽。
[0099]在步驟920中,進(jìn)行關(guān)于在RAID網(wǎng)格中是否存在要處理的附加區(qū)的確定。更具體 地,步驟920中的確定是基于在RAID網(wǎng)格中是否存在對(duì)于其而言與區(qū)的側(cè)面A相關(guān)聯(lián)的標(biāo)簽 未被處理的其它區(qū)。如果在RAID網(wǎng)格中存在要處理的附加區(qū),則方法前進(jìn)至步驟912;否則, 過程前進(jìn)至步驟922。在本技術(shù)的一個(gè)實(shí)施例中,如果(i)在步驟902-910中針對(duì)每個(gè)區(qū)已 識(shí)別到來自側(cè)面B的有效標(biāo)簽,或者(ii)在步驟912-920中針對(duì)每個(gè)區(qū)已識(shí)別到來自側(cè)面B 的有效標(biāo)簽,則過程可僅前進(jìn)至步驟922。
[0100] 在步驟922中,進(jìn)行關(guān)于至少每個(gè)所選標(biāo)簽(在步驟908或918中獲得)中的時(shí)間戳 是否一致的確定。如果標(biāo)簽(和/或標(biāo)簽內(nèi)的其它內(nèi)容)(例如,網(wǎng)格幾何結(jié)構(gòu)、壞位置信息 等)是不一致(即,相同)的,則過程前進(jìn)至步驟924;可替換地,過程前進(jìn)至步驟926。
[0101]在本技術(shù)的一個(gè)實(shí)施例中,步驟902-910和912-920確保特定區(qū)的給定側(cè)面內(nèi)的 標(biāo)簽是一致的,而步驟922確??缯麄€(gè)RAID網(wǎng)格的標(biāo)簽是一致的。在本技術(shù)的一個(gè)實(shí)施例 中,由于用于RAID網(wǎng)格中的所有區(qū)中的給定側(cè)面的標(biāo)簽應(yīng)具有至少相同的時(shí)間戳(基于其 被寫入到存儲(chǔ)陣列的方式,參見例如圖8),所以可至少部分地基于這樣的事實(shí)來確定標(biāo)簽 的有效性,即針對(duì)RAID網(wǎng)格中的所有區(qū)的用于給定側(cè)面的標(biāo)簽應(yīng)具有相同時(shí)間戳。如果其 不具有,則標(biāo)簽是不一致的的。此外,由于每個(gè)標(biāo)簽僅包括網(wǎng)格層級(jí)元數(shù)據(jù)的一部分(參見 圖5A-5C),以便重構(gòu)用于RAID網(wǎng)格的網(wǎng)格層級(jí)元數(shù)據(jù),所以必須從RAID網(wǎng)格中的每個(gè)區(qū)獲 得有效標(biāo)簽,并且這些標(biāo)簽中的每一個(gè)必須具有相同的時(shí)間戳。至少時(shí)間戳的一致性確保 標(biāo)簽的內(nèi)容是適當(dāng)可組合的(即,每個(gè)所選標(biāo)簽的內(nèi)容對(duì)應(yīng)于同一RAID網(wǎng)格(即,在特定時(shí) 間的RAID網(wǎng)格)的一部分)。
[0102] 參考圖9,在步驟926中,完成RAID網(wǎng)格的導(dǎo)入。RAID網(wǎng)格的導(dǎo)入可包括從標(biāo)簽導(dǎo)入 信息,以便確定例如RAID網(wǎng)格和各種奇偶值在RAID網(wǎng)格內(nèi)的位置。導(dǎo)入還可包括生成關(guān)于 圖6所述的數(shù)據(jù)結(jié)構(gòu)中的一個(gè)或多個(gè)。在本技術(shù)的一個(gè)實(shí)施例中,在沒有來自標(biāo)簽的信息的 情況下,控制器將不具有關(guān)于用戶數(shù)據(jù)如何被存儲(chǔ)在存儲(chǔ)陣列中的足夠信息,并且同樣地 將不能檢索此信息和/或?qū)崿F(xiàn)多維RAID方案。
[0103] 關(guān)于圖9,如果未獲得一致的一組有效標(biāo)簽,則在步驟924中,不存在用以導(dǎo)入RAID 網(wǎng)格的足夠信息,并且同樣地向適當(dāng)?shù)膫€(gè)體、實(shí)體等發(fā)布錯(cuò)誤通知。
[0104] 本技術(shù)的實(shí)施例提供了一種用于使用兩個(gè)不同的機(jī)制一分別是復(fù)制和多維RAID 方案一在存儲(chǔ)池中存儲(chǔ)網(wǎng)格層級(jí)元數(shù)據(jù)(即,標(biāo)簽)和用戶數(shù)據(jù)的機(jī)制。此外,用來在存儲(chǔ)陣 列中存儲(chǔ)上述數(shù)據(jù)的方式是自描述的。具體地,標(biāo)簽提供網(wǎng)格層級(jí)和區(qū)層級(jí)元數(shù)據(jù),其使得 能夠恢復(fù)至少實(shí)現(xiàn)多維RAID方案所需的網(wǎng)格幾何結(jié)構(gòu)(及其它信息)。此外,在每個(gè)塊內(nèi),存 在包括用戶數(shù)據(jù)(包括塊層級(jí)元數(shù)據(jù))的一個(gè)或多個(gè)頁,其中,塊層級(jí)元數(shù)據(jù)被用來填充一 個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)。這些數(shù)據(jù)結(jié)構(gòu)然后可被用來獲得存儲(chǔ)在存儲(chǔ)陣列內(nèi)的用戶數(shù)據(jù)。
[0105] 本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到已相對(duì)于沿著IFD在存儲(chǔ)陣列中存儲(chǔ)數(shù)據(jù)和/或在 NAND閃存中存儲(chǔ)數(shù)據(jù)描述了本技術(shù)的各種示例,但在不脫離本技術(shù)的情況下可在任何多維 磁盤陣列上實(shí)現(xiàn)本技術(shù)的實(shí)施例。例如,可使用存儲(chǔ)設(shè)備(磁性、光學(xué)、固態(tài)或任何其它類型 的存儲(chǔ)設(shè)備)的二維陣列來實(shí)現(xiàn)本技術(shù)的一個(gè)或多個(gè)實(shí)施例,其中,用于RAID網(wǎng)格中的每個(gè) RAID網(wǎng)格位置的數(shù)據(jù)被存儲(chǔ)在單獨(dú)磁盤上。
[0106] 此外,在本技術(shù)的一個(gè)實(shí)施例中,在控制器在使用三維磁盤陣列來實(shí)現(xiàn)3D RAID方 案時(shí),控制器可使用以下η元組來存儲(chǔ)用于每個(gè)RAID網(wǎng)格位置的數(shù)據(jù):< 磁盤X,磁盤y,磁盤 z,邏輯塊地址(LAB)a>,其中,x、y和z是磁盤陣列的維度。
[0107] 用于使用二維磁盤陣列來實(shí)現(xiàn)本技術(shù)的實(shí)施例的上述示例并不意圖限制本技術(shù) 的范圍。
[0108] 本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到已關(guān)于2D RAID方案和3D RAID方案描述了本技術(shù),但 可將本技術(shù)的實(shí)施例擴(kuò)展至任何多維RAID方案。
[0109] 可使用由系統(tǒng)中的一個(gè)或多個(gè)處理器執(zhí)行的指令來實(shí)現(xiàn)本技術(shù)的一個(gè)或多個(gè)實(shí) 施例。此外,此類指令可對(duì)應(yīng)于存儲(chǔ)在一個(gè)或多個(gè)非臨時(shí)計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)可讀 指令。
[0110] 雖然已相對(duì)于有限數(shù)目的實(shí)施例描述了本技術(shù),但受益于本公開的本領(lǐng)域的技術(shù) 人員將認(rèn)識(shí)到可以發(fā)明不脫離如在本文中公開的本技術(shù)的范圍的其它實(shí)施例。因此,本技 術(shù)的范圍將僅僅受到所附權(quán)利要求的限制。
【主權(quán)項(xiàng)】
1. 一種用于存儲(chǔ)數(shù)據(jù)的方法,包括: (a) 產(chǎn)生第一多個(gè)標(biāo)簽,所述第一多個(gè)標(biāo)簽中的每一個(gè)包括用于RAID網(wǎng)格中的第一區(qū) 的第一 P/E計(jì)數(shù)和用于所述第一區(qū)的第一壞位置信息; (b) 擦除第一組RAID網(wǎng)格位置中的每一個(gè),其中,所述第一組RAID網(wǎng)格位置中的每一個(gè) 包括與所述第一區(qū)的第一側(cè)面相關(guān)聯(lián)的塊; (c) 將所述第一多個(gè)標(biāo)簽中的一個(gè)寫入到所述第一組RAID網(wǎng)格位置中的每一個(gè); (d) 擦除第二組RAID網(wǎng)格位置中的每一個(gè),其中,所述第二組RAID網(wǎng)格位置中的每一個(gè) 包括與所述第一區(qū)的第二側(cè)面相關(guān)聯(lián)的塊,其中,(c)是在(d)之前執(zhí)行的; (e) 產(chǎn)生第二多個(gè)標(biāo)簽,所述第二多個(gè)標(biāo)簽中的每一個(gè)包括用于所述RAID網(wǎng)格中的所 述第一區(qū)的第二P/E計(jì)數(shù)和用于所述第一區(qū)的第二壞位置信息; (f) 將所述第二多個(gè)標(biāo)簽中的一個(gè)寫入到所述第二組RAID網(wǎng)格位置中的每一個(gè);以及 (g) 將用戶數(shù)據(jù)寫入到所述第一組RAID網(wǎng)格位置中的每一個(gè)和所述第二組RAID網(wǎng)格位 置中的每一個(gè)。2. 根據(jù)權(quán)利要求1所述的方法,其還包括: (h) 產(chǎn)生第三多個(gè)標(biāo)簽,所述第三多個(gè)標(biāo)簽中的每一個(gè)包括用于所述RAID網(wǎng)格中的第 二區(qū)的第三P/E計(jì)數(shù)和用于所述第二區(qū)的第三壞位置信息; (i) 擦除第三組RAID網(wǎng)格位置中的每一個(gè),其中,所述第三組RAID網(wǎng)格位置中的每一個(gè) 包括與所述第二區(qū)的第一側(cè)面相關(guān)聯(lián)的塊; (j) 將所述第三多個(gè)標(biāo)簽中的一個(gè)寫入到所述第三組RAID網(wǎng)格位置中的每一個(gè); (k) 擦除第四組RAID網(wǎng)格位置中的每一個(gè),其中,所述第四組RAID網(wǎng)格位置中的每一個(gè) 包括與所述第二區(qū)的第二側(cè)面相關(guān)聯(lián)的塊; (l) 產(chǎn)生第四多個(gè)標(biāo)簽,所述第四多個(gè)標(biāo)簽中的每一個(gè)包括用于所述RAID網(wǎng)格中的所 述第二區(qū)的第四P/E計(jì)數(shù)和用于所述第二區(qū)的第四壞位置信息; (m) 將所述第四多個(gè)標(biāo)簽中的一個(gè)寫入到所述第四組RAID網(wǎng)格位置中的每一個(gè);以及 (η)將用戶數(shù)據(jù)寫入到所述第三組RAID網(wǎng)格位置中的每一個(gè)和所述第四組RAID網(wǎng)格位 置中的每一個(gè)。3. 根據(jù)權(quán)利要求2所述的方法,其中,所述第一多個(gè)標(biāo)簽中的每一個(gè)還包括時(shí)間戳,并 且其中,所述第三多個(gè)標(biāo)簽中的每一個(gè)還包括所述時(shí)間戳。4. 根據(jù)權(quán)利要求1所述的方法,其中,所述用戶數(shù)據(jù)包括選自由塊層級(jí)元數(shù)據(jù)、客戶端 數(shù)據(jù)以及使用客戶端數(shù)據(jù)生成的奇偶值組成的組中的至少一個(gè)。5. 根據(jù)權(quán)利要求4所述的方法,其中,所述奇偶值包括選自由P奇偶值、Q奇偶值以及交 集奇偶值組成的組中的至少一個(gè)。6. 根據(jù)權(quán)利要求4所述的方法,其中,用RAID方案來保護(hù)所述RAID網(wǎng)格中的所述用戶數(shù) 據(jù),其中,用復(fù)制方案來保護(hù)所述RAID網(wǎng)格中的所述第一多個(gè)標(biāo)簽。7. 根據(jù)權(quán)利要求1所述的方法,其中,至少部分地使用(b)和(d)的結(jié)果來確定所述第二 壞位置信息。8. 根據(jù)權(quán)利要求1所述的方法,其中,用于所述第一區(qū)的所述第二壞位置信息包括選自 由壞存儲(chǔ)模塊信息、壞塊信息以及壞頁信息組成的組中的至少一個(gè)。9. 根據(jù)權(quán)利要求1所述的方法,其中,所述第二壞位置信息不同于所述第一壞位置信 息。10. 根據(jù)權(quán)利要求1所述的方法,其中,在(g)之前執(zhí)行(C)和(f)。11. 根據(jù)權(quán)利要求1所述的方法,其中,所述第一多個(gè)標(biāo)簽中的每一個(gè)包括用于所述 RAID網(wǎng)格的網(wǎng)格幾何結(jié)構(gòu),并且其中,所述網(wǎng)格幾何結(jié)構(gòu)包括所述RAID網(wǎng)格中的奇偶位置。12. 根據(jù)權(quán)利要求11所述的方法,其中,所述第二多個(gè)標(biāo)簽中的每一個(gè)包括用于所述 RAID網(wǎng)格的網(wǎng)格幾何結(jié)構(gòu)。13. -種包括計(jì)算機(jī)可讀程序代碼的非臨時(shí)計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可讀程序代 碼在被計(jì)算機(jī)處理器執(zhí)行時(shí)使得計(jì)算機(jī)處理器能夠: (a) 產(chǎn)生第一多個(gè)標(biāo)簽,所述第一多個(gè)標(biāo)簽中的每一個(gè)包括用于RAID網(wǎng)格中的第一區(qū) 的第一 P/E計(jì)數(shù)和用于所述第一區(qū)的第一壞位置信息; (b) 擦除第一組RAID網(wǎng)格位置中的每一個(gè),其中,所述第一組RAID網(wǎng)格位置中的每一個(gè) 包括與所述第一區(qū)的第一側(cè)相關(guān)聯(lián)的塊; (c) 將所述第一多個(gè)標(biāo)簽中的一個(gè)寫入到所述第一組RAID網(wǎng)格位置中的每一個(gè); (d) 擦除第二組RAID網(wǎng)格位置中的每一個(gè),其中,所述第二組RAID網(wǎng)格位置中的每一個(gè) 包括與所述第一區(qū)的第二側(cè)面相關(guān)聯(lián)的塊,其中,(c)是在(d)之前執(zhí)行的; (e) 產(chǎn)生第二多個(gè)標(biāo)簽,所述第二多個(gè)標(biāo)簽中的每一個(gè)包括用于所述RAID網(wǎng)格中的所 述第一區(qū)的第二P/E計(jì)數(shù)和用于所述第一區(qū)的第二壞位置信息; (f) 將所述第二多個(gè)標(biāo)簽中的一個(gè)寫入到所述第二組RAID網(wǎng)格位置中的每一個(gè);以及 (g) 將用戶數(shù)據(jù)寫入到所述第一組RAID網(wǎng)格位置中的每一個(gè)和所述第二組RAID網(wǎng)格位 置中的每一個(gè)。14. 根據(jù)權(quán)利要求13所述的非臨時(shí)計(jì)算機(jī)可讀介質(zhì),還包括計(jì)算機(jī)可讀程序代碼,所述 計(jì)算機(jī)可讀程序代碼在被計(jì)算機(jī)處理器執(zhí)行時(shí)使得計(jì)算機(jī)處理器能夠: (h) 產(chǎn)生第三多個(gè)標(biāo)簽,所述第三多個(gè)標(biāo)簽中的每一個(gè)包括用于所述RAID網(wǎng)格中的第 二區(qū)的第三P/E計(jì)數(shù)和用于所述第二區(qū)的第三壞位置信息; (i) 擦除第三組RAID網(wǎng)格位置中的每一個(gè),其中,所述第三組RAID網(wǎng)格位置中的每一個(gè) 包括與所述第二區(qū)的第一側(cè)相關(guān)聯(lián)的塊; (j) 將所述第三多個(gè)標(biāo)簽中的一個(gè)寫入到所述第三組RAID網(wǎng)格位置中的每一個(gè); (k) 擦除第四組RAID網(wǎng)格位置中的每一個(gè),其中,所述第四組RAID網(wǎng)格位置中的每一個(gè) 包括與所述第二區(qū)的第二側(cè)面相關(guān)聯(lián)的塊; (l) 產(chǎn)生第四多個(gè)標(biāo)簽,所述第四多個(gè)標(biāo)簽中的每一個(gè)包括用于所述RAID網(wǎng)格中的所 述第二區(qū)的第四P/E計(jì)數(shù)和用于所述第二區(qū)的第四壞位置信息; (m) 將所述第四多個(gè)標(biāo)簽中的一個(gè)寫入到所述第四組RAID網(wǎng)格位置中的每一個(gè);以及 (η)將第二用戶數(shù)據(jù)寫入到所述第三組RAID網(wǎng)格位置中的每一個(gè)和所述第四組RAID網(wǎng) 格位置中的每一個(gè)。15. 根據(jù)權(quán)利要求13所述的非臨時(shí)計(jì)算機(jī)可讀介質(zhì),其中,所述第一多個(gè)標(biāo)簽中的每一 個(gè)還包括時(shí)間戳,并且其中,所述第三多個(gè)標(biāo)簽中的每一個(gè)還包括所述時(shí)間戳。16. 根據(jù)權(quán)利要求13所述的非臨時(shí)計(jì)算機(jī)可讀介質(zhì),其中,所述用戶數(shù)據(jù)包括選自由塊 層級(jí)元數(shù)據(jù)、客戶端數(shù)據(jù)以及使用客戶端數(shù)據(jù)生成的奇偶值組成的組的至少一個(gè),并且其 中,所述奇偶值包括選自由P奇偶值、Q奇偶值、以及交集奇偶值組成的組中的至少一個(gè)。17. 權(quán)利要求13的非臨時(shí)計(jì)算機(jī)可讀介質(zhì),其中,至少部分地使用(b)和(d)的結(jié)果來確 定所述第二壞位置信息,并且其中,用于所述第一區(qū)的所述第二壞位置信息包括選自由壞 存儲(chǔ)模塊信息、壞塊信息、以及壞頁信息組成的組中的至少一個(gè)。18. 根據(jù)權(quán)利要求13所述的非臨時(shí)計(jì)算機(jī)可讀介質(zhì),其中,在(g)之前執(zhí)行(c)和(f)。19. 根據(jù)權(quán)利要求13所述的非臨時(shí)計(jì)算機(jī)可讀介質(zhì),其中,所述第一多個(gè)標(biāo)簽中的每一 個(gè)包括用于所述RAID網(wǎng)格的網(wǎng)格幾何結(jié)構(gòu),其中,所述第二多個(gè)標(biāo)簽中的每一個(gè)包括用于 所述RAID網(wǎng)格的網(wǎng)格幾何結(jié)構(gòu),并且其中,所述網(wǎng)格幾何結(jié)構(gòu)包括所述RAID網(wǎng)格中的奇偶 位置。20. -種系統(tǒng),包括: 控制器; 非臨時(shí)介質(zhì),其被可操作地耦合到所述控制器; 持久性儲(chǔ)存器,其被可操作地連接到所述控制器并包括多個(gè)存儲(chǔ)模塊,其中,所述多個(gè) 存儲(chǔ)模塊中的每一個(gè)包括固態(tài)存儲(chǔ)器; 其中,所述非臨時(shí)計(jì)算機(jī)可讀介質(zhì)包括指令,所述指令在被控制器執(zhí)行時(shí)執(zhí)行一種方 法,該方法包括: (a) 產(chǎn)生第一多個(gè)標(biāo)簽,所述第一多個(gè)標(biāo)簽中的每一個(gè)包括用于RAID網(wǎng)格中的第一區(qū) 的第一 P/E計(jì)數(shù)和用于所述第一區(qū)的第一壞位置信息; (b) 擦除第一組RAID網(wǎng)格位置中的每一個(gè),其中,所述第一組RAID網(wǎng)格位置中的每一個(gè) 包括與所述第一區(qū)的第一側(cè)相關(guān)聯(lián)的塊,其中,所述塊中的每一個(gè)位于所述多個(gè)存儲(chǔ)模塊 中的一個(gè)上; (c) 將所述第一多個(gè)標(biāo)簽中的一個(gè)寫入到的所述第一組RAID網(wǎng)格位置中的每一個(gè); (d) 擦除第二組RAID網(wǎng)格位置中的每一個(gè),其中,所述第二組RAID網(wǎng)格位置中的每一個(gè) 包括與所述第一區(qū)的第二側(cè)面相關(guān)聯(lián)的塊,其中,(c)是在(d)之前執(zhí)行的; (e) 產(chǎn)生第二多個(gè)標(biāo)簽,所述第二多個(gè)標(biāo)簽中的每一個(gè)包括用于所述RAID網(wǎng)格中的所 述第一區(qū)的第二P/E計(jì)數(shù)和用于所述第一區(qū)的第二壞位置信息; (f) 將所述第二多個(gè)標(biāo)簽中的一個(gè)寫入到所述第二組RAID網(wǎng)格位置中的每一個(gè);以及 (g) 將用戶數(shù)據(jù)寫入到所述第一組RAID網(wǎng)格位置中的每一個(gè)和所述第二組RAID網(wǎng)格位 置中的每一個(gè)。
【文檔編號(hào)】G06F11/10GK106095700SQ201610200533
【公開日】2016年11月9日
【申請(qǐng)日】2016年3月31日 公開號(hào)201610200533.3, CN 106095700 A, CN 106095700A, CN 201610200533, CN-A-106095700, CN106095700 A, CN106095700A, CN201610200533, CN201610200533.3
【發(fā)明人】J·S·邦威克
【申請(qǐng)人】Emc公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
邵阳县| 永和县| 连江县| 屯留县| 镇巴县| 静乐县| 灵石县| 平原县| 龙井市| 永德县| 焦作市| 东宁县| 龙江县| 马尔康县| 全州县| 商河县| 兴文县| 德清县| 阜康市| 台南县| 望江县| 牡丹江市| 淮北市| 江安县| 汉寿县| 班玛县| 瑞昌市| 二手房| 玛曲县| 乐亭县| 桂东县| 靖江市| 普定县| 当阳市| 江门市| 曲阜市| 伊川县| 都江堰市| 彭山县| 团风县| 山东|