專利名稱::混合數(shù)據(jù)存儲和重建系統(tǒng)以及用于數(shù)據(jù)存儲裝置的方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及數(shù)據(jù)存儲裝置。說得更具體一些,本發(fā)明涉及用于數(shù)據(jù)存儲裝置(諸如磁盤驅(qū)動器、磁帶驅(qū)動器或光盤驅(qū)動器)的數(shù)據(jù)重建。
背景技術(shù):
:在計(jì)算產(chǎn)業(yè)中,眾所周知有兩種常規(guī)的計(jì)算機(jī)模型。第一種是主機(jī)計(jì)算模型,而第二種是群集(clustered)計(jì)算模型。在主機(jī)計(jì)算模型中,最終用戶的傳統(tǒng)的進(jìn)展是購買一套起始的系統(tǒng),并且當(dāng)需要額外的處理能力時,就用較大的系統(tǒng)來替換起始的系統(tǒng)。在此循環(huán)中的各個時刻,會發(fā)生外傷性的不連續(xù)。例如,如果用戶擴(kuò)充起始系統(tǒng),當(dāng)他購買第二個升級的主機(jī)系統(tǒng)時,他可能需要從一種操作系統(tǒng)轉(zhuǎn)換到另一種操作系統(tǒng),或者甚至從一個賣主專有的體系結(jié)構(gòu)轉(zhuǎn)換到另一個賣主專有的體系結(jié)構(gòu)。這些改變對于購買升級的機(jī)構(gòu),在金錢和雇員工時方面都需承擔(dān)巨大花費(fèi)。因此,在許多場合避免這種轉(zhuǎn)換。此外,主機(jī)模型使得計(jì)算機(jī)裝備的剩余的價值很低。于是,當(dāng)用升級的系統(tǒng)替代起始系統(tǒng)時,系統(tǒng)替換往往導(dǎo)致投資資本基本上完全喪失。此外,較大的升級的系統(tǒng)的銷售量要比較小的系統(tǒng)小。于是,每個典型地升級的新系統(tǒng)的計(jì)算成本要比先前的系統(tǒng)的計(jì)算成本高。在群集計(jì)算模型中,一臺主機(jī)計(jì)算機(jī)被一群較小的基于標(biāo)準(zhǔn)的服務(wù)器替代。與主機(jī)模型相比這可以提供許多優(yōu)點(diǎn)。由于此群可以作為只是單個系統(tǒng)出發(fā),因此進(jìn)入此群集模型的門限較低。此外,一般這些較小的系統(tǒng)銷售量很大,使得計(jì)算成本較低。還有,這些系統(tǒng)是基于標(biāo)準(zhǔn)的,即,它們不呈現(xiàn)對專有體系結(jié)構(gòu)的依賴。這就提供了可以從多個來源得到設(shè)備的能力,由此使得用戶在每次后續(xù)的購買時可以選擇最佳的替換設(shè)備。群集計(jì)算模型本身也呈現(xiàn)出另一些優(yōu)點(diǎn)。通過只添加滿足現(xiàn)有的和不久的將來的需要所需的額外資源量能夠更精確地控制升級成本。此外,用戶能從廣泛的賣方中進(jìn)行選擇,而不涉及轉(zhuǎn)移至或轉(zhuǎn)換至一種新的體系結(jié)構(gòu)。類似地,采用正確的體系結(jié)構(gòu),可能從來不需要轉(zhuǎn)換至另一種操作系統(tǒng)。還有,群集計(jì)算模型也有缺點(diǎn)和問題。例如,群集計(jì)算模型在向群集系統(tǒng)以允許此群采取單個主機(jī)能進(jìn)行的工作負(fù)荷的方式提供共享數(shù)據(jù)的能力方面遇到困難。例如,當(dāng)前實(shí)施這樣的群集模型極為困難,即,群中的每個服務(wù)器需要對相同的數(shù)據(jù)處理具體事項(xiàng)。某些應(yīng)用的例子包括航空公司預(yù)約系統(tǒng)或財(cái)政機(jī)關(guān)全部的業(yè)務(wù)往來的清查。群集計(jì)算模型的第二個缺點(diǎn)只是缺少在管理存儲于主機(jī)環(huán)境中的存儲和數(shù)據(jù)方面的廣泛的經(jīng)驗(yàn)。這些經(jīng)驗(yàn)已經(jīng)包括在管理軟件中,但在基于標(biāo)準(zhǔn)的群集環(huán)境中還沒有得到。常規(guī)的磁盤驅(qū)動器還包括了這樣的缺點(diǎn),它與丟失操作系統(tǒng)信息有關(guān)。例如,常規(guī)的磁盤驅(qū)動器包含數(shù)以百萬計(jì)的數(shù)據(jù)扇區(qū)。由于任何數(shù)目的不同原因,一個或多個扇區(qū)可能變得不可讀出或有毛病。如果變得不可讀出的扇區(qū)是操作系統(tǒng)用于特殊目的的一個扇區(qū),則即使能夠讀出其整個其余部分,在磁盤驅(qū)動器中的整個磁盤空間也可能無法使用。例如,在個人計(jì)算機(jī)環(huán)境中,主引導(dǎo)記錄、分區(qū)引導(dǎo)記錄、文件屬性表(FAT)或根目錄可能變得不可讀出或有毛病。這能夠?qū)е聛G失磁盤驅(qū)動器的基本上所有的內(nèi)容。常規(guī)操作系統(tǒng)沒有能力來恢復(fù)丟失這些關(guān)鍵的文件系統(tǒng)管理數(shù)據(jù)的盤面中的所有可讀的數(shù)據(jù)。這意味著用戶的巨大損失,并且特別令人遺憾。因?yàn)閬G失的數(shù)據(jù)是與操作系統(tǒng)相關(guān)的,而與存儲在磁盤驅(qū)動器上的實(shí)際數(shù)據(jù)(它不能讀出)很少或毫無關(guān)系。至今,任何在這些情形下的恢復(fù)數(shù)據(jù)的服務(wù)一般是極為麻煩的。這些服務(wù)一般需要把磁盤驅(qū)動器從其操作環(huán)境中移開,并且將它送至從事于恢復(fù)這些數(shù)據(jù)的服務(wù)的公司或服務(wù)提供者。提供這項(xiàng)服務(wù)不保證成功,并且對于后續(xù)的保密性不加保護(hù),為此得放棄為保密目的而對磁盤驅(qū)動器的看管。本發(fā)明致力于這些問題和別的問題,并且提供勝過現(xiàn)有技術(shù)的其他優(yōu)點(diǎn)。發(fā)明概要本發(fā)明得出一種用于數(shù)據(jù)存儲裝置的混合數(shù)據(jù)再現(xiàn)系統(tǒng)和方法。按照兩種或多種冗余性方案之一,有選擇地存儲數(shù)據(jù),從而按照具有較高冗余度的一種方案存儲關(guān)鍵性的數(shù)據(jù)。附圖簡述圖1是按照本發(fā)明的一個方面的與網(wǎng)絡(luò)相連的存儲系統(tǒng)的方框圖。圖2描繪按照本發(fā)明的一個方面的目標(biāo)模型。圖3-1是第一結(jié)構(gòu)的方框圖,其中,請求器訪問在存儲裝置上的一個目標(biāo)。圖3-2是第二結(jié)構(gòu)的方框圖,其中,請求器訪問在存儲裝置上的一個目標(biāo)。圖4是按照本發(fā)明的一個方面的磁盤驅(qū)動器的透視圖。圖5是描繪請求器訪問目標(biāo)的功能方框圖。圖6描繪按照本發(fā)明的一個方面劃分的存儲媒體的一部分。圖7-1和7-2示出流程圖,它描述按照本發(fā)明的一個方面的請求器訪問目標(biāo)。圖8是流程圖,描繪按照本發(fā)明的一個方面創(chuàng)建目標(biāo)。圖9是流程圖,描繪按照本發(fā)明的一個方面打開和更新目標(biāo)。圖10是流程圖,描述按照本發(fā)明的一個方面寫至目標(biāo)。圖11是流程圖,描繪按照本發(fā)明的一個方面為了只讀而打開目標(biāo)。圖12是流程圖,描述按照本發(fā)明的一個方面讀出目標(biāo)。圖13是流程圖,描述按照本發(fā)明的一個方面關(guān)閉目標(biāo)。圖14是流程圖,描繪按照本發(fā)明的一個方面移去目標(biāo)。圖15是流程圖,描繪按照本發(fā)明的一個方面創(chuàng)建一個分區(qū)。圖16是流程圖,描繪按照本發(fā)明的一個方面移去除一個分區(qū)。圖17是流程圖,描繪按照本發(fā)明的一個方面輸出目標(biāo)。圖18是流程圖,描繪按照本發(fā)明的一個方面得到目標(biāo)屬性。圖19是流程圖,描繪按照本發(fā)明的一個方面設(shè)置或修改目標(biāo)屬性。圖20是流程圖,描繪按照本發(fā)明的一個方面讀取加鎖屬性。圖21是流程圖,描繪按照本發(fā)明的一個方面設(shè)置加鎖屬性。圖22是流程圖,描繪按照本發(fā)明的一個方面復(fù)位目標(biāo)的加鎖屬性。圖23是流程圖,描繪按照本發(fā)明的一個方面得到裝置關(guān)聯(lián)。圖24是流程圖,描繪按照本發(fā)明的一個方面設(shè)置裝置關(guān)聯(lián)。圖25是方框圖,描繪按照本發(fā)明的一個方面實(shí)施的磁盤驅(qū)動器陣列。圖26是方框圖,描繪按照本發(fā)明的一個方面的目標(biāo)磁盤驅(qū)動器。圖27是方框圖,描繪按照本發(fā)明的一個方面的一致校驗(yàn)(parity)磁盤驅(qū)動器。圖28是流程圖,描繪按照本發(fā)明的一個方面創(chuàng)建一致校驗(yàn)組。圖29是流程圖,描繪按照本發(fā)明的一個方面的寫操作,其中,一致校驗(yàn)信息被更新。圖30描繪按照本發(fā)明的一個方面的數(shù)據(jù)結(jié)構(gòu)。圖31是按照本發(fā)明的一個方面的使用嵌入位置信息的磁盤驅(qū)動器的方框圖。圖32是流程圖,描繪示于圖31的系統(tǒng)的操作。圖33是方框圖,描繪按照本發(fā)明的另一方面的使用嵌入位置信息的數(shù)據(jù)存儲裝置的另一實(shí)施例。圖34是方框圖,描繪按照本發(fā)明的一個方面實(shí)現(xiàn)混合數(shù)據(jù)重建系統(tǒng)的磁盤驅(qū)動器陣列。圖35和36是流程圖,分別對于面向塊的數(shù)據(jù)和面向目標(biāo)的數(shù)據(jù)進(jìn)行混合數(shù)據(jù)重建方法的寫操作。較佳實(shí)施例的詳細(xì)描述圖1是按照本發(fā)明的一個方面的數(shù)據(jù)存儲系統(tǒng)100的方框圖。系統(tǒng)100包括面向目標(biāo)的數(shù)據(jù)存儲裝置110和112;文件服務(wù)器114;請求器116、118和120;以及互連器122。系統(tǒng)100表示一個與網(wǎng)絡(luò)連接的存儲結(jié)構(gòu),它能夠用購自許多不同賣主的裝備和軟件構(gòu)成,并且它作為一個單個的大型計(jì)算機(jī)系統(tǒng)呈現(xiàn)給用戶。面向目標(biāo)的存儲裝置110-112是完成系統(tǒng)100的數(shù)據(jù)存儲功能的存儲部件。存儲裝置110-112最好包括磁盤驅(qū)動器、廉價磁盤冗余陣列(RAID)子系統(tǒng)、磁帶驅(qū)動器、磁帶庫、光盤驅(qū)動器、投幣式自動電唱機(jī)(jukebox)或任何其他的能被共享的存儲裝置。存儲裝置110和112還設(shè)有至請求器116、118和120的輸入/輸出(I/O)通道連接件,這些請求器將訪問裝置110和112。請求器116、118和120是一些部件,諸如服務(wù)器或客戶機(jī),它們共享存儲在裝置110和112上的信息。請求器116-120最好也構(gòu)造得直接訪問在存儲裝置110和112上的信息。文件服務(wù)器114完成管理和保安功能,諸如請求證實(shí)和資源定位。在較小的系統(tǒng)中,最好不用專用文件服務(wù)器。作為替代,請求器116-120之一承擔(dān)這項(xiàng)監(jiān)視由文件服務(wù)器114執(zhí)行的系統(tǒng)100的操作的功能和職責(zé)。此外,如果不需要或不想要由文件服務(wù)器114提供的保安和功能,或者性能的首要需要要求請求器組116-120直接與存儲裝置110和112對話,可把文件服務(wù)器114從系統(tǒng)100中去掉。在一較佳實(shí)施例中,互連122是一種物理的基礎(chǔ)結(jié)構(gòu),在連接網(wǎng)絡(luò)的存儲系統(tǒng)100中的所有部件經(jīng)過該基礎(chǔ)結(jié)構(gòu)互相溝通。在運(yùn)作中,當(dāng)系統(tǒng)100通電時,所有的裝置最好或是互相或是對一公共參考點(diǎn)(諸如文件服務(wù)器114或互連122)識別它們自己。例如,在基于纖通道(fiberchannel)的系統(tǒng)100中,面向目標(biāo)的存儲裝置110和112以及請求器116-120登錄在系統(tǒng)的構(gòu)造(fabric)上。在這樣的實(shí)施中,系統(tǒng)110的任何部件(它想確定操作結(jié)構(gòu))能使用構(gòu)造服務(wù)來識別所有其他的部件。請求器116-120從文件服務(wù)器114得知存儲裝置10和112的存在(請求器116-120能對存儲裝置110和112進(jìn)行訪問)。類似地,存儲裝置110和112得知在系統(tǒng)100中定位其他裝置所需的信息的位置和必須用來調(diào)用管理服務(wù)(諸如備份)的地址。類似地,在一個較佳實(shí)施例中,文件服務(wù)器114從構(gòu)造服務(wù)從得知存儲裝置110和112的存在。取決于特殊系統(tǒng)100的保安實(shí)施,請求器116-126(或它們中的任何一個)可以被拒絕訪問系統(tǒng)100的某些部件。根據(jù)每個請求器可用的存儲裝置110和112的組,于是該請求器能夠識別它可用的文件、數(shù)據(jù)庫、和自由空間。與此同時,系統(tǒng)100中的每個部件最好對文件服務(wù)器114識別任何與其相關(guān)聯(lián)的特定考慮。例如,任何存儲裝置級別的服務(wù)屬性可以一次傳送至文件服務(wù)器114,于是系統(tǒng)100中的所有其他部件從文件服務(wù)器114得知它們的屬性。例如,某個特定的請求器116-120在啟動后可能希望知道額外存儲裝置的引入。例如,當(dāng)請求器記錄在文件服務(wù)器114上時,可以提供這一屬性。于是每當(dāng)新的存儲裝置添加至系統(tǒng)100時,文件服務(wù)器114就自動地通知該特定的請求器。于是文件服務(wù)器114一般也可以向請求器傳送其他重要特性(諸如存儲裝置是否為RAID5、鏡象存儲裝置、等等)。按照本發(fā)明的一個方面,存儲在存儲裝置110和112上的信息最好存儲中圖2中更好畫出的系統(tǒng)中。每個存儲裝置110和112最好是面向目標(biāo)的裝置,它以這樣的模式運(yùn)作,其中,把數(shù)據(jù)作為目標(biāo)124-126加以組織和存取,而不是作為扇區(qū)的有序序列。面向目標(biāo)的裝置110和112用目標(biāo)文件系統(tǒng)來管理目標(biāo)124-126,目標(biāo)文件系統(tǒng)對于特定裝置上的每個分區(qū)說明性地包括目標(biāo)的一個單層列表。目標(biāo)文件系統(tǒng)也稱為平坦文件系統(tǒng)。存儲在每個裝置110和112中的存儲媒體上的目標(biāo)124-126最好是安置在裝置110或112(它以面向目標(biāo)裝置模式運(yùn)作)上的容量分配的最小可見單元。在這樣一個存儲裝置上的目標(biāo)包括與唯一的識別符相關(guān)聯(lián)的一組有序的扇區(qū)。數(shù)據(jù)通過識別符以及在目標(biāo)中的偏置而引用。當(dāng)操作系統(tǒng)管理在這些目標(biāo)結(jié)構(gòu)中的文件和元數(shù)據(jù)(metadata)(而不是如在現(xiàn)有技術(shù)的體系結(jié)構(gòu)中管理數(shù)據(jù)扇區(qū))的同時,由存儲裝置110或112本身把目標(biāo)定位和放置在存儲媒體上。目標(biāo)124-126由接口128存取,其中,目標(biāo)暴露出可由請求器116-120調(diào)用的多個方法,以訪問和處理在目標(biāo)124-126中的屬性和數(shù)據(jù)。于是,如圖2所示,從一個請求器116-120發(fā)出一個請求130。在一較佳實(shí)施例中,請求器116-120是計(jì)算機(jī)系統(tǒng)或者是系統(tǒng)的群或網(wǎng)絡(luò)中的一個單元,該單元為對包含目標(biāo)124-126的存儲裝置采取行動而提交請求130。于是,請求器116-120可以是客戶機(jī)和服務(wù)器。在任何一種情形中,由請求器116-126之一發(fā)出的請求130調(diào)用在接口128中的方法之一,如后文將要詳細(xì)描述的,這又造成對一個或多個目標(biāo)124-126的處理。圖3-1和3-2是能夠用來存取存儲在存儲裝置110-112中的目標(biāo)的兩種不同結(jié)構(gòu)的方框圖。為簡單起見,在圖3-1和3-2中只畫出單個請求器116和單個面向目標(biāo)的存儲裝置110。當(dāng)請求器116希望打開目標(biāo)(諸如目標(biāo)124-126)時,請求器116可以直接訪問存儲裝置110,或者它需要從文件服務(wù)器114請求允許和位置信息,以訪問在存儲裝置110上的目標(biāo)。文件服務(wù)器110控制對存儲裝置110的存取的程度主要隨系統(tǒng)100的特定實(shí)現(xiàn)的安全性要求而變。在圖3-1示出的方框圖中,假設(shè)系統(tǒng)100是安全的。即,沒有要求對在請求器116和存儲裝置110之間傳輸?shù)拿钚畔⒑蛿?shù)據(jù)進(jìn)行保護(hù)。在這種實(shí)施中,仍然可以存在用于管理功能的文件服務(wù)器114,但不需文件服務(wù)器114來監(jiān)視請求器與存儲裝置110的交互作用。在這樣的實(shí)施中,請求器116處于直接在存儲裝置110上存取和創(chuàng)建目標(biāo)的地位。于是請求器116能夠打開、讀出、寫入和關(guān)閉目標(biāo),仿佛它們本來就附著于請求器116。在后文的應(yīng)用中會更詳細(xì)描述這些操作。然而,只是為了清楚起見,這里只提供簡短的概述。為了讀取存儲裝置110上的一個目標(biāo),請求器116最好首先讀取這樣的一個或多個目標(biāo),它們揭示在存儲裝置110上的邏輯卷名或分區(qū),并且揭示如何開始搜索存儲在其上的目標(biāo)。然后請求器116打開并讀取一個目標(biāo),它可以是一個根目錄。根據(jù)這個目標(biāo),定位其它目標(biāo)是直接的,并且是根據(jù)目錄的內(nèi)容的。請求器116重復(fù)這一過程直到定位出所需的數(shù)據(jù)。由目標(biāo)識別符(目標(biāo)ID)和目標(biāo)內(nèi)的位移引用數(shù)據(jù)。在示于圖3-2的第二個實(shí)施中,需要保安。因此,把文件服務(wù)器114插入請求器116和存儲裝置110之間的輸入/輸出(I/O)鏈,達(dá)到需要的保護(hù)等級所需的程度。在一個較佳實(shí)施例中,請求器116必須首先向文件服務(wù)器114請求允許作一組I/O操作。于是文件服務(wù)器114(它可能為了額外的安全曾經(jīng)拒絕向請求器116提供存儲位置信息)通過返回足夠的信息信任來自請求器116的請求,以允許請求器116直接與存儲裝置110聯(lián)系。因?yàn)楫?dāng)存儲裝置110在文件服務(wù)器114上登錄時,存儲裝置110最好被通知有關(guān)安全性參數(shù),存儲裝置110最好不允許I/O請求,除非該請求是適當(dāng)構(gòu)造的,并且包括編碼數(shù)據(jù)(它包括了來自文件服務(wù)器114的有效允許)。于是,過程以一種類似于對圖3-1所描述的方式進(jìn)行。然后,與每個命令相關(guān)聯(lián)的有效載荷可以很不相同。例如,在需要保安的情形下(示于圖3-2),在請求器116和存儲裝置110之間傳送的命令和數(shù)據(jù)都可能是加密的。此外,最好必須將允許信息添加至從請求器116提供給存儲裝置110的命令參數(shù)中。由于在一個實(shí)施例中存儲裝置110和112能夠包括硬盤驅(qū)動器,因此有必要簡短討論一下磁盤驅(qū)動器。圖4是硬盤驅(qū)動器的透視圖,該硬盤驅(qū)動器能夠作為存儲裝置110。在磁盤驅(qū)動器110中,在一個殼體136內(nèi),多個磁盤132設(shè)置在主軸電動機(jī)組件134的軸頸部。每個磁盤132具有多條同心的圓形記錄磁道,它們示意地用138標(biāo)出。每條磁道138劃分或多個分區(qū)(將對于圖6詳加描述)。通過訪問一條磁道138中的一個特定的分區(qū),可以將數(shù)據(jù)存儲在磁盤132上,或從磁盤132上檢索。最好地一個執(zhí)行機(jī)構(gòu)(actuator)臂組件140可旋轉(zhuǎn)地安裝在殼體136的一個角隅。執(zhí)行機(jī)構(gòu)臂組件140裝有多個磁頭萬向架組件142,每個磁頭萬向組件裝有一個帶讀/寫磁頭或換能器(未示出)的滑塊,用于從磁盤132讀出信息和在磁盤132上寫入信息。音圈電動機(jī)144適用于精確地前后旋轉(zhuǎn)執(zhí)行機(jī)構(gòu)臂組件140,從而在滑塊142上的換能器沿一般地由箭頭146指出的弧線在磁盤132的表面上移動。圖4還以方框圖的形式畫出磁盤驅(qū)動器控制器148,用它以已知方式來控制磁盤驅(qū)動器110的某些操作。然而,按照本發(fā)明,磁盤驅(qū)動器控制器也用來實(shí)現(xiàn)與存儲在磁盤132上的目標(biāo)124-126的接口128。圖5是當(dāng)把磁盤驅(qū)動器110裝在示于圖1的系統(tǒng)100中時,它的一部分的方框圖。在圖5中,磁盤驅(qū)動器控制器148包括實(shí)現(xiàn)接口128的控制部件150。目標(biāo)124-126存儲在構(gòu)成磁盤132的存儲媒體上。請求部件152在請求器116-120上實(shí)現(xiàn),并且構(gòu)造來邏輯上表達(dá)調(diào)用接口128中的方法的請求。在調(diào)用了一個方法后,控制部件150執(zhí)行某些任務(wù),以用所需的方式處理被識別的目標(biāo)??刂撇考?50返回一個事件,它能夠包括與任何被識別的目標(biāo)相關(guān)聯(lián)的數(shù)據(jù)或?qū)傩?。還可根據(jù)由請求器116-120調(diào)用的特定方法,返回該事件。為了使面向目標(biāo)的裝置110-112提供帶有面向塊的裝置的操作系統(tǒng)傳遞的相同的功能,在裝置110-112上的存儲空間必須達(dá)到類似的可處理程度。于是,在一個較佳實(shí)施例中,提供了在存儲裝置110-112上的目標(biāo)124-126(它們存儲在其上)上層的組織層。在一較佳實(shí)施例中,面向目標(biāo)的存儲裝置110-112將磁盤空間分派成一個或多個獨(dú)占的區(qū)域,稱為分區(qū)。將對于圖6更詳細(xì)地描述分區(qū)。在一個分區(qū)中,請求器116-120能夠創(chuàng)建目標(biāo)。在一個較佳實(shí)施例中,一個分區(qū)中的結(jié)構(gòu)是一個簡單的、平坦的組織。任何操作系統(tǒng)能把其自己的結(jié)構(gòu)映射在這個組織上。圖6畫出在存儲媒體(諸如磁盤132之一)上的存儲空間的一部分。存儲空間包括多個目標(biāo),諸如裝置控制目標(biāo)(DCO)154、裝置相關(guān)目標(biāo)聯(lián)性(DAO)156和多個分區(qū),這些分區(qū)標(biāo)以分區(qū)0(也用標(biāo)號158指出)、分區(qū)1(也用標(biāo)號160指出)和分區(qū)N(也用標(biāo)號162指出)。每個分區(qū)還包括多個目標(biāo),諸如分區(qū)控制目標(biāo)(PCO)164。分區(qū)目標(biāo)列表(POL)166和多個數(shù)據(jù)目標(biāo)168(標(biāo)為數(shù)據(jù)目標(biāo)0-數(shù)據(jù)目標(biāo)N)。與每個目標(biāo)相關(guān)聯(lián)的是一組屬性。按照本發(fā)明的一個方面,提供了一個存取控制屬性,它由設(shè)置屬性(SetAttribute)方法設(shè)置(將在后文詳加討論),并且提供了使訪問特定目標(biāo)受控的方法。通過改變存取控制屬性的版本號(versionnumber),拒絕或給予某些請求器116-120對特定目標(biāo)的訪問。群集(clustering)目標(biāo)是這樣屬性,它指出該特定目標(biāo)是否應(yīng)該合乎要求地放置得靠近存儲系統(tǒng)中的另一個目標(biāo)。復(fù)制(cloning)屬性指出,特定目標(biāo)是否通過復(fù)制存儲系統(tǒng)中的另一個目標(biāo)而創(chuàng)建。一組規(guī)模(size)屬性確定特定目標(biāo)的規(guī)模特性。例如,規(guī)模屬性的組包括這樣的信息,它指出在目標(biāo)內(nèi)寫的最大偏移、分配給目標(biāo)的塊數(shù)、用于在目標(biāo)內(nèi)存儲數(shù)據(jù)的塊數(shù)和在目標(biāo)內(nèi)每塊的字節(jié)數(shù)。一組時間屬性指出何出創(chuàng)建目標(biāo)、修改目標(biāo)中的數(shù)據(jù)的最后時間以及修改在目標(biāo)中的屬性的最后時間。目標(biāo)最好還包括這樣一組屬性,它們確定修改文件系統(tǒng)中任何數(shù)據(jù)的最后時間和修改文件系統(tǒng)中任何屬性的最后時間。為了指出任何給定目標(biāo)的其他參數(shù)、特性或特征,還可以提供其他的屬性。每個目標(biāo)還與一個目標(biāo)識別符相關(guān)聯(lián),該目標(biāo)識別符由特定的存儲裝置110-112選擇,并且響應(yīng)于創(chuàng)建目標(biāo)的命令而返回至請求器116-120。識別符最好是一個規(guī)定長度的不帶符號的整數(shù)。在一個較佳實(shí)施例中,識別符的長度默認(rèn)為由特定的存儲裝置110-112規(guī)定的大小,或者能設(shè)置為裝置屬性。此外,在一個較佳實(shí)施例中,為公知的目標(biāo)、特殊使用和其他希望進(jìn)行的特定功能保留預(yù)定的識別符子組。圖6指出,存儲媒體一般包括時常具有特定的目標(biāo)識別符的公知的目標(biāo)。在某些情形中,這些公知的目標(biāo)存在于每個裝置之上或在每個分區(qū)之中。例如,一個公知的目標(biāo)是裝置控制目標(biāo)154,它最好包含由每個裝置110-112保留的屬性,并且它與裝置本身有關(guān),或者與裝置上的所有目標(biāo)有關(guān)。由“設(shè)置屬性”(Set_Attribute)方法(該方法在后文描述)保留屬性。在一個較佳實(shí)施例中,每個裝置110-112有一個裝置控制目標(biāo)154。表1描述一組值得推薦的裝置控制目標(biāo)(DCO)屬性。表1<tablesid="table1"num="001"><table>類型名稱字節(jié)語義安全性時鐘8單調(diào)計(jì)數(shù)器主密鑰8主密鑰,控制裝置密鑰裝置密鑰8裝置密鑰,控制分區(qū)密鑰保護(hù)等級1確定保護(hù)選項(xiàng)分區(qū)分區(qū)計(jì)數(shù)1裝置上的分區(qū)數(shù)裝置屬性目標(biāo)屬性8確定與裝置上所有的目標(biāo)相關(guān)聯(lián)的性質(zhì)</table></tables>在一個較佳實(shí)施例中,DCO屬性包括時鐘,它只是一個單調(diào)計(jì)數(shù)器;包括加密密鑰的主密鑰或者控制裝置上所有其他密鑰的其他主密鑰;以及裝置密鑰,它控制分區(qū)密鑰,并且可以用來鎖定分區(qū)。屬性還包括保護(hù)等級密鑰,它識別預(yù)定的保護(hù)等級并且具有相關(guān)聯(lián)的保安方針;分區(qū)計(jì)數(shù),它確定裝置上的分區(qū)數(shù);以及目標(biāo)屬性,它確定與正在訪問的特定裝置上的所有目標(biāo)相關(guān)聯(lián)的性質(zhì)。為了合適地管理跨越多個存儲裝置110-112的目標(biāo),每個存儲裝置110-112最好也包括一個裝置相關(guān)聯(lián)目標(biāo)156,它規(guī)定各個裝置110-112之間的相關(guān)聯(lián)性。例如,如果存儲裝置110和112是裝置的鏡象對,或者是一個陣列組的部件,則裝置相關(guān)聯(lián)目標(biāo)156識別這種關(guān)系。表2示出裝置相關(guān)聯(lián)目標(biāo)156的一些值得推薦的屬性。表2<tablesid="table2"num="002"><table>名稱字節(jié)語義相關(guān)聯(lián)性識別符2此組的唯一的ID相關(guān)聯(lián)性類型2相關(guān)聯(lián)性類型成員表n相關(guān)聯(lián)性識別符2相關(guān)聯(lián)性類型2成員表n</table></tables>這些屬性最好包括相關(guān)聯(lián)性識別符,它是相關(guān)聯(lián)的裝置的每個給定組的唯一的識別符。屬性最好還包括相關(guān)聯(lián)性類型,它確定裝置之間的相關(guān)聯(lián)性的類型(例如,鏡象對、RAID5、等等)。屬性最好還包括成員表,它只是識別裝置110-112,它們是上述相關(guān)聯(lián)性的成員。在存儲裝置110-112上的每個分區(qū)158、160和162最好還包括分區(qū)控制目標(biāo)164,它包含了單個分區(qū)的性質(zhì)。目標(biāo)164最好不僅描述了該分區(qū),而且描述屬于該分區(qū)中的所有目標(biāo)的任何目標(biāo)屬性。每個裝置110-112最好包括用于在裝置上確定的每個分區(qū)的一個分區(qū)控制目標(biāo)164。雖然圖6描繪了存儲在每個分區(qū)中的分區(qū)控制目標(biāo),但情形不必總是如此。分區(qū)控制目標(biāo)可以不存儲在分區(qū)中,而存儲在其上方的平坦文件系統(tǒng)中。表3指出最好包括在分區(qū)控制目標(biāo)168中的多個屬性。表3這些屬性最好包括主密鑰,它確定用于整個分區(qū)的加密密鑰,并且能夠用來設(shè)置當(dāng)前工作密鑰。屬性最好還包括當(dāng)前工作密鑰和先前工作密鑰,最好用它們來對命令和數(shù)據(jù)消息加密和解密。分區(qū)控制目標(biāo)164最好還包括目標(biāo)屬性,它與指定分區(qū)中的所有的目標(biāo)相關(guān)聯(lián)。圖6還畫出,每個分區(qū)最好包括分區(qū)目標(biāo)列表166,它是當(dāng)在存儲媒體上創(chuàng)建一個分區(qū)時,由控制部件150建造的一個目標(biāo)。分區(qū)目標(biāo)列表166最好在每個分區(qū)中具有相同的識別符,并且組成引導(dǎo)在存儲媒體上實(shí)施的目標(biāo)文件系統(tǒng)的出發(fā)點(diǎn)。表4示出最好與每個分區(qū)目標(biāo)列表相關(guān)聯(lián)的屬性列表。表4如表4所示,對于駐留在該分區(qū)中的所有目標(biāo),目標(biāo)最好包括目標(biāo)識別符(目標(biāo)ID)列表,以及分派給每個目標(biāo)的用戶空間的卷大小。由請求器使用目標(biāo)識別符,以打開、讀出、寫入和關(guān)閉目標(biāo)。此外,通過在分區(qū)目標(biāo)列表中設(shè)置用戶數(shù)據(jù)屬性,用戶最好能夠?qū)γ總€目標(biāo)ID分派用戶空間。在分區(qū)目標(biāo)列表166之后,每個分區(qū)最好包括多個數(shù)據(jù)目標(biāo)168。根據(jù)數(shù)據(jù)存儲系統(tǒng)的特定實(shí)施,每個數(shù)據(jù)目標(biāo)168最好包括一個或多個在表1中設(shè)置的屬性,并且能夠包括附加屬性。面向目標(biāo)的存儲裝置110-112最好支持請求,以向請求器116-120提供數(shù)據(jù)或者為其存儲數(shù)據(jù)。此外,在現(xiàn)有技術(shù)系統(tǒng)構(gòu)造中,存儲裝置110-112最好承擔(dān)對可能已在其他部件部件處(最可能在操作系統(tǒng)中)實(shí)行的其他功能的責(zé)任。最好由裝置110-112自己來完成空間管理以及保持與在裝置110-112上的目標(biāo)相關(guān)聯(lián)的屬性。最好通過調(diào)用由接口128支持的方法來完成這些功能,接口128是由在每個存儲裝置110-112中的控制部件150實(shí)現(xiàn)的。在說明書的后文中會詳述能調(diào)用的多種方法。然而,為了便于更好地理解這些方法,圖7-1和7-2提供了流程圖,它畫出了按照本發(fā)明的一個方面對面向目標(biāo)的文件系統(tǒng)的引導(dǎo),可以相信,在詳述后面給出的方法之前討論圖7-1和7-2,將有助于理解本發(fā)明。從方框170延伸至204的圖7-1和7-2示出在存儲裝置110-112之一的特定分區(qū)中尋找目標(biāo)。首先,請求器116在裝置控制目標(biāo)154中得到裝置屬性。這由方框172指出。調(diào)用Get_DCO_Attributes(得到裝置控制目標(biāo)屬性)方法使得控制部件150返回存儲在裝置控制目標(biāo)154中的屬性。這由方框174指出。然后請求器116根據(jù)從裝置控制目標(biāo)154返回的屬性選出給定的分區(qū)。這由方框176指出。如方框173指出的那樣,一旦請求器116選出了分區(qū),請求器116就調(diào)用Get_DAO_Attributes(得到裝置相關(guān)性目標(biāo)屬性)方法。這使得控制部件150從存儲在存儲媒體110上的裝置相關(guān)聯(lián)媒體156得到屬性。然后控制部件150把裝置相關(guān)聯(lián)屬性返回至請求器116,如方框175指出的那樣。根據(jù)裝置相關(guān)聯(lián)屬性和裝置控制屬性,請求器116選出一個分區(qū)來詢問。這由方框176指出。然后請求器116調(diào)用Get_PCO_Attributes(得到分區(qū)控制目標(biāo)屬性)方法,這將使得控制部件158得到在分區(qū)控制目標(biāo)164中找到的屬性,分區(qū)控制目標(biāo)164與要由請求器116詢問的特定的分區(qū)相關(guān)聯(lián)。這使得控制部件150得到并且返回分區(qū)控制目標(biāo)屬性。這由方框178和180指出。如果在選出的分區(qū)中的目標(biāo)不是請求器所關(guān)心的目標(biāo),則請求器選擇另一個分區(qū),如方框182和176所指出的那樣。然而,假設(shè)請求器已經(jīng)找到了所關(guān)的分區(qū),于是請求器對于選出的分區(qū)調(diào)用Get_PCO_Attributes(得到分區(qū)目標(biāo)列表屬性)方法,如方框184所示。此方法使得控制部件150從與選出的分區(qū)相關(guān)聯(lián)的分區(qū)目標(biāo)列表166得到屬性。然后把這些屬性提供給請求器116,如方框186指出的那樣。接著,請求器調(diào)用Open_Read_Only_POL(打開只讀分區(qū)目標(biāo)列表)方法。這由方框188指出。如后文要詳細(xì)討論的,控制部件150得到存儲在分區(qū)目標(biāo)列表166中的與選出的分區(qū)相關(guān)聯(lián)的數(shù)據(jù),但修改在該目標(biāo)中的一個屬性,以指出正在只讀的基礎(chǔ)上提供數(shù)據(jù),從而數(shù)據(jù)不能修改或擴(kuò)展。這由方框190指出。然后請求器調(diào)用Read_POL(讀出分區(qū)目標(biāo)列表)方法,它使得控制部件150提供選出分區(qū)中的目標(biāo)的列表,供請求器116審查。這由方框194指出。在選出的分區(qū)中選出所要的目標(biāo)后,請求器116調(diào)用Close_POL(關(guān)閉分區(qū)目標(biāo)列表)方法,它使得控制部件150關(guān)閉分區(qū)目標(biāo)列表。這由方框196指出。在對于所要的一個或一些目標(biāo)發(fā)現(xiàn)了目標(biāo)ID之后,于是請求器116調(diào)用Open_xxx_Objectx(打開xxx目標(biāo)x)方法。xxx指出根據(jù)請求器所要的特殊的數(shù)據(jù)處理。而由請求器調(diào)用的一種特定的打開方法。Objectx指出來自分區(qū)目標(biāo)列表的目標(biāo)ID,該分區(qū)目標(biāo)列表識別要由請求器處理或訪問的目標(biāo)。例如,xxx指示可以代表Open_Update(打開更新)操作,或Open_Read_Only(打開只讀)操作。這些將在后文討論,而這一步驟由方框198指出。然后請求器對由控制部件150返回的目標(biāo)作所要的處理。后文將討論能用來處理目標(biāo)的各種方法。這由方框200指出。最后,一旦請求器完成所要的目標(biāo)處理或訪問,請求器116就調(diào)用Close_Objectx(關(guān)閉目標(biāo)x)方法,它也將在后文詳述,而運(yùn)作該方法以關(guān)閉由請求器116訪問的目標(biāo)。圖8-24是流程圖,畫出能由請求器調(diào)用的各種例示的方法,以完成對存儲在面向目標(biāo)的存儲裝置(諸如裝置110)上的目標(biāo)所要的功能和所要的處理。圖8是流程圖,具體畫出Open_Create_Object(打開創(chuàng)建目標(biāo))方法。當(dāng)請求器116調(diào)用此方法時,如方框208指出的,控制部件150創(chuàng)建一個新的目標(biāo)ID并且將這個目標(biāo)ID輸入與特定的分區(qū)(目標(biāo)將在其中創(chuàng)建)相關(guān)聯(lián)的分區(qū)目標(biāo)列表。這由方框210指出。然后通過分派與目標(biāo)相關(guān)聯(lián)的塊數(shù)等等,以及通過修改目標(biāo)屬性以指出目標(biāo)創(chuàng)建時間和設(shè)置在表1中列出并且與目標(biāo)相關(guān)聯(lián)的其他屬性,控制部件150創(chuàng)建一個新的目標(biāo)。這由方框212指出。接下來,控制部件150返回請求狀態(tài)以及剛創(chuàng)建的目標(biāo)的新的ID。這由方框214指出。除了只是創(chuàng)建一個目標(biāo)之外,請求器116還能夠規(guī)定許多可選項(xiàng)。例如,在一個較佳實(shí)施例中,請求器116能夠規(guī)定目標(biāo)是否由口令保護(hù)、目標(biāo)是否加密、某些質(zhì)量服務(wù)門限(例如,目標(biāo)是否備份)、加鎖特性(例如,目標(biāo)是否要由目標(biāo)鎖以及任何其他的鎖(諸如分區(qū)鎖和裝置鎖)鎖定)、存取控制版本、鏡象或其他備份支撐(它將使得所有的更新要在另一個目標(biāo)上生成鏡象,或用規(guī)定的其他方法備份),以指出將以規(guī)定的最小規(guī)模為單位分派空間以及設(shè)置沖突(collision)特性(諸如在UNIX型系統(tǒng)中的寫入)。請求器116為調(diào)用此方法而向控制部件150提供的特殊的信息包括系統(tǒng)中的允許信息(這些系統(tǒng)為保安而需要此信息)、要在其中創(chuàng)建的裝置的分區(qū)、以及上面提代的任何可選項(xiàng)。在一個例示的實(shí)施例中,作為響應(yīng),控制部件150返回在裝置上可用的容量、請求的狀態(tài)、以及新的目標(biāo)的ID。還應(yīng)該注意,能夠調(diào)用這個方法的一個特例,它包括與一個目標(biāo)相關(guān)聯(lián)的所有數(shù)據(jù)。在此情形中,能夠調(diào)用這樣一種方法,它能創(chuàng)建目標(biāo)、寫入目標(biāo)和關(guān)閉目標(biāo)。圖9是流程圖,示出Open_Update_Objectx(打開更新目標(biāo)x)方法。當(dāng)請求器116調(diào)用此方法時,如由方框220指出的,這允許請求器116讀出和寫入規(guī)定的目標(biāo)。它還提供目標(biāo)的長度的擴(kuò)展。當(dāng)調(diào)用此方法時,控制部件150在規(guī)定的目標(biāo)中設(shè)置一屬性,以指出正在使用該目標(biāo)。請求器116提供允許信息、包含該目標(biāo)的分區(qū)ID、要被訪問的目標(biāo)的識別符、要采取的行動的類型(諸如更新或?qū)懭?以及上面提到的任何可選項(xiàng)。作為響應(yīng),控制部件150返回請求狀態(tài)和規(guī)定目標(biāo)的長度,以及請求器116可用的剩余容量。圖10是描繪Write_Objectx(寫目標(biāo)x)方法的流程圖。當(dāng)請求器116調(diào)用此方法時,如方框242指出的,這使得控制部件150在規(guī)定的位置處在指定的目標(biāo)中寫入至規(guī)定數(shù)據(jù)的塊。寫入方法也能調(diào)用其他方法。例如,如果對于要訪問的裝置110-112要求一致校驗(yàn)支持,則寫入可自動地調(diào)用“異或”方法(它對要寫入的數(shù)據(jù)進(jìn)行“異或”操作),而一致校驗(yàn)數(shù)據(jù)要被寫至一個或多個預(yù)先規(guī)定的一致校驗(yàn)裝置。為了調(diào)用此方法,請求器110提供允許信息、目標(biāo)識別符、分區(qū)ID、在目標(biāo)內(nèi)要寫入的塊的起始位置、要寫入至目標(biāo)的塊數(shù)、可選項(xiàng)信息、以及要寫入的數(shù)據(jù)。一旦調(diào)用此方法,控制部件150就用提供的規(guī)定數(shù)據(jù)修改規(guī)定的目標(biāo)。這由方框244指出。然后控制部件150修改規(guī)定的目標(biāo)中的必要屬性(諸如目標(biāo)長度、與目標(biāo)相關(guān)聯(lián)的時間戳記、等等)。這由方框246指出。然后如果有需要,控制部件150修改其他目標(biāo)的必要屬性(諸如分區(qū)目標(biāo)列表)。這由方框248指出。然后控制部件150返回請求狀態(tài)至規(guī)定的請求器。這由方框250指出。圖11是描繪Open_Read_Only_Objectx(打開只讀目標(biāo)x)方法的流程圖。當(dāng)調(diào)用此方法時,控制部件150允許請求器116為了只讀的目的而訪問規(guī)定目標(biāo)。于是,當(dāng)調(diào)用此方法時,如方框230指出的,請求器提供允許信息、分區(qū)ID、目標(biāo)ID、和可選項(xiàng)信息。然后控制部件150在規(guī)定目標(biāo)中設(shè)置指出該目標(biāo)正在使用的屬性。這由方框232指出。然后控制部件150在目標(biāo)中設(shè)置指出目標(biāo)不能被請求器寫入的屬性。這由方框234指出。然后控制部件150返回請求狀態(tài)和規(guī)定目標(biāo)的長度。這由方框236指出。圖12是描繪Read_Objectx(讀出目標(biāo)x)方法的流程圖。當(dāng)請求器116想要裝置110返回來自規(guī)定目標(biāo)的數(shù)據(jù)時,由請求器116調(diào)用此方法。請求器提供允許信息、目標(biāo)ID、分區(qū)ID、要讀取的塊的起始位置、要讀取的塊數(shù)、以及任何其他所要的可選項(xiàng)信息。作為響應(yīng),控制部件150返回請求狀態(tài)、正在返回的數(shù)據(jù)長度、以及響應(yīng)于此方法正在返回的實(shí)際數(shù)據(jù)。這由方框256和258指出。圖13是描繪Close_Ojectx(關(guān)閉目標(biāo)x)方法的流程圖。如方框264所指出的,當(dāng)請求器116調(diào)用此方法時,請求器提供允許信息、目標(biāo)ID、以及任何所要的可選項(xiàng)信息。作為響應(yīng),控制部件150修改在規(guī)定目標(biāo)中的數(shù)據(jù),如方框266指出的那樣。此外,如果作為寫至目標(biāo)的結(jié)果的目標(biāo)的任何改變不曾寫至存儲媒體,則在此時刻寫入。控制部件150還更新目標(biāo)x的屬性,如方框268所指出的那樣。例如,如果目標(biāo)是一個新創(chuàng)建的目標(biāo),則其屬性用創(chuàng)建時間和其他所需的屬性信息來更新。此外,修改屬性以指出在目標(biāo)中的數(shù)據(jù)被修改的最后時間,數(shù)據(jù)長度(如果它被改變)和屬性由控制部件150設(shè)置,它指出給定的請求器不再使用該目標(biāo)??蛇x地,控制部件150也能更新與目標(biāo)相關(guān)聯(lián)的剩下的高速緩存信息,并且反映在目標(biāo)屬性中。這由方框270指出。例如,作出請求的規(guī)定的請求器116構(gòu)造來通知存儲裝置110,對于關(guān)閉的目標(biāo),數(shù)據(jù)仍然存儲在高速緩存中,或者不再存儲在高速緩存中,存儲裝置110的操作系統(tǒng)能夠?qū)δ切?yīng)用保持高速緩存信息,在這些應(yīng)用中,目標(biāo)將以迅速的順序關(guān)閉和再次打開。然而,與此同時,存儲裝置110能夠始終跟蹤在接連沖突(Coherencycollision)的事件中需要告知系統(tǒng)100中的哪個部件,是否在同時應(yīng)由另一個請求的請求訪問此目標(biāo)。然后控制部件150返回請求狀態(tài),如方框272指出的那樣。圖14是描繪Remove_Objectx(移去目標(biāo)x)方法的流程圖。如方框278所指出的,當(dāng)調(diào)用此方法時,控制部件150采取必要的步驟從存儲媒體中刪除目標(biāo)。這由方框280指出。然后控制部件150修改與分區(qū)(從該分區(qū)刪除對象)相關(guān)聯(lián)的分區(qū)對象列表,以反映出該指定的目標(biāo)ID可供使用。這由方框282指出。然后控制部件150返回請求狀態(tài),如方框284所指出的那樣。為了調(diào)用此方法,請求器116提供允許信息、分區(qū)ID、目標(biāo)ID、以及任何所要的可選項(xiàng)信息。然后控制部件150返回請求狀態(tài),如方框284指出的那樣。圖15是描繪Create_Partitionx(創(chuàng)建部分x)方法的流程圖,該方法能被請求器調(diào)用,如方框290所指出的那樣,以在存儲裝置110上創(chuàng)建分區(qū)。應(yīng)該注意,雖然Create_Partitinox方法把驅(qū)動器劃分為一個或多個區(qū)域,但在存儲媒體上的所有空間不必計(jì)及。此外,劃分區(qū)域也能在磁盤上跨越不同的區(qū)域。在一個實(shí)施例中,用此方法以鋪砌(tiling)結(jié)構(gòu)創(chuàng)建分區(qū),這些分區(qū)代表在裝置的存儲空間的真實(shí)劃分。通過服務(wù)等級(諸如數(shù)據(jù)陣列),使用這種結(jié)構(gòu)來劃分空間。這些分區(qū)不能調(diào)整大小,但能移去和重新創(chuàng)建。按照本發(fā)明的另一方面,這些分區(qū)用作邏輯分區(qū),以邏輯地組織目標(biāo)而不是按照服務(wù)等級來管理空間。在此第二實(shí)施例中,可以動態(tài)地調(diào)整這些分區(qū)的大小。為了調(diào)用此方法,請求器提供允許信息、任何所要的可選項(xiàng)、分區(qū)ID、以及起始的空間分配(它識別要分配給被識別的規(guī)定分區(qū)的空間)。作為響應(yīng),控制部件150對于規(guī)定的分區(qū)分配在存儲媒體上的空間,如方框292所指出的那樣。然后控制部件150建立分區(qū)控制目標(biāo)和分區(qū)目標(biāo)列表,如方框294和296所指出的那樣。如上所述,部分目標(biāo)列表不能移去,并且用作引導(dǎo)分區(qū)的目標(biāo)的起點(diǎn)。然后控制部件150返回請求狀態(tài)和分區(qū)映射(它描述已經(jīng)作出的劃分方式)。這由方框298指出。圖16是描述Remove_Partitionx(移去分區(qū)x)方法的流程圖,為了調(diào)用此方法,請求器116提供允許信息、可選項(xiàng)信息、以及識別要被移去的分區(qū)的分區(qū)ID。這由方框304指出。作為響應(yīng),控制部件150對先前與分區(qū)相關(guān)聯(lián)的空間重新分配,如方框306指出的那樣。然后控制部件150移去在分區(qū)目標(biāo)列表(它與要刪除的分區(qū)相關(guān)聯(lián))中的所有目標(biāo),刪除分區(qū)目標(biāo)列表并刪除分區(qū)控制目標(biāo)。這由方框308、310和312指出。然后控制部件150返回請求狀態(tài)和示出對分區(qū)作出的改變的分區(qū)映射。這由方框314指出。按照本發(fā)明的一個方面,把數(shù)據(jù)管理方針通知每個存儲裝置110-112,從而存儲裝置能夠相互獨(dú)立地動作,以執(zhí)行管理方針。這提供了明顯的優(yōu)點(diǎn),即,它不僅導(dǎo)致較少的人為干預(yù)而且導(dǎo)致更可預(yù)測的和適時的管理控制。例如,在存儲裝置110-112上的數(shù)據(jù)可能希望每周作備份。常規(guī)的系統(tǒng)一般在周末的空閑時間作此備份,從而在工作日期期間系統(tǒng)的可用性不受妨礙。然而,在系統(tǒng)容量增加的同時,可用性的窗口已逐漸收縮。于是打算找出一段足夠長的時間來中斷系統(tǒng)以備份可能是兆兆字節(jié)的數(shù)據(jù)已經(jīng)變得非常困難。于是,按照本發(fā)明的一個方面,通過根據(jù)分配給目標(biāo)的屬性而對其采取行動,一當(dāng)一個目標(biāo)達(dá)到對其備份的正確狀態(tài),面向目標(biāo)的存儲裝置110-112就能通知備份功能。還有,備份所有的文件可以分散在一段較長的時間內(nèi)(在此期間內(nèi)其他的仍在更新)進(jìn)行,而不影響數(shù)據(jù)的完整性。可以由面向目標(biāo)的存儲裝置110-112調(diào)用動作的其他的屬性例子包括加密、壓縮、改版本(versioning)和一致校驗(yàn)冗余度。在這些例子的每個例子中,存儲裝置110-112最好只需要告知關(guān)于規(guī)定目標(biāo)或目標(biāo)組的方針。于是,裝置本身能夠完成功能或通知指定的代理者提供服務(wù)。例如,在存儲裝置110-112上本身能進(jìn)行壓縮和加密。因此,所需通知裝置的唯一事情是需對一個目標(biāo)進(jìn)行壓縮和加密。對于由代理者進(jìn)行的管理功能,不僅必須把管理功能的方針通知存儲裝置,還要把對進(jìn)行這項(xiàng)功能的代理者的標(biāo)識通知存儲裝置,從而在進(jìn)行此項(xiàng)功能時,存儲裝置能夠訪問該代理者。按照本發(fā)明的一個方面,在目標(biāo)之間建立相關(guān)聯(lián)性,從而能夠識別具有相同屬性或具有依從關(guān)系的目標(biāo)。例如,假設(shè)一個數(shù)據(jù)庫包括6個文件或目標(biāo),或者是在所有的文件或目標(biāo)都關(guān)閉或者是指定為其他所有的文件或目標(biāo)都依賴于它的一個目標(biāo)關(guān)閉之前,不能備份任何一個文件或目標(biāo)。為了管理目標(biāo)之間的此類關(guān)系,可能需要文件服務(wù)器114。此外,本發(fā)明還建立裝置之間的依從關(guān)系,如在成陣列的一致校驗(yàn)組的情形中那樣。通過可以建立一些組,其中,一個裝置或目標(biāo)確信的其余成員具有相同的基本性質(zhì),則組的管理效能更高和更有用。圖17-24是一些流程圖,它們說明了通過調(diào)用由存儲裝置上的目標(biāo)揭示的方法而能夠完成的管理功能。調(diào)用這些方法使得控制部件150和/或有關(guān)的控制部件采取步驟,以進(jìn)行與被調(diào)用的方法相關(guān)聯(lián)的管理功能。圖17是說明Export_Objectx(輸出目標(biāo)x)方法的流程圖。如方框320指出的,通過提供允許信息、可選項(xiàng)信息、目標(biāo)ID、對象裝置ID和對象分區(qū)ID,請求器116調(diào)用此方法。輸出方法使得存儲裝置110-112能夠根據(jù)在與一給定目標(biāo)相關(guān)聯(lián)的屬性中表述的規(guī)則采取行動。例如,能夠使用該方法來啟動至其他裝置的目標(biāo)備份或支持改版本。當(dāng)調(diào)用Export_Objectx方法時,如方框322指出的,控制部件150從存儲媒體得到規(guī)定的目標(biāo)。然后控制部件150在由請求器116規(guī)定的對象裝置處調(diào)用Open_Create(打開創(chuàng)建)方法。這由方框324指出。然后控制部件150在對象裝置處調(diào)用寫入方法提供規(guī)定目標(biāo)的數(shù)據(jù)和屬性。這由方框326指出。然后控制部件150在對象裝置處調(diào)用Close(關(guān)閉)方法,在已寫入至對象裝置后關(guān)閉在對象裝置上的目標(biāo)。這由方框328指出。最后,控制部件返回請求狀態(tài)連同目標(biāo)的新的目標(biāo)ID(它已寫入至對象裝置)至請求器。這由方框330指出。由控制部件150實(shí)現(xiàn)的接口128也支持允許請求器得到用于審查的目標(biāo)屬性和設(shè)置目標(biāo)屬性的方法。圖18和19是分別說明相應(yīng)的Get_Objectx_Attributes(得到目標(biāo)x屬性)方法和Set_Objectx_Attributes(設(shè)置目標(biāo)x屬性)方法的流程圖。如方框336指出的那樣,一當(dāng)調(diào)用圖18中描述的方法,就使得控制部件150從規(guī)定的目標(biāo)得到屬性。在一個例示的實(shí)施例中,請求器提供允許信息、目標(biāo)ID(或目標(biāo)ID的列表)、以及可選項(xiàng)信息。然后控制部件150得到與目標(biāo)ID(或目標(biāo)ID列表)相關(guān)聯(lián)的屬性,并且將那些屬性連同請求狀態(tài)返回至請求器。這由方框338指出。如方框344指出的那樣,通過請求器能夠調(diào)用在圖19中描繪的Set_Objectx_Attributes方法,以提供允許信息、目標(biāo)ID、和可選項(xiàng)信息至控制部件150。然后控制部件150用由請求器提供的信息修改規(guī)定目標(biāo)的屬性,并且返回請求狀態(tài)連同規(guī)定目標(biāo)的屬性(已修改),這由方框346和348指出。按照本發(fā)明的另一方面,目標(biāo)能夠被加鎖使得一旦目標(biāo)被擁有鎖(它已放置在目標(biāo)上)的服務(wù)器解鎖,才能對目標(biāo)訪問,在一個較佳實(shí)施例中,能夠?qū)⒛繕?biāo)鎖定在目標(biāo)層次、分區(qū)層次或裝置層次上。加鎖機(jī)構(gòu)提供了解決服務(wù)器間的訪問方案。在一個較佳實(shí)施例中,使用這些鎖以調(diào)度進(jìn)發(fā)的更新以及在維護(hù)功能期間禁止訪問。圖20、21和22是說明加鎖方法的流程圖,它們可視為Get_Attribute和Set_Attribute方法的例子。然而,對于那些方法的這些特例給出了額外的細(xì)節(jié),從而在請求器群之間共享數(shù)據(jù)時可使用它們。圖20是描繪Read_Lock_Attributes(讀出鎖屬性)方法的流程圖。如方框354指出的那樣,通過提供來自請求器116的允許信息、目標(biāo)ID、分區(qū)ID或裝置ID、鎖參數(shù)、以及任何所要的可選項(xiàng)信息至控制部件150,能夠調(diào)用此方法。響應(yīng)時,控制部件150確定規(guī)定的目標(biāo)是否具有設(shè)置的鎖。控制部件150然后返回?fù)碛墟i的請求者的請求狀態(tài)。這由方框356指出。圖21是描繪Set_Lock_Attribute(設(shè)置鎖屬性)方法的流程圖。如方框362指出的那樣,通過提供允許信息、目標(biāo)、分區(qū)或裝置識別符信息、鎖信息和可選項(xiàng)信息,請求器能夠調(diào)用此方法。當(dāng)調(diào)用此方法時,控制部件150檢查與經(jīng)識別的目標(biāo)相關(guān)聯(lián)的鎖。這由方框364指出。然后控制器部件試圖用請求器的標(biāo)識來進(jìn)行加鎖或解鎖操作。這由方框366指出。如果請求操作的請求器是鎖的擁有者,則將完成操作,如果不是,則將不完成操作。在任何情形下,控制部件150返回請求狀態(tài)連同擁有鎖的服務(wù)器的ID。這由方框368指出。圖22是描繪Reset_lock_Attribute(復(fù)位鎖屬性)方法的流程圖。在擁有鎖的服務(wù)器不再行使職責(zé)的事件中若打算對鎖復(fù)位,就使用該功能。如方框374所示,通過提供允許信息、目標(biāo)、分區(qū)或裝置識別符信息、鎖參數(shù)、以及任何所要的可選項(xiàng)信息,能夠調(diào)用此方法。在響應(yīng)時,如方框376指出的那樣,控制部件150對規(guī)定目標(biāo)、分區(qū)或裝置加鎖,并且返回請求狀態(tài)連同擁有鎖的服務(wù)器的標(biāo)識。這由方框378指出。圖23和24是描繪Get_Device_Association(得到裝置相關(guān)聯(lián)性)方法和Set_Device_Association(設(shè)置裝置相關(guān)聯(lián)性)方法的流程圖。這些方法確定或詢問裝置110-112之間的關(guān)系。這樣的關(guān)系的一種例示的實(shí)施包括把存儲裝置110-112之一識別為第一組裝置的主裝置,而其余的是該組的從屬成員。該組的第一或主裝置擔(dān)負(fù)著把組屬性的改變傳遞給其它成員的任務(wù)。如果該組的第一或主裝置沒有提供屬性設(shè)置,則其他成員可拒絕這些屬性設(shè)置。存儲裝置110-112為了實(shí)現(xiàn)這些功能,它們具有進(jìn)行自檢的能力。這允許裝置檢查自己,以確定它們是否包括在一個較大的裝置組中的成員關(guān)系中。在圖23中,描繪了Get_Device_Associations方法。如方框384指出的,通過提供允許信息和可選項(xiàng)信息,能夠調(diào)用此方法。在響應(yīng)時,控制部件150返回請求狀態(tài)以及請求的相關(guān)聯(lián)性(裝置是其一員),這由方框386指出。圖24是描繪Set_Device_Assocations方法的流程圖。如方框392指出的那樣,通過提供允許信息、可選項(xiàng)信息以及確定相關(guān)聯(lián)性的成員和屬性的列表,能夠調(diào)用此方法。在響應(yīng)時,控制部件150修改包含在存儲媒體中的裝置相關(guān)聯(lián)性目標(biāo)156,如方框394指出的那樣。修改裝置相關(guān)聯(lián)性目標(biāo),以包括由請求器提供的屬性,并且包括時間戳記,以指出目標(biāo)屬性何時進(jìn)行過最后一次修改,等等。如方框396指出的那樣,控制部件150返回請求狀態(tài)。上述允許信息例示性地允許文件服務(wù)器114選通訪問存儲裝置,其做法是控制某個請求器116-120,文件服務(wù)器114把從存儲裝置110-112得到響應(yīng)所需的憑據(jù)(credential)給了該請求器。文件服務(wù)器114還命令存儲裝置110-112,它們必須只尊重I/O請求(它們依附于安裝安全方針)。由Set_Object_Attributes方法把構(gòu)成允許保安能力的基礎(chǔ)的密鑰傳送至存儲裝置110-112。如果對于存儲裝置110-112設(shè)置合適的安全等級。就可使該存儲裝置對于安全依從性檢查每個I/O命令。然而,如上所述,某些應(yīng)用不需使用保安性。此外,如果一個特殊的服務(wù)器群具有位于另一個物理設(shè)備中的一些裝置,就可能希望對于與位于遠(yuǎn)處的裝置通信,(但不是對于與本地通信)定義較高的保安等級。這允許對于位于遠(yuǎn)處的請求器或服務(wù)器使用保安性,但避免性能損失(這種性能損失將與對于本地請求器或服務(wù)器使用這種保安性相伴隨)。此外,每個存儲裝置110-112最好包括可讀取的單調(diào)遞增的時鐘,它將用于時間戳記安全消息和目標(biāo)。在一個例示的實(shí)施例中,在系統(tǒng)范圍的基礎(chǔ)上使得用于各種裝置的時鐘同步。在另一個例示的實(shí)施例中,文件服務(wù)器114適應(yīng)于從存儲裝置到存儲裝置間的差異和不同的值。于是,可以看出,本發(fā)明提供了面向目標(biāo)的存儲裝置(諸如磁盤驅(qū)動器),它具有勝過常規(guī)的存儲裝置的顯著優(yōu)點(diǎn)。面向目標(biāo)的存儲裝置顯著地改進(jìn)了群集體系結(jié)構(gòu)。例如,通過以面向目標(biāo)的方式存儲數(shù)據(jù),能由存儲裝置本身來管理數(shù)據(jù)。目標(biāo)向存儲裝置提供有關(guān)其駐留數(shù)據(jù)的足夠資料,從而能夠擔(dān)當(dāng)它們管理其自身空間的職責(zé)。此外,當(dāng)裝置具有關(guān)于哪些構(gòu)成了邏輯實(shí)體的信息時,就能更智能地控制數(shù)據(jù)共享。例如,如果兩個系統(tǒng)共享存儲在面向塊的裝置上的數(shù)據(jù),則必須控制對于進(jìn)發(fā)訪問的元數(shù)據(jù)活動。相反,在面向目標(biāo)的裝置中,大部分元數(shù)據(jù)活動對于訪問它的系統(tǒng)來說,是不透明的。于是,系統(tǒng)只需關(guān)心對用戶數(shù)據(jù)的存取沖突。此外,由裝置自己進(jìn)行空間管理消除了任何競爭或混亂,而當(dāng)兩個系統(tǒng)試圖同時管理同一存儲裝置上的空間時可能會出這種情況。此外,通過目標(biāo)的抽象使異種機(jī)計(jì)算容易得多,面向目標(biāo)的存儲裝置提供了這樣的能力,從而至少具有操作系統(tǒng)能解釋的組織。此外,通過使用面向目標(biāo)的存儲裝置,有多個原因使得群集系統(tǒng)中的性能提高。例如,元數(shù)據(jù)不需離開裝置本身,這就免除了一定數(shù)目的I/O操作。此外,裝置知道在任何時刻哪些目標(biāo)是打開或關(guān)閉的,并且能夠使用這個信息以更有效地高速緩存數(shù)據(jù)。因?yàn)檠b置知道正在被讀取的目標(biāo)的布局,因此預(yù)取也能有效得多。存儲裝置能夠更有效地確定順序訪問的方式。裝置中的高速緩存器也能一次對于多個訪問它的系統(tǒng)保存元數(shù)據(jù)。此外,裝置能參與服務(wù)質(zhì)量的判定,諸如在哪里放置數(shù)據(jù)更合適。如果裝置有分派存儲的職責(zé),則一般它只能做這件事。相反,幾乎沒有一個操作系統(tǒng)能在磁盤驅(qū)動器上用區(qū)域來分派數(shù)據(jù)。于是,向磁盤驅(qū)動器本身提供這種能力就提高了其性能。也能在安排為驅(qū)動器陣列的磁盤驅(qū)動器中實(shí)現(xiàn)本發(fā)明。由于存儲在磁盤驅(qū)動器陣列上的信息時常比磁盤驅(qū)動器本身更有價值,因此時常把驅(qū)動器陣列稱為廉價磁盤的冗余陣列(RAID)。已知數(shù)種類型的RAID系統(tǒng)或RAID層次。例如,第一層RAID的特征是提供鏡象磁盤,如上所述。在第五層RAID中,要存儲至陣列的數(shù)據(jù)以及一致校驗(yàn)或冗余數(shù)據(jù)在組中的所有的磁盤驅(qū)動器中散布。第五層RAID對所有的磁盤(包括校驗(yàn)磁盤)分發(fā)數(shù)據(jù)和校驗(yàn)信息。其他RAID層次(例如,層次2-4)在名為“具有陣列支持控制器和接口的磁盤陣列”的No.5,617,425美國專利中有詳細(xì)描述。圖25-29描繪了按照本發(fā)明的一個方面進(jìn)行的寫入操作,其中,數(shù)據(jù)作為目標(biāo)存儲在陣列中的磁盤驅(qū)動器上。在圖25描繪的實(shí)施例中,示出文件服務(wù)器114、請求器(或主計(jì)算機(jī))116和互連122連至磁盤驅(qū)動器陣列,它包括對象驅(qū)動器402和一致校驗(yàn)驅(qū)動器404,它們構(gòu)成存儲裝置(諸如存儲裝置110-112)。對象驅(qū)動器402保存有一個要對其寫入的目標(biāo),或者它的一部分,而一致校驗(yàn)驅(qū)動器404保存有與存儲在對象驅(qū)動器402上的對象目標(biāo)相關(guān)聯(lián)的一致校驗(yàn)信息。在圖25中,驅(qū)動器陣列作為RAID5陣列實(shí)現(xiàn),其中,跨過組中所有的驅(qū)動器分布數(shù)據(jù)和一致校驗(yàn)。因此,驅(qū)動器402是對象驅(qū)動器而驅(qū)動器404是一致校驗(yàn)驅(qū)動器,只對于此寫入操作。換言之,對象驅(qū)動器402也保存有一致校驗(yàn)信息而一致校驗(yàn)驅(qū)動器404也保存有數(shù)據(jù)。然而,對于下述的單個寫入操作,驅(qū)動器402是對象驅(qū)動器而驅(qū)動器404是相應(yīng)的一致校驗(yàn)驅(qū)動器。也應(yīng)當(dāng)注意,除了RAID層次5之外,本發(fā)明也能用其他的RAID層次來實(shí)現(xiàn)。在這些RAID系統(tǒng)中,本發(fā)明對于熟悉本領(lǐng)域的人而言將是顯而易見的。在圖25中,對象驅(qū)動器402和一致校驗(yàn)驅(qū)動器404通過纖通道(FiberChannel)接口或者其他合適的接口(諸如其他的串行接口)互相連接。圖26和27分別描繪對象驅(qū)動器402和一致校驗(yàn)驅(qū)動器404。每個驅(qū)動器包括控制部件150以及一個或多個磁盤132。每個磁盤還包括讀/寫電路406(諸如上面描述的數(shù)據(jù)磁頭)和一個“異或”(XOR)電路。對象驅(qū)動器402包括磁盤空間410,它存儲要被寫入的對象目標(biāo)。一致校驗(yàn)驅(qū)動器404包括磁盤空間412,它存儲相應(yīng)的一致校驗(yàn)?zāi)繕?biāo)。下面對于圖28和29更詳細(xì)地討論驅(qū)動器402和404的操作。常規(guī)的磁盤陣列實(shí)現(xiàn)的小型計(jì)算機(jī)系統(tǒng)接口(SCSI)XOR(“異或”)命令使得磁盤驅(qū)動器執(zhí)行防止驅(qū)動器失效而實(shí)行的一致校驗(yàn)保持所需的位處理。這些命令要求主計(jì)算機(jī)(或者請求器)具有對磁盤的扇區(qū)存取,從而對于寫至一個磁盤驅(qū)動器的任何扇區(qū),在包含一致校驗(yàn)信息的另一個磁盤驅(qū)動器上的相應(yīng)的扇區(qū)能被合適地更新。然而,上述面向目標(biāo)的磁盤器在主計(jì)算機(jī)和磁盤驅(qū)動器上的實(shí)際存儲扇區(qū)之間引入了一個抽象層(abstractionlayer)。具體地說,磁盤驅(qū)動器把磁盤空間作為目標(biāo)管理,從而主計(jì)算機(jī)(或請求器)不訪問基本的扇區(qū)尋址方案。磁盤驅(qū)動器自己負(fù)責(zé)空間管理,使得請求器或主計(jì)算機(jī)不可能把寫在一個磁盤驅(qū)動器上的數(shù)據(jù)一部分與在另一個磁盤上的位置相關(guān)。于是,請求器不知道在一個磁盤驅(qū)動器上的已經(jīng)寫入的塊的地址,并且它不能計(jì)算相應(yīng)的一致校驗(yàn)地址。如上所述,在面向目標(biāo)的磁盤驅(qū)動器上使用常規(guī)的XOR(“異或”)功能如果不是不可能的話,那也是極為困難的。因此,本發(fā)明提供了一種稱之為Define_Parity_Group(定義一致校驗(yàn)組)的方法,在構(gòu)成一致校驗(yàn)組的一組磁盤驅(qū)動器的每個驅(qū)動器處調(diào)用該方法。此方法完成兩件事情。第一,它提供足夠的信息,使得能夠引用標(biāo)準(zhǔn)的Write_Objecct(寫入目標(biāo))方法來完成作為在常規(guī)的驅(qū)動器陣列中基于扇區(qū)的XOR命令的相同的功能。它也使得要在組中的每個驅(qū)動器中創(chuàng)建的目標(biāo)保存該特定驅(qū)動器對一致校驗(yàn)數(shù)據(jù)的共享。一致校驗(yàn)對象ID是公知的ID(對于每個驅(qū)動器知道),從而要更新一致校驗(yàn)信息的任何驅(qū)動器知道正確的目標(biāo)識別符(它們對該識別符提出其請求)。對于圖28詳?shù)孛枋鯠efine_Parity_Group方法。首先,請求器(或主計(jì)算機(jī))在一致校驗(yàn)組的每個驅(qū)動器中引用該方法。這由方框420指出。為了調(diào)用該方法,請求器提供許多事項(xiàng)如下1.構(gòu)成一致校驗(yàn)組的驅(qū)動器的排序的列表。這可以包括(例示地)每個驅(qū)動器的編號和地址。2.用于計(jì)算一致校驗(yàn)的算法。在一種簡單的例示性的實(shí)施中,對要寫入的數(shù)據(jù)的塊地址進(jìn)行模算術(shù)運(yùn)算。此算術(shù)運(yùn)算得到一致校驗(yàn)驅(qū)動器地址(根據(jù)排序列表,從上述項(xiàng)目1得出)和在一致校驗(yàn)驅(qū)動器上的一致校驗(yàn)?zāi)繕?biāo)中的有關(guān)的塊地址(它是包含所要的一致校驗(yàn)信息的一致校驗(yàn)?zāi)繕?biāo)的有關(guān)部分)。3.例示地以塊為單位的在一致校驗(yàn)條(stripe)中的數(shù)據(jù)量。如果一致校驗(yàn)數(shù)據(jù)要在遍及每個驅(qū)動器的空間上散布,由此信息是分配的原子(atomic)單元。4.一致校驗(yàn)?zāi)繕?biāo)識別符。調(diào)用Write_Object(寫入目標(biāo))方法以更新一致校驗(yàn)?zāi)繕?biāo)的驅(qū)動器將一致校驗(yàn)?zāi)繕?biāo)識別符發(fā)送給一致校驗(yàn)驅(qū)動器上的這個目標(biāo)ID,此一致校驗(yàn)驅(qū)動器可如上述項(xiàng)目2提出的那樣確定。還應(yīng)該注意,也能實(shí)現(xiàn)多層一致校驗(yàn)(諸如兩層一致校驗(yàn))。于是,每個驅(qū)動器可以具有多至兩個的一致校驗(yàn)?zāi)繕?biāo)。在一個例示的實(shí)施中,如果在具有兩層一致校驗(yàn)的磁盤陣列中使用驅(qū)動器,則分派兩個公知的目標(biāo)ID,并由每個驅(qū)動器保留。存在第二個一致校驗(yàn)?zāi)繕?biāo)指出正在使用兩層一致校驗(yàn)。5.一致校驗(yàn)?zāi)繕?biāo)分派方針。這指出是每個驅(qū)動器分派一致校驗(yàn)?zāi)繕?biāo)作為磁盤空間的單個連續(xù)的范圍還是隨同用戶數(shù)據(jù)目標(biāo)散布一致校驗(yàn)?zāi)繕?biāo)。于是,雖然一致校驗(yàn)?zāi)繕?biāo)和數(shù)據(jù)目標(biāo)在圖26和27中作為連續(xù)的磁盤空間示出,但這只是說明性的。應(yīng)該注意,如果一致校驗(yàn)?zāi)繕?biāo)隨同數(shù)據(jù)散布,則它仍能是預(yù)先分配的。響應(yīng)于調(diào)用Define_Parity_Group方法,在一致校驗(yàn)組中的每個磁盤驅(qū)動器中的控制部件150計(jì)算一致校驗(yàn)數(shù)據(jù)所需的空間的百分?jǐn)?shù)。這由方框422指出。根據(jù)在一致校驗(yàn)組列表中的磁盤驅(qū)動器數(shù)據(jù)確定一致校驗(yàn)?zāi)繕?biāo)所需的空間大小。例如,如果在列表中有9個磁盤驅(qū)動器,則每個驅(qū)動器必須為一致校驗(yàn)信息分配其1/9的空間。這個空間大小用公知的一致校驗(yàn)?zāi)繕?biāo)ID來識別,一致校驗(yàn)?zāi)繕?biāo)ID由請求器或主計(jì)算機(jī)在調(diào)用所述方法后提供。這由方框424指出。在一致校驗(yàn)組列表中的每個驅(qū)動器保存確定一致校驗(yàn)組的信息,從而磁盤驅(qū)動器每次通電或復(fù)位時,能夠證實(shí)未曾連累一致校驗(yàn)組。于是,把信息存儲在非易失性存儲器中,如方框426指出的那樣。由于已經(jīng)創(chuàng)建了磁盤驅(qū)動器的一致校驗(yàn)組,并且由于已經(jīng)在每個磁盤驅(qū)動器上分配空間以保存一個或多個一致校驗(yàn)?zāi)繕?biāo),因此能夠更新存儲在一個或多個驅(qū)動器上的數(shù)據(jù)目標(biāo)中的數(shù)據(jù)。圖29是方框圖,描繪按照本發(fā)明的一個方面的數(shù)據(jù)目標(biāo)的更新,以及相應(yīng)的一致校驗(yàn)?zāi)繕?biāo)的更新。為了更新數(shù)據(jù),請求要更新數(shù)據(jù)的請求器116在一致校驗(yàn)組中的一個磁盤驅(qū)動器上調(diào)用上述Write_Object方法。在圖25-27描繪的實(shí)施例中,請求器116在對象驅(qū)動器402上調(diào)用Write_Object方法。這由圖26中的箭頭428和圖29中的方框430指出。為了調(diào)用此方法,請求器116例示性地提供一個識別要更新的目標(biāo)的目標(biāo)識別符、分塊ID、要在目標(biāo)內(nèi)寫入的塊的起始位置、要在目標(biāo)內(nèi)寫入的塊數(shù)、可選項(xiàng)信息、以及要寫入的數(shù)據(jù)。對象驅(qū)動器402知道,運(yùn)行Write_Object方法必須包括更新與正在更新的目標(biāo)相關(guān)聯(lián)的一致校驗(yàn)信息。對象驅(qū)動器402知道這一點(diǎn)。因?yàn)樗呀?jīng)存儲了在非易失性存儲器執(zhí)行Define_Panty_Group方法期間提供和產(chǎn)生的信息。為了更新一致校驗(yàn)信息,對象驅(qū)動器402完成多個步驟。首先,它從對象目標(biāo)中的規(guī)定的位置讀取老數(shù)據(jù),并且將它連同要寫至該位置的新數(shù)據(jù)提供給“異或”電路408。這由圖29中的方框432和圖26中的箭頭434、436和438指出。接下來,對象驅(qū)動器402把老數(shù)據(jù)與新數(shù)據(jù)作“異或”運(yùn)算,以得出中間一致校驗(yàn)信息。這由圖29中的方框440指出。對象驅(qū)動器402在圖26中的輸出端442處提供中間一致校驗(yàn)信息。接下來,目標(biāo)驅(qū)動器402把新數(shù)據(jù)寫至對象目標(biāo)410中的對象位置,于是更新了對象目標(biāo)。這由圖29中的方框444指出。然后,對象驅(qū)動器402自已在一致校驗(yàn)驅(qū)動器404上調(diào)用另一個Write_Object方法,以識別相應(yīng)于剛更新的對象目標(biāo)410的一致校驗(yàn)?zāi)繕?biāo)。這由圖29中的方框446和圖27中的箭頭448指出。對象驅(qū)動器402能夠用多種方法計(jì)算一致校驗(yàn)?zāi)繕?biāo)的對象位置。例如,對象驅(qū)動器402能夠根據(jù)正在寫入的塊對象目標(biāo)的相對扇區(qū)地址計(jì)算位置。相對地址被一致校驗(yàn)組中的驅(qū)動器數(shù)所除,以提供一致校驗(yàn)驅(qū)動器404上的一致校驗(yàn)?zāi)繕?biāo)中的相對地址。由在Define_Parity_Group方法中規(guī)定的算法確定一致校驗(yàn)驅(qū)動器地址。對象驅(qū)動器402于是構(gòu)造Write_Object方法并且在一致校驗(yàn)驅(qū)動器404上調(diào)用它,以使用此相對地址識別一致校驗(yàn)?zāi)繕?biāo)412和在該目標(biāo)中的適當(dāng)位置。用舉例的方式,為了計(jì)算要更新的驅(qū)動器404上的一致校驗(yàn)?zāi)繕?biāo)中的相對塊,對象驅(qū)動由402能夠使用下式B=INT(S/D-1)式1這里B是一致校驗(yàn)?zāi)繕?biāo)中的相對塊;S是正在對象驅(qū)動器402處寫入的相對的扇區(qū)地址;以及D是一致校驗(yàn)組中的驅(qū)動器數(shù)目。為了計(jì)算一致校驗(yàn)驅(qū)動器地址,對象驅(qū)動器402可以使用下式P=Mod(S/D-1)式2這里P是進(jìn)入一致校驗(yàn)驅(qū)動器的一致校驗(yàn)組中的驅(qū)動器列表的位移(用于計(jì)算P的列表必須把對象驅(qū)動器402的地址除外)響應(yīng)于此Write_Object方法,一致校驗(yàn)驅(qū)動器404理解命令為寫至其一致校驗(yàn)?zāi)繕?biāo),并且進(jìn)行一致校驗(yàn)操作。這些操作包括讀取老的一致校驗(yàn)數(shù)據(jù),如圖29中的方框450和圖27中的箭頭所指出的那樣。然后一致校驗(yàn)驅(qū)動器404把老的一致校驗(yàn)信息與來自對象驅(qū)動器402的中間一致校驗(yàn)數(shù)據(jù)作“異或”運(yùn)算。這由圖29中的方框454和圖27中的箭頭456和458指出?!爱惢颉边\(yùn)算的結(jié)果是更新寫至磁盤132的一致校驗(yàn)?zāi)繕?biāo)的一致校驗(yàn)信息。這由圖29中的方框460和圖27中的箭頭462和464指出。這樣完全了一致校驗(yàn)?zāi)繕?biāo)的更新。圖30是一個數(shù)據(jù)目標(biāo)500(諸如示于圖6中的那些)的更詳細(xì)的圖。按照本發(fā)明的一個方面,數(shù)據(jù)目標(biāo)500包括許多部分,其中包括包含屬性的部分502以及多個數(shù)據(jù)部分504、506和508,每個數(shù)據(jù)部分分別帶有相關(guān)聯(lián)的糾錯碼部分510、512和514。雖然示出糾錯碼部分510、512和514與相應(yīng)的數(shù)據(jù)部分相鄰,但在磁盤上不必用這種方式記錄,如此表示只是為了方便。于是,按照一個較佳實(shí)施例,使用目標(biāo)500的每個數(shù)據(jù)部分(以及事實(shí)上可能還有屬性部分),用已知方式來產(chǎn)生糾錯碼(ECC)信息。當(dāng)讀回相應(yīng)的用戶數(shù)據(jù),能夠使用此信息來確定用戶數(shù)據(jù)是否包含任何差錯,并且(取決于所用代碼)定位并糾正這些差錯。在一個較佳實(shí)施例中,使用ReedSolomon碼產(chǎn)生ECC信息。然而,能夠使用任何合適的代碼來產(chǎn)生ECC信息。在現(xiàn)有技術(shù)的磁盤驅(qū)動器中,如果一個扇區(qū)不可讀取,并且該扇區(qū)由操作系統(tǒng)為了特殊目的而使用,則這基本上能使得整個磁盤不可讀。例如,如果主引導(dǎo)記錄、分區(qū)引導(dǎo)記錄、FAT表、或者根目錄變得不可讀,則這能夠造成丟失基本上整個磁盤內(nèi)容。常規(guī)的操作系統(tǒng)面對丟失這些關(guān)鍵的文件系統(tǒng)管理數(shù)據(jù)沒有能力來恢復(fù)磁盤面上的可讀數(shù)據(jù)。因此,按照本發(fā)明的一個方面,在磁盤驅(qū)動器上的面向目標(biāo)的數(shù)據(jù)組織使得磁盤驅(qū)動器負(fù)責(zé)保持基本文件系統(tǒng)結(jié)構(gòu)(這在以前是操作系統(tǒng)的事)。按照本發(fā)明的一個方面,基本文件系統(tǒng)數(shù)據(jù)的冗余拷貝連同每個數(shù)據(jù)塊(或數(shù)據(jù)部分)存儲在其相關(guān)聯(lián)的ECC部分。因?yàn)镋CC部分已存儲在磁盤上,把文件系統(tǒng)信息嵌入數(shù)據(jù)目標(biāo)的ECC部分絲毫不會影響性能或用戶容量。圖31是描繪了在磁盤上記錄信息之前文件系統(tǒng)信息如何與ECC信息組合或嵌入ECC信息之中的方框圖。圖31和圖32還描繪了按照本發(fā)明的一個方面然后如何使用文件系統(tǒng)信息來重建文件系統(tǒng)數(shù)據(jù)。圖31示出了編碼器516、ECC發(fā)生器518、“異或”電路520、磁盤132和讀/寫電路406、ECC發(fā)生器522、譯碼器524和“異或”電路518。應(yīng)該注意,編碼器516、ECC發(fā)生器518、“異或”電路520、譯碼器524、ECC發(fā)生器522和“異或”電路526都能在磁盤驅(qū)動器上的控制部件156中實(shí)現(xiàn),或者能單獨(dú)實(shí)現(xiàn)。首先把用戶數(shù)據(jù)從主計(jì)算機(jī)、請求器或文件服務(wù)器提供給編碼器516。編碼器516按照預(yù)定的編碼算法編碼(一般地實(shí)施算法用以降低差錯率)。然后把經(jīng)編碼的用戶數(shù)據(jù)提供ECC發(fā)生器518。ECC發(fā)生器根據(jù)經(jīng)編碼的數(shù)據(jù)用已知的方式產(chǎn)生ECC信息。產(chǎn)生的ECC信息將取決于所用的糾錯編碼方案的特殊類型。又將ECC信息提供給“異或”電路520。在輸入端521處把文件系統(tǒng)數(shù)據(jù)也提供給“異或”電路520。在圖31描繪的實(shí)施例中,文件系統(tǒng)數(shù)據(jù)是位置信息,它識別要把用戶數(shù)據(jù)寫在磁盤132上的位置。例如,在上述的面向目標(biāo)的系統(tǒng)中,位置信息包括目標(biāo)識別符,它識別用戶數(shù)據(jù)所屬的目標(biāo)。位置信息還包括相對位置信息,它識別在被識別的目標(biāo)內(nèi)的相關(guān)聯(lián)的數(shù)據(jù)部分的相對位置。于是“異或”電路520的輸出提供其中嵌有(或種有)定位信息的ECC信息。對于包含由編碼器516提供的經(jīng)編碼的用戶數(shù)據(jù)的數(shù)據(jù)部分,把這個信息提供給讀/寫電路406并且作為相關(guān)聯(lián)的ECC部分寫至磁盤132。當(dāng)從磁盤132讀回信息(為了完成正常的讀出操作)時,控制部件150通過提供所希望的位置信息至“異或”電路并且把該信息與ECC信息(它包含嵌入的位置信息)作“異或”運(yùn)算而執(zhí)行Read_Objeot功能?!爱惢颉彪娐返妮敵龆说玫脚c正在讀取的用戶數(shù)據(jù)相關(guān)聯(lián)的ECC信息。把這個信息提供給ECC發(fā)生器,它判定是否在經(jīng)編碼的用戶數(shù)據(jù)中出現(xiàn)任何差錯。如果沒有,則把經(jīng)編碼的用戶數(shù)據(jù)提供給譯碼器,在該處,把無差錯的信息呈現(xiàn)給請求器或用戶。如果出現(xiàn)差錯,則控制部件150可能打算識別和糾正差錯,這取決于所用的特殊的差錯編碼方案。另一種做法,控制部件150可以只提供差錯標(biāo)志,該標(biāo)志指出數(shù)據(jù)包含有一個或多個無法糾正的差錯。然而,如果系統(tǒng)信息(在給出的例子中是位置信息)已經(jīng)丟失,則控制部件150以不同的方式運(yùn)作。控制部件150使得在磁盤132上的數(shù)據(jù)被讀取。這由圖32中的方框528指出。把經(jīng)編碼的用戶數(shù)據(jù)提供給譯碼器524和ECC發(fā)生器522。應(yīng)該注意,ECC發(fā)生器522和ECC發(fā)生器518可以是采用合適的多路復(fù)用電路的同一個發(fā)生器。然而,為了清楚起見,在圖31中把它們畫成分開的部件。ECC發(fā)生器522根據(jù)經(jīng)編碼的用戶數(shù)據(jù)產(chǎn)生ECC信息,如圖32中的方框530指出的那樣。把這個信息提供給“異或”電路526。ECC信息(它包含嵌入的位置信息)也從磁盤132讀出,并且提供給“異或”電路526。這由方框532指出。與ECC發(fā)生器522那樣,“異或”電路526與“異或”電路520可以是采用合適的多路復(fù)用電路的同一個電路。然而,為了清楚起見,把這兩個電路分別示出。通過把由ECC發(fā)生器522提供的ECC信息和包含嵌入的位置信息的ECC信息作“異或”運(yùn)算,在至“異或”電路526的兩個輸入中的ECC信息將互相抵消,導(dǎo)致只是位置信息的輸出。這由方框534指出。能夠把這個信息與由譯碼器524輸出的用戶數(shù)據(jù)連用,以重建已經(jīng)丟失的文件系統(tǒng)信息。這由方框536和538指出。例如,使用從磁盤檢索得的位置信息,以及與用戶數(shù)據(jù)相關(guān)聯(lián)的信息亦從磁盤讀出,現(xiàn)在能夠重建目標(biāo)目錄。按照本發(fā)明的另一方面,通過使用偽隨機(jī)數(shù)(或偽噪聲)發(fā)生器,能夠使ECC發(fā)生器518產(chǎn)生的ECC信息隨機(jī)化。圖33是描繪這一實(shí)施例的方框圖。圖33所示的許多項(xiàng)目與圖31所示的相似,而標(biāo)號也相似。示于圖33的方框圖的運(yùn)作基本上與圖31所示的方框圖的運(yùn)作相同。然而,不是在輸入端521處提供位置信息至“異或”電路,而是用位置信息作為種子由偽噪聲(PN)發(fā)生器產(chǎn)生一個隨機(jī)數(shù)。于是,在輸入端542處把位置信息提供給PN發(fā)生器540。根據(jù)種子值,PN發(fā)生器產(chǎn)生一個提供給“異或”電路521的輸出,把該輸出與由ECC發(fā)生器518提供的ECC信息(它與相關(guān)聯(lián)的經(jīng)編碼的用戶數(shù)據(jù)記錄在磁盤132上)作“異或”運(yùn)算。為了重建文件系統(tǒng)信息(例如,位置信息),從磁盤132讀取經(jīng)編碼的用戶數(shù)據(jù),并且把它提供給ECC發(fā)生器522,該ECC發(fā)生器產(chǎn)生ECC信息并且把它提供給“異或”電路526。包含嵌入偽隨機(jī)值的ECC信息也從磁盤132讀出,并且提供給“異或”電路526?!爱惢颉彪娐?26的輸出端得到隨機(jī)值,它已以位置信息為種子。將此值提供給逆PN發(fā)生器544,它把由PN發(fā)生器540提供的隨機(jī)化過程倒過來,并在春輸出端546提供位置信息種子值。如圖31所示的實(shí)施例那樣,能夠用此信息連同由譯碼器524提供的經(jīng)譯碼的用戶數(shù)據(jù),來重建先前丟失的文件系統(tǒng)結(jié)構(gòu)信息。這里描述的“異或”門520和526例示地是字節(jié)寬的“異或”電路,用于對數(shù)據(jù)字節(jié)內(nèi)的各個位作“異或”運(yùn)算。于是,“異或”電路實(shí)在是8個分開的“異或”門,以提供8位字節(jié)的“異或”功能。此外,雖然這里描述的本發(fā)明涉及“異或”門,但對于作為糾錯和檢錯碼基礎(chǔ)的域任何合適的Galois域處理(或相加)、或其他合適的處理應(yīng)視為在本發(fā)明的范圍內(nèi),并能被熟悉本領(lǐng)域的人實(shí)施。還有,在一個較佳實(shí)施例中,在1998年2月10授予French等人的第5,717,535號美國專利更詳細(xì)地描述了PN發(fā)生器540。該專利把發(fā)生器描述為具有33寄存器單元、帶有連至邏輯塊的輸入端和輸出端。寄存器單元是一位寬,并且如數(shù)據(jù)字節(jié)那樣在相同的時鐘上計(jì)時,發(fā)生器足以保存高至4字節(jié)(32位)長的一個目標(biāo)識別符和相對位置信息,但能容易地?cái)U(kuò)展,以容納更大的位置信息或其他的文件系統(tǒng)信息(大于4字節(jié))。例示地,該發(fā)生器還包含一個額外的寄存器單元,使用它從而具有零值的位置信息將不在PN發(fā)生器540的輸出端產(chǎn)生全零。沒有理由必須把這個額外的單元包括在PN發(fā)生器540中,如果使用它完全是為了用ECC信息來種植文件系統(tǒng)信息。然而,如果為了其他理由(即,容錯)用發(fā)生器540來使數(shù)據(jù)隨機(jī)化,則應(yīng)該包括額外的單元,從而全零輸入將提供非零輸出。例示地用時鐘對數(shù)據(jù)計(jì)時,其速率為每8個數(shù)據(jù)位一次(即每個字節(jié)一次)。在例示的實(shí)施例中,發(fā)生器540包括多個下面的式3和式4運(yùn)作的觸發(fā)器,這里B代表至觸發(fā)器的輸入,而A代表從觸發(fā)器的輸出。BI=AI+8;式3對于I=0至24;而BI=AmXORAm+13;式4對于I=25至32,M=(I+8)模33。應(yīng)該注意,發(fā)生器540例示地等效于一個基于本原多項(xiàng)式X33+X13+1的二進(jìn)制反饋移位寄存器,并且每時鐘節(jié)拍移位8次。驅(qū)動輸入至寄存器單元的邏輯塊代表這些8次位移的結(jié)果。根據(jù)這個類似,很顯然在發(fā)生器540輸出端處提供的字節(jié)的序列每233-1個字節(jié)重復(fù)一次。于是,可以看出,本發(fā)明提供了勝過現(xiàn)有系統(tǒng)的顯著的優(yōu)點(diǎn)。本發(fā)明允許讀出用戶數(shù)據(jù),即使它在丟失關(guān)鍵的文件系統(tǒng)信息(諸如文件系統(tǒng)結(jié)構(gòu)數(shù)據(jù))的磁盤面上。本發(fā)明把文件系統(tǒng)信息(諸如文件系統(tǒng)結(jié)構(gòu)信息)嵌在與目標(biāo)的數(shù)據(jù)部分對應(yīng)的ECC信息中。于是,只通過讀取在磁盤上的數(shù)據(jù)和逆轉(zhuǎn)嵌入過程,就能夠讀出文件系統(tǒng)信息,于是能夠重建文件系統(tǒng)信息。圖34-36描繪了按照本發(fā)明的另一方面的另一種寫入操作,其中,驅(qū)動器陣列作為混合RAID構(gòu)造來實(shí)現(xiàn)。如前面提到的,存儲在磁盤驅(qū)動器陣列中的數(shù)據(jù)時常比磁盤驅(qū)動器本身更有價值。因此,除了主數(shù)據(jù)之外,提供了一個廉價磁盤冗余陣列(RAID)來存儲冗余或一致校驗(yàn)數(shù)據(jù),以在主數(shù)據(jù)變得有毛病或不可存取時,能夠重建它。已知數(shù)種類型的RAID系統(tǒng)或RAID層次。第一層RAID(RAID層次1)以提供鏡象磁盤驅(qū)動器為特征。在第一層RAID中,陣列中所有的驅(qū)動器都加倍。于是,如果一個驅(qū)動器失效,信息也不會丟失,因?yàn)榇_切的信息被鏡象存儲在另一個磁盤驅(qū)動器上。對于實(shí)現(xiàn)磁盤驅(qū)動器陣列而言,這是一種很昂貴的選擇方案,因?yàn)橛布颖?。第二層RAID包括用于糾錯的Hamming碼。在第二層RAID中,跨越陣列的驅(qū)動器對于數(shù)據(jù)作位交織(bit-interleave),并且添加校驗(yàn)驅(qū)動器,以檢測和糾正單個差錯。這樣做有缺點(diǎn),即,如果只讀取少量數(shù)據(jù),但仍須讀取來自組中的每個位交織驅(qū)動器的整個扇區(qū)。同樣,寫單個單元仍然包括在組中的所有驅(qū)動器上的讀一修改一寫(read-modify-write)循環(huán)。第三層RAID以每組驅(qū)動器有單個校驗(yàn)驅(qū)動器為特征。在第三層RAID中,取消了在第二層RAID中用于存儲糾錯碼信息的額外的校驗(yàn)驅(qū)動器。相反,由于數(shù)據(jù)正在存至磁盤驅(qū)動器,把ECC信息添加至數(shù)據(jù)。還有,相應(yīng)于存儲在陣列中的數(shù)據(jù),用單個磁盤驅(qū)動器來存儲冗余數(shù)據(jù)。當(dāng)從陣列讀取信息時,用ECC信息來確定是否出現(xiàn)差錯以及哪個驅(qū)動器包含有差錯。于是,通過計(jì)算其余好的驅(qū)動器的一致校驗(yàn)性并且加以比較,以及對起初的全組數(shù)據(jù)計(jì)算并且存儲冗余或一致校驗(yàn)磁盤驅(qū)動器上的一致校驗(yàn)作逐位比較,即可在出故障的驅(qū)動器上重建信息。第四層RAID以安排得對獨(dú)立的讀和寫提供為特征。在第二層和第三層RAID的實(shí)施中,存儲在陣列中的信息要跨越組中所有的驅(qū)動器而散布。因此,對于組中一個驅(qū)動器的任何讀和寫的操作需要對組中所有的驅(qū)動器讀和寫。第四層RAID通過提供在任何給定時刻對每個驅(qū)動器組做一個以上的I/O操作的能力而改進(jìn)了小傳遞的性能。不再跨越幾個驅(qū)動器散布每個數(shù)據(jù)扇區(qū)。相反,把存儲在陣列中的每個數(shù)據(jù)扇區(qū)作為在單個驅(qū)動器上的單獨(dú)的單元保存。存儲在陣列中的信息在數(shù)據(jù)磁盤中是在扇區(qū)的水平上而不是在位的水平上交織。在第五層RAID中,要存儲至陣列的數(shù)據(jù)以及一致校驗(yàn)或冗余數(shù)據(jù)都經(jīng)組中的所有驅(qū)動器散布。雖然第四層RAID允許在任何給定的時刻在每組中進(jìn)行多于一個的讀操作,它仍限于每組一個寫操作,因?yàn)槊總€寫操作需要訪問校驗(yàn)驅(qū)動器。第五層RAID把每個扇區(qū)的數(shù)據(jù)和校驗(yàn)信息跨越所有的驅(qū)動器(包括校驗(yàn)驅(qū)動器)散布。因此,第五層RAID能夠支持每組的多次單獨(dú)的寫操作。因?yàn)閷τ诿總€順序位置的檢驗(yàn)信息是在組中的不同的驅(qū)動器上,因此寫操作能并行進(jìn)行,因?yàn)闊o需在給定時刻順序訪問任何一個驅(qū)動器。雖然上面的討論提供了不同層次的RAID系統(tǒng)之間的某些主要區(qū)別的概述,但對于這些區(qū)別的更詳細(xì)的描述以及說明性的例子在Patterson、Gibson和Katz的題為“一種用于廉價磁盤的冗余陣列的情形”論文中提供。由于在RAID3和RAID4與5型系統(tǒng)之間的特性區(qū)別,不同的系統(tǒng)特別適合于不同的需要。RAID3系統(tǒng)已經(jīng)典型地適合于需要呈現(xiàn)高數(shù)據(jù)傳遞速率的陣列系統(tǒng)并且顯示在其中具有良好的性能。另一方面,RAID4和5系統(tǒng)典型地在高聚集輸入/輸出(I/O)應(yīng)用中的磁盤陣列中顯示出良好的性能。在事務(wù)應(yīng)用或具有許多個UNIX用戶的應(yīng)用中時常找到這些實(shí)現(xiàn)。雖然RAID層次5對于事務(wù)應(yīng)用是最常用的,但它不如RAID1系統(tǒng)可靠。特別,RAID5系統(tǒng)使用普遍,因?yàn)樗鼘Υ疟P空間的使用最有效,因而在硬盤方面需要較少的投資。然而,如果丟失的主數(shù)據(jù)的數(shù)量超過根據(jù)在RAID5系統(tǒng)中的冗余數(shù)據(jù)來恢復(fù)數(shù)據(jù)的能力,則不能重建主數(shù)據(jù)。因此,RAID5系統(tǒng)易受完全的數(shù)據(jù)丟失的影響。相反,RAID1系統(tǒng)不易受完全的數(shù)據(jù)丟失的影響,因?yàn)樵诹硪粋€驅(qū)動器上作了主數(shù)據(jù)的完全備份(即,數(shù)據(jù)被鏡象存儲)。于是,如果丟失了任何或所有的主數(shù)據(jù),可以使用鏡象數(shù)據(jù)來完全重建主數(shù)據(jù)。然而,由于RAID1系統(tǒng)需要完全加倍磁盤驅(qū)動器,因此它可能成本過高。本發(fā)明的混合數(shù)據(jù)重建系統(tǒng)既提供了RAID5系統(tǒng)的成本上的優(yōu)點(diǎn),又提供了RAID1系統(tǒng)的性能上的優(yōu)點(diǎn)。通過把RAID1系統(tǒng)應(yīng)用于被確定為對用戶是重要的或關(guān)鍵的數(shù)據(jù),而把其他的RAID技術(shù)之一(例如RAID5)應(yīng)用于其他的非關(guān)鍵數(shù)據(jù)。雖然下面的描述說明了本發(fā)明的實(shí)施例為一種混合的RAID1/RAID5構(gòu)造,但熟悉本領(lǐng)域的人將理解,通過組合任何兩個冗余方案(諸如RAID1構(gòu)造與RAID2、RAID3或RAID4構(gòu)造)可以得到類似的好處。為了簡單起見,并且只是作為說明,下面的描述集中在混合的RAID1/RAID5技術(shù)上。由于對于用戶來說最重要和關(guān)鍵的數(shù)據(jù)往往是存取最頻繁的數(shù)據(jù),因此一種識別關(guān)鍵數(shù)據(jù)的有效技術(shù)是識別高頻度數(shù)據(jù)。高頻度數(shù)據(jù)是指比對于在磁盤驅(qū)動器上的其他數(shù)據(jù)訪問次數(shù)明顯多的數(shù)據(jù)。熟悉本領(lǐng)域的人將理解,本發(fā)明的混合RAID技術(shù)既應(yīng)用于塊數(shù)據(jù)系統(tǒng),又可應(yīng)用于面向目標(biāo)的系統(tǒng)。最重要和關(guān)鍵的數(shù)據(jù)也可由用戶指定,而與數(shù)據(jù)被存取的頻度無關(guān)。例如,用戶可以指定某個文件名、某種文件類型、某個目錄、或者它們的組合作為關(guān)鍵數(shù)據(jù)。通過將關(guān)鍵數(shù)據(jù)與塊地址相關(guān)(當(dāng)用在面向塊的數(shù)據(jù)中時)或者與目標(biāo)類型或目標(biāo)屬性相關(guān)(當(dāng)用在面向目標(biāo)的數(shù)據(jù)中時),可以對此數(shù)據(jù)作出標(biāo)志。如果把關(guān)鍵數(shù)據(jù)作為該數(shù)據(jù)被存取的頻度的函數(shù)來識別,則磁盤驅(qū)動器控制器148、或磁盤驅(qū)動器陣列控制器602或計(jì)算機(jī)系統(tǒng)的其余合適的部分可以用來自動地記錄數(shù)據(jù)或數(shù)據(jù)目標(biāo)被存取的次數(shù)。這樣,最好將每個數(shù)據(jù)塊或數(shù)據(jù)目標(biāo)被存取的次數(shù)記錄入非易失性存儲器。使用這個直方圖(histographical)數(shù)據(jù),如果數(shù)據(jù)塊或數(shù)據(jù)目標(biāo)例如正在被存取超一個閾值頻度(即,超過存取次數(shù)的閾值),就用RAID1技術(shù)(即,將它們作鏡象存儲)。所有正在存取的低于閾值頻度的其他數(shù)據(jù)用RAID2、3、4或5技術(shù)存儲。因此,由于關(guān)鍵數(shù)據(jù)完全被鏡象存儲在另一個磁盤驅(qū)動器上,因此它不容易完全丟失。相反,非關(guān)鍵數(shù)據(jù)用空間更節(jié)約的RAID技術(shù)(例示地,用RAID5技術(shù))備份。這適用于或者由用戶指派的標(biāo)志來識別關(guān)鍵數(shù)據(jù),或者由磁盤驅(qū)動器控制器148或陣列控制器602來檢測高頻度使用而識別。圖34描繪按照本發(fā)明的一個方面的實(shí)現(xiàn)混合數(shù)據(jù)存儲和重建的磁盤驅(qū)動器陣列600的方框圖。磁盤驅(qū)動器陣列600包括連至磁盤驅(qū)動器604、606、608、610和612的陣列的陣列控制器602。每個驅(qū)動器說明性地包括一個驅(qū)動器控制器148(在圖34中未示出)。陣列控制器602還連至互連122,如圖1和25所示。在描繪的特定的實(shí)施中,每個磁盤驅(qū)動器604、606、608、610和612包括關(guān)鍵數(shù)據(jù)部分614、非關(guān)鍵數(shù)據(jù)部分616、鏡象存儲位置618和一致校驗(yàn)位置620。分配給鏡象存儲位置的空間618最好正比于關(guān)鍵數(shù)據(jù)614。類似地,在每個磁盤上為一致校驗(yàn)位置提供的空間620最好正比于相應(yīng)于由非關(guān)鍵數(shù)據(jù)616占有空間的一致校驗(yàn)數(shù)據(jù)。然而,熟悉本領(lǐng)域的人將理解,根據(jù)用戶對于特殊應(yīng)用所需的性能和經(jīng)濟(jì)之間的平衡,可以修改分配給鏡象存儲的位置618和一致校驗(yàn)的位置620。然而,說明性地,關(guān)鍵數(shù)據(jù)614占據(jù)了磁盤空間的相對較小的數(shù)量(例如,9GB驅(qū)動器中的20MB),因而相應(yīng)的鏡象存儲位置618成比例地占有磁盤空間的較小數(shù)量。因此,由于在每個磁盤上用于鏡象存儲的位置618的磁盤空間的總量相對較小,因此在磁盤空間和性能之間的折衷不是實(shí)質(zhì)性的。圖34描繪了混合的RAID1/RAID5驅(qū)動器陣列600,其中,主數(shù)據(jù)、鏡象數(shù)據(jù)和一致校驗(yàn)數(shù)據(jù)在組中跨越所有的驅(qū)動器604、606、608、610和612分布。因此,驅(qū)動器604為在驅(qū)動器606中的關(guān)鍵數(shù)據(jù)保存鏡象數(shù)據(jù)。驅(qū)動器604還包含驅(qū)動器606中的非關(guān)鍵數(shù)據(jù)的一致校驗(yàn)數(shù)據(jù)。如所描繪的,在驅(qū)動器606/608、608/610、610/612、612/604之間也存在類似的關(guān)系。通過合適的接口(諸如纖通道接口或其他串行接口),每個驅(qū)動器604、606、608、610和612互相連接。各個驅(qū)動器604-612的構(gòu)造和操作基本上類似于在圖26和27中描繪的驅(qū)動器。特別,磁盤驅(qū)動器與RAID層次5的體系結(jié)構(gòu)相似,而與RAID層次1的體系結(jié)構(gòu)不同。具體而言,在每個驅(qū)動器604-612中的每個磁盤除了一致校驗(yàn)位置620外包括鏡象存儲位置618,而在圖26和27中描繪的驅(qū)動器沒有鏡象存儲位置。然而,除了這些描述的之外,結(jié)構(gòu)和操作基本上是相同的。陣列控制器602包括命令部件624,它對每個驅(qū)動器604-612發(fā)出指令,以將新數(shù)據(jù)作為鏡象數(shù)據(jù)或一致校驗(yàn)數(shù)據(jù)寫入。命令部件624按照從關(guān)鍵數(shù)據(jù)檢測器部件622接收到的輸出而對驅(qū)動器604-612發(fā)出指令。關(guān)鍵數(shù)據(jù)檢測器部件622對輸入的新數(shù)據(jù)掃描,以發(fā)現(xiàn)由用戶預(yù)定的或由高頻度數(shù)據(jù)登錄626分配的標(biāo)志。如果由關(guān)鍵數(shù)據(jù)檢測器622檢測得一個標(biāo)志(例如,塊地址或目標(biāo)屬性),則陣列命令部件624使新數(shù)據(jù)被寫至其目的地并被鏡象存儲至位置618。如果未檢測到標(biāo)志,則陣列命令部件624使新數(shù)據(jù)寫至其目的地,并使相關(guān)聯(lián)的一致校驗(yàn)信息寫至一致校驗(yàn)位置620??梢允褂酶哳l度數(shù)據(jù)登錄626,以登錄特定的數(shù)據(jù)塊或數(shù)據(jù)目標(biāo)被存取的次數(shù)。如果特定的數(shù)據(jù)塊或數(shù)據(jù)目標(biāo)已被存取的次數(shù)超過閾值次數(shù)(它可由用戶規(guī)定),則高頻度數(shù)據(jù)登錄624對于由關(guān)鍵數(shù)據(jù)檢測器622的檢測指定該數(shù)據(jù)塊或數(shù)據(jù)目標(biāo)為關(guān)鍵數(shù)據(jù)。如果使用面向目標(biāo)的數(shù)據(jù),并且目標(biāo)屬性之一已經(jīng)包括存取頻度,則可省略高頻度數(shù)據(jù)登錄626。此外,如果作為除存取頻度之外的某個量的函數(shù)指派關(guān)鍵數(shù)據(jù),則可省略數(shù)據(jù)登錄626。圖35和36描繪了圖34所示的磁盤陣列600的寫入操作630和660。具體而言,圖35描繪對于面向塊的數(shù)據(jù)的寫入操作,而圖36描繪對于面向目標(biāo)的數(shù)據(jù)的寫入操作。特別參看圖35,寫入操作630在方框634處開始,但用戶可以預(yù)先指定一個標(biāo)志,它附加于數(shù)據(jù)或?qū)τ跀?shù)據(jù)預(yù)先考慮,并且它把數(shù)據(jù)識別為關(guān)鍵數(shù)據(jù),如在方框632中那樣。這樣一個標(biāo)志可以是(但不限于)與數(shù)據(jù)相關(guān)聯(lián)的塊地址。如果用戶對于關(guān)鍵數(shù)據(jù)預(yù)先指定標(biāo)志,則可跳過在方框633中描述的登錄步驟。如果沒有預(yù)先指定標(biāo)志,則寫入操作630可以用在方框633中描述的登錄步驟開始。假設(shè)沒有預(yù)先指定標(biāo)志,控制器602的命令部件624讀取和登錄在登錄626中的新數(shù)據(jù)的塊地址,如方框633所示。塊地址被存取的次數(shù)(即,頻度)在登錄626中被跟蹤和記錄。如果存取次數(shù)(頻度)超過閾值,則標(biāo)志該塊地址為關(guān)鍵數(shù)據(jù)。在接收到新數(shù)據(jù)后,控制器600檢查登錄626并且判定作為新數(shù)據(jù)的目的地的塊地址是否已被標(biāo)記為關(guān)鍵性的,如在方框636中反映出的那樣。如果如判定框638所指出的那樣標(biāo)志被檢測,則把新數(shù)據(jù)作為關(guān)鍵數(shù)據(jù)處理,并且寫入至其目的地,和寫至鏡象存儲位置618,如方框640所反映的那樣。如果判定框638指出未檢測到標(biāo)志,則部件624更新頻度值,如方框639指出的那樣,并且實(shí)施RAID5例行程序,如方框642-650指出的那樣。熟悉本領(lǐng)域的人將理解,可以使用其他合適的RAID或別的冗余性例行程序,包括(但不限于)RAID2、3和4例行程序。采用RAID5例行程序,在對象位置處讀取老數(shù)據(jù),如方框642指出的那樣。在一致校驗(yàn)位置處還讀取老的一致校驗(yàn)數(shù)據(jù),如方框644指出的那樣。在對象位置處,把老數(shù)據(jù)與新數(shù)據(jù)作“異或”運(yùn)算,得出新的一致校驗(yàn)數(shù)據(jù),如方框648指出的那樣。然后把新的一致校驗(yàn)數(shù)據(jù)寫至相關(guān)聯(lián)的一致校驗(yàn)位置620,如方框650指出的那樣。根據(jù)判定框638來啟動RAID1例行程序或RAID5例行程序,把新數(shù)據(jù)也寫至對象位置,如方框652指出的那樣。在把新數(shù)據(jù)寫至對象位置后,寫入操作就完成了,如方框654指出的那樣。參看圖36,它描繪了對于使用面向目標(biāo)的數(shù)據(jù)的寫入操作。寫入操作660在方框662處開始。根據(jù)目標(biāo)類型,可以預(yù)先指定塊的關(guān)鍵性。例如,可能希望在任何時刻把目錄信息(諸如POL166)或任何確定存儲裝置結(jié)構(gòu)或在其上存儲的數(shù)據(jù)的任何其他目標(biāo)(諸如DCO154、DAO158或PCO164)、或它們的任何組合加以鏡象存儲。此外,由用戶或其他實(shí)體,可在逐個目標(biāo)的基礎(chǔ)上使用OID、文件名、或某些其他屬性來預(yù)先指定某些目標(biāo)。于是,命令部件624接收和檢索目標(biāo),以判定是否預(yù)先指定關(guān)鍵性。這由方框664和666指出。說明性地把這種預(yù)先指定存儲在控制器602的存儲器中。如在判定框668中指出的那樣,如果檢測到關(guān)鍵性,則把新數(shù)據(jù)如方框670指出的那樣寫至鏡象存儲位置618和如方框682指出的那樣寫至其目的地。如果未檢測到預(yù)先指定的關(guān)鍵性,如在判定框668中指出的那樣,則部件624根據(jù)它被存取的頻度判定正在被存取的目標(biāo)是否關(guān)鍵性的。通過檢查高頻度數(shù)據(jù)登錄626(說明性地它包括OID和指出存取頻度的相關(guān)聯(lián)的頻度值),部件624做這件事。這由方框669示出。如果根據(jù)頻度,目標(biāo)是關(guān)鍵性的(其相關(guān)聯(lián)的頻度值超過預(yù)定的閾值或自適應(yīng)地調(diào)節(jié)的閾值),則部件624把數(shù)據(jù)作鏡象存儲,如方框670指出的那樣。如果根據(jù)頻度,目標(biāo)不是關(guān)鍵性的,則部件624把OID登錄在登錄626中(如果它是一個新的目標(biāo)),并且更新相關(guān)聯(lián)的頻度值。這由方框671指出。然后把數(shù)據(jù)按照RAID2、3、4或5實(shí)施或其他冗余性方案加以存儲。采用RAID5實(shí)施,在對象位置處讀取老數(shù)據(jù),如方框672指出的那樣。然后在一致校驗(yàn)位置處讀取老的一致校驗(yàn)數(shù)據(jù),如方框674指出的那樣。在對象位置處把老數(shù)據(jù)與新數(shù)據(jù)作“異或”運(yùn)算,導(dǎo)致新的一致校驗(yàn)數(shù)據(jù),如方框678指出的那樣。把新的一致校驗(yàn)數(shù)據(jù)寫至一致校驗(yàn)位置,如方框680指出和在圖34描繪的那樣。不管在判定框668中是否檢測出關(guān)鍵性,都把新數(shù)據(jù)寫至對象位置,如方框682指出的那樣。在把新數(shù)據(jù)寫至對象位置之后,完成了寫入操作660,如方框684指出的那樣。還應(yīng)該注意,在圖35和36中提出的步驟能夠在與任何一個或數(shù)個驅(qū)動器604-612相關(guān)聯(lián)的一個驅(qū)動器控制器604-612上執(zhí)行,然后把數(shù)據(jù)傳送至要在合適的驅(qū)動器上寫的合適的驅(qū)動器控制器。在此時,驅(qū)動器控制器設(shè)置有部件622-626。處理基本上與圖35和36示出的那些相同。應(yīng)該注意,根據(jù)驅(qū)動器使用,能夠把頻度值預(yù)先指定為一個原始數(shù)目或者一個變數(shù)。例如,能夠把閾值設(shè)置為總的驅(qū)動器存取的一個百分?jǐn)?shù),并且能夠隨每個存取(即,隨每個讀寫操作)而自適應(yīng)地更新。此外,能夠使用多個閾值,例如,對于每個目標(biāo)類型或者目標(biāo)類型組有一個閾值。也能夠使用其它自適應(yīng)技術(shù)。如果自適應(yīng)地設(shè)置閾值,則在每次存取時必須對每個塊或目標(biāo)更新頻度值。此外,使用冗余性方案來存儲關(guān)鍵數(shù)據(jù)且同時用直接編碼方案來存儲其余的數(shù)據(jù)能夠得到本發(fā)明的好處。直接編碼方案是指,經(jīng)編碼的數(shù)據(jù)只是存儲在一個磁盤驅(qū)動器上,而不增添冗余性數(shù)據(jù)。因此,作為單個例子根據(jù)任何其他的冗余性方案,能夠鏡象存儲或存儲關(guān)鍵數(shù)據(jù),而非關(guān)鍵數(shù)據(jù)只是以編碼形式加以存儲。在這種情形下,并且再參看圖34,非關(guān)鍵數(shù)據(jù)616沒有相應(yīng)的存儲在一致校驗(yàn)位置620中的一致校驗(yàn)數(shù)據(jù)。于是,在圖34中作為一致校驗(yàn)位置620所花費(fèi)的空間可以用來存儲額外的關(guān)鍵數(shù)據(jù)、非關(guān)鍵數(shù)據(jù)或相應(yīng)于關(guān)鍵數(shù)據(jù)的冗余數(shù)據(jù)。類似地,能夠使用兩種或多種冗余性方案以及直接編碼方案來實(shí)現(xiàn)本發(fā)明。在該情形下,能夠按照高度冗余的冗余性方案來存儲高度關(guān)鍵性的信息,按照較少冗余的冗余性方案來存儲中等關(guān)鍵性的數(shù)據(jù),而按照直接編碼方案來存儲非關(guān)鍵數(shù)據(jù)。還應(yīng)該注意,術(shù)語“陣列”是指磁盤驅(qū)動器的一個集合,這些磁盤驅(qū)動器存放在地理上互相遠(yuǎn)離的位置中,諸如在不同的房間、不同的建筑物或由很大的距離分隔開的位置中。如從上面可見,除了在圖34中描述的混合陣列系統(tǒng)構(gòu)造600之外,在圖35和36中描述的混合存取操作630和660提供了RAID5系統(tǒng)的成本方面的好處和RAID1系統(tǒng)的可靠性方面的好處。本發(fā)明的一個實(shí)施例是磁盤驅(qū)動器600,它包括多個磁盤驅(qū)動器604-612和至少一個控制器602(該控制器在操作上耦合至多個磁盤驅(qū)動器604-612),構(gòu)造來接收數(shù)據(jù)和按照第一冗余性方案在磁盤驅(qū)動器604-612上存儲數(shù)據(jù)的第一部分,并按照第二冗余性方案在磁盤驅(qū)動器上存儲數(shù)據(jù)的第二部分。第一冗余性方案最好比第二冗余性方案提供更大的冗余性自由度。按照第一冗余性方案,數(shù)據(jù)的第一部分包括冗余性數(shù)據(jù),它與數(shù)據(jù)的第一部分不同,而控制器602構(gòu)造來存儲數(shù)據(jù)的第一部分和在磁盤驅(qū)動器604-612上的冗余性數(shù)據(jù)??刂破?02構(gòu)造來在多個磁盤驅(qū)動器的第一驅(qū)動器或第一組驅(qū)動器上存儲數(shù)據(jù)的第二部分,并且把數(shù)據(jù)的第一部分鏡象存儲在多個磁盤驅(qū)動器604-612的第二驅(qū)動器或或第二組驅(qū)動器上。數(shù)據(jù)的第一部分可以包括諸如元數(shù)據(jù)這樣的數(shù)據(jù),它要比數(shù)據(jù)的第一部分更頻繁地被存取??刂破?02可以構(gòu)造來存儲作為結(jié)構(gòu)安排中的目標(biāo)的數(shù)據(jù)的第一部分和第二部分,而數(shù)據(jù)的第一部分可以包括結(jié)構(gòu)目標(biāo),它包括指出結(jié)構(gòu)安排的信息。在此上下文中,控制器602可以構(gòu)造來以分區(qū)的形式存儲目標(biāo),而結(jié)構(gòu)目標(biāo)可以包括裝置控制目標(biāo)、裝置相關(guān)性目標(biāo)、分區(qū)控制目標(biāo)或分區(qū)目標(biāo)列表。數(shù)據(jù)的第一和第二部分可以作為目標(biāo)存儲,每個目標(biāo)包括屬性,其中,數(shù)據(jù)的第二部分包括屬性。第一冗余性方案可以是RAID層2、3、4或5,而第二冗余性方案可以是RAID層1??刂破?02可以構(gòu)造來確定數(shù)據(jù)被存取的頻度,并且根據(jù)其被存取的頻度把數(shù)據(jù)分為第一和第二部分。在此上下文中,控制器602可以構(gòu)造來存儲作為對象的第一和第二數(shù)據(jù)部分(因目標(biāo)具有相關(guān)聯(lián)的文件名)并且可構(gòu)造來跟蹤根據(jù)文件名存取數(shù)據(jù)的頻度。另外,控制器602可以構(gòu)造來存儲作為目標(biāo)的第一和第二數(shù)據(jù)部分,每個目標(biāo)具有相關(guān)聯(lián)的目標(biāo)類型,并且可構(gòu)造來根據(jù)目標(biāo)類型,在第一和第二數(shù)據(jù)部分之間劃分?jǐn)?shù)據(jù)。根據(jù)用戶輸入,可以在第一和第二數(shù)據(jù)部件之間劃分?jǐn)?shù)據(jù)。每個磁盤驅(qū)動器604-612可以包括一個驅(qū)動器控制器148,其中,控制器602包括一個或多個驅(qū)動器控制器148。主機(jī)控制器可以耦合至驅(qū)動器控制器148,并且控制器602可以是主機(jī)控制器。在本發(fā)明的另一實(shí)施例中,磁盤驅(qū)動器陣列600包括磁盤驅(qū)動器604-612的一個陣列和陣列控制器裝置602,用于有選擇地在磁盤驅(qū)動器604-612之間鏡象存儲數(shù)據(jù)。在本發(fā)明的還有一個實(shí)施例中,在磁盤上、在磁盤驅(qū)動器中的一種存儲數(shù)據(jù)的方法包括按照第一冗余性方案存儲數(shù)據(jù)的第一部分;以及按照不同于第一冗余方案的第二冗余方案存儲數(shù)據(jù)的第二部分。此方法可以包括根據(jù)用戶輸入,根據(jù)例如數(shù)據(jù)被存取的頻度或者根據(jù)數(shù)據(jù)的內(nèi)容,判定數(shù)據(jù)是在第一部分或第二部分。應(yīng)該明白,即使在上面的描述中已經(jīng)提出了本發(fā)明的各個實(shí)施例的許多特征和優(yōu)點(diǎn),還給出了本發(fā)明的各個實(shí)施例的結(jié)構(gòu)細(xì)節(jié)和功能,這個揭示還是說明性的,因此可在細(xì)節(jié)方面作改變,尤其是在本發(fā)明的原理的整個范圍之內(nèi),對各個部分的結(jié)構(gòu)和安排作改變,由所附的權(quán)利要求書用術(shù)語的廣泛的一般意義表述本發(fā)明的原理的范圍。例如,不偏離本發(fā)明的范圍和精神,根據(jù)特殊的連接方法,冗余性方案或檢錯或糾錯方案可以改變特殊的元件,與此同時保持基本上相同的功能。權(quán)利要求1.一種磁盤驅(qū)動器陣列,其特征在于,包括多個磁盤驅(qū)動器;在操作上耦合至多個磁盤驅(qū)動器的至少一個控制器,構(gòu)造控制器以接收數(shù)據(jù)和按照第一冗余性方案在磁盤驅(qū)動器上存儲數(shù)據(jù)的第一部分,并且按照第二冗余性方案在磁盤驅(qū)動器上存儲數(shù)據(jù)的第二部分。2.如權(quán)利要求1所述的磁盤驅(qū)動器陣列,其特征在于,第一冗余性方案比第二冗余性方案提供更大的冗余度。3.如權(quán)利要求2所述的磁盤驅(qū)動器陣列,其特征在于,數(shù)據(jù)的第一部分包括冗余性數(shù)據(jù),它不同于數(shù)據(jù)的第一部分,并且構(gòu)造控制器以按照第一冗余性方案在磁盤驅(qū)動器上存儲數(shù)據(jù)的第一部分和冗余性數(shù)據(jù)。4.如權(quán)利要求3所述的磁盤驅(qū)動器陣列,其特征在于,構(gòu)造控制器以在多個磁盤驅(qū)動器的第一組磁盤驅(qū)動器上存儲數(shù)據(jù)的第二部分,并且在多個磁盤驅(qū)動器的第二組磁盤驅(qū)動器上鏡象存儲數(shù)據(jù)的第一部分。5.如權(quán)利要求4所述的磁盤驅(qū)動器陣列,其特征在于,構(gòu)造控制器以在多個磁盤驅(qū)動器的第一磁盤驅(qū)動器上存儲數(shù)據(jù)的第二部分,并且在多個磁盤驅(qū)動器的第二磁盤驅(qū)動器上鏡象存儲數(shù)據(jù)的第一部分。6.如權(quán)利要求2所述的磁盤驅(qū)動器陣列,其特征在于,數(shù)據(jù)的第一部分包括存取頻度比數(shù)據(jù)的第二部分的存取頻度更高的數(shù)據(jù)。7.如權(quán)利要求2所述的磁盤驅(qū)動器陣列,其特征在于,構(gòu)造控制器以在一種結(jié)構(gòu)安排中把數(shù)據(jù)的第一和第二部分作為目標(biāo)存儲,并且數(shù)據(jù)的第一部分包括結(jié)構(gòu)目標(biāo),它包含指出結(jié)構(gòu)安排的信息。8.如權(quán)利要求7所述的磁盤驅(qū)動器陣列,其特征在于,構(gòu)造控制器以存儲分區(qū)中的目標(biāo),并且結(jié)構(gòu)目標(biāo)包括裝置控制目標(biāo)、裝置相關(guān)聯(lián)性目標(biāo)、分區(qū)控制目標(biāo)和分區(qū)目標(biāo)列表之一。9.如權(quán)利要求2所述的磁盤驅(qū)動器陣列,其特征在于,把數(shù)據(jù)的第一和第二部分作為目標(biāo)存儲,每個目標(biāo)包括屬性,并且數(shù)據(jù)的第二部分包括屬性。10.一種在磁盤驅(qū)動器中的磁盤上存儲數(shù)據(jù)的方法,其特征在于,包括下述步驟(a)按照第一冗余性方案存儲數(shù)據(jù)的第一部分;以及(b)按照與第一冗余性方案不同的第二冗余性方案存儲數(shù)據(jù)的第二部分。11.一種磁盤驅(qū)動器陣列,其特征在于,包括多個磁盤驅(qū)動器;在操作上耦合至多個磁盤驅(qū)動器的至少一個控制器,構(gòu)造控制器以接收數(shù)據(jù)和按照第一冗余性方案在磁盤驅(qū)動器上存儲數(shù)據(jù)的第一部分,并且按照直接編碼方案在磁盤驅(qū)動器上存儲數(shù)據(jù)的第二部分。全文摘要一種用于存儲裝置的混合數(shù)據(jù)重建系統(tǒng)(600)和方法(630/660)。按照兩種或多種冗余性方案(618/620)之一,有選擇地存儲數(shù)據(jù)(614/616),從而按照具有較高冗余度的方案(618)存儲關(guān)鍵數(shù)據(jù)(614)。文檔編號G06F3/06GK1281560SQ98811922公開日2001年1月24日申請日期1998年10月7日優(yōu)先權(quán)日1997年10月8日發(fā)明者D·B·安德森申請人:西加特技術(shù)有限責(zé)任公司