專利名稱:帶有空閑塊奇偶校驗高速緩存的第五級raid的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及到數(shù)字信息的永久存儲系統(tǒng),特別是盤類型的系統(tǒng),尤其涉及到可以產(chǎn)生并存儲奇偶校驗塊以便于恢復(fù)磁盤故障的盤陣列系統(tǒng)。
一種冗余廉價盤陣列RAID已經(jīng)被提出作為單個的大型昂貴盤(SLD)的低成本替代品以為具有高吞吐量的數(shù)字信息提供海量存儲。RAID理論使用相對廉價的盤,這些盤單個來講比較昂貴的盤有較高的故障機(jī)率,但可以通過產(chǎn)生并存儲用以幫助恢復(fù)磁盤故障的奇偶校驗塊來增加冗余性從而補(bǔ)償這種較高的故障機(jī)率。
圖1A給出了一個可實現(xiàn)的RAID組織形式的盤陣列子系統(tǒng)結(jié)構(gòu)。一個盤控制器30連接到一個主系統(tǒng)10,并且具有一個高速緩存31來管理一個廉價盤陣列40—43。在一個具有N+1個盤的RAID組織形式中,為每N個數(shù)據(jù)塊產(chǎn)生一個奇偶校驗塊,并且這N+1個塊(N個數(shù)據(jù)塊加一個奇偶校驗塊)中的每一塊存儲于不同的盤上。在一種實現(xiàn)方式中,一個奇偶校驗塊通過N個數(shù)據(jù)塊的按位“異或”(XOR)從N個數(shù)據(jù)塊中計算出來。奇偶校驗塊和計算出這個奇偶校驗塊的N個數(shù)據(jù)塊被稱作一個奇偶校驗組。一個奇偶校驗組中的任何塊可以從這個奇偶校驗組的其它塊計算出來。
在“冗余廉價盤陣列的一種方式”(“A Case Redundant Arraysof Inexpensive Disks(RAID)”,Proc.of ACM SIGMOD Interna-tional Conference on Management of Data,PP.109—116,1988)中,在此作為參考,D.A.Patterson,G.Gibson和R.H.Katz描述了五種盤陣列分為一到五級RAID。特別感興趣的是具有第五級RAID組織形式的盤陣列,因為這樣一種RAID類型中奇偶校驗塊均勻地分配到所有盤上,因而不會產(chǎn)生瓶頸問題。
RAID環(huán)境的一個缺點是一個盤寫操作的代價遠(yuǎn)遠(yuǎn)高于SLED,因為在RAID上寫一次數(shù)據(jù)需要多至四次盤訪問操作而在SLED上只需要兩次盤訪問操作。無論何時一個RAID組織形式中的盤控制器收到一個寫數(shù)據(jù)塊的請求,它必須不僅更新(即讀和寫)數(shù)據(jù)塊,而且必須更新(即讀和寫)相應(yīng)的奇偶校驗塊以保持一致性。例如,如果圖2A中的數(shù)據(jù)塊D1要被寫,P0的新值這樣計算新P0=(舊D1 XOR新D1 XOR舊P0)因此,需要以下的四個盤訪問操作(1)讀舊數(shù)據(jù)塊D1;(2)讀舊奇偶校驗塊P0(3)寫新數(shù)據(jù)塊D1;(4)寫新奇偶校驗塊P0。讀必須在寫開始之前完成。
在“事務(wù)處理環(huán)境中盤陣列的性能”(“Performance of DiskArrays in Transaction Processing Environments”.Proc.of Inter-national Conference on Distributed Computing System,PP.302—309,1992)一文中,J.Menon和D.Mattson指出在盤控制器中增加高速緩存或緩存存儲塊可以提高RAID盤陣列子系統(tǒng)的性能。如果有一個盤高速緩存,并且將被替換的塊在高速緩存中,則可避免從此塊的盤陣列上預(yù)讀。再有,如果每個奇偶校驗組的奇偶校驗塊也存儲在高速緩存中,這樣如果奇偶校驗塊在高速緩存中則從盤陣列的兩次讀可以避免。
普通轉(zhuǎn)讓和共同未決的美國專利申請07/017,920,1993年2月16日申請(IBM Docket YO993—013),描述了一個系統(tǒng),該系統(tǒng)中寫操作頻繁的奇偶校驗組中的奇偶校驗塊存儲于一個高速緩存中以降低更新過程中盤訪問的次數(shù)。
現(xiàn)有方案的一個缺點是,在任意所給時間,一個給定奇偶校驗組中的不同數(shù)據(jù)塊可能不包含有用數(shù)據(jù)。例如,一些數(shù)據(jù)塊可能沒被用到,而其它一些,雖然以前被使用了,可能已被操作系統(tǒng)釋放。這樣,當(dāng)每個奇偶校驗塊被賦予一組數(shù)據(jù)塊時,奇偶校驗塊的每一位依賴于所有相應(yīng)數(shù)據(jù)塊的位,而不管這個數(shù)據(jù)塊是否被使用。
本發(fā)明消除了上面討論的缺點。本發(fā)明是一個用于在盤陣列上寫數(shù)據(jù)的系統(tǒng),其中一個奇偶校驗塊可為它的奇偶校驗組中的所有數(shù)據(jù)塊或這些數(shù)據(jù)塊的任意子集提供奇偶校驗信息。這就允許僅為當(dāng)前使用的數(shù)據(jù)塊存儲奇偶校驗信息。這個系統(tǒng)包括一個結(jié)合到盤陣列的高速緩存存儲器,用于存儲與包含各自位置的奇偶校驗組相聯(lián)系的奇偶校驗塊。根據(jù)本發(fā)明,每個奇偶校驗塊包含一個標(biāo)識符來指示一個特定奇偶校驗組中被奇偶校驗數(shù)據(jù)保護(hù)的數(shù)據(jù)塊。寫邏輯結(jié)合到高速緩存存儲器和盤陣列中,包含用于讀標(biāo)識符并判斷一個目標(biāo)塊是否未被奇偶校驗數(shù)據(jù)保護(hù)的裝置。寫邏輯還包含用于向未保護(hù)位置寫的寫裝置和用于更新奇偶校驗數(shù)據(jù)和與包含此位置的奇偶校驗塊相聯(lián)系的標(biāo)識符的更新裝置,以指示此位置被保護(hù)。
參照附圖可以更好地理解本發(fā)明,其中圖1A是一個圖示一個盤陣列子系統(tǒng)結(jié)構(gòu)框圖;圖1B是一個圖示一個實施本發(fā)明的盤陣列子系統(tǒng)結(jié)構(gòu)框圖;圖2A是一個表示數(shù)據(jù)和奇偶校驗塊放置的常規(guī)第五級RAID的數(shù)據(jù)映像;圖2是一個分區(qū)的奇偶校驗/數(shù)據(jù)盤高速緩存;圖3是一個根據(jù)本發(fā)明實施方式的單個塊寫操作的流程圖;圖4是一個根據(jù)本發(fā)明實施方式的空閑塊命令的流程圖;圖5是一個描述本發(fā)明的奇偶校驗和標(biāo)識符塊的框圖。
本發(fā)明可在圖1B所示的盤陣列子系統(tǒng)上實現(xiàn),它包括一個具有一個高速緩存存儲器31的盤控制器30和盤陣列40,41,42和43。高速緩存存儲器31被分為兩部分一個用于緩存數(shù)據(jù)塊的數(shù)據(jù)部分31a和一個用于緩存奇偶校驗塊的奇偶校驗部分31b。數(shù)據(jù)部分31a和奇偶校驗部分31b可被高速緩存控制器獨(dú)立地訪問。根據(jù)本發(fā)明的一種實施方式,數(shù)據(jù)塊寫在可變寫保護(hù)邏輯32控制下執(zhí)行,可變寫保護(hù)邏輯32同高速緩存31的31a和31b兩部分都相連。將要描述的最佳實施方式盤陣列40—43中的數(shù)據(jù)映像是一個第五級RAID(RAID V)的映像。
圖2表示了盤控制器30所使用的用于它的高速緩存31a和31b的數(shù)據(jù)結(jié)構(gòu)。當(dāng)給予塊202一個帶號ID后,RAID V確定哪個盤有其他盤上數(shù)據(jù)塊的奇偶校驗和編號,然后盤控制器使用實際盤地址工作。高速緩存索引204和206用哈希表實現(xiàn),一個用于奇偶校驗高速緩存,一個用于數(shù)據(jù)高速緩存。給出一個盤塊地址,查找哈希表以確定此地址處的數(shù)據(jù)是否在高速緩存中,并且如果它在高速緩存中,則在那里。奇偶校驗高速緩存中一個塊的哈希表入口指向一個最近最少使用(LRU)的棧208。LRU棧的入口地址確定實際數(shù)據(jù)在哪里,因為在LRU棧入口和高速緩存塊之間存在一一對應(yīng)關(guān)系。為計算數(shù)據(jù)的地址,使用(高速緩存空間基地址)+(塊大小)*(LRU棧入口地址—LRU?;刂?/(LRU棧入口長度)。LRU棧210的入口具有一個數(shù)據(jù)塊地址域。
在操作中,每個高速緩存按下列方式使用(1)每次訪問一個奇偶校驗/數(shù)據(jù)塊時,它從當(dāng)前位置移到LRU棧中最近最多使用(MRU)的位置;(2)當(dāng)需要空間以讀進(jìn)一個奇偶校驗/數(shù)據(jù)塊時,用于LRU塊的高速緩存空間被釋放,這個塊被讀進(jìn)此位置,放到MRU位置,并據(jù)此更新高速緩存索引。
在一個最佳實施方式中,一個LRU棧用一個有固定大小入口的雙重鏈表或鏈實現(xiàn)。每個入口可以具有關(guān)于一個LRU棧目的的信息。在這種情況下,如果使用地址計算技術(shù),一個指向高速緩存塊的指針不是必需的。每個入口還可具有有關(guān)兩個指針的信息,一個指向下一個MRU入口如果它是MRU入口則為空),一個指向下一個LRU入口(如果它是LRU入口則為空)。LRU??捎密浖崿F(xiàn),這是由于入口可轉(zhuǎn)移到棧中部之外的任何地方,然后用一些指令放到棧的頂部。
圖2A表示了一個第五級RAID的數(shù)據(jù)映像,在一個共有N+1個盤的第五級RAID系統(tǒng)中,每個奇偶校驗組包括N個數(shù)據(jù)塊和一個奇偶校驗塊。傳統(tǒng)的方法是把數(shù)據(jù)塊劃分到奇偶校驗組中,如圖2A所示。在圖2A中,例如,數(shù)據(jù)塊D0,D1,D2,D3和奇偶校驗塊P0形成一個奇偶校驗組。圖2A中奇偶校驗塊P0被標(biāo)記為100,101,102,103和104。因此,奇偶校驗塊P0(標(biāo)記為100)是數(shù)據(jù)塊D0(標(biāo)記為110),數(shù)據(jù)塊D1(標(biāo)記為111),數(shù)據(jù)塊D2(標(biāo)記為112),數(shù)據(jù)塊D3(標(biāo)記為113)的異或。根據(jù)本發(fā)明,對于從主系統(tǒng)10到盤控制器30的每個數(shù)據(jù)塊更新請求,如果相應(yīng)的奇偶校驗塊已在控制單元高速緩存31中,則一個數(shù)據(jù)更新需要3個物理盤訪問操作1)讀取舊數(shù)據(jù);并且2)寫新數(shù)據(jù);3)寫新的奇偶校驗塊。
根據(jù)本發(fā)明的一種實施方式,每個奇偶校驗塊包含一個標(biāo)識符,或“前綴”,它標(biāo)識這個奇偶校驗組中的哪些數(shù)據(jù)塊被保護(hù)。當(dāng)主系統(tǒng)10向盤控制器30發(fā)送一個寫命令時,可變寫保護(hù)邏輯32從高速緩存存儲器31中的相關(guān)奇偶校驗塊中讀取前綴。在與將被寫入的奇偶校驗組(或“帶”)相聯(lián)系的奇偶校驗塊前綴標(biāo)識一個特定的數(shù)據(jù)塊未被奇偶校驗保護(hù)的情況下,舊的奇偶校驗同新數(shù)據(jù)進(jìn)行異或,更新前綴以標(biāo)識此數(shù)據(jù)塊已被保護(hù),新數(shù)據(jù)寫到盤的數(shù)據(jù)塊上,并且新的奇偶校驗塊寫到盤上。這樣就完全避免了從盤上讀取舊數(shù)據(jù)的步驟。
圖3圖示了一個根據(jù)本發(fā)明的可變保護(hù)單個塊寫邏輯32的流程圖。這個可變保護(hù)寫邏輯32可用在盤控制器的微處理器中執(zhí)行的微代碼控制程序的形式實現(xiàn)。
當(dāng)盤控制器從主處理器10接收到一條寫命令時邏輯開始。寫命令包括數(shù)據(jù)塊和寫地址。寫命令還包括一個由主文件系統(tǒng)設(shè)置的標(biāo)識,它指示是否全部帶都由空閑(即未用)空間構(gòu)成。
在第302步中盤控制器檢測自由帶標(biāo)識以確定數(shù)據(jù)塊所屬的整個帶是否空閑。如果整個帶是空閑的,在第304步中盤控制器使帶的奇偶校驗塊P等同于數(shù)據(jù)塊D(P=D),同時,數(shù)據(jù)塊D在空閑塊位向量中標(biāo)記為被保護(hù)。值得注意的是這個操作不需要從高速緩存或盤進(jìn)行讀取。在第306步中控制器把P和D寫到盤上。
如果在第302步中盤控制器確定整個帶不全是空閑的,在第308步中控制器利用哈希表304判斷奇偶校驗塊P是否在高速緩存31中。如果不在,在第310步中控制器判斷將被替換的數(shù)據(jù)塊(Dold)是否在高速緩存31中。如果在,第312步中控制器從盤上讀取P,如果不在,第314步中從盤上讀取P和Dold。
下面,在第316步中控制器檢測奇偶校驗塊前綴以判斷Dold是否被保護(hù)。如果被保護(hù),在第318步中控制器為奇偶校驗P確定新值,P=P XOR DoldXOR D。然后,在第306步中,P和D寫到盤上。如果Dold沒被保護(hù),在第320步中P的新值由P=PXOR D確定并且D在塊前綴中標(biāo)記為被保護(hù)。然后,在第306步中P和D寫到盤上。
如果在第308步中確定P在高速緩存中,在第324步中控制器檢測奇偶校驗塊前綴以判斷Dold是否被保護(hù)。如果被保護(hù),在第326步中盤控制器判斷Dold是否在高速緩存中。如果在,執(zhí)行第318和306步。如果不在,在第328步中從盤上讀取Dold然后執(zhí)行第318和306步。
若在第324步確定Dold未保護(hù),則在第320步控制器確定新的奇偶校驗值為P=P XOR D,然后標(biāo)識D為被保護(hù)。隨后執(zhí)行第306步。需注意的是在第320步時所有的值都取自高速緩存,這樣就無需從盤上讀取。
在最佳實施方式中,盤空間由主操作系統(tǒng)中稱為文件系統(tǒng)的部分管理。文件系統(tǒng)負(fù)責(zé)把稱為文件和目錄的邏輯實體映射到盤上的物理空間,并負(fù)責(zé)管理空閑(未用的)盤空間。例如,當(dāng)需要建立一新文件或擴(kuò)展一已存在的文件時,文件系統(tǒng)可以為此目的而分配已有的空閑空間,從而使空閑空間成為非空閑(即在使用)的。相反地,當(dāng)刪除文件或用于存放一個文件的空間減少時,先前在使用的空間可成為空閑的。為了最優(yōu)化寫盤性能以釋放空間,并為了加速一盤故障后的恢復(fù)工作,要求空閑盤塊不被保護(hù)。為此目的,可向盤控制器提供一“釋放塊命令”,其邏輯如圖4所示。例如,在一些給定的帶S上每當(dāng)先前在使用的空間要釋放時,或者由一給定的時間間隔、或當(dāng)被保護(hù)的空閑空間達(dá)到一閾值數(shù)量等等所決定的周期性地成批地釋放空間時(一個批由一個用于包含有將要設(shè)置成未保護(hù)而現(xiàn)為被保護(hù)空閑空間的每個帶的命令組成),此命令可由文件系統(tǒng)發(fā)出。
圖4中“釋放塊命令”的操作如下首先,在第402步,高速緩存管理程序判斷P是否在高速緩存中。若不在,則在第404步將P從盤上讀入高速緩存中。接著,在第406步,程序判斷要釋放的塊數(shù)(k)是否與帶中的塊數(shù)(N)(不算P)相等。若要釋放整個帶(除了P),在則第408步,把所有的數(shù)據(jù)塊都標(biāo)識成未保護(hù)。在第410步,把在高速緩存中存儲的每個要釋放的塊Bj都標(biāo)識為空閑高速緩存空間。然后在第412步,將新的奇偶校驗塊寫入盤中。
若要釋放少于整帶的數(shù)據(jù)塊,則在第414步確定沒有保存在高速緩存中的正在使用的數(shù)據(jù)塊數(shù)(d)。d是為了通過對所有在使用的數(shù)據(jù)塊異或來計算奇偶校驗值而需要從盤上讀出的數(shù)據(jù)塊數(shù)。在第416步,確定不在高速緩存中的要釋放的未保護(hù)的數(shù)據(jù)塊數(shù)b。若通過減去將成為未保護(hù)的被保護(hù)塊而重新計算了奇偶校驗值,則b是需從盤上讀出的塊數(shù)。
接下來,在第415步,判斷d是否小于或等于b。這一步的目的是為了使兩者之一的I/O操作數(shù)最少。若d小于或等于b,則在第418步,將不在高速緩存中的所有正在使用的數(shù)據(jù)塊從盤上讀出,然后在第420步通過把所有數(shù)據(jù)塊D1…Dn相互異或而重新計算奇偶校驗值。相反地若d大于b,則在第422步,把不在高速緩存中的所有被保護(hù)的數(shù)據(jù)塊從盤上讀出,然后在第424步要被釋放的每個數(shù)據(jù)塊Bj都與奇偶校驗塊P相異或。這一操作從奇偶校驗塊中減去要釋放的被保護(hù)數(shù)據(jù)塊Bj。
在第426步,通過清除所有正在釋放的塊Bj在相應(yīng)塊前綴中的登記項而把它們標(biāo)識成為未保護(hù)。然后如前所述進(jìn)行第410步和第412步的操作。
圖5A—5C顯示了如何通過使用與根據(jù)發(fā)明的奇偶校驗塊前綴502確定奇偶校驗值的一些例子。給出了一個每帶(奇偶校驗組)有四個數(shù)據(jù)塊和一個奇偶校驗塊的實施方式。在前綴中的映射使得每個數(shù)據(jù)塊Dn都在前綴中有一位置。0指示相應(yīng)的數(shù)據(jù)塊未包含在奇偶校驗計算中,1指示數(shù)據(jù)塊包含于奇偶校驗計算中。
在圖5A中,數(shù)據(jù)塊D9、D10和D11為空閑,這樣僅有數(shù)據(jù)塊D8由奇偶校驗塊P2保護(hù)。前綴502a設(shè)成1000(二進(jìn)制),表明奇偶校驗塊P2的奇偶校驗位504a僅由數(shù)據(jù)塊D8生成。三個零指明其余的三個數(shù)據(jù)塊未被保護(hù)。
在圖5B中,假定控制器需要向塊D10執(zhí)行寫操作。通過檢查原來奇偶校驗塊前綴502a,控制器確定只有塊D8為奇偶校驗位所保護(hù),這樣,新的奇偶校驗值計算為P=D8 XOR D10或P=D10 XOR舊的P,并存于奇偶校驗塊504b中。
在圖5C中,假定控制器需對塊D9執(zhí)行寫操作。原來的奇偶校驗值502b指示塊D9未被保護(hù)。這樣,新的奇偶校驗值計算為P=D8 XOR D9 XOR D10或P=D9 XOR舊的P。P存于奇偶校驗塊504c中,并如在502c中所示更新前綴。
對本發(fā)明中具有自由塊奇偶校驗系統(tǒng)的RAID 5,若盤陣列中的某個盤發(fā)生故障,其恢復(fù)方案與標(biāo)準(zhǔn)的RAID盤陣列相同。在故障盤上有塊的每個奇偶校驗組中所丟失的塊由其奇偶校驗在其它盤上的其它塊獲得。然而,在恢復(fù)中的一個優(yōu)點是,在本系統(tǒng)中前綴提供了一個由奇偶校驗塊所描述的數(shù)據(jù)塊映象。所以不用重構(gòu)未使用的數(shù)據(jù)塊。
在單個盤發(fā)生故障的情況下,在現(xiàn)有RAID結(jié)構(gòu)盤系統(tǒng)中的盤的內(nèi)容可以重建。實際上,對于故障盤上的每個塊,若它為奇偶校驗塊,則重新計算奇偶校驗信息,若它為數(shù)據(jù)塊,則其內(nèi)容可使用帶中的所有其它數(shù)據(jù)塊和該帶的奇偶校驗塊進(jìn)行重建。
利用本發(fā)明的可變帶保護(hù)模式,重構(gòu)的進(jìn)行如下所示。首先,假設(shè)故障盤上的塊為數(shù)據(jù)塊。從帶上的奇偶校驗塊可判斷此塊是被保護(hù)還是未被保護(hù)的。若它是被保護(hù)的,則其內(nèi)容的重構(gòu)如上所述,除了只使用帶中其它被保護(hù)的數(shù)據(jù)塊(和奇偶校驗塊)。若只有少數(shù)其它塊被保護(hù),則對每帶上少數(shù)被保護(hù)的塊增加保存,減少了I/O(與現(xiàn)有技術(shù)方法相比),從而加速盤的恢復(fù)。另一種情況是數(shù)據(jù)塊未被保護(hù)。在這種情況下,無需進(jìn)一步的動作,這顯然是對現(xiàn)有技術(shù)方法的較大改進(jìn)。特別值得注意的是若故障盤包含大量未被保護(hù)(空閑)的空間,則與現(xiàn)有盤重構(gòu)方法相比,盤的恢復(fù)將非常快。
接下來,假設(shè)故障盤上的塊為奇偶校驗塊。在這種情況下,有兩種方法可用于重構(gòu)塊。第一種方法,若要求盤的重構(gòu)獨(dú)立于主系統(tǒng)進(jìn)行,那么則需作最壞的假設(shè),即帶上的所有數(shù)據(jù)塊都是有效(正在使用)塊。在這種情況下,通過計算此帶上所有數(shù)據(jù)塊的奇偶校驗值可找到奇偶校驗塊,然后進(jìn)一步在奇偶校驗塊的前綴區(qū)把所有的數(shù)據(jù)塊標(biāo)志為被保護(hù)的。
第二種涉及與主系統(tǒng)通信的方法如下。對故障盤上的每個奇偶校驗塊,盤控制器在主文件系統(tǒng)中查詢帶上數(shù)據(jù)塊的狀態(tài)(空閑或正在使用)。主文件系統(tǒng)對帶上的每個塊返回一個位向量以指示它是否空閑。將每個這種空閑塊標(biāo)志為未被保護(hù)的,帶中其余的數(shù)據(jù)塊標(biāo)志為被保護(hù)的。最后對帶中被保護(hù)的塊計算奇偶校驗值,這樣就在故障盤上重構(gòu)了奇偶校驗塊。若帶中少于全部的數(shù)據(jù)塊被保護(hù),這也是對現(xiàn)有方法的改進(jìn),因為只有被保護(hù)的塊才需從盤上讀出以重新計算奇偶校驗塊。
總而言之,當(dāng)在帶上少于全部的數(shù)據(jù)塊為奇偶校驗塊所保護(hù)時,本發(fā)明減少了需讀和寫的次數(shù)。特別地,奇偶校驗塊中含有標(biāo)示符,將每個數(shù)據(jù)塊歸類為或者是被保護(hù)數(shù)據(jù),即對這些數(shù)據(jù)計算了奇偶校驗信息并保存在奇偶校驗塊中;或者是未保護(hù)數(shù)據(jù),即對這些數(shù)據(jù)沒有存儲的奇偶校驗信息。后一類的數(shù)據(jù)塊總是未使用的塊。另外,第一類(被保護(hù)的)數(shù)據(jù)塊可進(jìn)一步分類為在使用或未使用的。例如,當(dāng)將給定塊中的信息更新并寫入另一盤位置,或當(dāng)信息作廢并由操作系統(tǒng)將包含這些數(shù)據(jù)的盤空間釋放時,就可能發(fā)生被保護(hù)的數(shù)據(jù)塊中含未使用數(shù)據(jù)的情況。執(zhí)行對未保護(hù)數(shù)據(jù)塊的寫操作不用先判斷當(dāng)前塊的內(nèi)容,因為這些未包含在當(dāng)前的奇偶校驗信息中。再者,被保護(hù)但未使用的數(shù)據(jù)塊可通過對正在使用的數(shù)據(jù)塊重新計算奇偶校驗信息而轉(zhuǎn)換成未保護(hù)塊。在最佳實施方式中,系統(tǒng)利用其內(nèi)容中包含數(shù)據(jù)和奇偶校驗塊數(shù)的高速緩存存儲器,以及在奇偶校驗塊中讀并修改前綴的寫邏輯,來確定需用于讀和寫每種類型的塊的動作。
當(dāng)參照最佳實施方式特別說明并描述本發(fā)明后,熟練的技術(shù)人員可以懂得從本發(fā)明的實質(zhì)和范圍出發(fā)可作出各種形式上或細(xì)節(jié)上的改動。
權(quán)利要求
1.一種用于向盤陣列寫數(shù)據(jù)的系統(tǒng),包括一個結(jié)合到盤陣列中的高速緩存存儲器,高速緩存存儲器保存了與盤數(shù)據(jù)塊的帶相聯(lián)系的一個或多個奇偶校驗塊,每個奇偶校驗塊含有其帶上的一個或多個數(shù)據(jù)塊的奇偶校驗數(shù)據(jù)和一標(biāo)識其帶上的被保護(hù)數(shù)據(jù)塊的標(biāo)識符,結(jié)合到高速緩存存儲器和盤陣列中的寫邏輯,寫邏輯包括判斷某位置是否由奇偶校驗數(shù)據(jù)所保護(hù)的裝置;將數(shù)據(jù)寫到所選位置的裝置;如需要指示所選位置被保護(hù)時,用于計算新的奇偶校驗數(shù)據(jù)并更新與新的奇偶校驗數(shù)據(jù)相聯(lián)系的標(biāo)識符的裝置。
2.根據(jù)權(quán)利要求1中的系統(tǒng),其特征在于它還包括用于當(dāng)一個數(shù)據(jù)塊釋放后從盤陣列上將其讀出的裝置;和用于重新計算奇偶校驗數(shù)據(jù)并更新與重新計算的奇偶校驗數(shù)據(jù)相聯(lián)系的標(biāo)識符以反映數(shù)據(jù)塊釋放的裝置。
3.根據(jù)權(quán)利要求2中的系統(tǒng),其特征在于它包含當(dāng)一數(shù)據(jù)塊釋放后用于從盤陣列上將其讀出的裝置。
4.根據(jù)權(quán)利要求2中的系統(tǒng),其特征在于它還包括用于確定從盤上讀出最佳塊集合以重新計算奇偶校驗數(shù)據(jù)的裝置。
5.根據(jù)權(quán)利要求2中的系統(tǒng),其特征在于它還包括用于在多個數(shù)據(jù)塊釋放后將它們從盤陣列上讀出的裝置。
6.一種將新數(shù)據(jù)寫入冗余廉價盤陣列中的一個盤上的方法,包括把新數(shù)據(jù)保存于高速緩存存儲器中;為盤陣列中一組數(shù)據(jù)塊中的正在使用的數(shù)據(jù)塊計算奇偶校驗塊;在奇偶校驗塊中加入一標(biāo)識符以指示該組數(shù)據(jù)塊中的哪些數(shù)據(jù)塊正在使用;給新數(shù)據(jù)選定一目標(biāo)數(shù)據(jù)塊;確定目標(biāo)數(shù)據(jù)塊是否屬于一組空閑數(shù)據(jù)塊,如果是這樣,只使用新的數(shù)據(jù)設(shè)置奇偶校驗塊,并將設(shè)置的奇偶校驗塊和新數(shù)據(jù)寫入盤中;否則,根據(jù)標(biāo)識符確定目標(biāo)塊是否由奇偶校驗塊所保護(hù);如果是的話,使用新數(shù)據(jù)、目標(biāo)塊和奇偶校驗塊計算新的奇偶校驗塊以反映出新數(shù)據(jù)并將新的奇偶校驗塊寫入高速緩存和盤中;否則,計算新的奇偶校驗塊以反映新數(shù)據(jù),將新的奇偶校驗塊寫入高速緩存和盤中并更新標(biāo)識符以指示此目標(biāo)塊現(xiàn)在由奇偶校驗塊所保護(hù)。
7.根據(jù)權(quán)利要求6中的方法,其特征在于目標(biāo)塊由奇偶校驗塊所保護(hù)并且如果目標(biāo)塊的內(nèi)容未存于高速緩存中,則在計算新的奇偶校驗塊之前將目標(biāo)塊的內(nèi)容從盤上讀出。
8.根據(jù)權(quán)利要求7中的方法,其特征在于奇偶校驗塊和數(shù)據(jù)塊組中的每個數(shù)據(jù)塊都存于盤陣列中不同的盤上。
9.根據(jù)權(quán)利要求6中的方法,其特征在于若奇偶校驗塊未存于高速緩存中,則在確定目標(biāo)塊是否被保護(hù)的步驟之前,從盤上讀取奇偶校驗塊和標(biāo)識符。
10.根據(jù)權(quán)利要求6中的方法,其特征在于通過把新的數(shù)據(jù)塊與奇偶校驗塊相異或來計算新的奇偶校驗塊。
11.一種用于計算冗余廉價盤陣列中未使用數(shù)據(jù)塊的方法,包括為存于盤上的一組數(shù)據(jù)塊中的數(shù)據(jù)塊計算奇偶校驗塊;在奇偶校驗塊中加入一標(biāo)識符以指示組中的哪些數(shù)據(jù)塊正在使用;當(dāng)把一數(shù)據(jù)塊從正在使用的重新歸類為未使用的時,使用奇偶校驗塊和將被重新歸類的塊中的數(shù)據(jù)計算一新的奇偶校驗塊,并更新標(biāo)識符以指示要被重新分類的塊不被新的奇偶校驗塊所保護(hù)。
12.根據(jù)權(quán)利要求11中的方法,其特征在于陣列帶有一個與之相聯(lián)系的高速緩存存儲器,若奇偶校驗塊和標(biāo)識符未存于高速緩存存儲器中,則在計算新的奇偶校驗塊的步驟之前,從盤上讀出奇偶校驗塊和標(biāo)識符。
13.根據(jù)權(quán)利要求11中的方法,其特征在于陣列帶有一個與之相聯(lián)系的高速緩存存儲器,若將被重新歸類的數(shù)據(jù)塊未存于高速緩存存儲器中,則在計算新的奇偶校驗塊的步驟之前,從盤上讀出將要被重新歸類的數(shù)據(jù)塊。
14.根據(jù)權(quán)利要求11中的方法,其特征在于標(biāo)識符包括與組中數(shù)據(jù)塊數(shù)相等的位數(shù),每一位對應(yīng)于組中一個不同的數(shù)據(jù)塊,并且更新標(biāo)識符的步驟包括改變與將被重新歸類的塊相對應(yīng)的位的狀態(tài)。
15.根據(jù)權(quán)利要求11中的方法,其特征在于奇偶校驗塊和組中每個數(shù)據(jù)塊存于陣列中不同的盤上。
16.根據(jù)權(quán)利要求11中的方法,其特征在于計算新的奇偶校驗塊的步驟包括把奇偶校驗塊與將被重新歸類的塊中的數(shù)據(jù)相異或。
全文摘要
用于向盤陣列寫數(shù)據(jù)的系統(tǒng),包括一結(jié)合到盤陣列的高速緩存存儲器,用于保存表示在盤陣列上位置的數(shù)據(jù),和與包含有此位置的奇偶校驗組相聯(lián)系的奇偶校驗塊。每個奇偶塊包括一個表示在由奇偶校驗數(shù)據(jù)所保護(hù)的一特定奇偶校驗組中的位置的標(biāo)識符。寫邏輯從奇偶校驗塊中讀標(biāo)識符,并根據(jù)它判斷某磁盤位置是否不被奇偶校驗數(shù)據(jù)所保護(hù)。寫邏輯同樣也向此位置寫并更新奇偶校驗數(shù)據(jù)和相關(guān)標(biāo)識符以包括此數(shù)據(jù)塊的位置,指示數(shù)據(jù)塊被保護(hù)。
文檔編號G06F12/08GK1118503SQ9510382
公開日1996年3月13日 申請日期1995年4月14日 優(yōu)先權(quán)日1994年5月5日
發(fā)明者彼得·安東尼·弗蘭澤克, 約翰·蒂莫西·羅賓遜, 亞歷山大·湯姆森 申請人:國際商業(yè)機(jī)器公司