用于鏡像多維raid的方法和系統(tǒng)的制作方法
【專利說明】用于鏡像多維RAID的方法和系統(tǒng)
【背景技術(shù)】
[0001] 為了針對存儲系統(tǒng)中的潛在數(shù)據(jù)損耗進行保護,實施復制方案常常是有利的。當 前復制方案只能在不能讀取存儲系統(tǒng)內(nèi)的數(shù)據(jù)之前維持有限的錯誤量。
【發(fā)明內(nèi)容】
[0002] -般地,在一個方面,本發(fā)明涉及一種非臨時計算機可讀介質(zhì),其包括指令,當該 指令被處理器執(zhí)行時執(zhí)行一種方法,該方法用于存儲數(shù)據(jù),該方法包括接收寫入數(shù)據(jù)的請 求,確定用于數(shù)據(jù)的存儲模式,其中,用于數(shù)據(jù)的存儲模式是鏡像模式,基于該存儲模式來 選擇要寫入數(shù)據(jù)的RAID網(wǎng)格中的獨立器件冗余陣列(RAID)網(wǎng)格位置,將數(shù)據(jù)寫入存儲 器,其中,該數(shù)據(jù)被臨時地存儲在存儲器中,更新數(shù)據(jù)結(jié)構(gòu)以指示該RAID網(wǎng)格位置被填充, 使用數(shù)據(jù)結(jié)構(gòu)來確定RAID網(wǎng)格中的數(shù)據(jù)網(wǎng)格是否被填充,其中,RAID網(wǎng)格位置在數(shù)據(jù)網(wǎng) 格中,基于數(shù)據(jù)網(wǎng)格被填充的確定:使用數(shù)據(jù)來計算用于RAID網(wǎng)格的奇偶值,確定對應于 RAID網(wǎng)格位置的持久性儲存器中的第一物理地址,確定對應于RAID網(wǎng)格位置的持久性儲 存器中的第二物理地址,將數(shù)據(jù)寫入對應于第一物理地址的持久性儲存器中的第一物理位 置,將數(shù)據(jù)寫入對應于第二物理地址的持久性儲存器中的第二物理位置,以及將與數(shù)據(jù)網(wǎng) 格相關(guān)聯(lián)的奇偶值寫入到持久性儲存器。
[0003] -般地,在一個方面,本發(fā)明涉及一種非臨時計算機可讀介質(zhì),其包括指令,當該 指令被處理器執(zhí)行時執(zhí)行一種方法,該方法用于獲得重構(gòu)數(shù)據(jù),該方法包括接收對于數(shù)據(jù) 的第一請求,識別與數(shù)據(jù)相關(guān)聯(lián)的獨立器件冗余陣列(RAID)網(wǎng)格中的網(wǎng)格位置,其中,該 網(wǎng)格位置與第一物理位置和第二物理位置相關(guān)聯(lián),進行用于網(wǎng)格位置的存儲模式是鏡像模 式的第一確定,基于第一確定,進行第一物理位置被占用的第二確定,基于第二確定,向第 二物理位置發(fā)布對于數(shù)據(jù)的第二請求,以及響應于第二請求,從第二物理位置接收數(shù)據(jù),其 中,該網(wǎng)格位置與虛擬條紋相關(guān)聯(lián),其中,該虛擬條紋與第一物理條紋和第二物理條紋相關(guān) 聯(lián),其中,第一物理位置是第一物理條紋的一部分,并且第二物理位置是第二物理條紋的一 部分。
[0004] 根據(jù)以下描述和所附權(quán)利要求,本發(fā)明的其它方面將是顯而易見的。
【附圖說明】
[0005] 圖1示出了根據(jù)本發(fā)明的一個實施方式的系統(tǒng)。
[0006] 圖2A示出了根據(jù)本發(fā)明的一個實施方式的RAID網(wǎng)格。
[0007] 圖2B示出了根據(jù)本發(fā)明的一個實施方式的虛擬和物理條紋。
[0008] 圖2C示出了根據(jù)本發(fā)明的一個實施方式的存儲模塊。
[0009] 圖3A示出了根據(jù)本發(fā)明的一個實施方式的RAID立方體和RAID立方體的各種視 圖。
[0010] 圖3B - 3C示出了根據(jù)本發(fā)明的一個實施方式的示例性RAID立方體和RAID網(wǎng)格。
[0011] 圖4A - 4B示出了根據(jù)本發(fā)明的一個實施方式的數(shù)據(jù)結(jié)構(gòu)。
[0012] 圖5A - 5C示出了根據(jù)本發(fā)明的一個實施方式的流程圖。
[0013] 圖6A - 6C示出了根據(jù)本發(fā)明的一個或多個實施方式的示例。
[0014] 圖7A - 7B示出了根據(jù)本發(fā)明的一個或多個實施方式的流程圖。
[0015] 圖8A - 8E示出了根據(jù)本發(fā)明的一個或多個實施方式的示例。
【具體實施方式】
[0016] 現(xiàn)在將參考附圖來詳細地描述本發(fā)明的特定實施方式。在本發(fā)明的實施方式的以 下詳細描述中,闡述了許多特定細節(jié)以便提供本發(fā)明的更透徹理解。然而,對于本領(lǐng)域的技 術(shù)人員將而言將顯而易見的是可在沒有這些特定細節(jié)的情況下實施本發(fā)明。在其它情況 下,未詳細地描述眾所周知的特征以避免不必要地使本描述復雜化。
[0017] 在圖1 一8E的以下描述中,在本發(fā)明的各種實施方式中,相對于附圖描述的任何 部件可等同于相對于任何其它圖描述的一個或多個類似名稱的部件。簡潔地,將不會相對 于每個圖重復這些部件的描述。因此,通過引用而結(jié)合每個圖的部件的每個實施方式并假 定為可選地存在于具有一個或多個類似名稱的部件的每個圖內(nèi)。另外,根據(jù)本發(fā)明的各種 實施方式,圖的部件的任何描述將被解釋為除相對于任何其它圖中的相應類似名稱部件所 述的實施方式之外、與之相結(jié)合或作為其替代可實現(xiàn)的可選實施方式。
[0018] -般地,本發(fā)明的實施方式涉及用于使用在網(wǎng)格位置水平實現(xiàn)鏡像的多維RAID 方案來復制數(shù)據(jù)的方法和系統(tǒng)。更具體地,本發(fā)明的實施方式提供了一種用于實現(xiàn)2D RAID 方案和3D RAID方案的方法和系統(tǒng),其中的2D RAID方案和3D RAID方案均在網(wǎng)格位置水 平實現(xiàn)鏡像。
[0019] 使用2D RAID方案,當在給定RAID條紋中存在超過兩個錯誤時,可恢復存儲在實 現(xiàn)此類RAID方案的RAID網(wǎng)格內(nèi)的數(shù)據(jù)。相似地,使用3D RAID方案,當在給定RAID條紋 中存在超過兩個錯誤時,可利用3D RAID方案恢復存儲在實現(xiàn)此類RAID方案的RAID立方 體內(nèi)的數(shù)據(jù)。在本發(fā)明的各種實施方式中,當在超過一個獨立故障域(IFD)中存在故障時, 能夠恢復所有數(shù)據(jù)。此外,通過使得能夠在網(wǎng)格位置水平實現(xiàn)鏡像,本發(fā)明的實施方式在緩 解與從持久性儲存器訪問數(shù)據(jù)有關(guān)的潛在延遲問題的同時提供復制/冗余的附加水平。
[0020] 在本發(fā)明的一個或多個實施方式中,IFD對應于故障模式,其導致給定位置處的數(shù) 據(jù)不可訪問。每個IFD對應于存儲陣列中的故障的獨立模式。例如,如果將數(shù)據(jù)存儲在NAND 閃存中,其中,NAND閃存是存儲模塊(其包括多個NAND管芯)的一部分,則IFD可以是(i) 存儲模塊,(ii)通道(即被存儲模塊中的存儲模塊控制器(未示出)用來向NAND閃存寫 入數(shù)據(jù)的通道),以及(iii)NAND閃存管芯。
[0021] 出于本發(fā)明的目的,如這里所使用的術(shù)語"RAID"指的是"獨立器件冗余陣列"。相 應的,可使用任何類型的持久性存儲器件來實現(xiàn)本發(fā)明的實施方式,其中,可基于本發(fā)明的 實施方式(參見例如圖2B - 4B)使RAID網(wǎng)格位置(參見例如圖2A)跨一個或多個持久性 存儲器分布。
[0022] 圖1示出了根據(jù)本發(fā)明的一個實施方式的系統(tǒng)。如圖1中所示,該系統(tǒng)包括一個 或多個客戶端(100A、100M)、RAID控制器(104)、存儲器(106)、可選地FPGA(102)以及存儲 陣列(108)。
[0023] 在本發(fā)明的一個實施方式中,客戶端(100AU00M)是任何系統(tǒng)或在系統(tǒng)上執(zhí)行的 過程,其包括用以向RAID控制器(104)發(fā)布讀請求或?qū)懻埱蟮墓δ堋T诒景l(fā)明的一個實施 方式中,每個客戶端(100AU00M)可包括處理器(未示出)、存儲器(未示出)和持久性儲 存器(未示出)。在本發(fā)明的一個實施方式中,RAID控制器(104)被配置成實現(xiàn)多維RAID 方案,其包括以與多維RAID方案一致的方式(參見圖5A - 5C)向存儲陣列寫入數(shù)據(jù)并以與 多維RAID方案一致的方式(參見圖7A - 7B)從存儲陣列讀取數(shù)據(jù)(包括重構(gòu)數(shù)據(jù))。在 本發(fā)明的一個實施方式中,RAID控制器(104)包括被配置成執(zhí)行指令以實現(xiàn)本發(fā)明的一個 或多個實施方式的處理器,其中,該指令被存儲在位于RAID控制器(104)內(nèi)或被操作連接 到RAID控制器(104)的非臨時計算機可讀介質(zhì)(未示出)上。替換地,可使用硬件來實現(xiàn) RAID控制器(104)。本領(lǐng)域的技術(shù)人員將認識到可使用軟件和/或硬件的任何組合來實現(xiàn) RAID 控制器(104)。
[0024] 在本發(fā)明的一個實施方式中,RAID控制器(104)被操作連接到存儲器(106)。存儲 器(106)可以是任何易失性存儲器,包括但不限于動態(tài)隨機存取存儲器(DRAM)、同步DRAM、 SDR SDRAM以及DDR SDRAM。在本發(fā)明的一個實施方式中,存儲器(106)被配置成在各種數(shù) 據(jù)(包括奇偶數(shù)據(jù))被存儲在存儲陣列中之前臨時地存儲此類數(shù)據(jù)。
[0025] 在本發(fā)明的一個實施方式中,F(xiàn)PGA(102)(如果存在的話)包括用以出于將數(shù)據(jù)存 儲在存儲陣列(108)中的目的計算P和/或Q奇偶信息的功能和/或用以執(zhí)行恢復使用 (一個或多個)多維RAID方案存儲的已損壞數(shù)據(jù)所需的各種計算的功能。根據(jù)本發(fā)明的一 個或多個實施方式,RAID控制器(104)可使用FPGA(102)來卸載各種數(shù)據(jù)的處理。在本發(fā) 明的一個實施方式中,存儲陣列(108)包括許多單獨持久性存儲設備,包括但不限于磁存 儲器件、光存儲器件、固態(tài)存儲器件、相變存儲器件、任何其它適當類型的持久性存儲器件 或其任何組合。在整個說明書中,一般地可將每一個上述器件中稱為存儲模塊,除非另外指 明。
[0026] 本領(lǐng)域的技術(shù)人員將認識到雖然圖1示出了 FPGA,但可在沒有FPGA的情況下實現(xiàn) 本發(fā)明。此外,本領(lǐng)域的技術(shù)人員將認識到在不脫離本發(fā)明的情況下可使用其它部件來代 替FPGA。例如,可使用(一個或多個)ASIC、(一個或多個)圖形處理單元(GPU)、( 一個或 多個)通用處理器、能夠出于將數(shù)據(jù)存儲在存儲陣列中的目的而計算P和/或Q奇偶信息 和/或執(zhí)行使用多維RAID方案恢復存儲的已損壞數(shù)據(jù)所需的各種計算的任何其它硬件器 件、包括被配置成出于將數(shù)據(jù)存儲在存儲陣列(108)中的目的而計算P和/或Q奇偶信息 和/或執(zhí)行使用多維RAID方案恢復存儲的已損壞數(shù)據(jù)所需的各種計算的硬件、固件和/或 軟件的組合的任何器件,或其任何組合。
[0027] 圖2A示出了根據(jù)本發(fā)明的一個實施方式的RAID網(wǎng)格。在本發(fā)明的一個實施方式 中,如果RAID控制器實現(xiàn)2D RAID方案或3D RAID方案(參見圖3A),則RAID控制器將數(shù) 據(jù)存儲在RAID網(wǎng)格(200)中。圖2A示出了根據(jù)本發(fā)明的一個或多個實施方式的RAID網(wǎng) 格的概念部分。RAID網(wǎng)格(200)包括許多RAID網(wǎng)格位置,其中,與每個RAID網(wǎng)格位置相 關(guān)聯(lián)的數(shù)據(jù)最終被寫入到存儲陣列中的兩個(或更多)唯一物理位置(參見圖2B)。RAID 網(wǎng)格(200)包括(i)數(shù)據(jù)網(wǎng)格(202),其包括存儲從客戶端接收到的數(shù)據(jù)(即,客戶端已命 令RAID控制器寫入到存儲陣列的數(shù)據(jù))的RAID網(wǎng)格位置;(ii)行P奇偶組(204),其包括 RAID網(wǎng)格位置,該RAID網(wǎng)格位置存儲使用沿著行維度的虛擬條紋中的RAID網(wǎng)格位置中的 數(shù)據(jù)計算的P奇偶值(參見圖2A、214和圖6A、602) 行Q奇偶組(206),其包括RAID 網(wǎng)格位置,該RAID網(wǎng)格位置存儲使用沿著行維度的虛擬條紋中的RAID網(wǎng)格位置中的數(shù)據(jù) 計算的Q奇偶值(參見圖2A、214和圖6A、602) ; (iv)列P奇偶組(208),其包括RAID網(wǎng)格 位置,該RAID網(wǎng)格位置存儲使用沿著列維度的虛擬條紋中的RAID網(wǎng)格位置中的數(shù)據(jù)計算 的P奇偶值(參見圖2A、214和圖6A、604) ; (V)列Q奇偶組(210),其包括RAID網(wǎng)格位置, 該RAID網(wǎng)格位置存儲使用沿著列維度的虛擬條紋中的RAID網(wǎng)格位置中的數(shù)據(jù)計算的Q奇 偶值(參見圖2A、214和圖6A、602);和(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ù)計算的奇偶值(下面描述)。
[0028] 參考行(214),在本發(fā)明的一個實施方式中,通過對包括數(shù)據(jù)(例如,Prf = WD1, D2, D3, D4))的行(214)中的所有RAID網(wǎng)格位置應用P奇偶函數(shù)來計算存儲在行(214) 中的表示為匕 2的RAID網(wǎng)格位置中的數(shù)據(jù)。同樣地,在本發(fā)明的一個實施方式中,通過對包 括數(shù)據(jù)(例如,Qrt= Fq(DdDdDiD4))的行(214)中的所有RAID網(wǎng)格位置應用Q奇偶函數(shù) 來計算存儲在行(214)中的表示為Q 1J^RAID網(wǎng)格位置中的數(shù)據(jù)。
[0029] 參考列(216),在本發(fā)明的一個實施方式中,通過對包括數(shù)據(jù)(例如,Pra = fP (D5, D2, D6, D7))的列(216)中的所有RAID網(wǎng)格位置應用P奇偶函數(shù)來計算存儲在列(216) 中的表示為匕 6的RAID網(wǎng)格位置上的數(shù)據(jù)。同樣地,在本發(fā)明的一個實施方式中,通過對包 括數(shù)據(jù)(例如,Qe6= fQ(D5, D2, D6, D7))的列(216)中的所有RAID網(wǎng)格位置應用Q奇偶函數(shù) 來計算存儲