專利名稱:恢復(fù)受奇偶校驗保護數(shù)據(jù)的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機數(shù)據(jù)存儲設(shè)備中奇偶校驗信息的維護,特別涉及從故障存儲設(shè)備中重建數(shù)據(jù)時計算機系統(tǒng)實用性的維護。
現(xiàn)代計算機系統(tǒng)的大量數(shù)據(jù)存儲要求大容量的海量數(shù)據(jù)存儲設(shè)備備。通用的數(shù)據(jù)存儲設(shè)備為磁盤驅(qū)動器,它是包含許多易損部件的復(fù)雜機構(gòu)。一種典型的計算機系統(tǒng)將包含幾個這樣的存儲設(shè)備。當(dāng)用戶增加其數(shù)據(jù)存儲量時,系統(tǒng)就要配置更多的存儲設(shè)備。只要任一存儲設(shè)備出現(xiàn)故障,就足以使整個系統(tǒng)癱瘓。許多系統(tǒng)在故障存儲設(shè)備被修復(fù)或替代并且丟失的數(shù)據(jù)被重新存儲之前不能工作。存儲設(shè)備數(shù)目的增加,任一部分出現(xiàn)故障從而導(dǎo)致系統(tǒng)故障的概率也增加。此時計算機用戶越來越多地依賴于其系統(tǒng)的堅固性。因此,關(guān)鍵是尋找重建故障存儲設(shè)備中的數(shù)據(jù)并且使系統(tǒng)在一個存儲設(shè)備出現(xiàn)故障的情況下堅持工作的方法。
一種已知的處理這些問題的方法是“鏡像法”。這種方法包括保留一套復(fù)制的存儲設(shè)備,其中所存數(shù)據(jù)與原數(shù)據(jù)相同。如果原存儲設(shè)備中任一存儲設(shè)備出現(xiàn)故障,該復(fù)制設(shè)備便擔(dān)當(dāng)起向系統(tǒng)提供數(shù)據(jù)的任務(wù)。盡管此種方法非常有效,然而卻是一種很昂貴的處理方法,因為一個用戶必須付出兩倍存儲設(shè)備的費用。
另一種比較便宜的方法是使用奇偶校驗塊。奇偶校驗塊是在不同存儲設(shè)備中某一特定地址上存儲的所有數(shù)據(jù)記錄通過異或運算形成的記錄。換言之,一個存儲設(shè)備中某一特定地址上數(shù)據(jù)塊中的每一位與存儲設(shè)備中每個存儲設(shè)備的相同地址上的每一其它位進行異或,產(chǎn)生一個奇偶校驗位數(shù)據(jù)塊;然后該奇偶校驗數(shù)據(jù)塊被存入另一存儲設(shè)備的同一地址內(nèi)。如果在此存儲設(shè)備組中任一存儲設(shè)備出現(xiàn)故障,出現(xiàn)故障的存儲設(shè)備上任一地址包含的數(shù)據(jù)都能通過其余存儲器上相同地址的數(shù)據(jù)塊與其相應(yīng)的奇偶校驗塊進行異或運算來恢復(fù)。
奧奇(ouchi)的美國專利4,092,732號,介紹了一種奇偶校驗數(shù)據(jù)塊的方法。在奧奇的裝置中,使用一個獨立的存儲設(shè)備來存儲一個存儲設(shè)備組的奇偶校驗信息。在包含奇偶校驗塊的存儲設(shè)備上每進行一次讀寫,該奇偶校驗記錄所包含的存儲設(shè)備組中任一存儲設(shè)備上的一個記錄就被改變一次。因此,具有奇偶校驗記錄的存儲設(shè)備就成為存儲設(shè)備運行的瓶口。克拉克等人(Clark et al)的美國專利第4,761,785號(該專利作為本發(fā)明的參考文件),通過在一組存儲設(shè)備中大致相等地分配奇偶校驗數(shù)據(jù)塊來改善奇偶校驗信息的存儲。一組存儲設(shè)備 中的N個存儲設(shè)備被分成多個相等地址范圍的數(shù)據(jù)塊,每一個數(shù)據(jù)塊,含有多個數(shù)據(jù)記錄。來自每一存儲設(shè)備的具有相同地址范圍的數(shù)據(jù)塊形成一個數(shù)據(jù)塊串。每個串有一個位于一個存儲設(shè)備上的與該串中剩余數(shù)據(jù)塊有關(guān)的奇偶校驗塊。不同串的奇偶校驗數(shù)據(jù)塊以循環(huán)方式分布于不同的存儲設(shè)備中。
與鏡像法相比,奧奇和克拉克的專利所描述的使用奇偶校驗記錄的方法,大大降低了保護數(shù)據(jù)的成本。但是,在奧奇和克拉克提出數(shù)據(jù)恢復(fù)或數(shù)據(jù)保護方法時,他們沒有向用戶提供在數(shù)據(jù)重建期間保持系統(tǒng)運行的方法。通常在重建數(shù)據(jù)之前,正常運行被中斷,切斷存儲控制設(shè)備的電源,以修復(fù)或更換有故障的存儲設(shè)備。因為這種先有技術(shù)完全依賴軟件來恢復(fù)數(shù)據(jù),所以在這種情況下,系統(tǒng)在相當(dāng)長一段時間內(nèi)不能使用。
先有技術(shù)并沒有傳授在沒有復(fù)制或備用存儲設(shè)備的情況下,使動態(tài)系統(tǒng)恢復(fù)和繼續(xù)工作的方法。鏡像法則要求雙倍存儲設(shè)備。至少要用一個或更多備用存儲設(shè)備,即額外的備用磁盤驅(qū)動器,在原存儲設(shè)備組中任一存儲設(shè)備出現(xiàn)故障時,投入使用。雖然這種方法不需要全部鏡像系統(tǒng)的投資,它仍需要額外的存儲設(shè)備,這些設(shè)備除了作備份而外,別無它用。
本發(fā)明的一個目的是,提供一種強有力的方法和裝置,用于在具有多個數(shù)據(jù)存儲設(shè)備的計算機系統(tǒng)中進行丟失數(shù)據(jù)的恢復(fù)。
本發(fā)明的進一步目的是,提供一種強有力的方法和裝置,使具有數(shù)個數(shù)據(jù)存儲設(shè)備的計算機系統(tǒng)能夠在其中一個數(shù)據(jù)存儲設(shè)備有故障的情況下,繼續(xù)運行。
本發(fā)明的又一個目的是,減少具有數(shù)個保護存儲設(shè)備的數(shù)據(jù)處理系統(tǒng)進行數(shù)據(jù)保護的成本。
本發(fā)明再一個目的是,為擁有多個數(shù)據(jù)存儲設(shè)備的計算機系統(tǒng)增添一種當(dāng)其中一個數(shù)據(jù)存儲設(shè)備出現(xiàn)故障時,恢復(fù)故障存儲設(shè)備數(shù)據(jù)的性能。
一個存儲控制器管理多個數(shù)據(jù)存儲設(shè)備。該控制器上的一種存儲管理機構(gòu)維護它所管轄的存儲設(shè)備上的奇偶校驗記錄。數(shù)據(jù)和奇偶校驗塊的組成如克拉克等人的專利所述。在存儲設(shè)備出現(xiàn)故障的情況下,系統(tǒng)繼續(xù)工作。該存儲管理機構(gòu),試圖通過從有故障的存儲設(shè)備中取出數(shù)據(jù),并將它們存入其余存儲設(shè)備中的奇偶校驗數(shù)據(jù)區(qū)域來恢復(fù)數(shù)據(jù)。
數(shù)據(jù)管理機構(gòu)包括一種狀態(tài)圖,它指明每一數(shù)據(jù)塊的對應(yīng)奇偶校驗塊的地址,和該數(shù)據(jù)塊的狀態(tài)。如果某一存儲設(shè)備出現(xiàn)故障,該存儲管理機構(gòu)便進入故障操作模式。當(dāng)處于故障操作模式時,存儲管理機構(gòu)在從有故障的存儲設(shè)備中取出數(shù)據(jù)之前,先檢查狀態(tài)圖。如果數(shù)據(jù)尚未恢復(fù),存儲管理必須首先通過連續(xù)地讀和累加一個奇偶校驗組中所存儲設(shè)備的相同的數(shù)據(jù)塊(包括奇偶數(shù)據(jù)塊)的異或(XOR)運算,來重建該存儲數(shù)據(jù)塊中的數(shù)據(jù)。由異或運算得到的數(shù)據(jù)塊即為重建的數(shù)據(jù),然后這些數(shù)據(jù)被存入該奇偶校驗數(shù)據(jù)塊的地址。接著,狀態(tài)圖被更新,指向已經(jīng)重建的數(shù)據(jù)塊,一旦數(shù)據(jù)已被重新建立,只需從前述的奇偶校驗數(shù)據(jù)塊直接讀出或?qū)懭?。以同樣的方式,在向同一串?在一個無故障存儲設(shè)備上)的任一其它數(shù)據(jù)塊寫入之前,存儲管理將重建有故障存儲設(shè)備上一個存儲數(shù)據(jù)塊的數(shù)據(jù)。這是必要的,因為在該串上對任一數(shù)據(jù)塊的讀操作都將改變奇偶校驗,使之無法隨后對故障存儲設(shè)備上的數(shù)據(jù)塊進行重建。因此,一旦一個存儲設(shè)備出現(xiàn)故障,當(dāng)讀和寫操作引起存儲管理重建數(shù)據(jù)時,系統(tǒng)的性能最初被降低。當(dāng)數(shù)據(jù)重建之后,性能迅速改善。
在較佳實施例中,存儲設(shè)備的組成及奇偶校驗信息的產(chǎn)生和存儲,如克拉克等人的專利所述。重建的數(shù)據(jù)被存入通常存儲丟失數(shù)據(jù)所在串的奇偶校驗數(shù)據(jù)的地址。不需要將系統(tǒng)中的存儲控制器或其它任何部件斷電,即可修復(fù)有故障的存儲設(shè)備,然后再恢復(fù)丟失的數(shù)據(jù)。在此較佳實施例中,當(dāng)進行數(shù)據(jù)的恢復(fù)和存儲之時,配置有這種存儲管理機構(gòu)的計算機系統(tǒng)對用戶來說仍然完全可以使用。在出現(xiàn)故障的存儲設(shè)備被修復(fù)或替換之前,存儲設(shè)備在沒有奇偶校驗保護的狀態(tài)下工作。此實施例實現(xiàn)了連續(xù)工作和沒有增加多少成本的條件下的單級故障保護。
在笫一個替換實施例中,每個無故障存儲設(shè)備的空余存儲區(qū)域被裝入重建的數(shù)據(jù)。這些空余存儲區(qū)域的總和構(gòu)成一個虛備用存儲器。當(dāng)數(shù)據(jù)重建后,數(shù)據(jù)被放入該虛備用存儲器中,而奇偶校驗仍以通常方式被保持。這個替換實施例實現(xiàn)了更高級的故障保護,因為在單個的存儲設(shè)備出現(xiàn)故障后,奇偶校驗數(shù)據(jù)繼續(xù)得以保持。然而,此種方法可能需要額外的存儲空間以形成空余區(qū)域,或者在如果這些空余區(qū)域在正常情況下用作為其它用途(如暫時的數(shù)據(jù)存儲)時,會使設(shè)備的性能下降。
在第二種替換實施例中,存儲管理機構(gòu)位于主機系統(tǒng)的操作軟件中,但完成與位于存儲控制器上的存儲管理機構(gòu)同樣的功能。此實施例將比較佳實施例慢,但能夠降低存儲控制器的成本。
圖1是包括本發(fā)明較佳實施例各部分的系統(tǒng)原理圖;圖2是一個狀態(tài)圖的原理圖;圖3是在正常工作模式期間,一個讀操作的步驟流程圖;圖4是從主機向存儲控制器寫入數(shù)據(jù)時數(shù)據(jù)傳輸步驟的流程圖;圖5是在正常工作模式下,向存儲設(shè)備寫入數(shù)據(jù)的步驟流程圖;圖6是繼存儲設(shè)備故障后的讀操作的步驟流程圖;圖7是一個存儲設(shè)備已經(jīng)出現(xiàn)故障以后,向存儲設(shè)備寫入數(shù)據(jù)的步驟流程圖;圖8是根據(jù)本發(fā)明的一個替換實施例的系統(tǒng)中各部分的方框圖。
本發(fā)明較佳實施例中,計算機系統(tǒng)100的主要部件的方框原理圖如圖1所示。一個主系統(tǒng)101,通過總線102與存儲控制器103進行通信??刂破?03包括一個編程處理器104,非易失性隨機存儲器RAM105(圖中示為NVRAM),異或硬件108,和高速緩沖存儲器RAM109.(圖中示為CACHE)。非易失性RAM105包含狀態(tài)圖106和內(nèi)容表107。控制器103控制存儲設(shè)備121-124的工作。在較佳實施例中,存儲設(shè)備121-124是旋轉(zhuǎn)磁盤存儲器。盡管圖1示出4個存儲設(shè)備,但是不難理解,實際上控制器103所帶的存儲設(shè)備數(shù)目是可變動的。還應(yīng)當(dāng)理解到,可以有一個以上的控制器103與主系統(tǒng)101相連。在較佳實施例中,計算機系統(tǒng)100是IBM AS/400型計算機系統(tǒng),當(dāng)然,也可以使用任意的計算機系統(tǒng)。
每個存儲設(shè)備的存儲區(qū)域被劃分成塊131-138。在較佳實施例中,所有存儲設(shè)備擁有相同的存儲容量,并且所有奇偶校驗的受保護塊大小相同。雖然本發(fā)明可以被用于各種大小的存儲設(shè)備或各種大小塊的配置之中,本較佳實施例卻使控制機構(gòu)得以簡化。
位于幾個存儲設(shè)備的相同位置上的所有塊組成一個串。在圖1中,存儲塊131-134構(gòu)成第一串,塊135-138構(gòu)成第二串。第一串中有一個塊被指定為奇偶校驗塊。奇偶校驗塊131、136在圖1中用陰影部分表示。剩余的未畫陰影的塊132-135、137-138是存儲數(shù)據(jù)的數(shù)據(jù)存儲塊。由塊131-134組成的第一串奇偶校驗塊是塊131。這個奇偶校驗塊包含同一串上其余塊中的數(shù)據(jù)的異或關(guān)系。
在較佳實施例中,奇偶校驗塊以循環(huán)方式分布在不同的存儲器中,如圖1所示。因為每個寫操作中,系統(tǒng)不僅肯定會更新包含被寫數(shù)據(jù)的塊,而且也會更新同一串中的奇偶校驗塊,所以,奇偶校驗塊的修改通常比數(shù)據(jù)塊更頻繁。在不同的存儲設(shè)備之中分配奇偶校驗塊,大多數(shù)情況下將能通過分配存取荷載來改善設(shè)備性能。但是,這種分配對實現(xiàn)這一發(fā)明是不必要的。在一種替換的實施例中,可以將所有奇偶校驗塊放置在單一存儲備上。
在較佳實施例中,每串中有一個塊被指定為奇偶校驗信息。如在一個替換實施例中,各串其中的一串不含奇偶校驗保護。該串供暫存數(shù)據(jù)使用,而暫存數(shù)據(jù)不需要保護。圖8表示該替換實施例,所述的這一串由塊811-814組成。由于它是一個額外的存儲空間,不屬于奇偶校驗數(shù)據(jù)保護系統(tǒng)的一部分,所以這個塊可以為任意大小。
存儲區(qū)域劃分成串的情形如上所述,每個串包括多個數(shù)據(jù)塊和一個奇偶校驗塊,這些均與克拉克等人的美國專利4,761,785(在此作為參考文件)所描述的相同。
存儲控制器103包括執(zhí)行存儲管理程序的編程處理器104。存儲管理程序的操作如下所述。控制器103還包括硬件異或電路108,用于對非易失性RAM105或高速緩沖RAM109中的數(shù)據(jù)進行異或運算。在一個替換實施例中,異或操作可由處理器104執(zhí)行,專用硬件將使處理器的工作效果更佳。
控制器103使用非易失性RAM105作為暫時排隊區(qū)域,供等待直接寫入某一存儲設(shè)備的數(shù)據(jù)之用。除了這些臨時數(shù)據(jù)之外,狀態(tài)圖106和內(nèi)容表107被存入非易失性RAM105中。內(nèi)容表107包含數(shù)據(jù)的一個映像,這些數(shù)據(jù)等待寫入其在存儲器中的地址。
狀態(tài)圖106用來在故障恢復(fù)模式期間為每個數(shù)據(jù)塊識別相應(yīng)奇偶校驗塊的地址,以及每一數(shù)據(jù)塊的狀態(tài)。狀態(tài)圖106的細(xì)節(jié)如圖2所示。對每一存儲設(shè)備,它都有一個獨立的狀態(tài)圖項目表。每個狀態(tài)圖項目201包含存儲設(shè)備上數(shù)據(jù)塊的地址202,在故障模式操作時,指示數(shù)據(jù)是否需要恢復(fù)的狀態(tài)位203,和相應(yīng)奇偶校驗塊的地址204。
再參考圖1,高速緩沖存儲器109是一個易失性隨機存儲器,用于存儲來自存儲設(shè)備的數(shù)據(jù)。在一個讀操作期間,當(dāng)來自存儲設(shè)備的數(shù)據(jù)傳輸給主系統(tǒng)101時,它的作用相當(dāng)于一個緩沖器。此外,響應(yīng)主系統(tǒng)101發(fā)出的關(guān)于數(shù)據(jù)具有很大的修改和重寫可能性的指示,這些數(shù)據(jù)被保存在高速緩沖存儲器109內(nèi),因為未修改的數(shù)據(jù)必須與已修改的數(shù)據(jù)進行異或運算,以更新相應(yīng)的奇偶校驗數(shù)據(jù),所以保存在高速緩沖存儲器109中的讀數(shù)據(jù)就不用在寫操作開始之前立即將數(shù)據(jù)再次讀出。采用高速緩沖存儲器109僅僅為了改善性能。在一替換實施例中,可能不用它就能實現(xiàn)本發(fā)明。高速緩沖存儲器109被視為一個易失性RAM,因為對系統(tǒng)整體性來講不必要將從存儲設(shè)備讀出的數(shù)據(jù)保存在非易失性存儲器中。然而,高速緩沖存儲器可能擔(dān)當(dāng)非易失性存儲器105的部分任務(wù)。根據(jù)存儲器模塊的相對成本和大小,采取這種方法可能是合用的。
結(jié)合與本發(fā)明有關(guān)的硬件和軟件特征,對本系統(tǒng)的功能詳細(xì)介紹如下。該系統(tǒng)具有兩種工作模式正常模式和故障模式。當(dāng)所有磁盤存儲設(shè)備工作正常時,系統(tǒng)以正常模式工作。當(dāng)某一個存儲設(shè)備出現(xiàn)故障時,工作模式變?yōu)楣收夏J剑撓到y(tǒng)仍繼續(xù)工作。
在正常模式下的讀READ操作如圖3所示。在步驟301,從主系統(tǒng)接收一個READ指令后,READ操作開始執(zhí)行,并且在步驟302判斷所請求的數(shù)據(jù)是否在非易失性RAM105或高速緩沖存儲器109中。如果是,至步驟304,在非易失性RAM或在高速緩沖存儲器中的數(shù)據(jù)被直接送給主系統(tǒng)。否則,轉(zhuǎn)至步驟303,先將數(shù)據(jù)從相應(yīng)的存儲設(shè)備中讀入高速緩沖存儲器109,然后再從步驟303轉(zhuǎn)至步驟304,送至主系統(tǒng)。在WRITE操作期間,高速緩沖存儲器109也能改善系統(tǒng)性能。當(dāng)WRITE操作開始后,如果有待更換的數(shù)據(jù)的原始版本已在高速緩沖存儲器109中,就不必再次讀出數(shù)據(jù)以改變奇偶校驗,所以使系統(tǒng)性能得以改善。應(yīng)用先有技術(shù)中任一種高速緩沖存儲器管理技術(shù)都可以管理高速緩沖存儲器109的內(nèi)容。
兩個異步的任務(wù)進入存儲設(shè)備控制器的處理器104時,WRITE操作開始執(zhí)行。一個任務(wù)經(jīng)總線102與主系統(tǒng)通信,如圖4所示。當(dāng)它在步驟401從主機接收到WRITE指令后,WRITE操作開始。然后它檢查內(nèi)容表107,以便在步驟402判斷在非易失性RAM105內(nèi)是否有足夠的空間用于存儲被寫入存儲設(shè)備的數(shù)據(jù)(注意有用空間包括由要被寫入的舊版數(shù)據(jù)占用的空間和未占用的空間)。如果空間不夠,控制器103則不能從主系統(tǒng)接收數(shù)據(jù),必須在步驟403等待有用空間的出現(xiàn)(即它必須等待已在非易失性RAM105中的數(shù)據(jù)被寫入存儲設(shè)備121-124)。當(dāng)非易失性RAM105中的空間變?yōu)榭捎?,在步驟404,數(shù)據(jù)就從主系統(tǒng)101中被拷貝進非易失性RAM105,內(nèi)容表107被更新。然后,在步驟405,處理器104向主系統(tǒng)發(fā)出一個操作完成提示。一旦接到操作完成的提示,主系統(tǒng)不再繼續(xù)處理,仿佛數(shù)據(jù)實際上已寫入存儲設(shè)備121-124一樣,盡管事實上數(shù)據(jù)可能暫時在非易失性RAM105中等待。從主系統(tǒng)方面而言,操作看起來已經(jīng)完成。
笫二個異步任務(wù)是從非易失性RAM105中將數(shù)據(jù)寫入存儲設(shè)備。在正常模式下的這一任務(wù)的流程圖示于圖5。在步驟501,該任務(wù)從非易失性RAM的隊列中選擇WRITE操作。選擇規(guī)則不屬于本發(fā)明的部分,選擇規(guī)則可能是,例如“先進先出”,“后進先出”,或基于系統(tǒng)性能和其它考慮的其它規(guī)則。當(dāng)執(zhí)行WRITE操作時,奇偶校驗必須被更新,通過使新的寫數(shù)據(jù)與舊的數(shù)據(jù)異或,就能夠得到一個被WRITE操作改變了的位的位圖。將這個位圖與現(xiàn)存的奇偶校驗數(shù)據(jù)異或,產(chǎn)生新的奇偶校驗數(shù)據(jù)。但是,在寫入存儲設(shè)備之前,在步驟502,該任務(wù)首先檢查是否高速緩沖存儲器109中的舊數(shù)據(jù)仍處于未修改狀態(tài)。如果不是,在步驟503,它被從存儲器讀入高速緩沖存儲器。然后在步驟504這種高速緩沖存儲器中的舊數(shù)據(jù)與非易失性RAM中的新數(shù)據(jù)異或,生成改變后數(shù)據(jù)的位圖。當(dāng)新數(shù)據(jù)被寫入存儲設(shè)備121-124中的一個時,位圖被暫存進非易失性RAM105中。在步驟506、507,舊奇偶校驗數(shù)據(jù)被讀進高速緩沖存儲器(如果尚未在此的話),并在步驟508與位圖異或產(chǎn)生新的奇偶校驗數(shù)據(jù)。這種新的奇偶校驗數(shù)據(jù)被寫入存儲設(shè)備121-124中的一個之中,并在步驟509,內(nèi)容表被更新,寫操作完成。
當(dāng)探測到一個存儲設(shè)備出現(xiàn)故障時,系統(tǒng)開始工作于故障模式。存儲設(shè)備故障指其功能故障,即存取數(shù)據(jù)的故障。這種故障不一定是該設(shè)備自身損壞引起的。例如,該設(shè)備可能被斷電?;驍?shù)據(jù)電纜被斷開。從系統(tǒng)角度看,任何故障,無論何種原因引起,都是存儲設(shè)備的故障。探測這類故障的探測機構(gòu)在先有技術(shù)中是已知的。普通的機構(gòu)包括對接收數(shù)據(jù)中未接收到響應(yīng)的超時和連續(xù)的高誤碼率的探測。
圖6表示系統(tǒng)工作在故障模式下的READ操作。象在正常模式下的READ操作那樣,在步驟601,當(dāng)從主系統(tǒng)接收到一個READ后,在步驟602,控制器首先為所要的數(shù)據(jù)檢查其非易失性RAM105和其易失性高速緩沖存儲器109。如果該數(shù)據(jù)在非易失性RAM或高速緩沖存儲器中,數(shù)據(jù)通過系統(tǒng)總線102被傳送給主系統(tǒng)。如果數(shù)據(jù)未在非易失性RAM高速緩沖存儲器中,而住留在一個尚未損壞的存儲設(shè)備中(步驟603),那么在步驟604,數(shù)據(jù)以正常方式被從該存儲設(shè)備中讀入高速緩沖存儲器。如果數(shù)據(jù)住留在一個出現(xiàn)故障的存儲設(shè)備中,控制器檢查狀態(tài)圖106中的狀態(tài)圖項目201,在步驟605尋找所要數(shù)據(jù)在存儲設(shè)備中的地址。狀態(tài)圖項目將指示數(shù)據(jù)是否已經(jīng)得到恢復(fù),即是否已通過異或重建數(shù)據(jù)并存入某一替代的地址上。如果狀態(tài)圖指示數(shù)據(jù)尚未得到恢復(fù)(步驟605),控制器在步驟608接著在除了有故障的以外的所有存儲設(shè)備上讀相應(yīng)的存儲地址。異或硬件108將每個讀的數(shù)據(jù)塊與累加的先前讀數(shù)據(jù)塊的異或結(jié)果再進行異或運算。最后的異或結(jié)果構(gòu)成故障設(shè)備的重建數(shù)據(jù)。在步驟609,這種重建的數(shù)據(jù)被寫進與此數(shù)據(jù)塊相對應(yīng)的奇偶校驗塊中。這個塊的位置被存入狀態(tài)圖108中204欄的奇偶校驗塊地址中。將恢復(fù)的數(shù)據(jù)寫入奇偶校驗塊位置之后,在步驟610,通過將同一串中每個塊的狀態(tài)位203改變成“1”來表示數(shù)據(jù)已經(jīng)恢復(fù),使?fàn)顟B(tài)圖108更新。在步驟611,重建的數(shù)據(jù)被送給主系統(tǒng)。如果狀態(tài)位203原來為“1”,表示數(shù)據(jù)已被恢復(fù),控制器將在步驟606從狀態(tài)圖中得到前面奇偶校驗塊區(qū)域的地址(在此,恢復(fù)的數(shù)據(jù)已被存儲),并在步驟607從這一地址中直接將數(shù)據(jù)讀進高速緩沖存儲器。使用這種設(shè)備,只需對所有磁盤存儲設(shè)備讀一次就可恢復(fù)任一數(shù)據(jù)塊中的數(shù)據(jù)。一旦恢復(fù),數(shù)據(jù)的實際存儲地址有效地再定位于原來用于奇偶校驗存儲的地址,而該塊此后的任意讀只需要讀這一存儲設(shè)備。
圖7表示當(dāng)系統(tǒng)工作在故障模式時,寫入存儲設(shè)備的操作。象正常模式WRITE那樣,一個圖4所示的主系統(tǒng)通信任務(wù)接收經(jīng)過總線102來自主系統(tǒng)的被寫數(shù)據(jù)。在步驟701,寫入存儲設(shè)備任務(wù)從非易失性RAM105的隊列中選擇一個寫操作,控制器判斷數(shù)據(jù)是否為要寫入出現(xiàn)故障的存儲設(shè)備的數(shù)據(jù)(步驟702),并檢查狀態(tài)圖(步驟703、709)。如果數(shù)據(jù)是要寫入有故障的存儲設(shè)備的,那么在這個塊中的數(shù)據(jù)仍未被恢復(fù),在任一可能的寫操作之前這個塊必須恢復(fù)?;謴?fù)步驟與上述READ操作的步驟相同。在步驟704,同一塊串的每一塊(包括奇偶校驗塊)依次被讀,并且將其內(nèi)容與先前讀操作塊的累加異或再進行異或運算。在步驟705,結(jié)果(即重建數(shù)據(jù))被寫進曾用作奇偶校驗塊的位置。一旦完整的塊恢復(fù)完畢,新的數(shù)據(jù)(典型地將只包含該塊的一部分)在步驟706被定在以前奇偶校驗地址中的被恢復(fù)數(shù)據(jù)之上,而指示該塊的被更新狀態(tài)圖已在步驟707中得到恢復(fù)。如果數(shù)據(jù)為要被寫入有故障的存儲設(shè)備,但數(shù)據(jù)已經(jīng)被恢復(fù),那么它就直接寫入先前的奇偶校驗地址,現(xiàn)在用于恢復(fù)數(shù)據(jù)的存儲,如步驟708。
當(dāng)工作在故障模式時,如果數(shù)據(jù)正在被寫入一個無故障存儲設(shè)備,控制器檢查狀態(tài)圖(步驟709)。如果狀態(tài)值為“1”,表示該故障存儲設(shè)備上的同一個串上的數(shù)據(jù)塊已經(jīng)被恢復(fù),WRITE數(shù)據(jù)在步驟710直接被寫入無故障存儲設(shè)備中。如果狀態(tài)值為“0”,數(shù)據(jù)不能被直接寫入非故障存儲設(shè)備,因為這種操作可能改變奇偶校驗,使之不能后來在有故障存儲設(shè)備中重建相應(yīng)的數(shù)據(jù)。相應(yīng)地,在較佳實施例中,控制器將先恢復(fù)該故障存儲設(shè)備上的同一串中的數(shù)據(jù)塊。如圖7所示,在步驟711,故障存儲設(shè)備中的數(shù)據(jù)塊首先通過異或運算重建,然后在步驟712保存于奇偶校驗塊地址。在步驟713,WRITE數(shù)據(jù)被寫入其存儲設(shè)備,在步驟714,狀態(tài)圖被更新。應(yīng)當(dāng)注意,如果含有被寫數(shù)據(jù)的串的奇偶校驗塊處于故障存儲器上,那么就沒有重建數(shù)據(jù)的必要,因為無論怎樣奇偶校驗數(shù)據(jù)都將被丟掉。所以,當(dāng)探測出這個存儲設(shè)備有故障的,該串上所有塊的狀態(tài)值被置成“1”。其效果導(dǎo)致該串上的數(shù)據(jù)直接被寫入存儲設(shè)備,仿佛故障存儲器上相應(yīng)的塊已經(jīng)得到恢復(fù)了一樣。例如,參考圖1,如果存儲設(shè)備121出現(xiàn)故障,控制器立即將塊132-134的狀態(tài)值置成“1”,使寫進這些塊的WRITE操作可以直接進行。在一替換實施例中,如果這一WRITE操作向一個非故障存儲器寫入,并且該故障存儲設(shè)備上相應(yīng)的塊還沒有得到恢復(fù),那么可能采取正常模式下WRITE操作的步驟來更新奇偶校驗塊,以便保持以后重建故障設(shè)備中數(shù)據(jù)的能力,當(dāng)故障存儲設(shè)備上數(shù)據(jù)的READ或WRITE被請求后,進行數(shù)據(jù)重建。
在較佳實施例中,奇偶校驗塊用于存儲重建的數(shù)據(jù),結(jié)果,在單個存儲設(shè)備出現(xiàn)故障后,系統(tǒng)就在沒有奇偶校驗保護的條件下運行。而一個替換實施例則不然,如圖8所示,在存儲器設(shè)備上留出了一個或多個足夠大的空余存儲串。這些空余存儲串可能存有臨時數(shù)據(jù),也可能是空的;臨時數(shù)據(jù)不要求奇偶校驗保護,并且在需要時可以重寫。在此替換實施例中,重建的數(shù)據(jù)被重新置入空余存儲串811-814的一個塊中,而不是存入奇偶校驗塊中。這種替換實施例僅僅可能用于存在足夠的空余存儲區(qū)域,來容納有故障存儲設(shè)備中的非空的內(nèi)容的場合。這一替換實施例也可能引起系統(tǒng)可用的暫存空間減小的后果,可能降低系統(tǒng)的性能,或者減少系統(tǒng)可提供服務(wù)的用戶數(shù)目。在這一實施例中,正常模式READ和WRITE操作與較佳實施例中的步驟完全相同。當(dāng)在故障模式下時,則以上述方式檢查狀態(tài)圖,和必要時重建數(shù)據(jù)。但它不將重建的數(shù)據(jù)寫入奇偶校驗塊,而是寫入空余存儲塊內(nèi)。在狀態(tài)圖106中,還要求另外的區(qū)域來記錄曾包含在故障存儲設(shè)備中數(shù)據(jù)的新位置。此外,以與正常狀態(tài)下的寫操作完全相同的方式,用任何WRITE操作都可以使奇偶校驗更新。任一故障存儲設(shè)備上的數(shù)據(jù)重建之后,奇偶校驗都被更新。
在另一替換實施例中,奇偶校驗保護和鏡像保護被結(jié)合在同一系統(tǒng)中。包含在存儲設(shè)備中的一些數(shù)據(jù)通過本文所述的奇偶校驗機構(gòu)來保護,而另一些數(shù)據(jù)則采用鏡像保護。當(dāng)一個存儲設(shè)備出現(xiàn)故障時,奇偶校驗保護的數(shù)據(jù)以上述方式被重建和存儲,而鏡像保護的數(shù)據(jù)則被從鏡像復(fù)制的存儲設(shè)備中取出。
雖然本發(fā)明的一個具體的實施例與若干替換實施例已經(jīng)加以描述,但本領(lǐng)域的技術(shù)人員將能夠理解到,在本發(fā)明權(quán)利要求書的范圍內(nèi)??梢宰龀龈鞣N形式上和細(xì)節(jié)上的變動。特別地,盡管本文公開的較佳實施例采用磁盤存儲設(shè)備,但是本發(fā)明可用于具有可擦、讀/寫特性的其它存儲設(shè)備技術(shù)。
權(quán)利要求
1.一種操作具有一組存儲塊的計算機系統(tǒng)的方法,所述存儲塊組包括多個用于儲存數(shù)據(jù)的數(shù)據(jù)存儲塊并包括至少一個儲存用于存儲在所述數(shù)據(jù)存儲塊中的數(shù)據(jù)的糾錯信息的糾錯存儲塊,每個所述存儲塊包含在各自的數(shù)據(jù)存儲器里,所述方法特征在于包括步驟當(dāng)包含某個數(shù)據(jù)存儲塊的數(shù)據(jù)存儲器出理故障時,從該組的其它存儲塊重建儲存在所述數(shù)據(jù)存儲塊的數(shù)據(jù);以及把所述重建步驟重建的數(shù)據(jù)存儲到所述數(shù)據(jù)存儲器中除所述出現(xiàn)故障的數(shù)據(jù)存儲器之外的一個上。
2.如權(quán)利要求1的操作計算機系統(tǒng)的方法,其特征在于,當(dāng)試圖存取數(shù)據(jù)時所述重建數(shù)據(jù)步驟重建所述數(shù)據(jù)。
3.權(quán)利要求1的操作計算機系統(tǒng)的方法,其特征在于,所述存儲數(shù)據(jù)步驟把重建的數(shù)據(jù)存儲到所述至少一個糾錯存儲塊中。
4.權(quán)利要求3的操作計算機系統(tǒng)的方法,其特征在于,當(dāng)試圖存取數(shù)據(jù)時所述重建數(shù)據(jù)步驟重建所述數(shù)據(jù)。
5.權(quán)利要求1的操作計算機系統(tǒng)的方法,其特征在于,所述數(shù)據(jù)存儲器包含一個備用的存儲塊,并且所述存儲數(shù)據(jù)步驟把重建的數(shù)據(jù)存儲到所述備用的存儲塊里。
6.權(quán)利要求5的操作計算機系統(tǒng)的方法,其特征在于,當(dāng)試圖存取數(shù)據(jù)時所述重建數(shù)據(jù)步驟重建所述數(shù)據(jù)。
7.一種用于計算機系統(tǒng)的存儲設(shè)備,包括至少三個數(shù)據(jù)存儲器;至少一組存儲塊,每組包括多個用于儲存數(shù)據(jù)的數(shù)據(jù)存儲塊并包括至少一個用于存儲在所述數(shù)據(jù)存儲塊中的數(shù)據(jù)的糾錯信息的糾錯存儲塊,每個所述存儲塊包含在各自的數(shù)據(jù)存儲器里;用于當(dāng)包含某個數(shù)據(jù)存儲塊的數(shù)據(jù)存儲器出現(xiàn)故障時從該組的其它存儲塊重建儲存在所述數(shù)據(jù)存儲塊里的數(shù)據(jù)的裝置;以及用于把所述重建數(shù)據(jù)存儲到所述數(shù)據(jù)存儲器中除所述出現(xiàn)故障的數(shù)據(jù)存儲器之外的一個上,其中在其上存儲所述重建數(shù)據(jù)的所述數(shù)據(jù)存儲器是一個包含著所述組中一個所述其它存儲塊的數(shù)據(jù)存儲器,從這個所述其它的存儲塊所述重建數(shù)據(jù)的裝置重建數(shù)據(jù)。
8.權(quán)利要求7的用于計算機系統(tǒng)的存儲設(shè)備,其特征在于,所述存儲所述重建數(shù)據(jù)的裝置把所述數(shù)據(jù)存儲到所述至少一個糾錯存儲塊里。
9.權(quán)利要求8的用于計算機系統(tǒng)的存儲設(shè)備,其特征在于,所述重建數(shù)據(jù)的裝置包括一個存儲控制器,所述存儲控制器包括一個執(zhí)行存儲管理程序的可編程處理機;以及一個非易失性隨機存取存儲器。
10.權(quán)利要求8的用于計算機系統(tǒng)的存儲設(shè)備,其特征在于,所述數(shù)據(jù)處理系統(tǒng)包括至少兩個存儲塊的所述組;各組中所述的至少一個糾錯存儲塊的每個塊包括一個存儲在所述數(shù)據(jù)塊里的數(shù)據(jù)的奇偶性的奇偶存儲塊;以及按循環(huán)方式在所述數(shù)據(jù)存儲器中分布所述奇偶存儲塊。
11.權(quán)利要求8的用于計算機系統(tǒng)的存儲設(shè)備,其特征在于,每個所述數(shù)據(jù)存儲器是一個旋轉(zhuǎn)式磁盤驅(qū)動存儲機。
12.權(quán)利要求7的用于計算機系統(tǒng)的存儲設(shè)備,其特征在于,每個所述數(shù)據(jù)存儲器包含一個備用存儲塊并且所述存儲所述重建數(shù)據(jù)的裝置把所述數(shù)據(jù)存儲到所述備用存儲塊的一個中。
13.權(quán)利要求12的用于計算機系統(tǒng)的存儲設(shè)備,其特征在于,每個所述數(shù)據(jù)存儲器是一個旋轉(zhuǎn)式磁盤驅(qū)動存儲機。
14.權(quán)利要求12的用于計算機系統(tǒng)的存儲設(shè)備,其特征在于,所述數(shù)據(jù)存儲器上含有的所述備用存儲塊的總存儲量足夠包含從所述故障存儲器重建的全部數(shù)據(jù)。
15.一種用于計算機系統(tǒng)的存儲控制器包括一個處理機;一個存儲器;用于控制多個數(shù)據(jù)存儲器的運行的裝置,所述數(shù)據(jù)存儲器包含至少一組存儲塊,每組存儲塊包括多個用于儲存數(shù)據(jù)的數(shù)據(jù)存儲塊并包括至少一個用于存儲在所述數(shù)據(jù)存儲塊中的數(shù)據(jù)的糾錯信息的糾錯存儲塊,每個所述存儲塊包含在各自的數(shù)據(jù)存儲器里;用于維護所述至少一個糾錯存儲塊的裝置;用于當(dāng)包含某個數(shù)據(jù)存儲塊的數(shù)據(jù)存儲器出現(xiàn)故障時從該組的其它存儲塊重建儲存在所述數(shù)據(jù)存儲塊里數(shù)據(jù)的裝置;以及用于把所述重建數(shù)據(jù)存儲到所述數(shù)據(jù)存儲器中除所述出現(xiàn)故障的數(shù)據(jù)存儲器之外的一個上,其中在其上存儲所述重建數(shù)據(jù)的所述數(shù)據(jù)存儲器是一個包含著所述組中一個所述其它存儲塊的數(shù)據(jù)存儲器,從這個所述其它的存儲塊所述重建數(shù)據(jù)的裝置重建數(shù)據(jù)。
16.權(quán)利要求15的用于計算機系統(tǒng)的存儲控制器,其特征在于,所述存儲所述重建數(shù)據(jù)的裝置把所述數(shù)據(jù)存儲到所述至少一個糾錯存儲塊里。
17.權(quán)利要求15的用于計算機系統(tǒng)的存儲控制器,其特征在于所述多個數(shù)據(jù)存儲器包括至少兩個存儲塊的所述組;各組中所述的至少一個糾錯存儲塊的各個塊包括一個存儲在所述數(shù)據(jù)塊里的數(shù)據(jù)的奇偶性的奇偶存儲塊;以及按循環(huán)方式在所述數(shù)據(jù)存儲器中分布所述奇偶存儲塊。
18.權(quán)利要求15的用于計算機系統(tǒng)的存儲控制器,其特征在于,每個所述數(shù)據(jù)存儲器包含一個備用存儲塊并且存儲所述重建數(shù)據(jù)的所述裝置把所述數(shù)據(jù)存儲到所述備用存儲塊的一個中。
19.權(quán)利要求18的用于計算機系統(tǒng)的存儲控制器,其特征在于,所述數(shù)據(jù)存儲器上含有的所述備用存儲塊的總存儲量足夠包含從所述故障存儲器重建的全部數(shù)據(jù)。
20.一種計算機系統(tǒng)的存儲設(shè)備,包括至少三個數(shù)據(jù)存儲器,每個所述數(shù)據(jù)存儲器包含至少一個存儲數(shù)據(jù)的存儲塊并且包含一個備用存儲區(qū);用于檢測所述數(shù)據(jù)存儲器中的一個的故障的裝置;用于重建存儲在所述出現(xiàn)故障的數(shù)據(jù)存儲器中的數(shù)據(jù)的裝置;用于把所述重建的數(shù)據(jù)存儲到除所述出現(xiàn)故障的數(shù)據(jù)存儲器之外的所述數(shù)據(jù)存儲器的多個所述備用存儲區(qū)里。
21.權(quán)利要求20的用于計算機系統(tǒng)的存儲設(shè)備,其特征在于進而包括用于確定存儲在多個所述數(shù)據(jù)存儲器內(nèi)的數(shù)據(jù)的奇偶性的裝置;以及用于把所述奇偶性存儲到所述數(shù)據(jù)存儲器中的一個上的裝置,其中所述用于重建存儲在發(fā)生故障的一個數(shù)據(jù)存儲器的數(shù)據(jù)的裝置包括用于對存儲在發(fā)生故障的所述數(shù)據(jù)存儲器之外的所述數(shù)據(jù)存儲器上的數(shù)據(jù)和奇偶性進行“異或”運算的裝置。
22.權(quán)利要求20的計算機系統(tǒng)的存儲設(shè)備,其特征在于,除所述發(fā)生故障的數(shù)據(jù)存儲器之外的所述數(shù)據(jù)存儲器的所述多個備用存儲區(qū)的總存儲量足夠包含從所述故障數(shù)據(jù)存儲器重建的全部數(shù)據(jù)。
23.一種用于計算機系統(tǒng)的存儲設(shè)備,包括至少三個數(shù)據(jù)存儲器;奇偶生成裝置,用于生成作為多個數(shù)據(jù)塊組的函數(shù)的多個奇偶塊,每個奇偶塊生成為對應(yīng)的數(shù)據(jù)塊組的函數(shù);存儲管理裝置,用于管理所述數(shù)據(jù)存儲器上所述數(shù)據(jù)塊和奇偶塊的存儲;數(shù)據(jù)重建裝置,用于在一個所述數(shù)據(jù)存儲器出現(xiàn)故障的情況下重建存儲在所述一個數(shù)據(jù)存儲器上的一個不可存取的存儲塊中的數(shù)據(jù),其中所述存儲管理裝置管理所述數(shù)據(jù)塊及所述奇偶塊的存儲,從而所述數(shù)據(jù)重建裝置能夠從數(shù)據(jù)存儲塊組中的其它存儲塊以及屬于不可存取的存儲塊的對應(yīng)奇偶存儲塊重建儲存在所述不可存取的存儲塊里的數(shù)據(jù);以及用于把所述重建的數(shù)據(jù)存儲到所述發(fā)生故障的數(shù)據(jù)存儲器之外的一個所述數(shù)據(jù)存儲器上的裝置,其中在其上存儲所述重建數(shù)據(jù)的所述數(shù)據(jù)存儲器是一個包括著數(shù)據(jù)存儲塊組中至少一個所述其它的存儲塊以及屬于不可存取的存儲塊的對應(yīng)奇偶存儲塊的數(shù)據(jù)存儲器。
24.權(quán)利要求23的用于計算機系統(tǒng)的存儲設(shè)備,其特征在于,所述存儲管理裝置包括用于把一個數(shù)據(jù)存儲塊組的每個存儲塊以及對應(yīng)的奇偶存儲塊分配到各自的一個所述數(shù)據(jù)存儲器上的裝置.
25.權(quán)利要求24的用于計算機系統(tǒng)的存儲設(shè)備,其特征在于,每個所述數(shù)據(jù)存儲器包含一個備用存儲區(qū)并且存儲所述重建數(shù)據(jù)的所述裝置把所述數(shù)據(jù)存儲到所述備用存儲區(qū)。
26.權(quán)利要求24的用于計算機系統(tǒng)的存儲設(shè)備,其特征在于還包括一個含有所述奇偶生成裝置,所述存儲管理裝置以及所述數(shù)據(jù)重建裝置的存儲控制器,所述存儲控制器具有一個執(zhí)行存儲管理程序的可編程處理機和一個隨機存取存儲器。
27.一種在冗余存儲器陣列中聯(lián)機重建一個故障數(shù)據(jù)存儲器的方法,所述冗余存儲器陣列和一個控制器連接,該存儲器具有多個存儲條,每個存儲條包含多個數(shù)據(jù)塊和至少一個相關(guān)的糾錯塊,該方法的特征在于包括步驟a.為出故障的存儲器提供替代存儲處;b.為陣列內(nèi)的每個存儲條重建出故障的存儲器的數(shù)據(jù)塊;c.把重建的數(shù)據(jù)塊存儲到替代存儲處的一個區(qū)里;d.如果在重建期間有存取所述陣列內(nèi)一個數(shù)據(jù)塊的請求,則(1)如果所請求的數(shù)據(jù)塊位于該出故障的存儲器,則(a)訪問包含著該被請求數(shù)據(jù)塊的存儲條上的所有的其它數(shù)據(jù)塊和至少一個相應(yīng)的糾錯塊;(b)從所訪問的塊重建該被請求的數(shù)據(jù)塊;(2)如果所請求的數(shù)據(jù)塊不位于出故障的存儲器上,則按常規(guī)方式似乎所述出故障的存儲器未出故障地存取所請求的數(shù)據(jù)塊,不訪問包含著該被請求數(shù)據(jù)塊的存儲條上的所有其它數(shù)據(jù)塊。
28.一種在一個具有對訪問多個數(shù)據(jù)存儲盤進行控制的一個處理機的系統(tǒng)中處理數(shù)據(jù)的方法,其中選定數(shù)量的所述盤的存儲扇區(qū)包含著用戶數(shù)據(jù)并且所述盤中選定一個盤的存儲扇區(qū)包含著和其對應(yīng)的扇區(qū)中的用戶數(shù)據(jù)項相匹配的冗余奇偶項,所述盤中的對應(yīng)用戶數(shù)據(jù)扇區(qū)和奇偶檢驗扇區(qū)構(gòu)成可識別的扇區(qū)組,當(dāng)所述多個盤運行在退化方式下其中一個所述用戶數(shù)據(jù)盤是無法工作的而其用戶數(shù)據(jù)是從其它用戶數(shù)據(jù)盤的用戶數(shù)據(jù)和奇偶檢驗盤的奇偶項重建時使用所述方法,所述方法包括步驟在向可工作盤的一個選定扇區(qū)寫入新數(shù)據(jù)之前,把為不可工作盤的相應(yīng)扇區(qū)重建的用戶數(shù)據(jù)寫入到奇偶檢驗盤的對應(yīng)奇偶扇區(qū)中以替換其中的奇偶項;在所述系統(tǒng)的規(guī)定標(biāo)識區(qū)中輸入標(biāo)記其重建數(shù)據(jù)已寫入到奇偶檢驗盤的該無法工作盤的信息;把該新數(shù)據(jù)寫入到可工作盤的選定扇區(qū)上。
29.權(quán)利要求28的方法,其特征在于還包括步驟如果不能從無法工作盤的一個扇區(qū)讀出數(shù)據(jù),讀系統(tǒng)的該規(guī)定標(biāo)識區(qū)中的信息以確定奇偶盤的對應(yīng)奇偶扇區(qū)中的數(shù)據(jù)項是否是該無法工作盤的重建數(shù)據(jù);以及如果所述標(biāo)識區(qū)中的信息標(biāo)記對應(yīng)奇偶扇區(qū)的數(shù)據(jù)項為該無法工作盤的相應(yīng)數(shù)據(jù)扇區(qū)的重建數(shù)據(jù),從奇偶盤的對應(yīng)奇偶扇區(qū)讀出該數(shù)據(jù)。
30.一種數(shù)據(jù)存儲設(shè)備,包括一組至少三個的數(shù)據(jù)存儲器;一個和所述數(shù)據(jù)存儲器通信的數(shù)據(jù)存儲控制器,所述數(shù)據(jù)存儲控制器把在所述數(shù)據(jù)存儲器組上的數(shù)據(jù)存儲管理成多個存儲塊組,每個塊組包括多個數(shù)據(jù)塊和至少一個糾錯塊,所述塊組的每個塊存儲在不同的有關(guān)的一個所述數(shù)據(jù)存儲器上;其中所述控制器根據(jù)檢測出所述數(shù)據(jù)存儲器中的任一個出現(xiàn)故障重建儲存在出故障的數(shù)據(jù)存儲器上的數(shù)據(jù),儲存在出故障的數(shù)據(jù)存儲器的不可訪問塊里的數(shù)據(jù)是從該不可訪問塊所屬的存儲塊組中的其余的塊上重建的;并且其中所述控制器把從出故障的數(shù)據(jù)存儲器重建的所述數(shù)據(jù)存儲到所述數(shù)據(jù)存儲器組中的其它的多個數(shù)據(jù)存儲器中。
31.權(quán)利要求30的數(shù)據(jù)存儲設(shè)備,其特征在于,至少一個糾錯塊包含奇偶檢驗信息并且所述控制器通過對不可訪問塊所屬組中的所有其它塊進行“異或”運算重建儲存在該不可訪問塊中的數(shù)據(jù)。
32.權(quán)利要求30的數(shù)據(jù)存儲設(shè)備,其特征在于,所述控制器把從出故障的數(shù)據(jù)存儲器重建的所述數(shù)據(jù)存儲到所述糾錯塊中。
33.權(quán)利要求30的數(shù)據(jù)存儲設(shè)備,其特征在于,所述數(shù)據(jù)存儲控制器包括一個執(zhí)行存儲管理程序的可編程處理機;以及一個非易失性隨機存取存儲器。
34.權(quán)利要求30的數(shù)據(jù)存儲設(shè)備,其特征在于,以循環(huán)方式在所述數(shù)據(jù)存儲器中分布所述糾錯塊。
35.權(quán)利要求30的數(shù)據(jù)存儲設(shè)備,其特征在于,每個所述數(shù)據(jù)存儲器包含至少一個備用存儲塊,在所述數(shù)據(jù)存儲器組中包含的備用存儲塊的總數(shù)足夠存儲所述出故障的數(shù)據(jù)存儲器的內(nèi)容。
36.權(quán)利要求30的數(shù)據(jù)存儲設(shè)備,其特征在于所述數(shù)據(jù)存儲控制器記錄有關(guān)出故障的數(shù)據(jù)存儲器所包含的數(shù)據(jù)塊的狀態(tài)信息,所述狀態(tài)信息包括,對于每個數(shù)據(jù)塊,是否所述數(shù)據(jù)塊已重建并且是否已存儲到所述數(shù)據(jù)存儲器組中的其它數(shù)據(jù)存儲器里;響應(yīng)請求訪問包含在出故障的數(shù)據(jù)存儲器上的一個不可訪問的數(shù)據(jù)塊,所述控制器利用所述狀態(tài)信息確定該不可訪問的數(shù)據(jù)塊是否已經(jīng)重建;根據(jù)確定該不可訪問的數(shù)據(jù)塊是否已經(jīng)重建,如果它尚未重建所述控制器重建該不可訪問的數(shù)據(jù)塊;以及根據(jù)確定該不可訪問的數(shù)據(jù)塊是否已經(jīng)重建,如果它已被重建所述控制器不再重建該不可訪問的數(shù)據(jù)塊。
37.一種用于在其中之一的存儲器發(fā)生故障的情況下操作冗余存儲器陣列的方法,所述存儲器陣列包含多個存儲在所述存儲器組的存儲塊組,每個所述存儲塊組包括多個數(shù)據(jù)塊和至少一個相關(guān)的糾錯塊,一個組中的各個塊存儲在不同的一個所述存儲器上,所述方法特征在于包括步驟a.為出故障的存儲器提供替代存儲處;b.為出故障的存儲器的數(shù)據(jù)塊記錄狀態(tài)信息,所述狀態(tài)信息包括,用于每個有關(guān)數(shù)據(jù)塊的,所述數(shù)據(jù)塊是否已重建并且已存儲到替代存儲處中;c.接收讀所述存儲器陣列的一個數(shù)據(jù)塊的請求;d.根據(jù)所述讀一個數(shù)據(jù)塊的請求;(1)如果被請求的數(shù)據(jù)塊位于出故障的存儲器里,則(a)利用所述狀態(tài)信息判定被請求的數(shù)據(jù)塊是否已被重建并已存儲到替代存儲處;(b)如果被請求的數(shù)據(jù)塊尚未重建并尚未存儲到所述替代存儲處,則(i)訪問包含該被請求數(shù)據(jù)塊的數(shù)據(jù)塊組中的所有的其它數(shù)據(jù)塊和至少一個對應(yīng)的糾錯塊;(ii)從所訪問的數(shù)據(jù)塊重建所請求的數(shù)據(jù)塊;(iii)把重建的數(shù)據(jù)塊存儲到替代存儲處;(iv)更新所述狀態(tài)信息以反映該所述請求的數(shù)據(jù)塊已被重建并已存儲到替代存儲處;(c)如果被請求的數(shù)據(jù)塊已被重建及已存儲到替代存儲處,則直接從替代存儲處訪問所請求的數(shù)據(jù)塊;(2)如果所請求的數(shù)據(jù)塊不位于出故障的存儲器里,則直接訪問所請求的數(shù)據(jù)塊。
38.權(quán)利要求37的方法,其特征在于,至少一個糾錯塊包含奇偶檢驗信息,其特征還再于,從所訪問的數(shù)據(jù)塊重建所請求的數(shù)據(jù)塊的步驟包括對所有被訪問的數(shù)據(jù)塊進行“異或”運算以產(chǎn)生一個新的數(shù)據(jù)塊。
39.權(quán)利要求37的方法,其特征在于,所述替代存儲處包括多個在所述冗余存儲器陣列的各個不同的存儲器中分布的數(shù)據(jù)塊.
40.權(quán)利要求37的方法,其特征在于還包括步驟e.接收對所述存儲器陣列的一個更新數(shù)據(jù)塊的寫請求;f.根據(jù)對一個要更新一個數(shù)據(jù)塊的所述寫請求;(1)如果要更新的數(shù)據(jù)塊位于出故障的存儲器上,則(a)利用所述狀態(tài)信息判定要更新的數(shù)據(jù)塊已被重建并已被存儲到替代存儲處;(b)如果要更新的數(shù)據(jù)塊未被重建并未存儲到所述替代存儲處,則(i)訪問包含該要更新的數(shù)據(jù)塊的數(shù)據(jù)塊組中的所有其它的數(shù)據(jù)塊和至少一個的相應(yīng)糾錯塊;(ii)從所訪問的數(shù)據(jù)塊重建要更新的數(shù)據(jù)塊;(iii)把重建后的要更新的數(shù)據(jù)塊存儲到替代存儲處;(iv)更新所述狀態(tài)信息以反映所述要更新的數(shù)據(jù)塊已被重建和存儲到替代存儲處中。
41.權(quán)利要求40的方法,其特征在于還包括步驟f.根據(jù)對一個要更新的數(shù)據(jù)塊的所述寫請求(2)如果要更新的數(shù)據(jù)塊不位于出故障的存儲器上,則(a)利用所述狀態(tài)信息判定一個屬于要更新的數(shù)據(jù)塊所屬的數(shù)據(jù)塊組中的出故障存儲器的不可訪問的數(shù)據(jù)塊是否已被重建并已存儲到替代存儲處中;(b)如果出故障的存儲器的該不可訪問的數(shù)據(jù)塊尚未重建也未存儲到所述替代存儲處中,則(i)訪問包含該不可訪問數(shù)據(jù)塊的數(shù)據(jù)塊組中的所有其它數(shù)據(jù)塊和至少一個相應(yīng)的糾錯塊;(ii)從所訪問的數(shù)據(jù)塊重建該不可訪問的數(shù)據(jù)塊;(iii)把重建的不可訪問的數(shù)據(jù)塊存儲到替代存儲處中;(iv)更新所述狀態(tài)信息以反映所述不可訪問的數(shù)據(jù)塊已被重建并已存儲到替代存儲處中。
42.一種用于存儲計算機系統(tǒng)的數(shù)據(jù)的存儲子系統(tǒng),包括至少三個數(shù)據(jù)存儲器,每個數(shù)據(jù)存儲器用于容納多個存儲塊,每個存儲塊包含在多個存儲塊組中的一個組內(nèi),每個所述組包括多個數(shù)據(jù)塊和至少一個相關(guān)的糾錯塊,一個組的各個塊容納在不同的各自的一個所述的數(shù)據(jù)存儲器上;一個和所述諸數(shù)據(jù)存儲器連接的控制器,所述控制器包括一個可編程處理機,用于執(zhí)行存儲管理程序以控制所述存儲子系統(tǒng)的運行;一個存儲器,所述存儲器包括一個狀態(tài)圖,所述狀態(tài)圖具有多個記錄所述數(shù)據(jù)塊的狀態(tài)的狀態(tài)項;一個糾錯塊生成器,用于生成一個作為相應(yīng)的數(shù)據(jù)塊組中的其它數(shù)據(jù)塊的函數(shù)的糾錯塊;其中在一個所述數(shù)據(jù)存儲器出現(xiàn)故障的情況下,所述存儲管理程序使所述控制器(a)分配用于存儲在出故障的數(shù)據(jù)存儲器上的數(shù)據(jù)的替代存儲處;(b)一旦接收到對容納在所述存儲子系統(tǒng)中的一個數(shù)據(jù)塊的讀請求,(1)如果所請求的數(shù)據(jù)塊位于出故障的存儲器上,則(a)訪問存儲在所述狀態(tài)圖中的信息以判定被請求的數(shù)據(jù)塊是否已被重建和已存儲到替代存儲處中;(b)如果被請求的數(shù)據(jù)塊尚未重建也未存儲到所述替代存儲處中,則(i)讀包含著被請求數(shù)據(jù)塊的數(shù)據(jù)塊組中的所有其它的數(shù)據(jù)塊和至少一個的相應(yīng)糾錯塊,(ii)從讀的這些數(shù)據(jù)塊重建被請求的該數(shù)據(jù)塊,(iii)把重建的數(shù)據(jù)塊存儲到替代存儲處,以及(iv)更新所述狀態(tài)圖以反映該請求的數(shù)據(jù)塊已被重建;(c)如果該請求的數(shù)據(jù)塊已被重建并已存儲到替代的存儲處,則直接從替代的存儲處讀該請求的數(shù)據(jù)塊;(2)如果該請求的數(shù)據(jù)塊不位于出故障的存儲器上,則直接讀該請求的數(shù)據(jù)塊。
43.權(quán)利要求42的存儲子系統(tǒng),其特征在于,所述替代存儲處由多個分布在所述子系統(tǒng)的各個不同的數(shù)據(jù)存儲器中的數(shù)據(jù)塊構(gòu)成。
44.權(quán)利要求43的存儲子系統(tǒng),其特征在于,所述糾錯塊生成器生成一個作為對應(yīng)存儲塊組中其它數(shù)據(jù)塊的“異或”運算函數(shù)的奇偶檢驗塊。
45.一種用于把數(shù)據(jù)存儲到一組至少三個數(shù)據(jù)存儲器上的數(shù)據(jù)存儲設(shè)備,所述數(shù)據(jù)存儲設(shè)備包括糾錯生成裝置,用于生成作為多個數(shù)據(jù)塊組的函數(shù)的多個糾錯塊,每個糾錯塊生成為一個對應(yīng)的數(shù)據(jù)塊組的函數(shù);存儲管理裝置,用于管理所述數(shù)據(jù)存儲器上對所述數(shù)據(jù)塊和對所述糾錯塊的存儲;數(shù)據(jù)重建裝置,用于重建存儲在一個出故障的數(shù)據(jù)存儲器上的不可訪問的存儲塊里的數(shù)據(jù)并用于把重建的數(shù)據(jù)存儲到替代的存儲處,其中所述存儲管理裝置管理對所述數(shù)據(jù)塊和所述糾錯塊的存儲,從而所述數(shù)據(jù)重建裝置能從一個不可訪問的數(shù)據(jù)塊所屬的存儲塊組中的其它數(shù)據(jù)存儲塊以及相應(yīng)的糾錯存儲塊重建所述不可訪問的數(shù)據(jù)塊中包含的數(shù)據(jù);狀態(tài)映象裝置,用于記錄所述出故障的數(shù)據(jù)存儲器上的不可訪問的存儲塊的重建狀態(tài),所述狀態(tài)映象裝置為各個不同的不可訪問的存儲塊記錄所述不可訪問的存儲塊是否已重建;故障狀態(tài)數(shù)據(jù)存取裝置,用于在所述出故障的數(shù)據(jù)存儲器出現(xiàn)故障之后響應(yīng)對存儲在所述至少三個的存儲器組上的失態(tài)數(shù)據(jù)的請求,所述故障狀態(tài)數(shù)據(jù)存取裝置和所述狀態(tài)映象裝置以及所述數(shù)據(jù)重建裝置合作,以便(a)如果所述數(shù)據(jù)未存儲在所述出故障的數(shù)據(jù)存儲器上直接存取所述數(shù)據(jù),(b)如果所述數(shù)據(jù)存儲在所述出故障的數(shù)據(jù)存儲器上的一個不可訪問的數(shù)據(jù)塊上并且所述狀態(tài)映象裝置指示所述數(shù)據(jù)已經(jīng)重建則在替代存儲處存取所述數(shù)據(jù),以及(c)如果所述數(shù)據(jù)存儲在所述出故障的數(shù)據(jù)存儲器上的一個不可訪問的數(shù)據(jù)塊上并且所述狀態(tài)映象裝置指示所述數(shù)據(jù)尚未重建,則用所述數(shù)據(jù)重建裝置重建數(shù)據(jù)和存儲到替代存儲處中,并且用所述狀態(tài)映象裝置更新狀態(tài)信息。
46.權(quán)利要求45的數(shù)據(jù)存儲設(shè)備,其特征在于,所述糾錯塊包含奇偶檢驗信息并且糾錯生成裝置把各個糾錯塊生成為所述相應(yīng)的數(shù)據(jù)塊組的“異或”運算函數(shù)。
47.權(quán)利要求45的數(shù)據(jù)存儲設(shè)備,其特征在于所述替代存儲處包括多個分布在所述至少三個數(shù)據(jù)存儲器的所述組的各個不同的存儲器上的存儲塊。
全文摘要
存儲控制器上的存儲管理機構(gòu),維護其管理的存儲設(shè)備的奇偶校驗記錄,包括為每一數(shù)據(jù)塊指示相應(yīng)奇偶校驗塊地址和數(shù)據(jù)塊狀態(tài)的狀態(tài)圖;若單個存儲設(shè)備出現(xiàn)故障,系統(tǒng)繼續(xù)工作,機構(gòu)在有故障存儲設(shè)備上存取數(shù)據(jù)前檢查狀態(tài)圖,若數(shù)據(jù)尚未重建,通過在奇偶校驗組中所有存儲設(shè)備上讀和累加這些塊(包括奇偶校驗塊)的異或值,首先重建該存儲塊中的數(shù)據(jù),存于奇偶校驗塊的位置,更新狀態(tài)圖,指示該塊已重建;重建后,只需直接從原奇偶校驗塊中讀出或?qū)懭搿?br>
文檔編號G11B20/18GK1182913SQ97116199
公開日1998年5月27日 申請日期1997年8月21日 優(yōu)先權(quán)日1990年6月21日
發(fā)明者米爾頓·F·邦德, 布萊恩·E·克拉克, 雷蒙德·S·麥克羅伯特斯 申請人:國際商業(yè)機器公司