)。參照圖5A,頁巧00) 包括用戶數(shù)據(jù)巧02)、帶外(00B)數(shù)據(jù)巧04)、錯誤校正碼巧CC) (506)。在本發(fā)明的一個實 施例中,用戶數(shù)據(jù)(502)對應(yīng)于從客戶機(jī)接收的任何數(shù)據(jù)和根據(jù)從客戶機(jī)接收的數(shù)據(jù)直接 或間接導(dǎo)出的任何數(shù)據(jù)。例如,用戶數(shù)據(jù)可包括(i)P、Q奇偶校驗值,其是根據(jù)從客戶機(jī)接 收的數(shù)據(jù)直接導(dǎo)出的,和(ii)交叉奇偶校驗值(參見圖2,212),其是根據(jù)前述P和/或Q 奇偶校驗值導(dǎo)出的。
[00巧]在本發(fā)明的一個實施例中,OOB巧04)對應(yīng)于提供關(guān)于RAID網(wǎng)格(即,在其中存儲 包括00B的頁的RAID網(wǎng)格)的信息W及關(guān)于包括00B巧04)的頁巧00)的信息的數(shù)據(jù)。在 圖5B中描述關(guān)于00B巧04)的附加細(xì)節(jié)。
[0056] 在本發(fā)明的一個實施例中,針對用戶數(shù)據(jù)(50。和00B巧04)的組合生成 ECC巧06)。相應(yīng)地,ECC(506)可用于識別和潛在地校正用戶數(shù)據(jù)(502)和00B(504)中的錯 誤。在本發(fā)明的一個實施例中,不脫離本發(fā)明可使用任意類型的錯誤校正碼計算ECC。根據(jù) 使用的ECC的類型,ECC可僅能夠檢測錯誤而不一定校正用戶數(shù)據(jù)和00B巧04)中的錯誤。
[0057] 圖5B示出根據(jù)本發(fā)明的一個或多個實施例的頁巧00)的00B(504)。如圖5B中所 示,00B(504)包括;a)版本(508)字段,扣)網(wǎng)格圖巧10),(iU)網(wǎng)格幾何形狀巧12), (iv)條帶成員(SM)巧14),和(V)校驗和巧16)。下面描述該些組分中的每個。
[005引在本發(fā)明的一個實施例中,版本巧08)字段指定00B的00B格式的版本。在本發(fā) 明的一個實施例中,包括此版本(508)字段W確保使用00B重構(gòu)頁(參見圖9A-9B)的實體 理解00B中的每條數(shù)據(jù)表示什么。在本發(fā)明的一個實施例中,使用整數(shù)表示版本巧08)字 段。
[0059] 在本發(fā)明的一個實施例中,網(wǎng)格圖巧10)指定與頁巧00)所處的RAID網(wǎng)格中的各 維度關(guān)聯(lián)的獨立故障域。例如,如果第一I抑是存儲模塊并且第二I抑是通道,則網(wǎng)格圖 (510)將此信息編碼為比特圖。
[0060] 在本發(fā)明的一個實施例中,網(wǎng)格幾何形狀巧12)指定關(guān)于RAID網(wǎng)格的幾何形狀W 及頁(500)在RAID網(wǎng)格中的位置的信息。在圖5C中描述關(guān)于網(wǎng)格幾何形狀巧。)的附加 細(xì)節(jié)。
[0061] 在本發(fā)明的一個實施例中,SM巧14)包括含頁(500)的各維度的比特圖。相應(yīng)地, 如果頁巧00)包括在RAID網(wǎng)格中,則SM包括兩個比特圖-每個比特圖針對每個維度。另 夕F,如果頁巧00)包括在RAID立方體中,則SM包括S個比特圖-每個比特圖針對每個維 度。SM中的每個比特圖識別條帶內(nèi)針對該維度的壞物理位置。更具體地,RAID網(wǎng)格中的各 RAID網(wǎng)格位置與永久性存儲器中的物理位置關(guān)聯(lián)。如果頁不能寫入特定物理位置(例如, 由于永久性存儲器制造中的物理缺陷),則將該物理位置指定為壞物理位置。在本發(fā)明的一 個實施例中,用"0"指定壞物理位置,和用"1"指定條帶中的所有其它物理位置。不脫離本 發(fā)明可使用其它比特圖編碼方案。
[0062] 在本發(fā)明的一個實施例中,校驗和巧16)對應(yīng)于00B中的所有其它數(shù)據(jù)(例如版 本字段、網(wǎng)格圖、網(wǎng)格幾何形狀和SM)的校驗和,用于確保00B中的數(shù)據(jù)的完整性。在本發(fā) 明的一個實施例中,可使用任何合適的校驗和函數(shù)(例如SHA-l、MD5、SHA-256)計算校驗和 而不脫離本發(fā)明。
[006引參照圖5C,網(wǎng)格幾何形狀巧。)包括;a)自身巧18)字段,扣)最后巧20)字段, (^1)噸31'^7(522)字段,(1乂)一個或多個奇偶校驗位置巧24,526)。下面描述該些組分 中的每個。
[0064] 在本發(fā)明的一個實施例中,自身巧18)字段包括在RAID網(wǎng)格內(nèi)的頁巧00)的位 置。在本發(fā)明的一個實施例中,位置表示為元組,其中元組中的各條目對應(yīng)于給定IFD中的 位置。(參見圖8B,自身)。在本發(fā)明的一個實施例中,自身巧18)字段的位置是相對位置。 相對于RAID網(wǎng)格中的基準(zhǔn)RAID網(wǎng)格位置指定相對位置。在本發(fā)明的一個實施例中,基準(zhǔn) RAID網(wǎng)格位置是RAID網(wǎng)格中的第一RAID網(wǎng)格位置(參見圖8A,814)。
[0065] 在本發(fā)明的一個實施例中,最后巧20)字段指定RAID網(wǎng)格的最后的列和行號。例 如,參照圖8A,RAID網(wǎng)格(800)是6x6的網(wǎng)格-相應(yīng)地,最后巧20)字段將指定巧,5〉(因 為編號從0開始)。
[0066] 在本發(fā)明的一個實施例中,nparity(522)字段指定RAID網(wǎng)格的各維度中的奇偶 校驗值的數(shù)量。例如,如果在給定維度中計算P奇偶校驗和Q奇偶校驗,則nparity(522) 字段針對該維度將包括"2"。
[0067] 在本發(fā)明的一個實施例中,網(wǎng)格幾何形狀包括針對各維度中的各種奇偶校驗的一 個奇偶校驗位置巧24, 526)。例如,如果RAID網(wǎng)格在兩個維度中包括P、Q奇偶校驗,則網(wǎng) 格幾何形狀將包括P奇偶校驗行組、Q奇偶校驗行組、P奇偶校驗列組、Q奇偶校驗列組的奇 偶校驗位置。在本發(fā)明的一個實施例中,在每個維度的基礎(chǔ)上(例如,行和列)基于每個奇 偶校驗類型(例如參見圖8B,P、曲指定奇偶校驗位置。
[0068] 在本發(fā)明的一個實施例中,在RAID網(wǎng)格內(nèi)的各頁巧00)中,版本巧08)、網(wǎng)格圖 巧10)、最后巧20)字段、噸arity(522)字段和奇偶校驗位置巧24, 526)是相同的。在本發(fā) 明的一個實施例中,此復(fù)制確保了條帶中的每一個可讀網(wǎng)格位置具有使得能夠恢復(fù)條帶內(nèi) 的任何網(wǎng)格位置所需的所有信息。
[0069] 本領(lǐng)域技術(shù)人員將理解,盡管圖5A-5C描述了 2DRAID方案(例如RAID網(wǎng)格)中 的頁的00B,但00B(504)可包括針對n維RAID方案的信息而不脫離本發(fā)明。另外,本領(lǐng)域 技術(shù)人員將理解,可使用更多(例如使用P、Q、R奇偶校驗)或更少奇偶校驗值(例如使用 P奇偶校驗)實現(xiàn)本發(fā)明的實施例而不脫離本發(fā)明。
[0070] 盡管圖5A-5C示出了頁中存儲的各種類型的數(shù)據(jù),但可用包括附加(或不同)數(shù) 據(jù)和/或不同次序的數(shù)據(jù)的頁實現(xiàn)本發(fā)明的實施例而不脫離本發(fā)明。另外,可使用任何編 碼方案對00B內(nèi)的各字段中的值編碼而不脫離本發(fā)明。
[0071] 圖6示出根據(jù)本發(fā)明的一個實施例的數(shù)據(jù)結(jié)構(gòu)。在本發(fā)明的一個實施例中,RAID 控制器包括實現(xiàn)多維RAID方案的一個或多個數(shù)據(jù)結(jié)構(gòu)。
[0072] 在本發(fā)明的一個實施例中,RAID控制器包括跟蹤客戶機(jī)提供的數(shù)據(jù)與該些數(shù)據(jù)在 存儲陣列中的物理地址之間的映射的數(shù)據(jù)結(jié)構(gòu)。在本發(fā)明的一個實施例中,RAID控制器使 用從客戶機(jī)角度識別數(shù)據(jù)的邏輯地址(例如 < 對象,偏移〉)化00)與識別數(shù)據(jù)在存儲陣列 內(nèi)的位置的物理地址(602)之間的映射跟蹤上述信息。在本發(fā)明的一個實施例中,映射可 位于根據(jù)向 < 對象,偏移〉應(yīng)用哈希函數(shù)(例如MD5、SHA1)而得到的哈希值與對應(yīng)的物 理地址(602)之間。本領(lǐng)域技術(shù)人員將理解,可使用任何形式的邏輯地址而不脫離本發(fā)明。
[0073] 在本發(fā)明的一個實施例中,RAID控制器包括跟蹤各RAID網(wǎng)格位置化04)(參見圖 2)如何映射到存儲陣列中的特定物理地址化02)的數(shù)據(jù)結(jié)構(gòu)。
[0074] 在本發(fā)明的一個實施例中,RAID控制器包括跟蹤哪個RAID網(wǎng)格(包括數(shù)據(jù)部分 和奇偶校驗部分中的RAID網(wǎng)格)(608)與哪個RAID立方體化06)(假設(shè)RAID控制器實現(xiàn) 3DRAID方案)相關(guān)聯(lián)W及哪個RAID網(wǎng)格位置(604)與各RAID網(wǎng)格(608)相關(guān)聯(lián)的數(shù)據(jù) 結(jié)構(gòu)。
[007引在本發(fā)明的一個實施例中,RAID控制器包括跟蹤各RAID網(wǎng)格位置化04)的狀態(tài) (610)的數(shù)據(jù)結(jié)構(gòu)。在本發(fā)明的一個實施例中,RAID網(wǎng)格位置的狀態(tài)化10)可設(shè)置為填充 (表示頁已寫入RAID網(wǎng)格位置)或空(表示沒有寫入RAID網(wǎng)格位置)。在本發(fā)明的一個實 施例中,如果RAID控制器識別了要寫入RAID網(wǎng)格位置的數(shù)據(jù),RAID控制器也可將RAID網(wǎng) 格位置的狀態(tài)設(shè)置為填充(參見圖7B,步驟720)。當(dāng)初始創(chuàng)建RAID網(wǎng)格時(參見圖7A), RAID控制器可初始地將各RAID網(wǎng)格位置的狀態(tài)設(shè)置為空。
[0076] 在本發(fā)明的一個實施例中,RAID控制器包括跟蹤RAID網(wǎng)格幾何形狀的數(shù)據(jù)結(jié)構(gòu)。 在本發(fā)明的一個實施例中,RAID網(wǎng)格幾何形狀可包括但不限于RAID網(wǎng)格的大小和與RAID 網(wǎng)格的各維度關(guān)聯(lián)的I抑。此數(shù)據(jù)結(jié)構(gòu)(或另一數(shù)據(jù)結(jié)構(gòu))也可跟蹤RAID立方體的大小和 RAID立方體的與各維度關(guān)聯(lián)的IFD。
[0077] 在本發(fā)明的一個實施例中,RAID控制器包括跟蹤各RAID網(wǎng)格內(nèi)的各行和/或列 內(nèi)的各P、Q奇偶校驗值(包括交叉奇偶校驗組(參見圖2)內(nèi)的奇偶校驗值)的