專利名稱:大文件的有效管理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及一種用于在對象管理系統(tǒng)中有效管理大文件的方法、產(chǎn)品和設(shè)備。更為特殊的是,本發(fā)明涉及的是在對象管理系統(tǒng)中對大文件進(jìn)行有效的存儲和檢索,其中對象管理系統(tǒng)可以包括具有以下不同特性的存儲器的各種組合,所述特性是例如速度、成本、大小、可用性、可存取性以及遠(yuǎn)程性。
背景本發(fā)明涉及的是在對象管理系統(tǒng)中對大文件進(jìn)行管理?,F(xiàn)有系統(tǒng)旨在處理那些規(guī)模極大的表空間,其中這種現(xiàn)有系統(tǒng)可以是與Oracle數(shù)據(jù)庫結(jié)合使用的系統(tǒng)。一個表空間可以由多個數(shù)據(jù)文件組成,這些數(shù)據(jù)文件可以由操作系統(tǒng)存取和操作。“數(shù)據(jù)文件”是指一個可以拷貝、移動或在其他方面作為連續(xù)信息對待的文件,不管所述數(shù)據(jù)是否在物理上以連續(xù)方式保存在存儲介質(zhì)上。
本地存儲容量也許不足以保存與一個或多個數(shù)據(jù)庫相關(guān)聯(lián)的整個表空間。通過購買充足的快速存取存儲介質(zhì)(例如硬盤或光學(xué)介質(zhì))來提供保存整個數(shù)據(jù)庫的足夠容量是非常浪費(fèi)的,在沒有必要以相對較快的速度存取所有數(shù)據(jù)的時候尤其如此。已經(jīng)實(shí)施這樣一種常規(guī)數(shù)據(jù)庫系統(tǒng),其中可以將數(shù)據(jù)“遷移”到價(jià)格較低的介質(zhì),并且可以在需要的時候才從介質(zhì)中檢索數(shù)據(jù)。然而,現(xiàn)有系統(tǒng)和方法并未有效管理那些將要遷移、遷移之后以及檢索之后的數(shù)據(jù)。這些系統(tǒng)要忍受等待時間并具有很高的帶寬要求,此外還需要很長的備份時間并具有高昂的成本,但卻未必能夠產(chǎn)生“時間點(diǎn)(point in time)”快照。這些問題不僅限于數(shù)據(jù)庫和表空間。而是,這些問題同樣存在于保存諸如多媒體之類的大文件的系統(tǒng)。
如這里所公開的那樣,存在一種更為有效的方法,該方法減少了等待時間和帶寬要求,降低了成本,并且只需要較小的備份窗口,由此更有效地管理數(shù)據(jù)。盡管這里的公開是在數(shù)據(jù)庫和表空間的環(huán)境中描述問題和發(fā)明的,但是本發(fā)明也可應(yīng)用于任何使用遷移的數(shù)據(jù)管理系統(tǒng),尤其是在所述系統(tǒng)管理諸如音頻或視頻這類大數(shù)據(jù)文件的時候。
發(fā)明內(nèi)容
因此,簡要地說,本發(fā)明提供了一種用于在對象管理系統(tǒng)中有效管理大文件的方法、產(chǎn)品和設(shè)備。在本發(fā)明的一個實(shí)施例中,對象管理系統(tǒng)包括一個配置成保存對象的計(jì)算機(jī)系統(tǒng),其中所述對象可以是一個文件。所述計(jì)算機(jī)系統(tǒng)被配置成將對象分割成分段并且選擇分段,此外所述計(jì)算機(jī)系統(tǒng)還把選擇的分段提供給一個存儲設(shè)備,以便加以保存。
其中,根據(jù)是否修改過分段來確定要將哪些分段遷移到存儲設(shè)備,由此對分段進(jìn)行選擇。而系統(tǒng)則是通過檢查一個與對象相關(guān)聯(lián)的數(shù)據(jù)對象來對此加以確定的。
計(jì)算機(jī)系統(tǒng)可以配置成從存儲設(shè)備中檢索一個選擇的分段。所述系統(tǒng)接收一個數(shù)據(jù)存取請求并且使用數(shù)據(jù)存取請求來選擇一個分段,此外還使用了數(shù)據(jù)對象來確定選擇的分段是否存在于計(jì)算機(jī)系統(tǒng)中,如果選擇的分段不在計(jì)算機(jī)系統(tǒng)上,則從存儲設(shè)備中檢索這個選擇的分段。
對本領(lǐng)域技術(shù)人員來說,本發(fā)明的優(yōu)點(diǎn)和進(jìn)一步細(xì)節(jié)將從以下結(jié)合附圖所進(jìn)行的詳細(xì)描述中變得清楚。
附圖簡述本發(fā)明將通過以下結(jié)合附圖所進(jìn)行的詳細(xì)描述而變得易于理解,其中相同的參考數(shù)字表示的是相同的結(jié)構(gòu)單元,并且其中
圖1是具有一個前端和一個后端的對象管理系統(tǒng)的一個示意圖;圖2是附加了大容量存儲設(shè)備的計(jì)算機(jī)系統(tǒng)的示意圖;圖3是i節(jié)點(diǎn)(inode)與保存了DMAPI信息的文件之間的邏輯關(guān)系的框圖;圖4是i節(jié)點(diǎn)與保存了DMAPI信息的擴(kuò)展塊之間的邏輯關(guān)系的框圖;圖5是文件、DMAPI擴(kuò)展數(shù)據(jù)文件、容器文件以及后端保存的分段的框圖。
圖6是顯示對象管理系統(tǒng)中使用的守護(hù)程序的方框圖;圖7是一個顯示分段的版本控制(versioning)的方框圖;圖8是對遷移處理進(jìn)行描述的流程圖;圖9是描述更新文件狀態(tài)來確保一致性的流程圖;圖10是描述清除處理的流程圖;圖11是描述事件處理和重新提交(restaging)數(shù)據(jù)的流程圖;圖12是顯示重新提交分段的方框圖;圖13是一個描述有效搜索遷移或清除候選者以及獲取候選者路徑名的流程圖;圖14是顯示了若干種搜索遷移或清除候選者的方法的方框圖;圖15是描述了使用容器文件而使來自一臺計(jì)算機(jī)的文件能在另一臺計(jì)算機(jī)上使用的流程圖;以及圖16是圖15中的計(jì)算機(jī)的框圖。
發(fā)明描述在這里提供了關(guān)于實(shí)施例的詳細(xì)描述。雖然本發(fā)明是結(jié)合實(shí)施例來描述的,但是應(yīng)該理解,本發(fā)明不局限于任何一個實(shí)施例。相反,本發(fā)明的范圍只受附加權(quán)利要求限制,并且本發(fā)明包括多種替換、修改和等價(jià)物。出于例證目的,在以下描述中闡述了很多具體細(xì)節(jié),以便提供關(guān)于本發(fā)明的全面理解。但是本發(fā)明可以依照權(quán)利要求而在沒有若干或全部這些具體細(xì)節(jié)的情況下實(shí)施。為了清楚起見,在這里并未詳細(xì)描述那些與本發(fā)明有關(guān)但在本技術(shù)領(lǐng)域已知的技術(shù)材料,以免不必要地造成本發(fā)明不清楚。
應(yīng)該了解的是,本發(fā)明可以借助多種方式實(shí)施,其中包括作為一個進(jìn)程、一個儀器、一個系統(tǒng)、一個設(shè)備、一種方法或一種計(jì)算機(jī)可讀介質(zhì),例如計(jì)算機(jī)可讀的存儲介質(zhì)或是計(jì)算機(jī)網(wǎng)絡(luò),其中程序指令是通過光/電通信鏈路發(fā)送的。
概述如圖1所示,在一個實(shí)施例中,對象管理系統(tǒng)10包括一個主要或本地計(jì)算機(jī)系統(tǒng)12以及一個存儲系統(tǒng)14,它可以是一個輔助或遠(yuǎn)程計(jì)算機(jī)系統(tǒng)。主計(jì)算機(jī)系統(tǒng)12稱為前端12,它向用戶(沒有顯示)提供主應(yīng)用程序和數(shù)據(jù)存儲服務(wù)。在正常操作中,主計(jì)算機(jī)系統(tǒng)12在其CPU20上運(yùn)行應(yīng)用程序并在其本地文件系統(tǒng)16上提供本地?cái)?shù)據(jù)存取,所述文件系統(tǒng)通常包括高速設(shè)備,例如各自處于一個RAID陣列中的硬盤驅(qū)動器18或是其他結(jié)構(gòu)。存儲系統(tǒng)14也稱為后端14,它可以是一個與各種大容量存儲設(shè)備相連的通用CPU22,其中所述大容量存儲設(shè)備可以組織到文件系統(tǒng)26中,也可以是一個專用存儲裝置。在后端14中使用的大容量存儲設(shè)備可以是硬盤驅(qū)動器24,也可以是更廉價(jià)、更慢或?qū)S糜跉w檔目的的其他設(shè)備。例如,可以使用光盤28、磁帶驅(qū)動器30以及磁光驅(qū)動器。并且可以將后端14用作那些較少存取的數(shù)據(jù)的廉價(jià)近線(near-line)存儲器,也可將其用于備份前端12的數(shù)據(jù)。
后端14可以與前端12處于相同位置,也可以位于遠(yuǎn)端。數(shù)據(jù)傳送是經(jīng)由NFS、AFS、FTP或其他方法來完成的。前端12與后端14可以使用一對一、多對一或多對多的關(guān)系連接。通常,前端12上的文件系統(tǒng)16與后端14是一對一的關(guān)系,但是在前端12上可能存在幾個文件系統(tǒng)16,其中每一個系統(tǒng)都映射到一個不同后端14。例如,在將各個文件系統(tǒng)16用于歸屬公司中不同群組的一個不同應(yīng)用程序的時候,可以使用這種結(jié)構(gòu)。因此,會計(jì)部門的數(shù)據(jù)可以轉(zhuǎn)向一個后端14系統(tǒng),而涉及工資單的數(shù)據(jù)則轉(zhuǎn)向另一個后端14。這些后端系統(tǒng)14可以位于不同的遠(yuǎn)端位置。
在操作中,遷移守護(hù)進(jìn)程將來自前端12的數(shù)據(jù)遷移(拷貝)到后端14;也就是將來自前端12的數(shù)據(jù)拷貝到后端14。這些數(shù)據(jù)劃分成寫入后端14的分段。一旦遷移了一個文件,則在前端12將其標(biāo)記為已遷移。這個操作是通過設(shè)定一個指示文件已經(jīng)遷移的比特或者其他標(biāo)志來完成的。清除守護(hù)進(jìn)程尋找那些數(shù)據(jù)不再為前端所需要的已遷移文件,并且清除那些不再需要的數(shù)據(jù)。事件守護(hù)進(jìn)程捕獲數(shù)據(jù)存取事件,如果在前端12上需要數(shù)據(jù),那么它會將數(shù)據(jù)從后端14重新提交到前端12。事件守護(hù)進(jìn)程還被配置成移動所需要的文件部分,從而僅僅重新提交文件的一部分。這樣的優(yōu)點(diǎn)是減少正在傳送的數(shù)據(jù)量,以便減少帶寬需要并縮短等待時間。
遷移守護(hù)進(jìn)程周期性地檢查那些需要遷移的文件(確切地說,應(yīng)該是文件的一些部分)。如果它發(fā)現(xiàn)一個標(biāo)記為臟(dirty)的重新提交的文件(也就是說,在所述文件最后一次遷移到后端14以來已經(jīng)對其執(zhí)行過寫入),那么它將會把該文件遷移到后端14。遷移守護(hù)進(jìn)程則配置成只寫入那些經(jīng)過修改的分段。而未修改的分段則不必寫入,由此減少了所要傳送的數(shù)據(jù)量。在后端14,對經(jīng)過修改的分段進(jìn)行版本控制,并且將其寫入大容量存儲設(shè)備。這些分段可以改寫當(dāng)前存在的分段,但是保存較早版本則允許創(chuàng)建時間點(diǎn)快照,以便在任何給定時間都能保存系統(tǒng)狀態(tài)。涉及分段位置的信息和其他元數(shù)據(jù)寫入到位于后端14的快速存儲器上的容器文件。在這種結(jié)構(gòu)中,備份是依靠系統(tǒng)操作來創(chuàng)建的,并且不需要進(jìn)行單獨(dú)的備份,因?yàn)槿萜魑募藢?shù)據(jù)還原到前端12所需要的全部信息。
除了設(shè)定分段大小和其他結(jié)構(gòu)以及環(huán)境信息之外,這些操作是在不需要在應(yīng)用程序用戶部分上的特別介入的情況下以透明方式執(zhí)行的。
此外還能使用這種系統(tǒng)而使來自一個計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)可以應(yīng)用于另一個計(jì)算機(jī)系統(tǒng),同時不需要拷貝所有數(shù)據(jù)。為了實(shí)現(xiàn)這個目的,其中將第二計(jì)算機(jī)系統(tǒng)配置成在后端14上使用第一計(jì)算機(jī)的容器文件,以便在其本地文件系統(tǒng)上創(chuàng)建自己的文件。當(dāng)?shù)诙?jì)算機(jī)系統(tǒng)將自己的數(shù)據(jù)寫入后端14時,第二計(jì)算機(jī)系統(tǒng)會在設(shè)置過程中或者按照需要來創(chuàng)建自己的容器文件。在第二計(jì)算機(jī)的操作過程中,如果來自后端14的文件的必要分段不在前端12上,那么數(shù)據(jù)存取會導(dǎo)致重新提交這些分段。如果任何一個計(jì)算機(jī)系統(tǒng)修改了數(shù)據(jù),那么它會在遷移數(shù)據(jù)的時候?qū)⒆约旱姆侄螌懭牒蠖?4并且更新自己的容器文件。這樣一來,每一個計(jì)算機(jī)系統(tǒng)都具有了自己的文件版本。
此外還可以對系統(tǒng)進(jìn)行配置,以便通過將文件名、i節(jié)點(diǎn)編號以及擴(kuò)展屬性存入單個文件來搜索遷移和清除候選者。系統(tǒng)可以搜索這個文件來快速識別遷移或清除候選者,而不用檢查i節(jié)點(diǎn)以及可能還有名稱空間中各個文件的擴(kuò)展塊。使用i節(jié)點(diǎn)編號所進(jìn)行的反向查找被用于確定路徑名。這種方法允許系統(tǒng)僅僅查找那些用于遷移的i節(jié)點(diǎn)和清除候選者,從而減少需要的時間。
所述系統(tǒng)可用于管理那些由數(shù)據(jù)庫使用的大的表空間,但在大文件管理方面也具有應(yīng)用性,在只對文件一部分進(jìn)行數(shù)據(jù)存取的情況下更是如此。
詳細(xì)說明在一個實(shí)施例中,主要和輔助計(jì)算機(jī)系統(tǒng)各自包含了一個在通用計(jì)算機(jī)上執(zhí)行的軟件程序,所述通用計(jì)算機(jī)可以是一個運(yùn)行UNIX的工作站,但是也可以使用其他計(jì)算機(jī)系統(tǒng),例如基于Intel公司Pentium處理器并運(yùn)行視窗或Linux操作系統(tǒng)的PC。此外還可以使用實(shí)現(xiàn)了計(jì)算機(jī)系統(tǒng)的其他裝置,例如將指令燒入諸如專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA)這類芯片的專用硬連線系統(tǒng)。輔助計(jì)算機(jī)系統(tǒng)則用作一個存儲系統(tǒng),它可以是以憑借網(wǎng)絡(luò)附加存儲(NAS)或存儲區(qū)域網(wǎng)絡(luò)(SAN)結(jié)構(gòu)中連接的專用存儲設(shè)備的形式來實(shí)現(xiàn),例如EMC、Network Appliance、StorageTek和ADIC制造的存儲設(shè)備。如圖2所示,計(jì)算機(jī)系統(tǒng)可以具有任意數(shù)量的下列部件中央處理器41、存儲器42、顯示器44、鍵盤46、大容量存儲設(shè)備48、網(wǎng)絡(luò)接口50以及其他輸入/輸出設(shè)備52。根據(jù)慣例,存儲器42和大容量存儲設(shè)備48可用來保存程序指令和數(shù)據(jù)。計(jì)算機(jī)系統(tǒng)40還可以具有一個以上的中央處理單元41,例如基于多處理器Pentium的系統(tǒng)或是Sun SPARC工作站。大容量存儲設(shè)備48可以包括使用了RAID、光纖通道或其他接口的一個或多個硬盤驅(qū)動器、光驅(qū)動器、磁帶驅(qū)動器、磁光驅(qū)動器、DAT、CD驅(qū)動器、DVD驅(qū)動器或用于存儲數(shù)據(jù)的其他設(shè)備。大容量存儲設(shè)備18可以組成為文件系統(tǒng),其中可以使用一組以上的大容量存儲設(shè)備18。
文件系統(tǒng)是對象存儲的一種類型,它可以保存文件(在這種情況下,對象ID即為它的路徑名)或?qū)ο?在這種情況下,對象是由不同于文件系統(tǒng)名的某個ID來引用的)。一個對象存儲具有以下組成部分一種識別對象的方法,允許操作對象的接口(API、文件系統(tǒng)原語等等)以及用于對象的存儲器。文件可以視為是一種對象。這里公開的原理同等地適用于對象和對象存儲以及文件和文件系統(tǒng)。就對象存儲而言,用于描述在后端何處發(fā)現(xiàn)對象的擴(kuò)展屬性是一個對象ID而不是文件名。
主計(jì)算機(jī)系統(tǒng)則充當(dāng)前端12,它通常具有以硬盤驅(qū)動器18為形式的高速存儲器,以便快速存取數(shù)據(jù)。存儲系統(tǒng)則充當(dāng)后端14,它具有某些高速存儲器以及比較慢但卻更經(jīng)濟(jì)的設(shè)備,例如磁帶備份30和光驅(qū)動器28。其他歸檔設(shè)備可以附屬于存儲系統(tǒng)14。并且使用后端14來保存那些很少存取的數(shù)據(jù),由此減少了對于昂貴的快速存儲空間的需要。
后端14可以作為主計(jì)算機(jī)系統(tǒng)12的一部分來實(shí)施,以使后端14的存儲設(shè)備附屬于主計(jì)算機(jī)系統(tǒng)12。盡管所公開的實(shí)施例描述了分別用于前端12和后端14的獨(dú)立的主要和輔助計(jì)算機(jī)系統(tǒng),但是獨(dú)立的輔助計(jì)算機(jī)系統(tǒng)并不是實(shí)施本發(fā)明所必需的。
這里描述的主計(jì)算機(jī)系統(tǒng)符合如下的系統(tǒng)管理規(guī)范由開放組織(先前的X/Open)出版,ISBN號為UK ISBN 1-85912-190-X并且文檔編號為C429的Data Storage Management(XDSM)API,其公開在此引入作為參考。該文檔可以從http//www.opengroup.org在線獲取,其中闡述了用于那些依從數(shù)據(jù)管理API(DMAPI)的應(yīng)用程序的規(guī)范。如果還有其他操作系統(tǒng)支持這里描述的數(shù)據(jù)管理功能,那么也可以使用這些操作系統(tǒng)。
在UNIX或LINUX系統(tǒng)中,操作系統(tǒng)使用i節(jié)點(diǎn)來保存標(biāo)準(zhǔn)的文件系統(tǒng)信息,例如大小、所有權(quán)、日期和權(quán)限。如XDSM規(guī)范所規(guī)定的那樣,i節(jié)點(diǎn)還用于保存一個與DMAPI擴(kuò)展數(shù)據(jù)的鏈接,其中包含了擴(kuò)展屬性/元數(shù)據(jù)以及區(qū)域信息。在一個實(shí)施例中,DMAPI擴(kuò)展數(shù)據(jù)優(yōu)選保存在一個名為DMATTR的DMAPI擴(kuò)展數(shù)據(jù)文件60中。DMAPI擴(kuò)展數(shù)據(jù)文件60可以是前端12或后端14保存的單個文件,也可以跨越前端12或者后端14保存的若干文件。在前端12中的存儲器提供了更快速存取,如同在存儲器中進(jìn)行高速緩存。圖3顯示了文件系統(tǒng)16中的i節(jié)點(diǎn)62與DMAPI擴(kuò)展數(shù)據(jù)文件60之間的邏輯關(guān)系。應(yīng)該理解的是,盡管在這里將這些單元顯示為集中在一起,但這未必反映了其在磁盤上的物理位置。如圖3所示,DMAPI擴(kuò)展數(shù)據(jù)文件60可以作為擴(kuò)展屬性和區(qū)域的表格來實(shí)現(xiàn),并且是以i節(jié)點(diǎn)的編號作為索引的。如圖4所示,另一種布局是使每一個i節(jié)點(diǎn)62都指向自己的擴(kuò)展塊64。通過在DMATTR文件60中保存DMAPI信息,可以在不必讀取其i節(jié)點(diǎn)62和DMAPI擴(kuò)展塊64的情況下讀取文件的DMAPI信息,這在核對多個文件的時候非常有利。此外該信息也可作為文件系統(tǒng)16的一部分而加以保存,這與i節(jié)點(diǎn)信息的保存方式相似。
擴(kuò)展屬性被用于記錄諸如是否遷移文件和是否清除文件這類信息,以及以目錄路徑形式的與后端14上的容器文件76的鏈接、對象ID等等。區(qū)域信息包含了關(guān)于文件分段的信息,例如本地是否存在分段中的數(shù)據(jù),是否數(shù)據(jù)為臟并且需要遷移,此外區(qū)域信息還包含了相應(yīng)的本地文件中的數(shù)據(jù)位置。在這里可以使用標(biāo)志并且可以用偏移和長度信息來指示本地文件中的數(shù)據(jù)位置。區(qū)域信息可以包括一個字段,它規(guī)定了當(dāng)在所映射的文件區(qū)域中存取或改變數(shù)據(jù)時產(chǎn)生的事件集合;例如dm_region_read,dm_region_write,dm_region_truncate。此外還可以設(shè)定所述標(biāo)志,以便指示數(shù)據(jù)是固有的還是臟的,以及是否需要重新遷移。如果分段是被動態(tài)地定大小的,那么也可以保持分段大小信息。在存取數(shù)據(jù)的時候,由于使用了區(qū)域信息來記錄數(shù)據(jù)位置,因此可以增加映射一個文件的區(qū)域數(shù)目。
如圖5所示,在將文件72遷移到后端14的時候,所述文件劃分成多個分段70。分段70的大小可以是固定的,也可以是動態(tài)變化的。固定分段的分段大小可以由文件系統(tǒng)中保存的結(jié)構(gòu)或環(huán)境變量來限定。然而也可以根據(jù)文件系統(tǒng)特征、文件大小以及數(shù)據(jù)存取模式來選擇分段大小。分段大小不應(yīng)該太大,因?yàn)檩^大的分段大小會產(chǎn)生更多的等待時間和較高的帶寬使用,并且在后端14中將會占用更多空間來進(jìn)行版本控制。另一方面,太小的分段大小會因?yàn)榇嬖诟嘈枰幚淼姆侄味黾觾?nèi)務(wù)處理的需要。對大型數(shù)據(jù)庫而言,可以使用大小為100兆字節(jié)(MB)的分段大小。因此,舉例來說,一個2GB的文件劃分成20個用于后端14的100MB分段。在一種實(shí)施方式中,所述系統(tǒng)被用于一個Oracle數(shù)據(jù)庫,它具有9840個用于后端14的磁帶和16個大小為128MB的分段。某些影響到分段大小的因素包括需要數(shù)據(jù)的應(yīng)用程序的存取模式、后端14與前端12之間的數(shù)據(jù)傳送速度、在后端14中用于數(shù)據(jù)傳送的歸檔介質(zhì)速度以及后端14介質(zhì)等待時間。具有較慢定位時間的后端介質(zhì)(例如磁帶30)有利于較大的分段大小。
通過對文件72進(jìn)行分割,所述系統(tǒng)能在較小的部分70中移動數(shù)據(jù)。如果一個應(yīng)用請求從2GB的文件中只存取一小部分?jǐn)?shù)據(jù),那么,即使這部分?jǐn)?shù)據(jù)不在本地文件系統(tǒng)上,也只需要對包含該數(shù)據(jù)的某個100MB分段進(jìn)行檢索,進(jìn)而對所述數(shù)據(jù)進(jìn)行存取。這樣將會減少等待時間,因?yàn)橐苿訑?shù)據(jù)需要的時間要小得多,此外還因?yàn)橐苿虞^少量數(shù)據(jù)而減少了帶寬使用。同樣,如果隨后僅僅修改一小部分?jǐn)?shù)據(jù)文件72,那么只有包含了經(jīng)過修改的數(shù)據(jù)部分的分段70才需要遷移到后端14。
如圖6所示,其中對主計(jì)算機(jī)系統(tǒng)進(jìn)行配置,以便在操作中包含三個守護(hù)進(jìn)程,即事件守護(hù)進(jìn)程dxdbmigd 80、遷移守護(hù)進(jìn)程dxdbmigwatch 82以及清除守護(hù)進(jìn)程dxdbpurgewatch 84。但是也可以使用任意數(shù)量的守護(hù)進(jìn)程,其中只包括一個線程化的守護(hù)進(jìn)程,此外還可以使用守護(hù)進(jìn)程之外的其他方法。例如,視窗系統(tǒng)可以使用系統(tǒng)代理和服務(wù)。事件守護(hù)進(jìn)程80捕獲的是訪問文件數(shù)據(jù)的時間。如果所請求的數(shù)據(jù)不在前端12的本地文件系統(tǒng)16上,那么事件守護(hù)進(jìn)程80會把來自后端14的數(shù)據(jù)拷貝到本地文件系統(tǒng)16,然后進(jìn)行數(shù)據(jù)存取。遷移守護(hù)進(jìn)程82尋找那些其數(shù)據(jù)需要從前端12遷移到后端14的文件。一旦它識別了其數(shù)據(jù)需要遷移的文件,則它會將數(shù)據(jù)從前端12拷貝到后端14。清除守護(hù)進(jìn)程84尋找其數(shù)據(jù)不再為本地文件系統(tǒng)16所需要的文件,并且清除不需要的數(shù)據(jù)。由于這里描述的有效搜索遷移和清除候選者允許以很低費(fèi)用來查找遷移和清除候選者,從而可以將遷移和清除守護(hù)進(jìn)程82和84配置成以例如5分鐘的時間間隔來周期性地運(yùn)行。
參考圖8中的步驟100,遷移守護(hù)進(jìn)程82(或者線程化的單個守護(hù)進(jìn)程)使用DMATTR文件60中保存的屬性信息來確定是否需要遷移文件,但是如這里所述,所述進(jìn)程也可以使用擴(kuò)展塊64中保存的屬性信息來確定是否需要遷移文件。如果以前沒有遷移過文件72,那么該文件將會劃分成若干個分段70,這些分段可以具有固定或動態(tài)確定的大小。分段大小可以基于如下因素而被動態(tài)確定,例如數(shù)據(jù)存取頻率,每次存取時讀取的連續(xù)數(shù)據(jù)的量以及其他存取模式信息。遷移守護(hù)進(jìn)程82還可以派生出處理不同任務(wù)的其他進(jìn)程。并且在遷移之前的處理、數(shù)據(jù)遷移期間或是檢查文件是否在遷移中發(fā)生變化的時候(如果文件變化了,則舍棄當(dāng)前遷移并且嘗試下一次遷移),可以使用信號量、文件鎖和其他方法來保護(hù)文件。
在步驟102,遷移進(jìn)程以獨(dú)占形式鎖定文件,在步驟104,該進(jìn)程讀取屬性和區(qū)域信息,并且在步驟106中確定是否需要遷移文件。如果不需要遷移,則在步驟108中撤銷鎖定。否則在步驟110中使用區(qū)域信息、文件大小和分段大小來確定需要遷移的文件部分。在步驟112,如果以前遷移過文件,那么存在一個容器文件76,其中包含了描述先前遷移的信息,并且通過讀取這個文件來確定文件的新版本號。如果從未遷移過文件,則將版本號假設(shè)為1。只有新數(shù)據(jù)或是在上次遷移之后發(fā)生過變化的數(shù)據(jù)才會遷移到后端14。在步驟114,數(shù)據(jù)是依照分段大小來分割的,其中分段大小既可以是固定的也可以是動態(tài)的。在步驟116中將會撤銷鎖定,以使其他使用了所述文件的進(jìn)程能在遷移的時候繼續(xù)進(jìn)行。
在步驟120,在并未改變前端12上的文件存取時間的情況下,需要遷移的分段70將被拷貝到后端14。如果遷移過程中出錯,則在步驟124中將會在執(zhí)行下一次遷移時重新嘗試進(jìn)行遷移。如果遷移成功,則在步驟126中再次鎖定文件,此外還會在步驟128中再次讀取文件屬性和區(qū)域信息,并且使用這些信息來判定是否在數(shù)據(jù)移動中改變了文件。如果改變了文件,則在步驟132中撤銷鎖定,由于數(shù)據(jù)可能不一致,因此在步驟124,所述遷移失敗并且稍后將會再次嘗試。如果在數(shù)據(jù)傳送中并未改變文件,則在步驟134中通過更新文件信息來顯示成功遷移了文件。并且還會更新擴(kuò)展屬性(例如DMAPI/XDSM)和區(qū)域信息,而包括路徑名、大小、所有者、權(quán)限以及其他文件屬性在內(nèi)的文件相關(guān)信息則寫入到一個與數(shù)據(jù)文件相關(guān)聯(lián)的名為*.cont文件的容器文件76。此外,寫入容器文件76的信息還包含了與后端14保存的分段有關(guān)的信息,其中包括版本控制信息。
文件狀態(tài)必須按照指定順序更新,以便確保一致性。在圖9中,在步驟140,通過設(shè)定屬性來顯示并未清除文件,此外還設(shè)定了文件分段大小(如果必要)和后端14的文件位置,并且在步驟142中將信息直寫到文件系統(tǒng)16中。由此確保能在發(fā)生崩潰的情況下在文件中存在足夠信息,從而可以通過前滾到新狀態(tài)或是后退到先前狀態(tài)來存取文件。在步驟144,新版本的*.cont文件76是以一種確保*.cont文件76包含文件舊狀態(tài)和新狀態(tài)的方式寫入的。在步驟146,區(qū)域信息直寫入DMAPI/XDSM接口,由此顯示所有數(shù)據(jù)文件都已成功遷移到后端14,然后在步驟148中對.DMATTR文件60進(jìn)行同步(將沒有完成的信息寫入磁盤)。如果失敗了,則舊的區(qū)域信息仍然有效,因此可以在以后的遷移嘗試中繼續(xù)進(jìn)行未來的遷移。在步驟150中對DMAPI/XDSM屬性進(jìn)行更新,以便將文件標(biāo)記為正在遷移。這其中包括對元數(shù)據(jù)進(jìn)行設(shè)定,以便顯示數(shù)據(jù)在后端14中的存儲位置和遷移時間,并且將文件標(biāo)記成正在遷移。而元數(shù)據(jù)則以這樣一種方式寫入,即其中任何時間的故障都會使文件處于一致狀態(tài)。
這樣能夠防止發(fā)生故障時引發(fā)的數(shù)據(jù)損壞,并且防止文件處于一種允許存取那些有可能無效的文件數(shù)據(jù)的狀態(tài)。如果必要的話,區(qū)域信息中保存的狀態(tài)、文件元數(shù)據(jù)以及后端版本文件(*.cont文件)足以在清除之后還原所述文件,但也可以在本地管理的磁盤丟失或無意移動了文件的情況下恢復(fù)所述文件。
各個數(shù)據(jù)文件72可以具有一個相關(guān)的*.cont文件76,但也可以將用于多個數(shù)據(jù)文件的*.cont信息存入單個容器文件,所述文件可以用數(shù)據(jù)文件名或諸如對象ID這樣的其他標(biāo)識符作為索引。如果先前遷移過文件,則對.DMATTR文件60中的區(qū)域信息進(jìn)行檢查,以便確定哪些分段是臟的;也就是確定在上次遷移以后修改過哪些分段。經(jīng)過修改的分段拷貝至后端14并且可以對其進(jìn)行版本控制,使之不會改變分段的現(xiàn)有拷貝。如圖7所示,*.cont文件76記錄了所述版本。
舉例來說,如果*.cont文件76指示后端14已經(jīng)存在一個分段版本54,則在沒有改變或改寫版本54的情況下將這個經(jīng)過修改的分段作為版本55來寫入,并且通過更新*.cont文件76來反映這個操作。實(shí)際上,*.cont文件記錄了文件增量。由于所述文件存在于任何時間點(diǎn),因此它具有恢復(fù)相關(guān)文件所需要的信息,并且由于*.cont文件76在任何特定日期和時間都有效保持了快照,因此可能確定數(shù)據(jù)文件72看起來像什么。在結(jié)束遷移之后(例如將遷移的數(shù)據(jù)成功寫入磁帶的時候),關(guān)于新遷移分段的信息保存在容器文件76中。此外還會通過更新.DMATTR文件60來指示已經(jīng)遷移了所述文件,如果第一次遷移文件,則會更新與后端14中的容器文件的鏈接。如果遷移的是經(jīng)過修改的分段,則對區(qū)域信息進(jìn)行更新,從而顯示所述分段不再是臟的,并且由此不再需要遷移所述分段。因此,在前端12的文件與其在后端14上的分段之間存在鏈接,該鏈接保存在.DMATTR文件60和*.cont文件76中。
為了描述遷移,如果在前端12上存在一個以前沒有遷移過的稱作ABC的數(shù)據(jù)文件,則在后端14為其選擇一個唯一路徑名,假設(shè)為123。ABC文件劃分成分段大小由對象管理系統(tǒng)結(jié)構(gòu)確定的分段。這些分段拷貝至后端14,以便作為指示唯一路徑名、分段編號和版本號的各個文件,例如123.partition1.version1,123.partition2.version1,直到123.partitionN.version1。然后則寫入a123.cont文件,該文件描述的是遷移中已經(jīng)完成什么,其中包括本地文件系統(tǒng)16上的文件名、分段名以及分段版本。附加信息是在.DMATTR文件60中寫入本地文件系統(tǒng)16或文件系統(tǒng)中的其他位置的。盡管該信息也可位于其他位置,但是將其置于本地文件系統(tǒng)16上將會加速存取。此外還可以在前端12的存儲器中高速緩存.DMATTR文件60,但這需要頻繁同步高速緩存的文件以及磁盤上的文件,以便在發(fā)生崩潰的時候保持一致。所寫入的屬性包括一個已將文件ABC遷移至文件123的指示,指示遷移時間和文件所遷移位置的時戳,以及一個已經(jīng)成功將文件遷移至后端14的指示。
參考圖10,在步驟200,清除守護(hù)進(jìn)程84(或線程化的守護(hù)進(jìn)程)使用.DMATTR文件60中保存的屬性信息來識別那些已經(jīng)遷移(不再需要遷移)但卻并未清除的文件。清除守護(hù)進(jìn)程84可以在確定本地文件系統(tǒng)16需要自由空間之后再進(jìn)行這個操作,并且可以在有足夠自由空間可用的時候停止清除。實(shí)際上,在步驟202,清除候選者是根據(jù)清除策略而被排序的,其中所述策略可以由用戶進(jìn)行配置。并且可以將LRU(最近最少使用)用作清除策略,然而也可以基于文件系統(tǒng)16中保存的數(shù)據(jù)特征、使用文件系統(tǒng)16上的數(shù)據(jù)的應(yīng)用以及數(shù)據(jù)存取模式來選擇其他策略。這些策略可以在文件級或分段級上使用。清除守護(hù)進(jìn)程84可以使用擴(kuò)展屬性中的信息來確定文件中的分段的最后存取時間和存取頻率等等?;谇宄呗?,清除守護(hù)進(jìn)程84將分段標(biāo)識為將要清除。例如,清除守護(hù)進(jìn)程84可以使用一個LRU算法來對文件排序,然后在被選擇進(jìn)行清除的文件范圍內(nèi)選擇具有早于某個日期的最后訪問日期的分段。
在這里可以使用文件鎖、信號量或其它方法來防止數(shù)據(jù)丟失或損壞。在步驟204,在清除進(jìn)程編輯了一個清除候選者列表,并且在選擇了一個用于清除的文件之后,所述文件將被鎖定。在步驟206中將會讀取屬性和區(qū)域信息,并且在步驟208中對其進(jìn)行檢查,以便了解在編輯了文件之后是否存取過文件;即它是否仍是一個清除候選者。如果不是的話,則在步驟210中不清除文件并且撤銷鎖定。如果文件仍是一個清除候選者,則在步驟212中設(shè)定文件區(qū)域信息,以便顯示已經(jīng)清除了整個文件。在步驟214,清除守護(hù)進(jìn)程84從文件中消除對應(yīng)于選定分段的本地?cái)?shù)據(jù)。在一個依從DMAPI的系統(tǒng)中,清除守護(hù)進(jìn)程84使用dm_punch_hole()來消除本地?cái)?shù)據(jù)。根據(jù)操作系統(tǒng)性能,可以從一個相對文件末端的偏移那里截?cái)啾镜匚募?2,這對大多數(shù)操作系統(tǒng)而言都是很常見的,或者如ATX所規(guī)定的那樣,也可以在文件中間鑿孔。將要消除的數(shù)據(jù)有可能位于文件開端,在這種情況下將會留下一個存根74(如圖5所示)。
在消除了本地?cái)?shù)據(jù)之后,在步驟216中將會更新屬性和區(qū)域信息,以便反映數(shù)據(jù)的清除。區(qū)域信息表示實(shí)際清除的數(shù)據(jù)不會在本地文件系統(tǒng)16上出現(xiàn),如果清除了整個文件(除了存根74),那么所述屬性表示已經(jīng)清除了文件。如果殘留了文件的任何部分,則所述文件繼續(xù)成為一個清除候選者。在更新了文件元數(shù)據(jù)之后,在步驟218中將會消除文件鎖定。由此在系統(tǒng)崩潰或是發(fā)生其他故障的情況下保護(hù)文件。由于并未將其標(biāo)記為已清除,因此仍將文件視為一個清除候選者,但由于在清除操作前將其標(biāo)記為已清除,因此在存取文件時將會導(dǎo)致重新提交文件的所有部分。某些數(shù)據(jù)可能仍是本地?cái)?shù)據(jù),但如果在清除操作中出錯,則未必能夠斷定清除了哪些數(shù)據(jù)。因此,清除進(jìn)程將所有分段標(biāo)記成已清除,在結(jié)束清除之后,所述進(jìn)程更新區(qū)域信息,以便指示仍舊存在哪些分段。如果元數(shù)據(jù)更新失敗,則文件仍舊顯現(xiàn)為清除候選者,盡管它的某些或所有數(shù)據(jù)可能已從本地文件中清除。所描述的序列被用于防止數(shù)據(jù)損壞,但只要通過同步區(qū)域信息、文件數(shù)據(jù)刪除與文件元數(shù)據(jù)更新來確保一致性,那么其他方案也是可行的。由此避免文件處于一種可以存取過期數(shù)據(jù)的不一致狀態(tài)之中。
文件72通常在由應(yīng)用掃描的文件開端包含了報(bào)頭和其他頻繁使用的信息,并且在清除文件的時候,通過將存根74保留在適當(dāng)位置,可以加快數(shù)據(jù)存取時間。用戶可以基于如下信息來定義存根74的長度,例如文件72開端是否存在頻繁存取的信息以及對文件72開端的多少數(shù)據(jù)進(jìn)行過存取。舉例來說,Oracle數(shù)據(jù)庫可能需要至少128KB的存根大小,這是因?yàn)镺racle在例如啟動時間和Oracle存取各個Oracle數(shù)據(jù)文件的時候會頻繁訪問數(shù)據(jù)文件中的這個數(shù)據(jù)。如果存根數(shù)據(jù)不是固有的,那么Oracle將會停止,直到從后端14恢復(fù)所述數(shù)據(jù),這意味著多磁帶裝配(或者諸如CD之類的其他存儲介質(zhì)的裝配)。此外還可以對存根74進(jìn)行版本控制,并且將其作為文件或?qū)ο蟊4嬖诤蠖?4。
在圖11中,在步驟300,事件守護(hù)進(jìn)程80或線程化的守護(hù)進(jìn)程捕獲數(shù)據(jù)存取事件并且記錄數(shù)據(jù)存取活動。當(dāng)發(fā)出數(shù)據(jù)存取請求的時候,在步驟302,所述處理取決于數(shù)據(jù)存取究竟是讀取還是修改該文件(例如寫或者截?cái)?的存取。在步驟304,如果數(shù)據(jù)存取是一個讀取,則對.DMATTR文件60中的區(qū)域信息進(jìn)行檢查,以便確定所請求的數(shù)據(jù)是否存在于本地文件系統(tǒng)16之上;也就是說,是否區(qū)域信息顯示的是將對應(yīng)于正在存取的文件部分的分段標(biāo)記為存在。在步驟306,如果存在所請求的數(shù)據(jù),那么在步驟308,存取請求傳遞至文件系統(tǒng),并且在步驟324中通過更新文件屬性和區(qū)域信息來反映所述存取。如果不存在所請求的數(shù)據(jù),那么在步驟310,事件守護(hù)進(jìn)程80或是另一個從事件守護(hù)進(jìn)程80那里接收事件的進(jìn)程將會鎖定文件并且檢查區(qū)域和屬性信息,以便在步驟312中確定是否需要進(jìn)行處理。在步驟314,如果因?yàn)橄惹暗氖录幚矶恍枰M(jìn)行處理,則撤銷鎖定并為事件產(chǎn)生一個響應(yīng),所述響應(yīng)將會喚醒這個等待結(jié)束I/O請求的進(jìn)程。如果需要處理,則在步驟316中將文件標(biāo)記為可清除,并且對元數(shù)據(jù)進(jìn)行同步以及確定完成事件處理所需要的文件數(shù)據(jù),此外還會確定后端14的文件位置,讀取*.cont文件并撤銷文件鎖定。
在數(shù)據(jù)移動過程中并未鎖定文件,由此允許處理那些本地文件系統(tǒng)16固有的數(shù)據(jù)。在步驟318,從后端14讀取必要分段并將其寫入前端12的本地文件系統(tǒng)16。此外所述文件仍然是以獨(dú)占方式鎖定的;在步驟320中以一種一致方式來更新區(qū)域和屬性信息,并在步驟322中撤銷鎖定。在步驟314中則把一個響應(yīng)發(fā)送到正在等待的進(jìn)程,以便喚醒所述進(jìn)程,由此完成它的讀取請求。除非再次清除數(shù)據(jù),否則針對這個數(shù)據(jù)的未來存取是不會產(chǎn)生恢復(fù)事件的。
根據(jù)數(shù)據(jù)訪問模式,也可以使用某些預(yù)先的分段檢索;也就是說,可以記錄關(guān)于數(shù)據(jù)存取模式的信息,并且如果確定對于一個特定分段的存取頻繁地引起了對于另一個分段的存取,那么也可以預(yù)先檢索所述分段。
在步驟324,當(dāng)事件守護(hù)進(jìn)程80處理了數(shù)據(jù)存取事件之后,可以對.DMATTR文件60進(jìn)行更新,以便指示對應(yīng)于所存取文件部分的一個或多個分段的存取時間,例如清除策略在分段級使用數(shù)據(jù)存取信息的時間。所述系統(tǒng)還會更新文件屬性,以便指示文件存取時間。
如果存取請求是寫入,則在步驟326中通過修改區(qū)域來更新存取時間,并且將對應(yīng)于數(shù)據(jù)的分段標(biāo)記為臟(由此需要對其進(jìn)行遷移)。在這種情況下,在步驟328中以獨(dú)占形式鎖定文件并對事件進(jìn)行檢查,以便確定是否有必要進(jìn)行處理。如果沒必要處理,則在步驟330中撤銷鎖定并對事件做出響應(yīng),終止處理。如果有必要處理,則在步驟332中通過更新元數(shù)據(jù)來指示所述文件是一個清除候選者,并且由于要改變數(shù)據(jù),因此還會指示所述文件是一個遷移候選者。此外還會讀取文件元數(shù)據(jù)、區(qū)域信息以及*.cont文件,以便確定文件狀態(tài)。在步驟336中將會確定產(chǎn)生事件的文件區(qū)域,如果區(qū)域信息指示所述數(shù)據(jù)不在本地存在,則在步驟338撤銷鎖定并且以一種類似于上述讀取過程的方式來移動數(shù)據(jù)。如果數(shù)據(jù)是固有的,則不需要從后端14移動數(shù)據(jù)。在步驟340,在重新提交了數(shù)據(jù)之后,文件將會再次鎖定,并且將會更新文件元數(shù)據(jù)和區(qū)域信息,以便指示需要遷移文件中的某些數(shù)據(jù)以及改變了文件中的哪些部分。在步驟342中則會撤銷獨(dú)占性鎖定并且會將一個響應(yīng)發(fā)送到正在等待的進(jìn)程。
為了描述事件處理,除了長度由結(jié)構(gòu)限定的存根74之外,對N個分段都被遷移和清除的文件ABC來說,針對分段77中的數(shù)據(jù)的數(shù)據(jù)存取請求是由事件守護(hù)進(jìn)程80捕獲的。在圖12中描述了這種情況。所述守護(hù)進(jìn)程判定分段77中的數(shù)據(jù)不在本地文件系統(tǒng)16中存在,并且通過檢查.DMATTR文件60來確定后端14上的相應(yīng)容器文件是123.cont。在這里將會發(fā)布一個關(guān)于相應(yīng)后端文件123的分段77的請求。123.cont可以指示版本55是文件123的分段77的最新版本,由此將123.partition77.version55檢索到前端12。在將分段還原到磁盤之后,屬性和區(qū)域信息將會得到更新。
本系統(tǒng)通過遷移和檢索文件段而不是整個文件而避免了大量和耗時的文件傳送。舉例來說,數(shù)據(jù)庫文件趨向于很大并且以千兆字節(jié)來度量。而在遷移和檢索過程中來回移動整個文件是不切實(shí)際的,在諸如Oracle這樣的數(shù)據(jù)庫應(yīng)用可能只訪問很少一部分表格(例如行)的時候尤其如此。舉例來說,Oracle不會立刻掃描整個文件。而是,它會部分地掃描一個數(shù)據(jù)庫文件,然后繼續(xù)掃描另一個文件,依此類推,直到最終回到第一個文件并掃描更多的數(shù)據(jù)。而使用全文件檢索則會導(dǎo)致系統(tǒng)失效或是更長的檢索時間。
為了實(shí)現(xiàn)這里描述的文件分割和分段管理,所述系統(tǒng)還被配置成有效搜索遷移、清除候選者并獲取其路徑名,但這并不是必需的。如圖14所示,其中存在一種在名稱空間中搜索文件名并為每個文件查找i節(jié)點(diǎn)和擴(kuò)展屬性的方法。在某些結(jié)構(gòu)中,i節(jié)點(diǎn)包括一個指向包含了擴(kuò)展屬性的擴(kuò)展塊的指針,由此需要一個第二查找以及相應(yīng)的磁盤存取。在圖13和14所描述的一種更有效的方法中,在步驟350,系統(tǒng)關(guān)于文件名、i節(jié)點(diǎn)編號以及擴(kuò)展屬性來搜索DMAPI擴(kuò)展數(shù)據(jù)文件60(.DMATTR文件)。此外還可以將所述系統(tǒng)配置成使用一個不同的文件或是若干個文件。這樣一來,在步驟352,系統(tǒng)可以快速確定哪些文件是遷移或清除候選者,而不必在名稱空間中為各個文件查找i節(jié)點(diǎn)以及可能還有擴(kuò)展塊。為了產(chǎn)生用于一個候選者的路徑名,在步驟354中使用所述候選者的i節(jié)點(diǎn)編號來查找其路徑名。這可以利用一個在i節(jié)點(diǎn)和路徑名列表中的反向查找來實(shí)施。所述列表可以作為表格而被保存在同一個文件.DMATTR中,也可以保存在單獨(dú)的文件或文件組中。利用這種結(jié)構(gòu),系統(tǒng)僅僅是查找那些標(biāo)識為遷移和清除候選者的文件的i節(jié)點(diǎn),而不必檢查關(guān)于包含了已遷移和清除的那些文件在內(nèi)的所有文件的信息。由此顯著減少了遷移和清除所需要的執(zhí)行時間以及系統(tǒng)負(fù)載。例如,在確定需要遷移哪些文件的過程中,使用這里描述的有效搜索的系統(tǒng)可以在不到一分鐘的時間里對帶有一百萬個文件的文件系統(tǒng)進(jìn)行檢查,以便找出遷移和清除候選者。與先前使用名稱空間進(jìn)行搜索所花費(fèi)的20分鐘相比,對一個在一百萬個文件中只有一個遷移候選者的Solaris設(shè)備來說,它只要花費(fèi)十秒鐘時間就能找到這個文件。這種方法可以與NFS類型的文件系統(tǒng)、XFS、UFS、Veritas以及其他相似的文件系統(tǒng)結(jié)合使用,其使用Unix風(fēng)格的操作系統(tǒng),其中所述Unix風(fēng)格的操作系統(tǒng)可以是例如Linux和Solaris,但是也可以將所述方法擴(kuò)展到其他操作系統(tǒng)和文件系統(tǒng)。
如圖15和16所述,使用這里描述的容器文件76能使來自一個計(jì)算機(jī)系統(tǒng)(設(shè)備A)的數(shù)據(jù)可用于另一個計(jì)算機(jī)系統(tǒng)(設(shè)備B),而不需要首先對全部數(shù)據(jù)進(jìn)行拷貝(將一個文件系統(tǒng)的內(nèi)容復(fù)制到另一個系統(tǒng)通常是一個非常耗時的過程)。在步驟400,可以將設(shè)備B配置成使用處于后端14上的設(shè)備A的容器文件。每個容器文件76都包含了可以由設(shè)備B用來在其本地文件系統(tǒng)創(chuàng)建新文件的文件屬性信息,例如大小、所有者、權(quán)限和路徑。當(dāng)設(shè)備B在步驟402中讀取了*.cont文件之后,在步驟404中將會創(chuàng)建新的文件,并且在步驟406中把新文件的大小設(shè)定為*.cont文件76中指定的大小,以及在步驟408中釋放所分配的空間(就好像已經(jīng)清除了文件那樣),由此在設(shè)備B的文件系統(tǒng)上創(chuàng)建一個存根文件。在步驟410中創(chuàng)建了一個.DMATTR文件60或是其它擴(kuò)展數(shù)據(jù)塊或文件,并且還設(shè)定了屬性和區(qū)域。在步驟412中則將設(shè)備B獨(dú)有的容器(*.cont)文件寫入后端14,但是這也可以根據(jù)需要而在設(shè)備B修改數(shù)據(jù)并將其遷移到后端14的時候執(zhí)行。在步驟414,由于設(shè)備B的運(yùn)作,數(shù)據(jù)存取請求通常會產(chǎn)生一個所請求數(shù)據(jù)不在設(shè)備B的本地文件系統(tǒng)上的判定,并且會把需要的分段從后端14拷貝到設(shè)備B的本地文件系統(tǒng)。而在設(shè)備B上則使用已經(jīng)描述過的同一方式來更新文件屬性和區(qū)域信息。在步驟416,如果設(shè)備B修改了數(shù)據(jù),則將那些經(jīng)過修改的分段(顯示為圖16中的設(shè)備B的已修改數(shù)據(jù))寫入后端14并將關(guān)于變化的信息存入設(shè)備B的容器文件(顯示為*.cont)。在步驟418,設(shè)備A繼續(xù)寫入其自己的分段并且將關(guān)于其變化的信息保存在自己的容器文件76中。每一個計(jì)算機(jī)系統(tǒng)都把自己的已修改分段寫入后端14。每一個計(jì)算機(jī)系統(tǒng)使用的都是自己的容器文件,由此具有自己的數(shù)據(jù)版本。
前述公開和實(shí)施例論證了本發(fā)明在增加計(jì)算機(jī)系統(tǒng)中的對象管理效率方面的效用,但是很明顯,本發(fā)明對于許多其他應(yīng)用也是有益的。本發(fā)明在數(shù)據(jù)庫、視頻、音頻以及任何一個只存取文件一部分并且只有這部分文件相關(guān)而不需要訪問文件所有數(shù)據(jù)的應(yīng)用中都具有特殊價(jià)值。
為了清楚起見,這里的進(jìn)程和方法是結(jié)合特定的流來描述的,但是應(yīng)該理解,在不脫離本發(fā)明精神的情況下,其他序列也是可行的,并且可以并行執(zhí)行某些序列。此外還可以細(xì)分或組合步驟。如這里所公開的那樣,依照本發(fā)明編寫的軟件可以用計(jì)算機(jī)可讀介質(zhì)的形式保存,例如內(nèi)存或CD-ROM,但也可以在網(wǎng)絡(luò)上傳送并由處理器執(zhí)行。
這里引用的所有引證文獻(xiàn)意圖作為參考而被引入。盡管上文已經(jīng)依照特定實(shí)施例而對本發(fā)明進(jìn)行了描述,但是可以了解,對本領(lǐng)域技術(shù)人員來說,很明顯,針對本發(fā)明的變化和修改是顯而易見的,并且這些變化和修改可以在附加權(quán)利要求的范圍和等價(jià)物中得到實(shí)施。此外還可以通過例如并行使用多臺計(jì)算機(jī)或者均分負(fù)載方案并且還可以將任務(wù)分發(fā)到多臺計(jì)算機(jī),從而使用一臺以上的計(jì)算機(jī),以使它們能夠作為一個整體來執(zhí)行對象管理系統(tǒng)的功能,也就是用它們來替代單獨(dú)的計(jì)算機(jī)。上文描述的各種功能可以在單個計(jì)算機(jī)上由單個進(jìn)程或進(jìn)程組執(zhí)行,也可以分發(fā)到幾臺計(jì)算機(jī)。這些進(jìn)程可以調(diào)用其他進(jìn)程來處理某些任務(wù)。所公開的原則不但適用于對象和對象存儲,而且還適用于文件和文件系統(tǒng)。此外,所給出的實(shí)施例應(yīng)視為是說明性而不是限制性的,并且并未將本發(fā)明局限于這里給出的細(xì)節(jié)。因此,在這里意圖將本公開和所附權(quán)利要求理解為覆蓋了落入本發(fā)明真正精神和范圍的所有這類變化和修改。
權(quán)利要求
1.一種包含一個計(jì)算機(jī)系統(tǒng)的對象管理系統(tǒng),其中計(jì)算機(jī)系統(tǒng)被配置成保存一個對象,將這個對象劃分成分段,選擇分段,并且把選擇的分段提供給一個存儲設(shè)備,以便作為單獨(dú)的保存對象來加以保存。
2.如權(quán)利要求1所述的系統(tǒng),其中計(jì)算機(jī)系統(tǒng)被配置成只選擇所述分段中的一些分段。
3.如權(quán)利要求2所述的系統(tǒng),其中計(jì)算機(jī)系統(tǒng)被配置成通過確定需要將哪些分段遷移到存儲設(shè)備來選擇分段。
4.如權(quán)利要求3所述的系統(tǒng),其中計(jì)算機(jī)系統(tǒng)被配置成通過確定是否修改過分段來確定需要遷移哪些分段。
5.如權(quán)利要求4所述的系統(tǒng),還包括一個與對象相關(guān)聯(lián)的數(shù)據(jù)對象,其中數(shù)據(jù)對象包含關(guān)于是否修改過分段的信息。
6.如權(quán)利要求1所述的系統(tǒng),其中所述對象是文件。
7.如權(quán)利要求1所述的系統(tǒng),其中計(jì)算機(jī)系統(tǒng)還被配置成從存儲設(shè)備中檢索一個選擇的分段。
8.如權(quán)利要求7所述的系統(tǒng),其中計(jì)算機(jī)系統(tǒng)還被配置成接收一個數(shù)據(jù)存取請求,并且使用該數(shù)據(jù)存取請求來選擇要從存儲設(shè)備中檢索的分段。
9.如權(quán)利要求8所述的系統(tǒng),還包括一個與對象相關(guān)聯(lián)的數(shù)據(jù)對象,其中所述數(shù)據(jù)對象包含關(guān)于分段是否存在于計(jì)算機(jī)系統(tǒng)中的信息。
10.如權(quán)利要求9所述的系統(tǒng),其中如果數(shù)據(jù)對象指示分段不在于計(jì)算機(jī)系統(tǒng)中,則計(jì)算機(jī)系統(tǒng)選擇要從存儲設(shè)備中檢索的分段。
11.一種用于管理系統(tǒng)中的對象的方法,所述系統(tǒng)包括一個存儲設(shè)備和一個被配置成保存一個對象的計(jì)算機(jī)系統(tǒng),所述方法包括將對象劃分成分段,選擇分段,以及將選擇的分段提供給存儲設(shè)備,以便加以保存。
12.如權(quán)利要求11所述的方法,還包括接收一個數(shù)據(jù)存取請求,并且其中選擇要從存儲設(shè)備中檢索的分段包括使用所述數(shù)據(jù)存取請求來確定要選擇哪個分段。
13.一種用于管理系統(tǒng)中的對象的計(jì)算機(jī)程序產(chǎn)品,所述系統(tǒng)包括一個存儲設(shè)備和一個被配置成保存一個對象的計(jì)算機(jī)系統(tǒng),所述產(chǎn)品包括一個計(jì)算機(jī)可用介質(zhì),該介質(zhì)具有包含在其中的機(jī)器可讀代碼,用于將對象劃分成分段,選擇分段,以及將選擇的分段提供給存儲設(shè)備。
全文摘要
一種對象管理系統(tǒng),包括一個配置成保存一個對象(72)的計(jì)算機(jī)系統(tǒng),其中所述對象可以是一個文件。計(jì)算機(jī)系統(tǒng)被配置成將對象(72)劃分成分段(70),選擇分段,并且把選擇的分段提供給一個存儲設(shè)備(14),以便加以保存。在這里基于是否修改過分段來確定哪些分段需要遷移到設(shè)備,由此選擇所述分段。系統(tǒng)則是通過檢查一個與對象相關(guān)聯(lián)的數(shù)據(jù)對象來對此加以判定的。所述計(jì)算機(jī)系統(tǒng)可以被配置成從存儲設(shè)備中檢索一個選擇的分段。
文檔編號G06F17/30GK1556961SQ02818424
公開日2004年12月22日 申請日期2002年9月20日 優(yōu)先權(quán)日2001年9月26日
發(fā)明者馬克·薩克, 馬克 薩克, 魯夫, 理查德·魯夫, 埃弗森, 庫爾特·埃弗森 申請人:Emc公司