專利名稱::在計算機系統(tǒng)之間共享對象的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明總體上涉及一種用于有效地使對象在計算機系統(tǒng)之間可用的方法、產(chǎn)品以及設(shè)備。更具體而言,本發(fā)明涉及在對象管理系統(tǒng)中使一個計算機系統(tǒng)的對象與另一個計算機系統(tǒng)共享,在所述對象管理系統(tǒng)中,它們共享相同的后端存儲裝置。
背景技術(shù):
:本發(fā)明涉及在對象管理系統(tǒng)中管理大量文件。諸如與Oracle數(shù)據(jù)庫一起使用的這類的現(xiàn)有系統(tǒng),被設(shè)計成能處理極大量的表空間(tablespace)。表空間可以由多個數(shù)據(jù)文件組成,這些數(shù)據(jù)文件是可以由操作系統(tǒng)來訪問或操縱的文件?!皵?shù)據(jù)文件”指的是能夠被復(fù)制、移動、或者被視為連續(xù)信息的文件,而不管所述數(shù)據(jù)在物理上是否是以連續(xù)方式存儲在存儲介質(zhì)上。本地存儲器容量可能不足以存儲與一個或多個數(shù)據(jù)庫相關(guān)聯(lián)的整個表空間。購買充足快速的存取存儲介質(zhì)(比如,硬盤或光學(xué)介質(zhì))以用來提供存儲一個完整數(shù)據(jù)庫的充足的容量可能是不經(jīng)濟的,在當(dāng)不是所有的數(shù)據(jù)都必須是以相對快的速度可訪問的時候尤其如此。已經(jīng)實現(xiàn)了這樣的常規(guī)數(shù)據(jù)庫系統(tǒng),在該數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)可以被“遷移”到價格比較低廉的介質(zhì)上,并且只在需要時才從該介質(zhì)那里檢索該數(shù)據(jù)。然而,現(xiàn)有的系統(tǒng)和方法都沒有有效地管理將被遷移的、在遷移后和在檢索后的數(shù)據(jù)。這些系統(tǒng)遭受等待時間的困擾,具有高帶寬要求,需要長的備份時間,具有高的成本,而且也許不能產(chǎn)生“時間點”快照。這些問題并不受限于數(shù)據(jù)庫和表空間。而是,它們還可能牽扯到用于存儲諸如多媒體之類的大型文件的系統(tǒng)當(dāng)中。正如這里將公開的一種更有效的方法,它會減少等待時間和帶寬要求,降低成本,而且需要更小的備份窗口,從而更有效地管理數(shù)據(jù)。盡管這里所公開的內(nèi)容可以描述在數(shù)據(jù)庫和表空間環(huán)境下的上述問題以及本發(fā)明,但是本發(fā)明也可以應(yīng)用于任何運用遷移的數(shù)據(jù)管理系統(tǒng),在所述系統(tǒng)管理諸如音頻或視頻之類的大型數(shù)據(jù)文件時尤其如此。發(fā)明概述因此,簡言之,此發(fā)明提供了一種用于共享對象管理系統(tǒng)中的對象的方法、產(chǎn)品和設(shè)備。在本發(fā)明的實施例中,一種對象管理系統(tǒng),包括存儲裝置;第一計算機系統(tǒng),被配置成用于在存儲裝置上存儲第一對象以及第一對象的副本;和第二計算機系統(tǒng)。第一計算機系統(tǒng)被配置成用于創(chuàng)建包含關(guān)于第一對象的已存儲副本的信息的第一數(shù)據(jù)對象,而第二計算機系統(tǒng)被配置成用于從第一數(shù)據(jù)對象中讀取關(guān)于第一對象的已存儲副本的信息,并且從存儲裝置中檢索第一對象的已存儲副本。第一對象可以由第一計算機系統(tǒng)來劃分,并在存儲裝置上存為分區(qū),并且第一數(shù)據(jù)對象會包含關(guān)于所述這些分區(qū)的信息。第二計算機系統(tǒng)會被配置成用于從第一數(shù)據(jù)對象中讀取關(guān)于所述分區(qū)的信息,選擇分區(qū),并且從存儲裝置中檢索所述分區(qū)。當(dāng)結(jié)合附圖、根據(jù)以下詳細(xì)說明來進行理解時,本發(fā)明的優(yōu)點和更多細(xì)節(jié)將對本領(lǐng)域技術(shù)人員而言變得更加明顯。附圖簡要說明通過以下結(jié)合附圖的詳細(xì)說明,將容易理解本發(fā)明,在附圖中相同的參考數(shù)字指代類似的結(jié)構(gòu)元件,其中圖1是帶有前端和后端的對象管理系統(tǒng)的示意圖;圖2是帶有附接的海量存儲裝置的計算機系統(tǒng)的示意圖;圖3是i節(jié)點(inode)與在其中存儲DMAPI信息的文件之間的邏輯關(guān)系框圖;圖4是i節(jié)點與在其中存儲DMAPI信息的擴展塊之間的邏輯關(guān)系框圖;圖5是后端中存儲的文件、DMAPI擴展數(shù)據(jù)文件、容器文件和分區(qū)(partition)的框圖;圖6是示出用在對象管理系統(tǒng)中的守護程序(daemon)的框圖;圖7是示出分區(qū)的版本控制的框圖;圖8是舉例說明遷移過程的流程圖;圖9是舉例說明為確保一致性更新文件狀態(tài)的流程圖;圖10是舉例說明清除過程的流程圖;圖11是舉例說明數(shù)據(jù)的事件處理以及重新升級(restaging)的流程圖;圖12是示出分區(qū)的重新升級的框圖;圖13是舉例說明有效搜索遷移或清除候選者并獲得候選者路徑名的流程圖;圖14是示出搜索遷移或清除候選者的幾種方法的框圖;圖15是舉例說明使用容器文件以使來自一個計算機的數(shù)據(jù)在另一個計算機上可用的流程圖;和圖16是圖15中的計算機的框圖。發(fā)明詳述在此,提供對實施例的詳細(xì)說明。雖然本發(fā)明是結(jié)合實施例來描述的,但是應(yīng)當(dāng)理解的是,本發(fā)明并不局限于任何一個實施例。相反,本發(fā)明的范圍僅僅由所附的權(quán)利要求來限定,而且本發(fā)明涵蓋許多的可選方案、修改方案和等效方案。為了舉例說明起見,在下面的說明中闡述了許多特定的細(xì)節(jié),以便提供對本發(fā)明的徹底理解??梢栽跊]有這些特定細(xì)節(jié)中的一些或全部細(xì)節(jié)的情況下,根據(jù)權(quán)利要求來實施本發(fā)明。為了清楚起見,未對與本發(fā)明相關(guān)的
技術(shù)領(lǐng)域:
中已知的技術(shù)內(nèi)容作詳細(xì)描述,以便避免不必要地混淆本發(fā)明。應(yīng)該認(rèn)識到的是本發(fā)明能夠以多種方式實現(xiàn),包括像過程、設(shè)備、系統(tǒng)、裝置、方法或諸如計算機可讀存儲介質(zhì)之類的計算機可讀介質(zhì)或者計算機網(wǎng)絡(luò),在所述計算機網(wǎng)絡(luò)中,程序指令是在光學(xué)鏈路或電子通信鏈路上發(fā)送的。概觀在一個實施例中,如圖1所示,對象管理系統(tǒng)10包括初級的或本地的計算機系統(tǒng)12以及存儲系統(tǒng)14,所述存儲系統(tǒng)可以是次級的或遠(yuǎn)程的計算機系統(tǒng)。初級計算機系統(tǒng)12被稱作為前端12,它向用戶(未示出)提供初級應(yīng)用程序和數(shù)據(jù)儲存服務(wù)。在正常操作期間,初級計算機系統(tǒng)12在其CPU20上運行應(yīng)用程序,以及提供對其本地文件系統(tǒng)16上的本地數(shù)據(jù)的訪問,本地文件系統(tǒng)16通常單獨包括諸如硬盤驅(qū)動器18這類以RAID陣列形式,或其它配置的高速裝置。存儲系統(tǒng)14,也被稱作為后端14,它可以是連接于各種海量存儲裝置的通用CPU22,所述各種海量存儲裝置可以編組成文件系統(tǒng)26,或者可以是專門的存儲設(shè)備。用在后端14中的海量存儲裝置可以是硬盤驅(qū)動器24,或是其它更廉價、更慢速的裝置,或者供歸檔使用。例如,可以使用光盤28、磁帶驅(qū)動器30和磁光驅(qū)動器。后端14可以當(dāng)作為不常訪問的數(shù)據(jù)的廉價的近線性(near-line)存儲器來使用,同時也可以用來在前端12上備份數(shù)據(jù)。后端14可以位于與前端12相同的地方,或者可以遠(yuǎn)程設(shè)置。數(shù)據(jù)傳輸是經(jīng)由NFS、AFS、FTP或其它方法來實現(xiàn)的。前端12和后端14能以一對一、多對一或者多對多的關(guān)系連接。前端12上的文件系統(tǒng)16通常與后端14是一對一的關(guān)系,但在前端12上也存在幾個文件系統(tǒng)16,每一個都映射到不同后端14。例如當(dāng)每個文件系統(tǒng)16用于屬于公司中不同組的不同應(yīng)用程序時,可以使用這種配置結(jié)構(gòu)。由此,用于會計部門的數(shù)據(jù)可以轉(zhuǎn)到一個后端14系統(tǒng),與此同時工資單數(shù)據(jù)可能轉(zhuǎn)到另一個后端14。這些后端系統(tǒng)14可以位于不同的遠(yuǎn)程位置。在操作中,遷移守護程序?qū)?shù)據(jù)從前端12遷移(復(fù)制)到后端14;也就是,它將數(shù)據(jù)從前端12復(fù)制到后端14。數(shù)據(jù)被分解成分區(qū),這些分區(qū)將被寫入后端14。一旦文件已被遷移,就在前端12上將其標(biāo)記為已遷移。這是通過設(shè)置表明文件已被遷移的位或其它標(biāo)志來進行的。清除守護程序?qū)ふ乙堰w移的文件,在前端12上不再需要那些文件的數(shù)據(jù),并且清除掉不需要的數(shù)據(jù)。事件守護程序捕獲數(shù)據(jù)訪問事件,如果前端12上需要數(shù)據(jù),那么它就將數(shù)據(jù)從后端14重新升級到前端12。事件守護程序被配置成移動需要的那一部分文件,以便僅僅對所述文件的一部分進行重新升級。這有利于減少正在傳遞的數(shù)據(jù)量,由此減少帶寬要求以及等待時間。遷移守護程序定期地檢查需要得到遷移的文件(確切地說,檢查文件的一部分)。如果它發(fā)現(xiàn)了被標(biāo)記為臟的、已重新升級的文件(即,自該文件上次遷移到后端14以來已被寫入),那么它將把所述文件遷移到后端14。遷移守護程序被配置成只對修改過的分區(qū)進行寫。不必對未修改的分區(qū)進行寫,由此來減少正在傳遞的數(shù)據(jù)量。在后端14處,對已修改過的分區(qū)進行版本控制,并將其寫入海量存儲裝置中。它們可以改寫當(dāng)前已有的分區(qū),但是保持早期版本將使時間點(point-in-time)快照得以創(chuàng)建,以便可以保持在任何指定時間的系統(tǒng)狀態(tài)。關(guān)于分區(qū)位置的信息以及其它元數(shù)據(jù)都被寫入容器文件中,這些容器文件可以位于后端14中的高速存儲器上。在這個配置結(jié)構(gòu)中,備份是借助于系統(tǒng)操作來創(chuàng)建的,并且不需要獨立的備份,這是因為容器文件包含將數(shù)據(jù)恢復(fù)到前端12上所需的所有信息。這些操作透明地加以執(zhí)行,除了設(shè)置分區(qū)大小以及其它配置結(jié)構(gòu)和環(huán)境信息之外,無需應(yīng)用程序用戶這方專門地介入。這種系統(tǒng)可以用來使來自一個計算機系統(tǒng)的數(shù)據(jù)在另一個計算機系統(tǒng)可用,而無需復(fù)制所有的數(shù)據(jù)。為了完成這個,第二計算機系統(tǒng)被配置成用于使用位于后端14上的第一計算機的容器文件,以在其本地文件系統(tǒng)上創(chuàng)建它自己的文件。當(dāng)?shù)诙嬎銠C系統(tǒng)將它自己的數(shù)據(jù)寫入后端14時,它在設(shè)置期間或者根據(jù)需要創(chuàng)建它自己的容器文件。在第二計算機的操作期間,如果來自于后端14的所需文件分區(qū)不在前端12上,那么數(shù)據(jù)存取將會引發(fā)這些文件分區(qū)的重新升級。如果任一計算機系統(tǒng)修改數(shù)據(jù),那么當(dāng)遷移數(shù)據(jù)時,它將會把它自己的分區(qū)寫入到后端14,并更新它自己的容器文件。這樣,每個計算機系統(tǒng)都具有它自己的文件版本。系統(tǒng)也可以被配置成用于通過存儲文件名、i節(jié)點序號和單個文件中的擴展屬性,來有效地搜索遷移和清除候選者。系統(tǒng)能夠搜索這個文件,以便快速地識別遷移或清除候選者而不必檢查i節(jié)點以及盡可能地不必檢查名稱空間(namespace)中每個文件的可能擴展塊。使用i節(jié)點序號的反向查找,來確定路徑名。這個方法允許系統(tǒng)僅僅查找遷移候選者和清除候選者的i節(jié)點,減少了所需的時間。所述系統(tǒng)可以用來管理數(shù)據(jù)庫所使用的大型表空間,但是在大型文件的管理過程中具有適用范圍,在數(shù)據(jù)存取僅僅是針對一部分文件的地方尤其如此。詳細(xì)說明在一個實施例中,每個初級和次級計算機系統(tǒng)都包括在諸如運行Unix的工作站這類的通用計算機上執(zhí)行的軟件程序,但也可以使用其它的計算機系統(tǒng),比如運行Windows或Linux操作系統(tǒng)的基于IntelPentium的PC。也可以使用實現(xiàn)所述計算機系統(tǒng)的其它裝置,比如帶有燒錄在芯片中的指令的專用硬連線系統(tǒng),所述芯片比如是專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA)。用作為存儲系統(tǒng)的次級計算機系統(tǒng)可以采用諸如由EMC、NetworkAppliance、StorageTek和ADIC制造的專用存儲設(shè)備之類的形式來實現(xiàn),并按網(wǎng)絡(luò)附加存儲器(NAS)或存儲區(qū)網(wǎng)絡(luò)(SAN)結(jié)構(gòu)加以連接。如圖2所示,計算機系統(tǒng)40可以具備以下許多部件中央處理單元41、存儲器42、顯示器44、鍵盤46、海量存儲裝置48、網(wǎng)絡(luò)接口50,以及其它的輸入/輸出裝置52。依照一般慣例,存儲器42和海量存儲裝置48可用于存儲程序指令及數(shù)據(jù)。計算機系統(tǒng)40可以進一步具有一個以上的中央處理單元41,比如基于多處理器Pentium的系統(tǒng)或SunSPARC工作站。海量存儲裝置48可以包括一個或多個硬盤驅(qū)動器、光學(xué)驅(qū)動器、磁帶驅(qū)動器、磁光驅(qū)動器、DAT、CD驅(qū)動器、DVD驅(qū)動器,或者用于利用RAID、光纖通道或其它接口來儲存數(shù)據(jù)的其它裝置。海量存儲裝置18可以被編組成文件系統(tǒng),而且可以使用一組以上的海量存儲裝置18。文件系統(tǒng)是一種類型的對象存儲,它可以存儲文件(在此情況下,對象的ID就是它的路徑名)或者對象(在此情況下,用某一ID而不是文件系統(tǒng)名稱來指代對象)。對象存儲具有以下組成部分標(biāo)識對象的方法;允許操縱對象的接口(API、文件系統(tǒng)原語等);以及對象存儲器。文件被視作為一種類型的對象。在這里公開的原理同樣適用于對象和對象存儲,也適用于文件和文件系統(tǒng)。對于對象存儲而言,描述在哪里找到后端中的對象的擴展屬性會是對象ID而不是文件名。充當(dāng)前端12的初級計算機系統(tǒng),通常具有處于硬盤驅(qū)動器18形式的高速存儲器,以供快速存取數(shù)據(jù)。充當(dāng)后端14的存儲系統(tǒng)將具有某一高速存儲器,還將具有速度較低但更經(jīng)濟的裝置,比如磁帶備份器30和光學(xué)驅(qū)動器28。其它的歸檔裝置都可以附接于所述存儲系統(tǒng)14。后端14被用作為不經(jīng)常訪問的數(shù)據(jù)的存儲,以便減少對昂貴的高速存儲空間的需要。后端14也可以實現(xiàn)為初級計算機系統(tǒng)12的一部分,以便將后端14的存儲裝置附接于初級計算機系統(tǒng)12上。盡管公開的實施例描述了分別用于前端12和后端14的獨立的初級和次級計算機系統(tǒng),但是為實現(xiàn)本發(fā)明并不需要獨立的次級計算機系統(tǒng)。所舉例說明的初級計算機系統(tǒng)遵循系統(tǒng)管理的技術(shù)規(guī)范由OpenGroup(原先的X/Open)出版的、文件編號為C429的數(shù)據(jù)儲存管理(XDSM)API,其序列號為UKISBN1-85912-190-X,將該篇公開的內(nèi)容引入與此,以供參考。這篇文檔可以在http//www.opengroup.org上在線獲得,并且這篇文檔陳述了順應(yīng)應(yīng)用程序的數(shù)據(jù)管理API(DMAPI)的技術(shù)規(guī)范。如果其它操作系統(tǒng)能為這里所述的數(shù)據(jù)管理功能提供支持的話,則也是可以使用的。在Unix或Linux系統(tǒng)中,操作系統(tǒng)利用i節(jié)點來存儲標(biāo)準(zhǔn)的文件系統(tǒng)信息,比如大小、所有權(quán)、日期以及許可。按照XDSM技術(shù)規(guī)范的說明,i節(jié)點還可以用于存儲到DMAPI擴展數(shù)據(jù)的鏈接,所述DMAPI擴展數(shù)據(jù)包括擴展屬性/元數(shù)據(jù)以及區(qū)域信息。優(yōu)選地,在一個實施例中,DMAPI擴展數(shù)據(jù)被存儲在稱為.DMATTR的DMAPI擴展數(shù)據(jù)文件60中。DMAPI擴展數(shù)據(jù)文件60可以是存儲在前端12中但也可能存儲在后端14中的單個文件或者可以跨過幾個文件。前端12中的存儲器就像在內(nèi)存中進行高速緩存那樣提供快速存取。圖3示出了文件系統(tǒng)16中i節(jié)點62與DMAPI擴展數(shù)據(jù)文件60之間的邏輯關(guān)系。盡管這些元件是放在一起示出的,但應(yīng)當(dāng)理解的是,這未必反映出它們在磁盤上的物理位置。如圖3所示,DMAPI擴展數(shù)據(jù)文件60可以實現(xiàn)為按i節(jié)點序號索引的、擴展屬性與區(qū)域的表。如圖4所示,另一個設(shè)備可以讓每個i節(jié)點62都指向它自己的擴展塊64。在.DMATTR文件60中存儲DMAPI信息,允許在不必讀取其i節(jié)點62和DMAPI擴展塊64的情況下讀取文件的DMAPI信息,這在當(dāng)許多文件正在被仔細(xì)檢查時是有利的。與如何存儲i節(jié)點信息相類似,可將這個信息也存為文件系統(tǒng)16的一部分。擴展屬性是用來記錄諸如文件是否已被遷移、它是否已被清除以及采用目錄路徑、對象ID等形式到與位于后端14上的容器文件76的鏈路等信息。區(qū)域信息包括關(guān)于文件分區(qū)的信息,比如像分區(qū)中的數(shù)據(jù)是否是本地存在的、數(shù)據(jù)是否是臟的且需要遷移、以及相對應(yīng)的本地文件中的數(shù)據(jù)位置??梢允褂脴?biāo)志,而本地文件中數(shù)據(jù)的位置可以由關(guān)于偏移量和長度的信息來指明。區(qū)域信息可以包含當(dāng)文件映射區(qū)域中的數(shù)據(jù)被訪問或變更時規(guī)定將要生成的事件集的域;例如,dm_region_read,dm_region_write,dm_region_truncate。所述標(biāo)志可以設(shè)置成能表明數(shù)據(jù)是否被駐留,或者數(shù)據(jù)是否是臟的且需要再遷移。如果動態(tài)地對分區(qū)規(guī)定了大小,那么同樣可以保存關(guān)于分區(qū)大小的信息。由于區(qū)域信息是用來記錄數(shù)據(jù)位置的,因此當(dāng)數(shù)據(jù)被訪問時,映射文件的區(qū)域的數(shù)目是可以增加的。如圖5所示,當(dāng)文件72被遷移到后端14時,它被劃分成分區(qū)70。所述分區(qū)70的大小可以是固定的,或者也可以是動態(tài)可變的。固定分區(qū)可以具有由存儲在系統(tǒng)文件中的配置結(jié)構(gòu)或環(huán)境變量所定義的分區(qū)大小。分區(qū)大小能夠依據(jù)文件系統(tǒng)特性、文件的大小以及數(shù)據(jù)訪問的模式來選擇。分區(qū)大小不應(yīng)太大,因為較大的分區(qū)大小可能會導(dǎo)致更長的等待時間、更多的帶寬使用、以及在后端14中使用來進行版本控制的更多空間。從另一方面來說,分區(qū)大小太小會增加內(nèi)務(wù)處理需求,因為存在更多要管理的分區(qū)。對于大型數(shù)據(jù)庫而言,可以使用100兆字節(jié)(MB)的分區(qū)大小。由此,例如,2GB文件會被分成對應(yīng)后端14的20個100MB分區(qū)。在一個實現(xiàn)方案中,為Oracle數(shù)據(jù)庫使用所述系統(tǒng),該Oracle數(shù)據(jù)庫具有對應(yīng)后端14的9840個磁帶以及16個128MB大小的分區(qū)。影響分區(qū)大小的一些因素是需要數(shù)據(jù)的應(yīng)用程序的訪問模式、后端14與前端12之間的數(shù)據(jù)傳輸速度、用于數(shù)據(jù)傳輸在后端14中歸檔介質(zhì)的速度以及后端14介質(zhì)的等待時間。具有較慢定位時間的后端介質(zhì)(比如磁帶30)會有助于更大的分區(qū)大小。通過對文件72進行分區(qū),系統(tǒng)能夠以更小的部分70來移動數(shù)據(jù)。如果應(yīng)用程序請求僅對來自2GB文件中的小部分?jǐn)?shù)據(jù)進行數(shù)據(jù)訪問,那么若這小部分?jǐn)?shù)據(jù)未在本地文件系統(tǒng)上的話,則為了訪問它就僅需要檢索包含那個數(shù)據(jù)的特定100MB分區(qū)。由于移動數(shù)據(jù)需要的時間少得多,因而這減少了等待時間,而且由于移動更少量的數(shù)據(jù),因而減少了帶寬使用。同樣,如果后續(xù)僅僅修改數(shù)據(jù)文件72的一小部分,那么就僅僅需要向后端14遷移包含數(shù)據(jù)的已修改部分的分區(qū)70。如圖6所示,配置初級計算機系統(tǒng)以便在操作中存在三個守護程序事件守護程序dxdbmigd80、遷移守護程序dxdbmigwatch82和清除守護程序dxdbpurgewatch84。可以使用許多守護程序,包括僅僅一個作為線程的守護程序,也可以使用其它方法而不是守護程序。例如,Windows系統(tǒng)可以使用系統(tǒng)代理和服務(wù)。事件守護程序80捕獲何時文件數(shù)據(jù)被訪問。如果所請求的數(shù)據(jù)不在前端12上的本地文件系統(tǒng)16上,那么事件守護程序80就把數(shù)據(jù)從后端14復(fù)制到本地文件系統(tǒng)16上,并繼而發(fā)生數(shù)據(jù)訪問。遷移守護程序82尋找那些其中的數(shù)據(jù)需要從前端12遷移到后端14的文件。一旦它識別出了其數(shù)據(jù)需要遷移的文件,它就把數(shù)據(jù)從前端12復(fù)制到后端14。清除守護程序84尋找那些其數(shù)據(jù)在本地文件系統(tǒng)16上不再需要的文件,并且除去不需要的數(shù)據(jù)。因為這里所述的有效搜索遷移和清除候選者允許以較少的代價來查找遷移和清除候選者,所以遷移守護程序82和清除守護程序84兩者都可以被配置成定期地運行,比如以五分鐘的時間間隔運行。現(xiàn)在參照圖8中的步驟100,遷移守護程序82(或作為線程的單個守護程序)利用存儲在.DMATTR文件60中的屬性信息,來確定文件是否需要被遷移,或者也可以利用存儲在擴展塊64中的屬性信息來確定,正如在這里描述的那樣。如果文件72先前未被遷移過,那么就把它分解為固定大小或者動態(tài)確定其大小的分區(qū)70。分區(qū)大小可以根據(jù)諸如數(shù)據(jù)訪問頻率、每次訪問讀取多少連續(xù)數(shù)據(jù)以及其它訪問模式信息等因素來動態(tài)加以確定。遷移守護程序82可以派生出其它進程來處理各種任務(wù)。在遷移前的處理、數(shù)據(jù)遷移期間,或者當(dāng)檢查文件在遷移期間是否已經(jīng)改變的時候(如果它已經(jīng)改變,則當(dāng)前的遷移失敗并嘗試下一次遷移),可以使用信號量、文件鎖以及其它方法來保護文件。遷移進程排它地對文件加鎖,步驟102,讀取屬性和區(qū)域信息,步驟104,并且判斷文件是否需要被遷移,步驟106。如果不需要遷移,則就撤銷該鎖,步驟108。否則,利用區(qū)域信息、文件大小以及分區(qū)大小來判斷哪些文件塊將需要被遷移,步驟110。如果所述文件先前被遷移過,步驟112,則將存在一個包含描述先前遷移信息的容器文件76,并且將讀取這個文件以確定所述文件的新版本號。如果所述文件從來沒有被遷移過,則就假定這個版本號為1。僅將新的數(shù)據(jù)或自上次遷移以來所變更的數(shù)據(jù)遷移到后端14中。數(shù)據(jù)是根據(jù)分區(qū)大小來進行分區(qū)的,所述分區(qū)大小可以是固定的或動態(tài)的,步驟114。撤銷該鎖,以便當(dāng)正發(fā)生遷移時能夠繼續(xù)進行使用所述文件進行其它處理,步驟116。在步驟120中,在不變更前端12上的文件訪問時間的情況下,將需要被遷移的分區(qū)70復(fù)制到后端14。如果在這次遷移期間發(fā)生錯誤,那么就將在下一次遷移運行期間再償試遷移,步驟124。如果遷移成功,則在步驟126中再次對所述文件加鎖,并且將再次讀取文件屬性和區(qū)域信息,并且利用這些信息來判斷該文件在數(shù)據(jù)移動期間是否被變更,步驟128。如果所述文件被變更,則撤銷該鎖,步驟132,并且因為數(shù)據(jù)可能是不一致的,所以遷移失敗并將稍后再嘗試遷移,步驟124。如果在數(shù)據(jù)移動期間未變更所述文件,則更新文件信息以表明文件已被成功遷移,步驟134。更新擴展屬性(比如,DMAPI/XDSM)和區(qū)域信息,并且將關(guān)于文件的信息,包括路徑名、大小、所有者、權(quán)限以及其它文件屬性信息,寫入稱為“*.cont文件”的容器文件76中,所述容器文件與數(shù)據(jù)文件相關(guān)聯(lián)。此外,寫入到容器文件76中的信息是關(guān)于存儲在后端14中的分區(qū)的信息,包括版本控制信息。必須以特定順序來更新文件狀態(tài),以便確保一致性。在圖9中,步驟140,設(shè)置屬性以表明文件未被清除,設(shè)置文件的分區(qū)大小(如有必要的話),設(shè)置后端14文件的位置,并將信息直接寫入到文件系統(tǒng)16中,步驟142。這確保了萬一發(fā)生沖突,在文件中存在足夠的信息,以便通過前滾到新狀態(tài)或者回滾到先前狀態(tài),來使文件能夠被訪問。按照這樣的方式來寫入*.cont文件76的新版本,以確保*.cont文件76包含該文件的舊狀態(tài)或新狀態(tài),步驟144。在步驟146中,經(jīng)DMAPI/XDSM接口來寫區(qū)域信息,以便表明所有文件數(shù)據(jù)均已被成功地遷移到后端14,然后在步驟148中,使.DMATTR文件60同步化(未完成的信息被寫入到磁盤)。如果這次失敗,那么舊區(qū)域信息將仍然是有效的,以便能夠在未來的遷移嘗試期間進行未來的遷移。更新DMAPI/XDSM屬性以便將文件標(biāo)記為正在遷移,步驟150。這包括設(shè)置元數(shù)據(jù)以表明在后端14中數(shù)據(jù)被存儲在哪里、遷移的時間,以便將文件標(biāo)記為正在遷移。按照這樣的方式來寫入元數(shù)據(jù),所述方式就是在任何時候的故障都將總是讓文件保持一致狀態(tài)。這避免了萬一發(fā)生故障時的數(shù)據(jù)損壞,而且防止文件處于允許訪問可能使文件數(shù)據(jù)無效的狀態(tài)。在清除后,如有必要的話,存儲在區(qū)域信息中的狀態(tài)、文件元數(shù)據(jù)以及后端版本文件(*.cont文件)則足以能夠恢復(fù)所述文件,或者如果本地管理的磁盤丟失或是無意中將文件移除的話,也足以能夠恢復(fù)所述文件。每個數(shù)據(jù)文件72都可以具有與之相關(guān)聯(lián)的*.cont文件,但是也可以在單個容器文件中存儲多個數(shù)據(jù)文件的*.cont信息,該信息可以用數(shù)據(jù)文件或諸如對象ID等其它標(biāo)識符的名稱來索引。如果文件先前已被遷移,則檢查.DMATTR文件60中的區(qū)域信息,以判斷哪些分區(qū)是臟的;也就是,自上次遷移以來已經(jīng)被修改的那些分區(qū)。已修改的分區(qū)被復(fù)制到后端,以及可以對其進行版本控制,以便使它們不改寫分區(qū)的現(xiàn)存副本。如圖7所示,*.cont文件76記錄下所述版本。例如,如果*.cont文件76表明分區(qū)的版本54已經(jīng)處于后端14中,則就將已修改的分區(qū)作為版本55來寫入,而無需變更或改寫版本54,并且更新*.cont文件76以反映此次操作。實際上,*.cont文件記錄下文件變動量。當(dāng)它存在于任一時間點時,它都具有為恢復(fù)相關(guān)聯(lián)的文件所必需的信息,這是因為*.cont文件76有效地保存了快照;也就是說,在任何特定的日期與時間,都可以判斷數(shù)據(jù)文件72看起來像什么。在遷移結(jié)束之后(例如,當(dāng)已遷移的數(shù)據(jù)已被成功寫入到磁帶中時),將關(guān)于新近遷移的分區(qū)的信息存儲在容器文件76中。如果文件已首次被遷移,那么就連同到后端14中的容器文件的鏈路一起,更新.DMATTR文件60,以表明文件已被遷移。如果已修改的分區(qū)被遷移,那么就更新區(qū)域信息以表明所述分區(qū)不再是臟的,并且由此不再需要遷移。由此,在前端12上的文件與其后端14上的分區(qū)之間存在鏈路,被存儲在.DMATTR文件60及*.cont文件76中。為了舉例說明上述遷移,如果在前端12上存在稱為ABC的數(shù)據(jù)文件,該數(shù)據(jù)文件先前尚未被遷移過,那么就在后端14中為它選擇一個唯一路徑名,比方說123。該ABC文件被分解成這樣的分區(qū),所述分區(qū)的分區(qū)大小是由對象管理系統(tǒng)配置結(jié)構(gòu)來確定的。將這些分區(qū)作為單獨的文件復(fù)制到后端14,這些單獨的文件指明了唯一路徑名、分區(qū)序號和版本號;例如123.partition1.version1,123.partition2.version1,直到123.partitionN.version1。然后,寫123.cont文件,該文件描述了在遷移期間已經(jīng)做了什么,包括本地文件系統(tǒng)16上的文件名、分區(qū)名以及分區(qū)版本。以.DMATTR文件60的形式將附加信息寫入本地文件系統(tǒng)16或是該文件系統(tǒng)中的其它地方。盡管可以將它放置在別處,但是放置在本地文件系統(tǒng)16上能加速訪問。也可以在前端12上的存儲器中緩存所述.DMATTR文件60,不過這會需要時常使已緩存的文件與磁盤上的文件同步,以便萬一沖突時確保一致性。所寫入的屬性包括表明文件ABC已被遷移到文件123的指示,表明遷移發(fā)生時的時間戳、文件被遷移到何處以及表明文件已被成功地遷移到后端14的指示?,F(xiàn)在參照圖10,清除守護程序84(或線程守護程序)利用存儲在.DMATTR文件60中的屬性信息,來識別已被遷移(不再需要遷移)但沒有被清除的文件,步驟200。清除守護程序84可以在確定在本地文件系統(tǒng)上需要空閑空間以后進行這一步驟,并且當(dāng)足夠空間是可用的時候停止清除。在步驟202中,根據(jù)實際中的清除策略來對清除候選者進行排序,所述清除策略可以是用戶可配置的??蓪RU(最近最少使用法)用作為清除策略,不過也可以根據(jù)存儲在文件系統(tǒng)16上的數(shù)據(jù)的特性、使用文件系統(tǒng)16上的數(shù)據(jù)的應(yīng)用程序和數(shù)據(jù)訪問模式來選擇其它的策略。可以在文件級或分區(qū)級應(yīng)用這些策略。清除守護程序84可以利用擴展屬性中的信息,來確定文件中分區(qū)的上次訪問的時間、訪問頻率等等。依據(jù)清除策略,清除守護程序84識別將要清除的分區(qū)。例如,清除守護程序84可以使用最近最少使用算法來對文件排序,然后在被選定用于清除的文件內(nèi)選擇具有比確定日期更早的上次訪問日期的分區(qū)。文件鎖、信號量或其它方法都可以用來防止數(shù)據(jù)損失或損壞。在清除進程編譯清除候選者列表并且選定文件以供清除之后,對所述文件加鎖,步驟204。讀取屬性和區(qū)域信息,步驟206,并且檢查上述信息來查看自從所述列表被編譯以來是否已經(jīng)訪問了該文件;也就是說,看它是否仍然是清除候選者,步驟208。如果否,則不清除該文件并撤銷該鎖,步驟210。如果該文件仍然是清除候選者,則設(shè)置文件區(qū)域信息以表明整個文件已被清除,步驟212。清除守護程序84從對應(yīng)于所選定分區(qū)的文件上移除本地數(shù)據(jù),步驟214。在DMAPI兼容的系統(tǒng)中,清除守護程序84利用dm_punch_hole()來移除本地數(shù)據(jù)。根據(jù)操作系統(tǒng)的能力,正如多數(shù)操作系統(tǒng)中常見的那樣,可以將本地文件72從偏移量開始到文件末尾截斷,或者像為AIX而設(shè)的那樣,也可以在一個文件中間穿一個孔。要移除的數(shù)據(jù)可以位于文件的起始處,而在這種情況下,留下存根74(在圖5中示出)。在移除本地數(shù)據(jù)之后,更新屬性和區(qū)域信息以反映對數(shù)據(jù)進行的清除,步驟216。區(qū)域信息表明實際清除的數(shù)據(jù)不再出現(xiàn)在本地文件系統(tǒng)16上,而且如果整個文件已被清除(存根74除外),那么該屬性就表明所述文件已被清除過了。如果仍然留有文件的一部分的話,那么該文件就將繼續(xù)作為清除候選者。在已經(jīng)更新了文件元數(shù)據(jù)之后,從所述文件上除掉該鎖,步驟218。萬一系統(tǒng)崩潰或者發(fā)生其它故障時,這樣可以保護文件。文件將仍然被視為清除候選者,這是因為尚未將它被標(biāo)記為已清除,但是當(dāng)受到訪問時,文件中的所有分區(qū)都將引發(fā)重新升級,這是因為在清除操作之前它們被標(biāo)記為已清除。一些數(shù)據(jù)仍然可以是本地的,但是如果在清除操作期間發(fā)生錯誤,那么它可能就不能分辯什么被清除了。由此,清除進程將所有的分區(qū)都標(biāo)記為已清除,并且在清除結(jié)束之后,更新所述區(qū)域信息以表明哪些分區(qū)仍然存在。雖然一些或所有它的數(shù)據(jù)都可能已經(jīng)從本地文件上被清除掉了,但是如果元數(shù)據(jù)更新失敗,那么所述文件將仍然看上去是清除候選者。所描述的順序(sequence)是用來防止數(shù)據(jù)損壞的,但是只要使區(qū)域信息、文件數(shù)據(jù)移除以及文件元數(shù)據(jù)更新被同步以確保一致性,其它方法就是可以的。這避免了讓文件處于不一致狀態(tài),在這種不一致的狀態(tài)下,可能會訪問過時的數(shù)據(jù)。典型地,文件72在其起始處包含標(biāo)頭和其它經(jīng)常使用的信息,所述文件是由應(yīng)用程序掃視的,并且當(dāng)清除文件時,在適當(dāng)?shù)奈恢昧粝麓娓?4,可以加速數(shù)據(jù)訪問時間。用戶可以根據(jù)諸如在經(jīng)常被訪問的文件72的起始處中是否有信息以及在該文件72的起始處有多少數(shù)據(jù)被訪問等此類信息,來定義存根74的長度。例如,Oracle數(shù)據(jù)庫可能需要至少128KB的存根大小,這是因為當(dāng)Oracle訪問每個Oracle數(shù)據(jù)文件時,Oracle經(jīng)常訪問數(shù)據(jù)文件中的這個數(shù)據(jù),比如在啟動時間。如果沒有存留有存根數(shù)據(jù),那么Oracle就會停止,直到已經(jīng)從后端14恢復(fù)所述數(shù)據(jù)為止,這可能意味著許多的磁帶載入次數(shù)(tapemount)(或者諸如CD之類的其它存儲介質(zhì)的載入次數(shù))??梢詫Υ娓?4進行版本控制,并且作為文件或?qū)ο蟠鎯υ诤蠖?4中。在圖11中,步驟300,事件守護程序80或線程守護程序捕獲數(shù)據(jù)訪問事件,并且記錄下數(shù)據(jù)訪問活動。當(dāng)發(fā)出數(shù)據(jù)訪問請求時,處理依賴于數(shù)據(jù)訪問是讀取還是要修改該文件的訪問來進行處理(比如,寫入或截斷),步驟302。如果數(shù)據(jù)訪問是讀取,步驟304,則就檢查.DMATTR文件60中的區(qū)域信息來判斷所請求的數(shù)據(jù)是否在本地文件系統(tǒng)16上;也就是,判斷區(qū)域信息是否表明對應(yīng)于正被訪問的那部分文件的分區(qū)的是否被標(biāo)記為存在。如果所請求的數(shù)據(jù)存在,步驟306,則向文件系統(tǒng)傳遞訪問請求,步驟308,并且可以更新文件屬性和區(qū)域信息,以便反映所述訪問,步驟324。如果所請求的數(shù)據(jù)不存在,則事件守護程序80或從事件守護程序80接收事件的另一個進程將對文件加鎖,并且檢查所述區(qū)域和屬性信息,步驟310,以便判斷是否需要進行處理,步驟312。在步驟314中,如果由于先前的事件處理而不需要進行處理,則撤銷該鎖,并且為所述事件生成響應(yīng),該響應(yīng)將喚醒等待完成I/O請求的進程。如果需要處理,則將該文件標(biāo)記為可清除的,使元數(shù)據(jù)同步化,確定完成事件處理所需要的文件數(shù)據(jù),確定后端14文件的位置,讀取*.cont文件,并且撤銷該文件上的鎖,步驟316。在數(shù)據(jù)移動期間不對文件加鎖,允許對已經(jīng)駐留在本地文件系統(tǒng)16上的數(shù)據(jù)進行處理。從后端14那里讀取必要的分區(qū),并將其寫入前端12上的本地文件系統(tǒng)16中,步驟318。再次排它地對文件加鎖,步驟320,以一致的方式更新區(qū)域和屬性信息,步驟322,并且撤銷該鎖。將響應(yīng)發(fā)送給等待的進程,喚醒它,直到完成它的讀取請求為止,步驟314。對這個數(shù)據(jù)的未來訪問不會產(chǎn)生恢復(fù)事件,除非所述數(shù)據(jù)被再次清除。根據(jù)數(shù)據(jù)訪問模式,也可以使用一些預(yù)測性的分區(qū)檢索;即,關(guān)于數(shù)據(jù)訪問模式的信息能夠被記錄,并且如果判定對特定分區(qū)的訪問經(jīng)常引發(fā)對另一個分區(qū)的訪問,則就可以預(yù)先檢索那個分區(qū)。在步驟324中,在事件守護程序80處理數(shù)據(jù)訪問事件之后,可以更新.DMATTR文件60來表明與已訪問的文件部分相對應(yīng)的分區(qū)的訪問時間,比如清除策略使用處于分區(qū)級的數(shù)據(jù)訪問信息的時間。系統(tǒng)更新文件屬性來表明文件訪問的時間。如果訪問請求為寫,那么就將修改所述區(qū)域來更新訪問時間,并且對應(yīng)于所述數(shù)據(jù)的分區(qū)將被標(biāo)記為臟的(因此需要被遷移),步驟326。在這種情況下,排它地對文件加鎖,并且檢查所述事件來判斷進行處理是否是必要的,步驟328。如果否,則在步驟330中撤銷該鎖,并且響應(yīng)所述事件,結(jié)束處理。如果進行處理是必要的,則在步驟332中更新元數(shù)據(jù)以表明所述文件是清除候選者并且也是遷移候選者,這是因為數(shù)據(jù)即將被變更。讀取文件元數(shù)據(jù)、區(qū)域信息、和*.cont文件,來判斷文件的狀態(tài)。確定產(chǎn)生所述事件的文件的區(qū)域,并且如果所述區(qū)域信息表明所述數(shù)據(jù)不在本地,步驟336,則就撤銷該鎖,并且以類似于上述讀取過程的方式移動數(shù)據(jù),步驟338。如果已經(jīng)駐留了所述數(shù)據(jù),則不需要從后端14那移動任何數(shù)據(jù)。在步驟340中,在重新升級數(shù)據(jù)之后,文件被再次加鎖,并且更新文件元數(shù)據(jù)和區(qū)域信息,以表明所述文件中的某個數(shù)據(jù)需要被遷移,并指明所述文件的哪些部分已被變更。撤銷排它鎖,并且將響應(yīng)發(fā)送給等待的進程,步驟342。為了舉例說明事件處理,對于具有N個均已被遷移和清除的分區(qū)的文件ABC,除了具有按配置定義的長度的存根74之外,事件守護程序80會捕獲對分區(qū)77中的數(shù)據(jù)的數(shù)據(jù)訪問請求。這在圖12中作了舉例說明。守護程序確定分區(qū)77中的數(shù)據(jù)不存在于本地文件系統(tǒng)16上,并且檢查.DMATTR文件60,確定相對應(yīng)的容器文件是后端14上的123.cont。將發(fā)出對相應(yīng)后端文件123的分區(qū)77的請求。123.cont可以表明版本55是文件123的分區(qū)77的最新版本,并且因此將把123.partition77.version55檢索到前端12。在將分區(qū)恢復(fù)到盤之后,更新屬性和區(qū)域信息。通過遷移和檢索文件片段而不是整個文件,該系統(tǒng)避免了大量而耗時的文件轉(zhuǎn)移。例如,數(shù)據(jù)庫文件趨向于相當(dāng)大型,以千兆字節(jié)來測量。在遷移和檢索期間來回地移動整個文件是不切實際的,特別是當(dāng)諸如Oracle之類的數(shù)據(jù)庫應(yīng)用程序可能正在僅僅訪問表的非常小的一部分(例如,行)時更是如此。例如,Oracle并不同時掃視整個文件。更確切些的說,它局部地掃遍一個數(shù)據(jù)庫文件,繼續(xù)掃視另一個文件等等,直到它最終回到第一個文件并掃視更多的數(shù)據(jù)。使用完全文件檢索導(dǎo)致系統(tǒng)振蕩以及更長的檢索時間。也將所述系統(tǒng)配置成用于有效地搜索遷移和清除候選者,并獲得它們的路徑名,不過為了實現(xiàn)這里所述的文件的劃分以及分區(qū)的管理,這并不所要求。如圖14所示,一種方法就是搜索文件名的名稱空間,并且查找每個文件的i節(jié)點和擴展屬性。在一些配置中,i節(jié)點包含指向擴展塊的指針,所述擴展塊包含擴展屬性,要求第二次查找以及相應(yīng)的盤片訪問。按照在圖13和14中舉例說明的更有效的方法,所述系統(tǒng)搜索DMAPI擴展數(shù)據(jù)文件60(.DMATTR文件),以找到文件名、i節(jié)點號以及擴展屬性,步驟350。所述系統(tǒng)還可以被配置成用于使用不同文件或幾個文件。照此,所述系統(tǒng)能夠在不必查找i節(jié)點以及還可能不必查找擴展塊的情況下,迅速地為名稱空間中的每個文件判斷哪些文件是遷移或清除候選者,步驟352。為了生成候選者的路徑名,利用它的i節(jié)點號來查找它的路徑名,步驟354。這可以利用在i節(jié)點列表和路徑名列表中的反向查找來進行。可將上述列表作為表存儲在同一個文件.DMATTR,或者存為相互獨立的文件或文件組中。利用這種配置,所述系統(tǒng)僅僅查找那些標(biāo)識為遷移和清除候選者的文件的i節(jié)點,而不是必須檢查所有文件的信息,所述所有文件包括了那些已被遷移和清除的文件。這相當(dāng)大地減少了遷移和清除所要求的執(zhí)行時間和系統(tǒng)負(fù)荷。例如,在判斷哪些文件要求遷移的過程中,使用這里所述的高效搜索的系統(tǒng)能夠在一分鐘之內(nèi)檢查具有一百萬個作為遷移和清除候選者的文件的文件系統(tǒng)。與帶有僅有一個遷移候選者的一百萬個文件的Solaris機先前利用名稱空間搜索所花費的20分鐘相比,它用十秒鐘就能找到一個文件??梢酝ㄟ^使用諸如Linux和Solaris之類的Unix-風(fēng)格的操作系統(tǒng),來與NFS型文件系統(tǒng)、XFS、UFS、Veritas和類似的文件系統(tǒng)一起使用這種手段,不過它也可以被擴展到其它的操作系統(tǒng)和文件系統(tǒng)。如圖15和16中舉例說明的那樣,這里所述的對容器文件76的使用,使數(shù)據(jù)能從一個計算機系統(tǒng)(機器A)到另一個計算機系統(tǒng)(機器B)可用,而無需首先復(fù)制所有的數(shù)據(jù)(將一個文件系統(tǒng)的內(nèi)容復(fù)制到另一個文件系統(tǒng)常常是很耗時的進程)。機器B可以被配置成用于使用在后端14上機器A的容器文件,步驟400。每一個容器文件76都包括關(guān)于文件屬性的信息,所述文件屬性比如是大小、所有者、權(quán)限以及路徑,機器B可以使用上述這些文件屬性來在它的本地文件系統(tǒng)上創(chuàng)建新文件。在機器B讀取*.cont文件之后,步驟402,創(chuàng)建新文件,步驟404,新文件的大小被設(shè)置成在*.cont文件76中所規(guī)定的大小,步驟406,并且在步驟408中,釋放已分配的空間(就仿佛文件已被清除過一樣),由此在機器B的文件系統(tǒng)上創(chuàng)建存根文件。創(chuàng)建.DMATTR文件60或者其它的擴展數(shù)據(jù)塊或文件,并設(shè)置屬性和區(qū)域,步驟410。當(dāng)機器B修改數(shù)據(jù)并將它遷移到后端14時,只有機器B才有的容器(*.cont)文件被寫入后端14,步驟412,不過這也可以根據(jù)需要來進行。當(dāng)機器B操作時,一般來講,數(shù)據(jù)訪問請求將導(dǎo)致判定已請求數(shù)據(jù)不在機器B的本地文件系統(tǒng)上,并且所需要的分區(qū)將被從后端14復(fù)制到機器B的本地文件系統(tǒng),步驟414。將按照與已描述過的方式一樣的方式在機器B上更新文件屬性和區(qū)域信息。如果機器B修改數(shù)據(jù),則修改過的分區(qū)(在圖16中示為B的已修改數(shù)據(jù))將被寫入后端14并且有關(guān)該變化的信息將存入機器B的容器文件(示為*.cont′),步驟416。機器A繼續(xù)寫它自己的分區(qū),并且在它自己的容器文件76中存儲關(guān)于其變化的信息,步驟418。每一個計算機系統(tǒng)都將它自己已修改分區(qū)寫入到后端14。每一個計算機系統(tǒng)都使用它自己的容器文件,并且因此具有它自己的數(shù)據(jù)版本。前述公開的內(nèi)容以及實施例示范性說明了本發(fā)明在提高計算機系統(tǒng)中的對象管理效率中的實用性,不過顯而易見的是,本發(fā)明將有利于許多其它的用途。該發(fā)明在數(shù)據(jù)庫、視頻、音頻以及任何應(yīng)用程序方面具有特殊的價值,在上述任何應(yīng)用程序當(dāng)中,可以訪問一文件的部分并與之相關(guān),而無需訪問文件中的所有數(shù)據(jù)。為了清楚起見,以特定流程來舉例說明了這里的過程以及方法,但是應(yīng)當(dāng)理解的是,不脫離于本發(fā)明的精神的情況下,其它順序也是可以的并且一些還可以并行執(zhí)行。此外,這些步驟可以被細(xì)分或組合。正如這里所公開的那樣,依照本發(fā)明編寫的軟件可以存儲在諸如存儲器或CD-ROM之類的某種形式的計算機可讀介質(zhì)內(nèi),或者經(jīng)由網(wǎng)絡(luò)來傳輸,并且由處理器來執(zhí)行。這里所引用的所有對比文獻(xiàn)都意在引入于此以供參考。盡管在上面已經(jīng)按照特定的實施例對本發(fā)明作了描述,但是可以預(yù)料的是,對于本領(lǐng)域的技術(shù)人員來說,對此發(fā)明的變更和修改將無疑是顯而易見的,并且可以在所附權(quán)利要求的范圍內(nèi)以及等效范圍內(nèi)加以實施。可以諸如通過并行使用多個計算機或均分負(fù)載設(shè)備或者跨過多個計算機分布任務(wù)等,來使用一個以上的計算機,從而就整體來講,它們執(zhí)行對象管理系統(tǒng)的功能;即它們?nèi)〈藛蝹€計算機。上述各種功能都可以由單個計算機上的或分布在幾個計算機上的單個進程或進程組來實現(xiàn)。這些進程可以調(diào)用其它的進程以處理確定的任務(wù)。所公開的原理適用于對象和對象存儲以及文件和文件系統(tǒng)。本實施例將被視為是說明性的而非限制性的,而且本發(fā)明并不限于這里所給定的細(xì)節(jié)。因此,意在將公開內(nèi)容及以下權(quán)利要求解釋成能涵蓋所有落入本發(fā)明實際精神和范圍內(nèi)的這類變更和修改。權(quán)利要求1.一種對象管理系統(tǒng),包括存儲裝置;第一計算機系統(tǒng),被配置成用于存儲第一對象,將第一對象劃分成分區(qū),并且在存儲裝置上存儲這些分區(qū);和第二計算機系統(tǒng);其中第一計算機系統(tǒng)被配置成用于創(chuàng)建包含關(guān)于已存儲分區(qū)的信息的第一數(shù)據(jù)對象,而第二計算機系統(tǒng)被配置成用于從第一數(shù)據(jù)對象讀取關(guān)于已存儲分區(qū)的信息,選擇分區(qū),并且檢索已選定的分區(qū)。2.如權(quán)利要求1所述的系統(tǒng),其中第一計算機系統(tǒng)被配置成用于在存儲裝置上存儲第一數(shù)據(jù)對象。3.如權(quán)利要求2所述的系統(tǒng),其中第二計算機系統(tǒng)進一步被配置成用于接收數(shù)據(jù)訪問請求,并且利用所述數(shù)據(jù)訪問請求來選擇將要從存儲裝置中檢索的分區(qū)。4.如權(quán)利要求3所述的系統(tǒng),其中第二計算機系統(tǒng)被配置成用于創(chuàng)建第二數(shù)據(jù)對象,該第二數(shù)據(jù)對象包括關(guān)于分區(qū)是否存在于第二計算機系統(tǒng)中的信息。5.如權(quán)利要求4所述的系統(tǒng),其中如果第二數(shù)據(jù)對象表明分區(qū)不在第二計算機系統(tǒng)中,則第二計算機系統(tǒng)就從存儲裝置中檢索所述分區(qū)。6.如權(quán)利要求5所述的系統(tǒng),其中第二計算機系統(tǒng)被配置成用于根據(jù)第一數(shù)據(jù)對象中的信息來創(chuàng)建第二對象。7.如權(quán)利要求6所述的系統(tǒng),其中第二計算機系統(tǒng)被配置成用于創(chuàng)建第三數(shù)據(jù)對象,該第三數(shù)據(jù)對象包括關(guān)于已存儲分區(qū)和所述第二對象的信息。8.如權(quán)利要求7所述的系統(tǒng),其中第二計算機被配置成用于修改已檢索的分區(qū),并且在存儲裝置上存儲已修改的分區(qū)。9.如權(quán)利要求8所述的系統(tǒng),其中第二計算機系統(tǒng)被配置成用于將關(guān)于已修改分區(qū)的信息包括在第三數(shù)據(jù)對象內(nèi)。10.如權(quán)利要求1所述的系統(tǒng),其中第一數(shù)據(jù)對象包括關(guān)于第一對象的屬性的信息,而第二計算機系統(tǒng)被配置成用于創(chuàng)建具有第一對象的屬性的第二對象。11.如權(quán)利要求10所述的系統(tǒng),其中所述屬性包括文件大小和路徑名。12.如權(quán)利要求10所述的系統(tǒng),其中第二計算機系統(tǒng)被配置成用于在創(chuàng)建第二對象之后和在從第二對象中讀取數(shù)據(jù)之前,釋放分配給第二對象的空間。13.如權(quán)利要求12所述的系統(tǒng),其中第二計算機系統(tǒng)被配置成用于當(dāng)釋放分配給第二對象的空間時保留存根。14.一種用于共享對象管理系統(tǒng)中的對象的方法,所述對象管理系統(tǒng)包括存儲裝置;第一計算機系統(tǒng),被配置成用于存儲第一對象,將第一對象劃分成分區(qū),并且在存儲裝置上存儲這些分區(qū);以及第二計算機系統(tǒng);所述方法包括創(chuàng)建包含關(guān)于已存儲分區(qū)的信息的第一數(shù)據(jù)對象;以及令第二計算機系統(tǒng)從第一數(shù)據(jù)對象中讀取關(guān)于已存儲分區(qū)的信息,選擇分區(qū),并且檢索所選定的分區(qū)。15.如權(quán)利要求14所述的方法,進一步包括在第二計算機系統(tǒng)中接收數(shù)據(jù)訪問請求,并且其中選擇將要從存儲裝置中檢索的分區(qū)包括利用數(shù)據(jù)訪問請求來判斷選擇哪個分區(qū)。16.一種用于共享對象管理系統(tǒng)中的對象的計算機程序產(chǎn)品,所述對象管理系統(tǒng)包括存儲裝置;第一計算機系統(tǒng),被配置成存儲第一對象,將第一對象劃分成分區(qū),并且在存儲裝置上存儲這些分區(qū);以及第二計算機系統(tǒng);所述計算機程序產(chǎn)品包括計算機可用介質(zhì),在該計算機可用介質(zhì)中包括有機器可讀的代碼,以用來創(chuàng)建包含關(guān)于已存儲分區(qū)的信息的第一數(shù)據(jù)對象;以及令第二計算機系統(tǒng)從第一數(shù)據(jù)對象中讀取關(guān)于已存儲分區(qū)的信息,選擇分區(qū),并且檢索所選定的分區(qū)。17.一種對象管理系統(tǒng),包括存儲裝置;第一計算機系統(tǒng),被配置成用于在存儲裝置上存儲第一對象以及第一對象的副本;和第二計算機系統(tǒng);其中第一計算機系統(tǒng)被配置成用于創(chuàng)建包含關(guān)于第一對象的已存儲副本的信息的第一數(shù)據(jù)對象,而第二計算機系統(tǒng)被配置成用于從第一數(shù)據(jù)對象中讀取關(guān)于第一對象的已存儲副本的信息,并且從存儲裝置中檢索第一對象的已存儲副本。18.一種共享對象管理系統(tǒng)中的對象的方法,所述對象管理系統(tǒng)包括存儲裝置;第一計算機系統(tǒng),被配置成用于在存儲裝置上存儲第一對象以及第一對象的副本;以及第二計算機系統(tǒng);所述方法包括計算機可用介質(zhì),在該計算機可用介質(zhì)中包括有機器可讀代碼,以用來創(chuàng)建包含關(guān)于第一對象的已存儲副本的信息第一數(shù)據(jù)對象;以及令第二計算機系統(tǒng)從第一數(shù)據(jù)對象中讀取關(guān)于第一對象的已存儲副本的信息,并且從存儲裝置中檢索第一對象的已存儲副本。全文摘要一種對象管理系統(tǒng)(10),包括存儲裝置(14);第一計算機系統(tǒng)(12),它被配置成用于在存儲裝置上存儲第一對象以及第一對象的副本;和第二計算機系統(tǒng)。第一計算機系統(tǒng)被配置成用于創(chuàng)建包含關(guān)于第一對象的已存儲副本的信息的第一數(shù)據(jù)對象,而第二計算機系統(tǒng)被配置成用于從第一數(shù)據(jù)對象中讀取關(guān)于第一對象的已存儲副本的信息,并且從存儲裝置中檢索第一對象的已存儲副本。第一對象可以由第一計算機系統(tǒng)來劃分,并在存儲裝置上存為分區(qū),并且第一數(shù)據(jù)對象將包含關(guān)于所述分區(qū)的信息。第二計算機系統(tǒng)將被配置成用于從第一數(shù)據(jù)對象中讀取關(guān)于所述分區(qū)的信息,從存儲裝置中選擇分區(qū)。文檔編號G06F17/30GK1559041SQ02818844公開日2004年12月29日申請日期2002年9月26日優(yōu)先權(quán)日2001年9月26日發(fā)明者馬克·薩克,馬克薩克,魯夫,理查德·魯夫,埃弗森,庫爾特·埃弗森申請人:Emc公司