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