專利名稱:產(chǎn)生可擴展的文件系統(tǒng)元數(shù)據(jù)和文件系統(tǒng)內(nèi)容處理的系統(tǒng)和方法
技術領域:
本發(fā)明涉及計算機系統(tǒng),更具體地說,涉及基于文件的存儲系統(tǒng)。
背景技術:
計算機系統(tǒng)經(jīng)常處理大量的信息,包括應用數(shù)據(jù)和配置成處理這樣的數(shù)據(jù)的可執(zhí)行代碼。在眾多的實施例中,計算機系統(tǒng)提供各種配置成存儲數(shù)據(jù)的大容量存儲裝置,比如磁盤驅(qū)動器和光盤驅(qū)動器,磁帶驅(qū)動器等。為了提供常規(guī)并且系統(tǒng)的接口,通過所述接口訪問它們保存的數(shù)據(jù),這樣的存儲裝置經(jīng)常被軟件,比如操作系統(tǒng)組織成文件的分級結構。文件通常定義存儲裝置內(nèi),用戶能夠操作的數(shù)據(jù)粒度的最小級別,不過各種應用和操作系統(tǒng)可在比整個文件更低的粒度級別上處理文件內(nèi)的數(shù)據(jù)。
在一些基于文件的計算機系統(tǒng)中,除了文件本身之外,還可保存關于文件的各種信息,也稱為元數(shù)據(jù)。但是,在典型的常規(guī)計算機系統(tǒng)中,對元數(shù)據(jù)的支持局限于如果需要額外的文件信息,那么不會被增加的少量的固定類型的文件屬性。此外,訪問元數(shù)據(jù)的程序局限于識別給定文件,隨后取回其相關元數(shù)據(jù)的程序,而不是更靈活的程序。
另外,在復雜的計算環(huán)境中,可提供眾多的應用,每個應用可與文件和存儲裝置交互作用,從而實現(xiàn)特定的功能。在一些情況下,幾個應用中的每一個可被配置成執(zhí)行復雜的多步驟事務的一個特殊步驟。但是,這樣的應用相互交互作用或協(xié)調(diào)的能力有限,為了協(xié)調(diào)事務處理,在系統(tǒng)用戶一方,需要相當程度的干預。
發(fā)明內(nèi)容
公開了產(chǎn)生可擴展的文件系統(tǒng)元數(shù)據(jù)的系統(tǒng)和方法的各種實施例。在一個實施例中,系統(tǒng)可包括配置成保存數(shù)據(jù)的存儲裝置,和配置成管理對于存儲裝置的訪問,以及保存文件系統(tǒng)內(nèi)容的文件系統(tǒng)。文件系統(tǒng)還可被配置成檢測文件系統(tǒng)內(nèi)容訪問事件,并響應檢測文件系統(tǒng)內(nèi)容訪問事件,產(chǎn)生元數(shù)據(jù)記錄,按照可擴展的自描述數(shù)據(jù)格式保存元數(shù)據(jù)記錄。
在系統(tǒng)的一種具體實施方式
中,如下更詳細所述,檢測文件系統(tǒng)內(nèi)容訪問事件可帶內(nèi)執(zhí)行。在系統(tǒng)的另一種具體實施方式
中,可擴展的自描述數(shù)據(jù)格式可符合可擴展置標語言(XML)格式的版本。
另外還預期一種方法,在一個實施例中,所述方法包括保存文件系統(tǒng)內(nèi)容,檢測文件系統(tǒng)內(nèi)容訪問事件,響應檢測文件系統(tǒng)內(nèi)容訪問事件,產(chǎn)生元數(shù)據(jù)記錄,并按照可擴展的自描述數(shù)據(jù)格式保存該元數(shù)據(jù)記錄。
圖1是圖解說明存儲系統(tǒng)的一個實施例的方框圖。
圖2是圖解說明基于軟件的存儲系統(tǒng)體系結構的一個實施例及其與存儲裝置的接口的方框圖。
圖3是圖解說明存儲管理系統(tǒng)的一個實施例的方框圖。
圖4是圖解說明配置成保存文件和相關元數(shù)據(jù)的文件系統(tǒng)的一個圖5是圖解說明元數(shù)據(jù)產(chǎn)生方法的一個實施例的流程圖。
圖6是圖解說明內(nèi)容處理系統(tǒng)的一個實施例的方框圖。
圖7是圖解說明包括內(nèi)容處理系統(tǒng)的存儲系統(tǒng)的操作方法的一個圖8是圖解說明查詢系統(tǒng)的一個實施例的方框圖。
圖9是圖解說明包括查詢系統(tǒng)的存儲系統(tǒng)的操作方法的一個實施例的流程圖。
雖然本發(fā)明容許各種修改和備選形式,不過附圖中舉例表示了本發(fā)明的具體實施例,這里將具體描述這些實施例。但是,應明白附圖及其詳細說明并不意圖將本發(fā)明局限于公開的特定形式,相反,目的是覆蓋落入由附加的權利要求限定的本發(fā)明的精神和范圍內(nèi)的所有修改、等同物和替代物。
具體實施例方式
計算機系統(tǒng)概述現(xiàn)在參見圖1,圖中表示了計算機系統(tǒng)的一個實施例的方框圖。在圖解說明的實施例中,系統(tǒng)10包括通過系統(tǒng)互連40與多個存儲裝置30a和30b耦接的多個主機設備20a和20b。此外,在圖解說明的實施例中,主機設備20b包括系統(tǒng)存儲器25。為了便于引用,這里由跟有字母的附圖標記所指的部件將總體由附圖標記單獨表示。例如,主機設備20a和20b以及存儲裝置30a和30b可被總體稱為主機設備20和存儲裝置30。
在系統(tǒng)10的各個實施例中,主機設備20被配置成訪問保存在一個或多個存儲裝置30上的數(shù)據(jù)。在一個實施例中,系統(tǒng)10可在單一的計算機系統(tǒng)內(nèi)被實現(xiàn)成例如集成的存儲服務器。在這樣的實施例中,主機設備20可以是單獨的處理器,系統(tǒng)存儲器25可以是高速緩沖存儲器,例如靜態(tài)RAM(SRAM),存儲裝置30可以是大容量存儲裝置,比如硬盤驅(qū)動器或者其它可寫或可重寫的媒體,系統(tǒng)互連40可包括外圍總線互連,例如外設部件互連(PCI)總線。在一些這樣的實施例中,系統(tǒng)互連40可包括主機設備20和存儲裝置30之間的幾種互連。例如,系統(tǒng)互連40可包括配置成耦接主機設備20的一個或多個處理器總線(未示出),配置成使處理器總線和一個或多個外圍總線耦接的一個或多個總線橋接器(未示出),和配置成使外圍總線與存儲裝置30耦接的一個或多個存儲裝置接口(未示出)。各個實施例中的存儲裝置接口類型可包括小型計算機系統(tǒng)接口(SCSI),AT附加包接口(ATAPI),火線,和/或通用串行總線(USB),不過包括其它接口類型的眾多的備選實施例也是可能的。
在單一計算機系統(tǒng)內(nèi)實現(xiàn)的系統(tǒng)10的一個實施例中,系統(tǒng)10可被配置成為一個或多個其它計算機系統(tǒng)(未示出)提供大多數(shù)數(shù)據(jù)存儲需求,并且可被配置成與這樣的其它計算機系統(tǒng)通信。在一個備選實施例中,系統(tǒng)10可被配置成分布式存儲系統(tǒng),例如存儲區(qū)域網(wǎng)(SAN)。在這樣的實施例中,主機設備20可以是單獨的計算機系統(tǒng),例如服務器系統(tǒng),系統(tǒng)存儲器25可由一種或多種動態(tài)RAM(DRAM)構成,存儲裝置30可以是均包括一個或多個硬盤驅(qū)動器或者其它類型的存儲器的獨立存儲節(jié)點,系統(tǒng)互連40可以是諸如以太網(wǎng)或光纖通道之類的通信網(wǎng)絡。系統(tǒng)10的分布式存儲配置可方便存儲系統(tǒng)容量,以及主機設備和存儲裝置之間的數(shù)據(jù)帶寬的按比例縮放。
在另一實施例中,系統(tǒng)10可被配置成混合存儲系統(tǒng),一些存儲裝置30作為一些主機設備20被集成到相同計算機系統(tǒng)內(nèi),而其它存儲裝置30被配置成通過網(wǎng)絡與其它主機設備20耦接的獨立設備。在這種混合存儲系統(tǒng)中,系統(tǒng)互連40可包含各種互連機構,例如上面說明的外圍總線和網(wǎng)絡互連。
注意雖然圖1中圖解說明了兩個主機設備20和兩個存儲裝置30,不過在備選實施例中,系統(tǒng)10可具有任意數(shù)目的每種這些設備。另外,在系統(tǒng)10的一些實施例中,在其它主機設備20或存儲裝置30中可以采用系統(tǒng)存儲器25的一個以上的實例。此外,在一些實施例中,給定的系統(tǒng)存儲器可存在于主機設備20和存儲裝置30之外,并且可直接與給定的主機設備20或存儲裝置30耦接,或者通過系統(tǒng)互連40與給定的主機設備20或存儲裝置30間接耦接。
在系統(tǒng)10的許多實施例中,一個或多個主機設備20可被配置成執(zhí)行程序指令和參考數(shù)據(jù),從而實現(xiàn)計算功能。在一些實施例中,系統(tǒng)存儲器25可以是配置成保存這樣的程序指令和數(shù)據(jù)的計算機可訪問媒體的一個實施例。但是,在其它實施例中,程序指令和/或數(shù)據(jù)可被接收、發(fā)送或保存在不同類型的計算機可訪問媒體上。一般來說,計算機可訪問媒體可包括作為存儲裝置30包括在系統(tǒng)10中的存儲媒體或存儲器媒體,例如磁性媒體或光學媒體,比如磁盤或CD-ROM。計算機可訪問媒體還可包括可作為系統(tǒng)存儲器25包括在系統(tǒng)10的一些實施例中的易失性或非易失性媒體,比如RAM(例如SDRAM、DDR SDRAM、RDRAM、SRAM等),ROM等。此外,計算機可訪問媒體可包括可作為系統(tǒng)互連40包括在系統(tǒng)10的一些實施例中的通過通信媒體,比如網(wǎng)絡和/或無線鏈路傳送的傳輸媒體或信號,比如電信號、電磁信號或數(shù)字信號。
在一些實施例中,保存在如上所述的計算機可訪問媒體內(nèi)的程序指令和數(shù)據(jù)可實現(xiàn)操作系統(tǒng),操作系統(tǒng)再提供各種應用的執(zhí)行環(huán)境。例如,給定的主機設備20可被配置成執(zhí)行一種版本的MicrosoftWindows操作系統(tǒng),Unix/Linux操作系統(tǒng),Apple Macintosh操作系統(tǒng),或者另一適當?shù)牟僮飨到y(tǒng)。另外,給定的主機設備可被配置成執(zhí)行應用,比如字處理器,web瀏覽器和/或服務器,電子郵件客戶機和/或服務器,和多媒體應用,以及其它許多可能的應用。
在給定主機設備20上運行期間,操作系統(tǒng)或給定的應用可產(chǎn)生從給定存儲裝置30裝入數(shù)據(jù)或者將數(shù)據(jù)保存到給定存儲裝置30的請求。例如,與操作系統(tǒng)或應用本身的多個部分對應的代碼可被保存在給定存儲裝置30上,從而響應所需操作系統(tǒng)例程或應用的調(diào)用,可取回對應的代碼以便執(zhí)行。類似地,操作系統(tǒng)或應用可產(chǎn)生待保存的數(shù)據(jù)。
在一些實施例中,保存在存儲裝置30上的數(shù)據(jù)的移動和處理可由基于軟件的存儲系統(tǒng)管理。圖2中圖解說明了一個這樣的實施例,圖2表示通過內(nèi)容感知存儲系統(tǒng)150與多個存儲裝置230A-C連接的應用層100。圖2內(nèi)圖解說明的一些模塊可被配置成按照用戶執(zhí)行模式或“用戶空間”運行,而其它一些模塊可被配置成按照內(nèi)核執(zhí)行模式或“內(nèi)核空間”運行。在圖解說明的實施例中,應用層100包括多個用戶空間軟件進程112A-C。每個進程通過多個應用編程接口(API)114A-C連接存儲系統(tǒng)150,以致每個進程112可訪問每個API114A-C。存儲系統(tǒng)150包括內(nèi)核空間存儲管理系統(tǒng)200,內(nèi)核空間存儲管理系統(tǒng)200被表示成通過API 114A與應用層100連接;用戶空間內(nèi)容處理系統(tǒng)300,用戶空間內(nèi)容處理系統(tǒng)300被表示成通過API114B與應用層100連接;和用戶空間查詢系統(tǒng)400,用戶空間查詢系統(tǒng)400被表示成通過API 114C與應用層100連接。在圖解說明的實施例中,存儲管理系統(tǒng)200還與存儲裝置230A-C連接。
預期在一些實施例中,可以實現(xiàn)任意數(shù)目的進程112和/或存儲裝置230。還預期在一些實施例中,處理系統(tǒng)300和/或查詢系統(tǒng)400的全部或者部分可在內(nèi)核空間中實現(xiàn),并且在一些實施例中,配置成在內(nèi)核空間中運行的進程可被配置成通過API 114或者專用于內(nèi)容空間進程的其它API,訪問存儲系統(tǒng)150。
在一個實施例中,每個進程112可對應于給定的用戶應用,并且每個進程112可被配置成通過對API 114的調(diào)用,訪問存儲裝置230A-C。API 114向進程112提供對存儲系統(tǒng)150的各個組件的訪問。例如,在一個實施例中,API 114可包括給定進程112可調(diào)用的由存儲系統(tǒng)150暴露的函數(shù)調(diào)用,而在其它實施例中,API 114可支持其它類型的進程間通信。在一個實施例中,存儲裝置230可作為圖1的存儲裝置30的例證。另外,在一個實施例中,存儲系統(tǒng)150的任意組件和/或任意進程112可被配置成作為保存在計算機可訪問媒體,比如圖1的系統(tǒng)存儲器25內(nèi)的程序指令和數(shù)據(jù),在一個或多個圖1的存儲裝置20上運行。
如下結合圖3-9的描述更詳細所述,存儲系統(tǒng)150可被配置成提供各種存儲相關服務。例如,在一個實施例中,存儲管理系統(tǒng)200可被配置成利用文件系統(tǒng)組織存儲裝置230保存的數(shù)據(jù),以致各種進程112可以分級文件的形式保存和操作數(shù)據(jù)。另外,存儲系統(tǒng)150可被配置成監(jiān)視訪問和/或操作保存的數(shù)據(jù)的操作,并產(chǎn)生這種操作的記錄。查詢系統(tǒng)400可被配置成向進程12提供接口,通過所述接口,查詢存儲裝置230保存的數(shù)據(jù),以及訪問這種數(shù)據(jù)的操作的記錄。最后,內(nèi)容處理系統(tǒng)300可被配置成監(jiān)視存儲管理系統(tǒng)200的活動,和創(chuàng)建這種活動的附加記錄。如下更詳細所述,內(nèi)容處理系統(tǒng)300還可被配置成響應檢測到這樣的活動,調(diào)用一個或多個應用,從而提供根據(jù)存儲管理系統(tǒng)200的活動,而不是直接根據(jù)應用層100的活動(例如,根據(jù)進程112的數(shù)據(jù)請求),發(fā)起內(nèi)容處理活動的機構。預期在存儲系統(tǒng)150的一些實施例中,在保留存儲管理系統(tǒng)200提供的服務的同時,內(nèi)容處理系統(tǒng)300,查詢系統(tǒng)400,或者這兩個系統(tǒng)可被省略。
存儲管理系統(tǒng)和文件系統(tǒng)如上所述,在一些實施例中,存儲管理系統(tǒng)200可提供將存儲裝置20提供的存儲空間組織成文件的數(shù)據(jù)結構和控制結構。在各個實施例中,數(shù)據(jù)結構可包括一個或多個表格,所述一個或多個表格被配置成保存信息,比如每個文件的身份,其在存儲裝置230內(nèi)的位置(例如對特定存儲裝置內(nèi)的特定物理位置的映射),以及關于每個文件的其它信息,如下更詳細所述。另外,在各個實施例中,控制結構可包括操作文件的可執(zhí)行例程,比如改變文件身份和修改文件內(nèi)容的函數(shù)調(diào)用。總的來說,這里可將這些數(shù)據(jù)結構和控制結構稱為文件系統(tǒng),由給定的文件系統(tǒng)實現(xiàn)的特定數(shù)據(jù)格式和協(xié)議可被稱為文件系統(tǒng)的格式。
在一些實施例中,文件系統(tǒng)可被集成到操作系統(tǒng)中,以致對保存在存儲裝置230上的數(shù)據(jù)的任何訪問由文件系統(tǒng)的控制結構和數(shù)據(jù)結構管理。不同的操作系統(tǒng)可實現(xiàn)利用不同格式的不同的本機文件系統(tǒng),但是在一些實施例中,給定的操作系統(tǒng)可包括支持多種不同的文件系統(tǒng)格式,包括其它操作系統(tǒng)特有的文件系統(tǒng)格式的文件系統(tǒng)。在這樣的實施例中,文件系統(tǒng)支持的各種文件系統(tǒng)格式被稱為本地文件系統(tǒng)。另外,在一些實施例中,可利用分層排列的多層功能,實現(xiàn)文件系統(tǒng),如圖3中所示。
圖3圖解說明存儲管理系統(tǒng)200的一個實施例。在圖解說明的實施例中,存儲管理系統(tǒng)包括配置成與一個或多個設備驅(qū)動器224連接的文件系統(tǒng)205,一個或多個設備驅(qū)動器224又被配置成與存儲裝置230連接。如在圖2的存儲系統(tǒng)150內(nèi)所示,存儲管理系統(tǒng)200的組件可被配置成在內(nèi)核空間中執(zhí)行;但是,預期在一些實施例中,存儲管理系統(tǒng)200的一些組件可被配置成在用戶空間中執(zhí)行。另外,在一個實施例中,存儲管理系統(tǒng)200的任意組件可被配置成作為保存在計算機可訪問媒體,比如圖1的系統(tǒng)存儲器25內(nèi)的程序指令和數(shù)據(jù),在圖1的一個或多個主機設備20上執(zhí)行。
如同關于圖1的系統(tǒng)10所述那樣,給定的主機設備20可和給定的存儲裝置30存在于不同的計算機系統(tǒng)上,并可通過網(wǎng)絡訪問該存儲裝置。類似地,就存儲管理系統(tǒng)200來說,在一個實施例中,給定的進程,比如進程112A可遠程執(zhí)行,并可通過網(wǎng)絡訪問存儲裝置230。在圖解說明的實施例中,文件系統(tǒng)205包括支持遠程進程對文件系統(tǒng)的訪問的網(wǎng)絡協(xié)議225。在一些實施例中,網(wǎng)絡協(xié)議225可包括對網(wǎng)絡文件系統(tǒng)(NFS)協(xié)議或者公用因特網(wǎng)文件系統(tǒng)(CIFS)協(xié)議的支持,不過預期可以采用任何適當?shù)木W(wǎng)絡協(xié)議,并且在一些實施例中可以支持多個這樣的協(xié)議。
文件系統(tǒng)205可被配置成支持多個本地文件系統(tǒng)。在圖解說明的實施例中,文件系統(tǒng)205包括VERITAS(VxFS)格式本地文件系統(tǒng)240A,Berkeley快速文件系統(tǒng)(FFS)格式本地文件系統(tǒng)240B,和專有(X)格式本地文件系統(tǒng)240X。但是,預期在一些實施例中,文件系統(tǒng)205可支持許多本地文件系統(tǒng)格式或者它們的組合。為了向各個本地文件系統(tǒng)240提供公共接口,文件系統(tǒng)205包括一個虛擬文件系統(tǒng)222。在一個實施例中,虛擬文件系統(tǒng)222可被配置成將源于進程112的文件系統(tǒng)操作轉(zhuǎn)換成適合于每個操作所針對的特定本地文件系統(tǒng)240的格式。另外,在圖解說明的實施例中,存儲管理系統(tǒng)200包括設備驅(qū)動器224,通過設備驅(qū)動器224,本地文件系統(tǒng)240可訪問存儲裝置230。設備驅(qū)動器224可實現(xiàn)特定于存儲裝置230采用的接口的類型的數(shù)據(jù)傳輸協(xié)議。例如,在一個實施例中,設備驅(qū)動器224可提供通過SCSI和ATAPI接口傳送數(shù)據(jù)的支持,不過在其它實施例中,設備驅(qū)動器224可支持其它類型的接口和它們的組合。
在圖解說明的實施例中,文件系統(tǒng)205還包括過濾驅(qū)動器221。在一些實施例中,過濾驅(qū)動器221可被配置成監(jiān)視進入文件系統(tǒng)205的每個操作,隨后檢測特定類型的操作,導致進行另外的操作或者改變檢測到的操作的行為。例如,在一個實施例中,過濾驅(qū)動器221可被配置成將多個寫操作組合成單一的寫操作,從而提高文件系統(tǒng)性能。在另一實施例中,過濾驅(qū)動器221可被配置成在檢測到對文件的寫操作之后,計算文件的簽名。在另一實施例中,過濾驅(qū)動器221可被配置成在檢測到對特定文件的某些類型的操作之后,保存與這些文件相關的信息,比如記錄,如下更詳細所述。預期在一些實施例中,過濾驅(qū)動器221可被配置成實現(xiàn)前述操作,包括未明確提及的其它過濾操作的一個或多個組合。
配置成當文件系統(tǒng)操作被請求或處理時,檢測文件系統(tǒng)操作的過濾驅(qū)動器221的一個實施例可被認為進行這種操作的“帶內(nèi)”檢測。另一方面,這樣的檢測可被認為是與所檢測的操作或事件的發(fā)生同步。在一些實施例中,響應操作的帶內(nèi)檢測而采取的處理動作可能影響該操作被如何完成。例如,文件讀取操作的帶內(nèi)檢測可能導致該操作的取消,如果該操作的發(fā)起者未被充分特許訪問所請求的文件。在一些實施例中,操作的帶內(nèi)檢測可能不會對操作本身的完成帶來任何影響,但是可能產(chǎn)生另外的操作,比如將檢測到的操作的發(fā)生記錄在元數(shù)據(jù)記錄中,如下所述。
相反,在文件系統(tǒng)操作或事件發(fā)生之后,可檢測文件系統(tǒng)操作或事件,以致可在所述操作或事件完成之后發(fā)生檢測。這樣的檢測可被稱為“帶外”檢測或者與所檢測的操作或事件異步。例如,用戶進程112可定期檢查文件以確定其長度。文件長度可能已在自用戶進程112最后一次檢查之來的任何時間發(fā)生變化,但是對于已改變文件長度的操作來說,所述檢查可以是帶外檢查。在一些情況下,帶外檢測可能不能檢測某些事件。參見前面的例子,自用戶進程112最后一次檢查以來,文件長度可能已變化多次,但是只有最后一次變化才能被檢測。
注意雖然可帶內(nèi)檢測操作或事件,不過響應這樣的檢測而采取的動作可在所檢測的操作完成之前或之后發(fā)生。參見前面的例子,在一個實施例中,修改所檢查文件的長度的每個操作中被帶內(nèi)檢測和記錄。用戶進程112可被配置成定期檢查記錄以確定文件長度。由于長度修改操作被帶內(nèi)檢測和記錄,因此用戶進程112可考慮每個這樣的操作,即使它可在這些操作發(fā)生之后這樣做。
注意過濾驅(qū)動器221是文件系統(tǒng)205的一部分,而不是用戶空間210內(nèi)的應用或進程。從而,過濾驅(qū)動器221可被配置成獨立于用戶空間210內(nèi)的應用和進程工作。另一方面或者除了上述之外,過濾驅(qū)動器221可被配置成響應從用戶空間210內(nèi)的應用或進程收到的請求執(zhí)行操作。
另外注意在一些實施例中,內(nèi)核空間220可包括產(chǎn)生對存儲裝置230的進程(未示出),該進程類似于用戶空間進程112。在這樣的實施例中,在內(nèi)核空間220中執(zhí)行的進程可被配置成按照為用戶空間進程112類似的方式,通過內(nèi)核模式API(未示出)訪問文件系統(tǒng)205。從而,在一些實施例中,對存儲裝置230的所有訪問可由文件系統(tǒng)205處理,與發(fā)起訪問操作的進程的類型或空間無關。
存儲管理系統(tǒng)200和文件系統(tǒng)205的眾多備選實施例是可能的。例如,文件系統(tǒng)205可支持不同數(shù)目和格式的本地文件系統(tǒng)240,或者可只支持單一的本地文件系統(tǒng)240。在一些實施例中,網(wǎng)絡協(xié)議225可被省略或者被集成到在文件系統(tǒng)205外的存儲管理系統(tǒng)200的一部分中。類似地,在一些實施例中,虛擬文件系統(tǒng)222可被省略或者禁用,例如如果只有單一的本地文件系統(tǒng)240在使用。另外,在一些實施例中,可在文件系統(tǒng)205的不同的一層中實現(xiàn)過濾驅(qū)動器221。例如,在一個實施例中,過濾驅(qū)動器221可被集成到虛擬文件系統(tǒng)222中,而在另一實施例中,過濾驅(qū)動器221的一個實例可在每個本地文件系統(tǒng)240中實現(xiàn)。
文件和元數(shù)據(jù)如上所述,文件系統(tǒng)205可被配置成管理對保存在存儲裝置230上的多個文件的訪問。在許多實施例中,每個保存的文件可具有由文件系統(tǒng)用于將每個文件與其它文件區(qū)分開的相關身份。在文件系統(tǒng)205的一個實施例中,文件的身份可以是文件名,所述文件名可包括諸如“filename.txt”之類的一串字符。但是,在實現(xiàn)文件分層結構,比如分層的文件夾或目錄的文件系統(tǒng)205的實施例中,文件分層結構的所有或部分可被包括在文件身份中。例如,名為“file1.txt”的給定文件可存在于目錄“smith”中,而目錄“smith”又存在于目錄“users”中。目錄“users”可存在于目錄“test1”中,目錄“test1”是文件系統(tǒng)205內(nèi)的頂級或根級別目錄。在一些實施例中,文件系統(tǒng)205可定義單一的“根目錄”來包括所有的根級別目錄,沒有任何更高級別的目錄包括該根目錄。在其它實施例中,多個頂級目錄可同時存在,以致沒有任何更同級別的目錄包括任何頂級目錄。給定文件位于其中的特定文件夾或目錄的名稱可被稱為給定文件的路徑或路徑名。
在實現(xiàn)文件分層結構的文件系統(tǒng)205的一些實施例中,通過在文件的路徑中列出每個目錄以及文件名,可規(guī)定給定文件的身份。參見上面給出的例子,名為“file1.txt”的文件的給定實例的身份可被規(guī)定為“/test1/users/smith/file1.txt”。注意在文件系統(tǒng)205的一些實施例中,文件名獨自不足以唯一地識別給定文件,而包括路徑信息的完全規(guī)定的文件身份足以唯一地識別給定文件。例如,可存在識別為“/test2/users/smith/file1.txt”的文件,雖然該文件與前面提及的文件共用相同的文件名,不過借助其路徑,該文件是清楚的。注意利用路徑和文件名信息表示給定文件身份的其它方法是可能的。例如,不同的字符可被用于對目錄/文件夾名稱和文件名定界,或者可按照不同的順序規(guī)定目標/文件夾名稱和文件名。
文件系統(tǒng)205管理的文件可保存采取許多編碼格式中的任意一種的應用數(shù)據(jù)或程序信息,這些應用數(shù)據(jù)或程序信息可被總稱為文件數(shù)據(jù)。例如,給定的文件可保存ASCII-編碼格式的純文本或者專有應用格式,例如特定的字處理器或者電子數(shù)據(jù)表編碼格式的數(shù)據(jù)。另外,給定文件可保存視頻或音頻數(shù)據(jù)或者二進制格式的可執(zhí)行程序指令。預期眾多的其它類型的數(shù)據(jù)和編碼格式,以及數(shù)據(jù)和編碼格式的組合可在作為文件數(shù)據(jù)的文件中使用。
除了如上所述管理對存儲裝置的訪問,保存在存儲裝置上的各個文件,以及這些文件中的文件數(shù)據(jù)之外,在一些實施例中,文件系統(tǒng)205可被配置成保存和一個或多個給定文件對應的信息,該信息可被稱為元數(shù)據(jù)。一般來說,元數(shù)據(jù)可包含與文件相關的任意類型的信息。在各個實施例中,元數(shù)據(jù)可包括諸如(但不限于)文件身份,大小,所有權和文件訪問許可之類的信息。元數(shù)據(jù)還可包括自由形式或者用戶定義的數(shù)據(jù),比如對應于文件系統(tǒng)操作的記錄,如下更詳細所述。在一些實施例中,包括元數(shù)據(jù)的信息可被預定義(即硬編碼)到文件系統(tǒng)205中,例如作為由文件系統(tǒng)205的賣方或集成者定義的一批元數(shù)據(jù)類型。在一些實施例中,文件系統(tǒng)205可被配置成在操作期間,產(chǎn)生新類型的元數(shù)據(jù)定義。在其它實施例中,在文件系統(tǒng)205之外的一個或多個應用進程112可定義將由文件系統(tǒng)205管理的新的元數(shù)據(jù),例如通過為此目的定義的API的實例。預期在一些實施例中可以采用定義元數(shù)據(jù)的這種技術的組合。無論如何定義的對應于文件的元數(shù)據(jù),以及文件的數(shù)據(jù)內(nèi)容可被總稱為文件系統(tǒng)內(nèi)容。
圖4圖解說明配置成保存文件和相關元數(shù)據(jù)的文件系統(tǒng)的一個實施例。圖4中所示的文件系統(tǒng)205的實施例可包括在圖3的實施例中圖解說明的那些部件;但是,為了清楚起見,這些部件中的一些未被示出。在圖解說明的實施例中,文件系統(tǒng)205包括過濾驅(qū)動器221,任意數(shù)目的文件250a-n,目錄255,與每個文件250a-n相關的相應的命名流260a-n,與目錄255相關的相應命名流260,和事件日志270。注意文件250a-n或命名流260a-n之一的類屬實例可被分別稱為文件250或命名流260,文件250a-n或命名流260a-n可分別被稱為文件250和命名流260。如上所述,文件250和命名流260可被總稱為文件系統(tǒng)內(nèi)容。在一些實施例中,目錄255也可被包括在文件系統(tǒng)內(nèi)容中。
文件250可代表由文件系統(tǒng)205管理的文件,在各個實施例中可被配置成保存如上所述的各種數(shù)據(jù)和程序指令。在文件系統(tǒng)205的分層實現(xiàn)中,一個或多個文件250可被包括在一個目錄255中(它也可被稱為文件夾)。在各個實施例中,可提供任意數(shù)目的目錄255,一些目錄25可被配置成分層包括其它目錄255以及文件250。在圖解說明的實施例中,每個文件250和目錄255具有對應的命名流260。每個命名流260可被配置成保存屬于其對應文件的元數(shù)據(jù)。注意文件250,目錄255和命名流260可被物理保存在一個或多個存儲裝置,例如圖2的存儲裝置230上。但是,為了便于舉例說明,文件250,目錄255和命名流260被表示成概念上駐留在文件系統(tǒng)205內(nèi)。另外,預期在一些實施例中,從元數(shù)據(jù)生成的觀點來看,目錄255類似于文件250,顯然在這樣的實施例中,在下面的討論中對文件250的引用也適用于目錄255。
在一些實施例中,過濾驅(qū)動器221可被配置成訪問保存在給定文件250中的文件數(shù)據(jù)。例如,過濾驅(qū)動器221可被配置成檢測文件系統(tǒng)205收到的讀取和/或?qū)懭氩僮?,并且作為響應,可導致從對應于接收的操作的給定文件250讀出文件數(shù)據(jù)或者將文件數(shù)據(jù)寫入給定文件250。在一些實施例中,過濾驅(qū)動器221可被配置成產(chǎn)生和給定文件250對應的帶內(nèi)元數(shù)據(jù),并將產(chǎn)生的元數(shù)據(jù)保存在對應的命名流260中。例如,當檢測到針對給定文件250的文件寫入操作時,過濾驅(qū)動器221可被配置成更新和給定文件250的最后修改時間對應的元數(shù)據(jù),并將更新的元數(shù)據(jù)保存在命名流260中。另外,在一些實施例中,過濾驅(qū)動器221可被配置成代表特定的應用,取回和給定文件對應的元數(shù)據(jù)。
可響應由圖2的進程112發(fā)起的各種文件系統(tǒng)活動,產(chǎn)生元數(shù)據(jù)。在一些實施例中,產(chǎn)生的元數(shù)據(jù)可包括任意復雜性的記錄。例如,在一個實施例中,過濾驅(qū)動器221可被配置成檢測各種文件處理操作,例如文件創(chuàng)建,刪除,重命名,和/或復制操作,以及文件讀取和寫入操作。在一些實施例中,可如上所述帶內(nèi)檢測這樣的操作。在檢測特定文件操作之后,過濾驅(qū)動器221可被配置成產(chǎn)生操作的記錄,并將記錄保存在適當?shù)拿?60中,作為該操作所針對的文件250的元數(shù)據(jù)。
更一般地,訪問文件系統(tǒng)內(nèi)容的任何方面的任何操作,比如文件數(shù)據(jù)或元數(shù)據(jù)的讀取或?qū)懭肟杀环Q為文件系統(tǒng)內(nèi)容訪問事件。在一個實施例中,過濾驅(qū)動器221可被配置成響應檢測到文件系統(tǒng)內(nèi)容訪問事件,產(chǎn)生元數(shù)據(jù)記錄。預期在一些實施例中,針對元數(shù)據(jù)的訪問事件可自己產(chǎn)生另外的元數(shù)據(jù)。如下更詳細所述,在圖解說明的實施例中,事件日志270可被配置成保存所檢測的文件系統(tǒng)內(nèi)容訪問事件的記錄,與響應事件檢測,是否將另外的元數(shù)據(jù)保存在特定的命名流260中無關。
在各個實施例中,保存的元數(shù)據(jù)記錄可包括和文件250及檢測的操作相關的各類信息,例如產(chǎn)生該操作的進程的身份,文件身份,文件類型,文件大小,文件所有者,和/或文件許可。在一個實施例中,記錄可包括表示文件250的內(nèi)容的文件簽名。文件簽名可以是所有或部分文件內(nèi)容的散列函數(shù),并且具有文件內(nèi)容方面的微小差異產(chǎn)生明顯不同的文件簽名的性質(zhì)。例如,文件簽名可以采用消息摘要5(MD5)算法,消息摘要5算法可為在內(nèi)容方面僅僅單一比特不同的文件產(chǎn)生不同的簽名,不過預期可以采用任何適當?shù)暮灻a(chǎn)生算法。記錄還可包括未明確列出的另外的信息。
在一個實施例中,在檢測特定的文件操作之后,可按照可包括數(shù)據(jù)字段以及描述相關數(shù)據(jù)字段的重要性的標記的格式,產(chǎn)生和保存由過濾驅(qū)動器221保存的元數(shù)據(jù)記錄。這樣的格式可被稱為“自描述”數(shù)據(jù)格式。例如,可利用類屬語法,由這樣的標記字段對元數(shù)據(jù)記錄內(nèi)的數(shù)據(jù)元素定界<descriptive_tag>data element</descriptive_tag>
其中“descriptive_tag”定界符可描述“data element”字段的某一方面,從而用于構成元數(shù)據(jù)記錄內(nèi)的各種數(shù)據(jù)元素。預期在各個實施例中,自描述數(shù)據(jù)格式可采用各種語法中的任意一種,所述各種語法可包括將標記和數(shù)據(jù)元素區(qū)分開的不同約定。
在一些實施例中,自描述數(shù)據(jù)格式也可以是可擴展的。即,可根據(jù)需要將數(shù)據(jù)格式擴展到包含額外的結構元素。例如,不可擴展的格式可規(guī)定固定的結構,數(shù)據(jù)元素必須符合該固定結構,例如,表格式行列數(shù)據(jù)格式或者其中標記字段的數(shù)目和類型是固定的格式。相反,在一個實施例中,可擴展的自描述數(shù)據(jù)格式可容許對數(shù)據(jù)定界和構成數(shù)據(jù)的任意數(shù)目的任意定義的標記。在另一實施例中,可擴展的自描述數(shù)據(jù)格式可容許用于規(guī)定給定數(shù)據(jù)元素的語法的修改。在一些實施例中,在數(shù)據(jù)正被產(chǎn)生和使用時,可擴展的自描述數(shù)據(jù)格式可由用戶和應用擴展。
在一個實施例中,可擴展置標語言(XML)格式,或者服從任何版本的XML的任何數(shù)據(jù)格式可被用作保存元數(shù)據(jù)記錄的可擴展的自描述格式,不過預期在其它實施例中,可以使用任何適當?shù)母袷?,包括不可擴展或自描述的格式。根據(jù)待記錄的所需元數(shù)據(jù),XML格式可容許記錄字段的任意定義。XML格式記錄的一個例如如下<record sequence="1">
<path>/test1/foo.pdf/</path>
<type>application/pdf/</type>
<user id=1598>username</user>
<group id=119>groupname</group>
<perm>rw-r--r--</perm>
<md5>d41d8cd98f00b204e9800998ecf8427e</md5>
<size>0</size>
</record>
在文件創(chuàng)建操作之后,這樣的記錄可被附到和具有文件身份“test1/foo.pdf”的文件(例如文件250a)相關的命名流(例如命名流260a)上。這種情況下,與“record sequence”字段相關的編號指示該記錄是與文件250a相關的第一記錄。“path”字段包括文件身份,“type”字段指示文件類型,在一個實施例中,它可由發(fā)出文件創(chuàng)建操作的進程提供,在其它實施例中,可根據(jù)文件名的擴展名,或者根據(jù)文件內(nèi)的報頭信息確定?!皍ser id”字段記錄與發(fā)出文件創(chuàng)建操作的進程相關的用戶的數(shù)字用戶id和文本用戶名稱,“group id”字段記錄該用戶的數(shù)字組id和文本組名稱。“perm”字段按照特定于文件系統(tǒng)205和/或操作系統(tǒng)的格式,記錄與文件250a相關的文件許可?!癿d5”字段記錄與文件內(nèi)容對應的MD5簽名,“size”字段以字節(jié)為單位記錄文件250a的長度。預期在備選實施例中,過濾驅(qū)動器221可保存與所檢測的操作對應的記錄,這里所述記錄包括更多或更少的字段,以及具有不同定義和內(nèi)容的字段。還預期在一些實施例中,過濾驅(qū)動器221可將從給定文件250讀取的數(shù)據(jù)封閉在XML格式內(nèi),以致對文件的讀取操作可返回XML數(shù)據(jù),而不管基本的文件數(shù)據(jù)格式。同樣地,在一些實施例中,過濾驅(qū)動器221可被配置成接收將被寫入給定文件250的XML格式數(shù)據(jù)。在這樣的實施例中,過濾驅(qū)動器221可被配置成在將文件數(shù)據(jù)寫入給定文件250之前,先消除XML格式化。
注意在一些實施例中,元數(shù)據(jù)可被保存在不同于命名流的結構中。例如,在一個實施例中,對應于一個或多個文件的元數(shù)據(jù)可被保存在呈數(shù)據(jù)庫格式或另一格式的另一文件中。另外,預期在一些實施例中,文件系統(tǒng)205的其它軟件模塊或組件可被配置成產(chǎn)生,保存和/或取回元數(shù)據(jù)。例如,過濾驅(qū)動器221的元數(shù)據(jù)例程可被包含到另一軟件模塊中,或者由另一軟件模塊復制。
在圖解說明的實施例中,文件系統(tǒng)205包括事件日志270。事件日志270可以是和命名流260類似的命名流;但是,與其與特定文件相關,倒不如事件日志270可直接與文件系統(tǒng)205相關。在一些實施例中,文件系統(tǒng)205可以只包括一個事件日志270,而在其它實施例中,可提供一個以上的事件日志270。例如,在包括如圖產(chǎn)2中所示的多個本地文件系統(tǒng)240的文件系統(tǒng)205的一個實施例中,可提供每個本地文件系統(tǒng)240一個歷史流。
在一些實施例中,過濾驅(qū)動器221可被配置成響應檢測文件系統(tǒng)操作或事件,將元數(shù)據(jù)記錄保存在事件日志270中。例如,針對特定文件250的讀取或?qū)懭氩僮骺杀粰z測,隨后過濾驅(qū)動器221可將表示該操作的記錄保存在事件日志270中。在一些實施例中,過濾驅(qū)動器221可被配置成將元數(shù)據(jù)記錄保存在事件日志270內(nèi),而不管對應的元數(shù)據(jù)記錄是否已被保存在命名流260中。在一些實施例中,事件日志270可起在文件系統(tǒng)205內(nèi)發(fā)生的所有檢測到的操作和事件的集中歷史的作用。
類似于保存在命名流260內(nèi)的記錄,在一個實施例中,可按照可擴展的自描述數(shù)據(jù)格式,比如可擴展置標語言(XML)格式產(chǎn)生事件日志270中由過濾驅(qū)動器221保存的記錄,不過預期在其它實施例中,可以使用任何適當?shù)母袷?。例如,在文件系統(tǒng)205的操作過程中,名為“/test1/foo.pdf”的給定文件250a可被創(chuàng)建、修改,隨后被重命名為文件250b“/test1/destination.pdf”。在一個實施例中,在重命名操作之后,事件日志270可包括下述例證記錄<record>
<op>create</op>
<path>/test1/foo.pdf</path>
</record>
<record>
<op>modify</op>
<path>/test1/foo.pdf</path>
</record>
<record>
<op>rename</op>
<path>/test1/destination.pdf</path>
<oldpath>/test1/foo.pdf</oldpath>
</record>
在本例中,每個記錄的<op>字段指示執(zhí)行的操作,而“path”字段指示處理的文件250a的文件身份。就文件重命名操作來說,“path”字段指示重命名操作的目的地文件250b的文件身份,“oldpath”字段指示源文件250a的文件身份。預期在備選實施例中,過濾驅(qū)動器221可將包括更多或更少字段,以及具有不同定義和內(nèi)容的字段的記錄保存在事件日志270內(nèi)。
在圖5中所示的流程圖中更一般地圖解說明了元數(shù)據(jù)產(chǎn)生的前述討論。參見圖1-圖5,操作始于方框500,在方框500中,文件系統(tǒng)內(nèi)容,例如文件數(shù)據(jù)或元數(shù)據(jù)被保存。在一個實施例中,文件系統(tǒng)內(nèi)容可包括文件數(shù)據(jù)和元數(shù)據(jù)。在保存文件系統(tǒng)內(nèi)容之后,檢測文件系統(tǒng)內(nèi)容訪問事件(方框502)。在一個實施例中,如上所述,過濾驅(qū)動器221可帶內(nèi)檢測文件系統(tǒng)內(nèi)容訪問事件。注意在一些實施例中,文件系統(tǒng)內(nèi)容的初始保存本身可以是可檢測的文件系統(tǒng)內(nèi)容訪問事件。例如,文件創(chuàng)建操作可以是可在步驟502中檢測的文件系統(tǒng)內(nèi)容訪問事件。
響應文件系統(tǒng)內(nèi)容訪問事件的檢測,產(chǎn)生元數(shù)據(jù)記錄(方框504)。例如,與訪問給定文件的操作有關的各種元數(shù)據(jù)元素可被集合,例如文件身份,文件所有權,產(chǎn)生訪問事件的進程的身份等。
在元數(shù)據(jù)記錄的產(chǎn)生之后,按照可擴展的自描述格式保存元數(shù)據(jù)記錄(方框506)。在一個實施例中,數(shù)據(jù)格式可符合一種版本的XML格式。在各個實施例中,元數(shù)據(jù)記錄可被保存在與給定文件相關的命名流中,例如命名流260之一中,或者被保存在諸如事件日志270之類的事件日志中。
內(nèi)容處理系統(tǒng)如上所述,在一些實施例中,存儲系統(tǒng)可被配置成響應各種檢測的文件系統(tǒng)操作或事件,產(chǎn)生帶內(nèi)元數(shù)據(jù)。在一些情況下,由于各種應用進程的執(zhí)行,可能發(fā)生這樣的操作或事件。例如,給定的應用可使文件按照各種方式中的任意一種被處理(例如打開,關閉,讀取,寫入,復制,重命名或者任何其它類型的文件活動),對于所述各種方式可產(chǎn)生對應的元數(shù)據(jù)記錄。在這樣的實施例中,所得到的元數(shù)據(jù)記錄能夠?qū)崿F(xiàn)由給定的應用或進程產(chǎn)生的文件系統(tǒng)活動的系統(tǒng)跟蹤,可按照任意專一程度進行這樣的跟蹤,并且對于應用來說,這樣的跟蹤可以是透明的。
在一些實例中,眾多的應用可與作為復雜,異質(zhì)的數(shù)據(jù)處理系統(tǒng)一部分的存儲系統(tǒng)150交互作用。例如,企業(yè)可使用數(shù)據(jù)庫應用來管理庫存和生產(chǎn),使用會計應用來跟蹤賬單和收據(jù),使用財務應用來產(chǎn)生季報,使用人力資源應用來識別個人詳情。在各個實施例中,可提供另外的或者不同的應用。
這些應用中的一些可以是多個版本的相同應用(例如,會計和財務可使用共同的或者相關的應用),或者它們可以是緊密耦接的應用,即,例如通過共用公共API,它們可知曉彼此的存在和數(shù)據(jù),通過所述公共API,它們可直接通信和協(xié)調(diào)。例如,當處理賬單時,會計應用可直接通知財務應用更新預算。其它應用可由不同的賣方提供,并且可以松散地耦接,即,它們共用公共的數(shù)據(jù)格式,但是擁有的直接通信和協(xié)調(diào)彼此的操作的能力有限。例如,財務應用能夠響應用戶的干預,輸入由人力資源應用產(chǎn)生的薪水和津貼信息,但是在沒有這種干預的情況下,不能直接請求和接收這樣的信息。最后,在一些情況下,一些應用可能完全不兼容,缺少共享數(shù)據(jù)或者直接交互作用的能力。
某些復雜的企業(yè)操作可能不只涉及一個應用,而是涉及幾個應用,不是所有的這些應用都可緊密耦接。這樣的操作(可被稱為事務)可包括將按照特定的順序或者響應特定的事件,由一個或多個應用采取的一系列操作。構成事務的所述一系列操作也可被稱為由事務實現(xiàn)的進程或程序,并且可按照可用的各種應用的能力任意定義。
根據(jù)單一組成應用的活動,事務的狀態(tài)可能不明顯;相反,事務可以是和關于定義所述事務的進程的信息聯(lián)系在一起的所有相關應用的活動的功能。例如,根據(jù)在給定企業(yè)中定義的程序,定購單的處理涉及幾個步驟。定購單首先被輸入,例如通過專用應用或者電子郵件接口。一旦被輸入,就可確認請求者的身份和權限,例如通過利用人力資源應用核實請求者是具有適當簽字權限的雇員。隨后,可得到財務批準,這可包括使用財務應用來核實請求在請求該定購單的個人或組織的預算內(nèi)。根據(jù)這些步驟的結果和企業(yè)政策的復雜性,可獲得另外的核實,比如管理人員批準。當所有要求被滿足時,定購單可被傳送給賣方,完成定購單事務處理。
當處理文件系統(tǒng)內(nèi)容時,支持復雜事務的任何應用可在存儲系統(tǒng)150內(nèi)產(chǎn)生活動。如上所述,響應這樣的活動可產(chǎn)生文件系統(tǒng)內(nèi)容,包括文件數(shù)據(jù)和/或?qū)谠摶顒拥脑獢?shù)據(jù)記錄。但是,如前所述,在一些情況下,從給定應用的活動來看,給定事務通過它的規(guī)定進程的進展可能不如在對應于其活動的文件系統(tǒng)內(nèi)容中所反映的那樣明顯。例如,人力資源應用可反映個人數(shù)據(jù),但是不反映預算數(shù)據(jù)。從而,查詢?nèi)肆Y源應用會導致對于特定進貨,給定個人具有適當簽名權限的核實,該查詢的結果可在文件系統(tǒng)內(nèi)容中顯示出。但是,人力資源應用不能確定是否存在足夠的進貨預算。事實上,在一些情況下,任何給定的應用,例如人力資源應用一般不知曉適合于其操作的更寬的事務環(huán)境。即,應用不能區(qū)分給定的查詢是否是可能跨越多個應用的給定事務的進程的一部分。
配置可能參于給定事務的每個應用,以便能夠直接與其它應用交互作用是困難或者不切實際的。例如,如果外部供應商固定了一個或多個應用的功能,那么不可能進行這樣的配置。在圖2中圖解說明的實施例中,存儲系統(tǒng)150包括內(nèi)容處理系統(tǒng)300,在各個實施例中,內(nèi)容處理系統(tǒng)300可被配置成監(jiān)視存儲管理系統(tǒng)200保存的文件系統(tǒng)內(nèi)容,根據(jù)這樣的監(jiān)視產(chǎn)生另外的元數(shù)據(jù),和響應這樣的監(jiān)視調(diào)用應用。在一些實施例中,內(nèi)容處理系統(tǒng)300可被配置成協(xié)調(diào)或監(jiān)視其組成應用可能未知的復雜事務。
圖6中表示了內(nèi)容處理系統(tǒng)300的一個實施例。在圖解說明的實施例中,連同圖4中圖解說明的文件系統(tǒng)205的實施例一起表示了內(nèi)容處理系統(tǒng)300。內(nèi)容處理系統(tǒng)300包括配置成與多個內(nèi)容類型專用處理器330a-c(也可被簡稱為內(nèi)容處理器330)交互作用的一個內(nèi)容處理后臺駐留程序320。內(nèi)容處理后臺駐留程序320還被配置成與文件系統(tǒng)205的文件250,命名流260和事件日志270交互作用。另外,在包括查詢系統(tǒng)的存儲系統(tǒng)150的實施例中,內(nèi)容處理后臺駐留程序320可被配置成與這樣的查詢系統(tǒng),例如查詢系統(tǒng)400交互作用。
在圖解說明的實施例中,內(nèi)容處理后臺駐留程序320可被配置成進行已由過濾驅(qū)動器221帶內(nèi)檢測和記錄的操作和事件的帶外檢測。例如,內(nèi)容處理后臺駐留程序320可偶爾掃描事件日志270,以確定自從最后一次掃描以來,發(fā)生了什么文件系統(tǒng)內(nèi)容訪問事件。響應檢測到的事件,內(nèi)容處理后臺駐留程序320可產(chǎn)生另外的文件系統(tǒng)內(nèi)容,如下更詳細所述。在一些實施例中,預期內(nèi)容處理后臺駐留程序320可直接掃描文件250和/或命名流260,而在其它實施例中,內(nèi)容處理后臺駐留程序320可使用事件日志270來訪問和記錄的事件對應的那些文件250和命名流260。另外,預期在一些實施例中,內(nèi)容處理系統(tǒng)300可包括它自己的響應過濾驅(qū)動器221的通知而更新的事件的日志,而不是使用事件日志270。
內(nèi)容處理后臺駐留程序320可與文件系統(tǒng)205交互作用,從而代表一個或多個內(nèi)容處理器330產(chǎn)生或修改文件系統(tǒng)內(nèi)容,包括文件數(shù)據(jù)和元數(shù)據(jù)。在一個實施例,內(nèi)容處理器330可包括配置成監(jiān)視特殊事務的規(guī)定進程的過程代碼或邏輯。例如,給定的內(nèi)容處理器330可實現(xiàn)描述定義成特定事務的一部分的一系列操作的算法或狀態(tài)機。內(nèi)容處理器330還可包括識別與事務相關的文件系統(tǒng)內(nèi)容,例如在事務過程中可被訪問的特定文件250的信息。另外,內(nèi)容處理器330可包括識別和各個操作對應的特定應用的信息。例如,如果給定的事務包括將由會計應用執(zhí)行的步驟,那么對應的內(nèi)容處理器330可包括特定應用識別信息,比如應用名稱或識別代碼,所述特定應用識別信息可被包括在當會計應用訪問給定文件250時,過濾驅(qū)動器221為該給定文件250產(chǎn)生的元數(shù)據(jù)記錄中。
在一些實施例中,給定的內(nèi)容處理器330可被配置成處理特定事務的所有實例。例如,配置成監(jiān)視上面描述的定購單事務的內(nèi)容處理器330可被配置成處理在給定時間進行中的所有定購單事務。在這樣的實施例中,給定的內(nèi)容處理器330可包括數(shù)據(jù)結構,借助該數(shù)據(jù)結構,在處理器內(nèi)可區(qū)分各個事務,例如依據(jù)時間戳記或者唯一的標識符。例如,當檢測到新事務時,可從現(xiàn)有實例(例如模板),或者從內(nèi)容處理后臺駐留程序320產(chǎn)生內(nèi)容處理器330的新實例。預期在一些實施例中,內(nèi)容處理器330和內(nèi)容處理后臺駐留程序320可被實現(xiàn)成單一的處理實體,例如單一的軟件模塊。
給定內(nèi)容處理器330的操作可由它結合通過內(nèi)容處理后臺駐留程序320接收的文件系統(tǒng)內(nèi)容訪問事件信息實現(xiàn)的算法確定。在一個實施例中,內(nèi)容處理器330最初可能處于無效或空閑狀態(tài),直到被特定的文件系統(tǒng)內(nèi)容訪問事件觸發(fā)為止。例如,在通過用電子郵件將定購單寄給特定電子郵件賬戶,發(fā)起定購單的系統(tǒng)中,響應將接收的定購單的內(nèi)容附到與所述特定電子郵件賬戶樣的文件上,過濾驅(qū)動器221可在事件日志270內(nèi)創(chuàng)建元數(shù)據(jù)記錄。隨后,內(nèi)容處理后臺駐留程序320可檢測該記錄,并將記錄的指示傳送給定購單內(nèi)容處理器330,作為響應,定購單內(nèi)容處理器330可激活。在一個備選實施例中,響應恰當?shù)募せ钍录臋z測,內(nèi)容處理器后臺駐留程序320可產(chǎn)生內(nèi)容處理器30的各個實例。
在一個實施例中,內(nèi)容處理器330可以是檢測給定的一系列事件何時發(fā)生,或者文件系統(tǒng)內(nèi)容的給定狀態(tài)何時產(chǎn)生的被動監(jiān)視器。例如,內(nèi)容處理器330可被配置成通過響應在批準進程中采取的應用活動,檢查過濾驅(qū)動器221產(chǎn)生的元數(shù)據(jù)記錄,檢測是否已按照正確的順序執(zhí)行了一系列的事件,例如批準進程的步驟。在另一情況下,內(nèi)容處理器330可被配置成按照特定的語法或方案,確定文件系統(tǒng)內(nèi)容是否合適。例如,內(nèi)容處理器330可檢查更新之后的元數(shù)據(jù)記錄或文件數(shù)據(jù),以確定元數(shù)據(jù)記錄或文件數(shù)據(jù)在句法上是否正確,是否被恰當?shù)貥嫵?即,所需數(shù)據(jù)存在)等。
在另一實施例中,內(nèi)容處理器330可被配置成響應檢測各種事件或內(nèi)容的狀態(tài),主動修改文件系統(tǒng)內(nèi)容,和/或調(diào)用其它應用。例如,在文檔發(fā)布環(huán)境中,可以幾種不同的格式(例如可移植文檔格式(PDF),HTML格式,Microsoft Word格式)使給定的文檔供用戶之用。在這樣的環(huán)境中,內(nèi)容處理器330可被配置成使必要版本的給定文檔的產(chǎn)生自動化。例如,內(nèi)容處理器330可被配置成通過檢測命名流260和/或事件日志270中,對給定文件250的更新的元數(shù)據(jù)記錄,檢測給定文件250中文檔的原版何時已被更新。當檢測到更新時,控制處理器330可調(diào)用適當?shù)陌l(fā)生器或轉(zhuǎn)換器應用,將更新的原版轉(zhuǎn)換成每種所需的格式。對于更新原版文檔的用戶或應用來說,這樣的轉(zhuǎn)換可透明地發(fā)生。
作為另一例子,內(nèi)容處理器330可被配置成主動進行復雜的事務,例如上面說明的進貨批準進程。在這種情況下,內(nèi)容處理器330可被配置成調(diào)用在對應于該事務的過程中規(guī)定的各種應用。例如,內(nèi)容處理器330可被配置成檢測已如上所述通過電子郵件收到了新的定購單請求。隨后,通過訪問保存請求數(shù)據(jù)的文件250,內(nèi)容處理器330可從該請求提取信息,例如請求者的身份和請求的美元數(shù)額。利用提取的信息,內(nèi)容處理器330可與各種應用交互作用,從而獲得批準,如上所述。例如,內(nèi)容處理器330可產(chǎn)生查詢來核實人力資源應用內(nèi)的簽字權限,財務應用內(nèi)的預算狀態(tài)等。在需要用戶交互作用的實例中,內(nèi)容處理器330可被配置成產(chǎn)生提示,所述提示將通過例如電子郵件被傳送給用戶用于響應。
在各個實施例中,內(nèi)容處理器330可被配置成產(chǎn)生不同形式的輸出。在一個實施例中,內(nèi)容處理器330可響應其處理,產(chǎn)生帶外元數(shù)據(jù)記錄。例如,配置成執(zhí)行給定文件250中的結構數(shù)據(jù)的方案確認的內(nèi)容處理器330可在對應的命名流260內(nèi)產(chǎn)生指示其檢查的狀態(tài)的元數(shù)據(jù)記錄。在其它實施例中,代替或者除了元數(shù)據(jù)之外,內(nèi)容處理器330可被配置成產(chǎn)生或修改文件數(shù)據(jù)。例如,前面提及的方案確認者可被配置成糾正在確認結構數(shù)據(jù)時檢測到的某些缺陷,例如通過截去殘缺的記錄或者填寫缺少的數(shù)據(jù)字段。作為另一例子,內(nèi)容處理器330可被配置成與查詢引擎交互作用,以保持由查詢引擎索引的數(shù)據(jù)的參考完整性,如下更詳細所述。在其它實施例中,內(nèi)容處理器330可被配置成與應用或用戶交互作用。例如,如上所述,內(nèi)容處理器330可被配置成響應檢測特定事件,比如文檔內(nèi)容更新,調(diào)用應用的API。預期在一個實施例中,一個或多個內(nèi)容處理器330可被配置成按照如上所述的可擴展的自描述數(shù)據(jù)格式產(chǎn)生元數(shù)據(jù)記錄,所述可擴展的自描述數(shù)據(jù)格式可包括與任何版本的XML格式相符的格式。
注意雖然內(nèi)容處理系統(tǒng)300及其各個組件可與如上所述為應用層100內(nèi)的進程112的應用交互作用,不過內(nèi)容處理系統(tǒng)300和其各個組件不同于應用。一般來說,應用不知曉其它應用的活動,并且不能訪問在文件系統(tǒng)205的操作過程中產(chǎn)生的元數(shù)據(jù)。但是,在圖解說明的實施例中,內(nèi)容處理系統(tǒng)300確實可以訪問這樣的元數(shù)據(jù),由于這樣的訪問,內(nèi)容處理系統(tǒng)300可被配置成檢測未被特定應用的操作充分表現(xiàn)的事務事件。
圖7中圖解說明了包括內(nèi)容處理系統(tǒng)300的存儲系統(tǒng)150的操作方法的一個實施例。參見圖1-圖4,圖6和圖7,操作開始于方框700,在方框700中,保存文件系統(tǒng)內(nèi)容,例如文件數(shù)據(jù)或元數(shù)據(jù)。在一個實施例中,文件系統(tǒng)內(nèi)容可既包括文件數(shù)據(jù)又包括元數(shù)據(jù)。在保存文件系統(tǒng)內(nèi)容之后,帶內(nèi)檢測文件系統(tǒng)內(nèi)容訪問事件(方框702)。例如,如上所述,文件系統(tǒng)內(nèi)容訪問事件可由過濾驅(qū)動器221帶內(nèi)檢測。如上所述,在一些實施例中,文件系統(tǒng)內(nèi)容的初始保存本身就是一個可檢測的文件系統(tǒng)內(nèi)容訪問事件。例如,文件創(chuàng)建操作可以是可在步驟702中檢測的一個文件系統(tǒng)內(nèi)容訪問事件。
響應文件系統(tǒng)內(nèi)容訪問事件的檢測,產(chǎn)生一個事件記錄(方框704)。例如,在一個實施例中,過濾驅(qū)動器221可被配置成產(chǎn)生包括關于文件系統(tǒng)內(nèi)容訪問事件的信息,例如事件的類型和所訪問的文件系統(tǒng)內(nèi)容的事件記錄。在一個實施例中,這樣的記錄可被保存在事件日志270中。在一些實施例中,還可產(chǎn)生包括關于文件系統(tǒng)內(nèi)容訪問事件的其它信息的元數(shù)據(jù)記錄。例如,在一個實施例中,過濾驅(qū)動器221可被配置成集合和訪問給定文件的操作有關的各種元數(shù)據(jù)元素,例如文件身份,文件所有權,產(chǎn)生訪問事件的進程的身份等。在一個實施例中,如前所述,可按照可擴展的自描述數(shù)據(jù)格式,例如XML格式保存響應事件檢測而產(chǎn)生的事件記錄和/或任何另外的元數(shù)據(jù)記錄。
在產(chǎn)生了事件記錄之后,它可被帶外檢測(方框706)。例如,在一個實施例中,內(nèi)容處理后臺駐留程序320或內(nèi)容處理器330可被配置成掃描事件日志270,以檢測事件記錄。在一些實施例中,檢測事件記錄可包括檢測包含幾個應用的事務。例如,特定的內(nèi)容處理器330可發(fā)現(xiàn)給定的事件記錄表示在涉及幾個應用方面的活動的特定類型的事務中的初始或連續(xù)步驟。
響應帶外事件記錄檢測,產(chǎn)生另外的文件系統(tǒng)內(nèi)容(方框708)。在一個實施例中,產(chǎn)生的另外的文件系統(tǒng)內(nèi)容可包括保存在多個文件250之一中的文件數(shù)據(jù),保存在一個或多個命名流260中的元數(shù)據(jù)記錄,或者這兩者。在一個實施例中,響應帶外事件記錄檢測,可另外調(diào)用一個應用。例如,在處理事務的過程中,給定的內(nèi)容處理器330可調(diào)用一個應用,如上所述。
查詢文件系統(tǒng)內(nèi)容如上所述,在一些實施例中,文件系統(tǒng)205可被配置成保存各種文件系統(tǒng)內(nèi)容。文件系統(tǒng)205可保存一個或多個文件內(nèi)的各種文件數(shù)據(jù),可保存與給定文件對應的任意復雜性的元數(shù)據(jù)。文件系統(tǒng)205還可被配置成消耗文件系統(tǒng)內(nèi)容。例如,文件系統(tǒng)205可實現(xiàn)特定的存儲策略,由此具有如在它們的元數(shù)據(jù)中指出的某些使用特性的文件被分配給特定類型的存儲器。例如,在一個實施例中,最近被某些類型的進程使用或者訪問過的文件可被分配給更快的存儲器,而其它文件可被分配給較慢的存儲器。
在一些實施例中,在文件系統(tǒng)205之外的應用或操作系統(tǒng)進程(例如圖2的進程112)也可被配置成消耗系統(tǒng)內(nèi)容。例如,編寫應用模塊的程序員可能希望創(chuàng)建和處理特定的文件和它們的相關文件數(shù)據(jù),以便保存或取回應用數(shù)據(jù)。另外,這樣的程序員可能希望對某些文件的元數(shù)據(jù)特性進行偶然的動作,例如配置備份程序,以便只選擇自從最后一次備份以來已被修改的文件。在一些實施例中,可通過查詢文件系統(tǒng)內(nèi)容識別滿足特定規(guī)則的內(nèi)容,來給定特定的文件系統(tǒng)內(nèi)容。查詢文件系統(tǒng)內(nèi)容的可用規(guī)則取決于保存文件系統(tǒng)內(nèi)容的格式。例如在一個實施例中,可以固定的不可擴展的格式,例如表格式數(shù)據(jù)結構保存文件系統(tǒng)內(nèi)容,在表格式數(shù)據(jù)結構中,數(shù)據(jù)項目的描述繼承自行定義和列定義,而不是繼承于自描述格式標記。在這樣的實施例中,選擇文件系統(tǒng)內(nèi)容的標準可由格式的規(guī)定結構確定,例如可用的行定義和列定義。在以可擴展的自描述格式,例如上面說明的XML格式保存文件系統(tǒng)內(nèi)容的實施例中,可用于選擇所需的文件系統(tǒng)內(nèi)容的標準可包括該內(nèi)容的任何自描述特征。
在圖2中圖解說明的存儲系統(tǒng)10的實施例中,查詢系統(tǒng)400被配置成通過API 114C向各個進程112提供文件系統(tǒng)內(nèi)容查詢能力。圖8中圖解說明了查詢系統(tǒng)400的一個具體實施例。在該實施例中,查詢系統(tǒng)400包括連接管理器420,查詢引擎430,索引/提交引擎440,和數(shù)據(jù)布局管理器450,下面更詳細地分別對它們進行說明。
一般來說,查詢可規(guī)定如何從較大的一組數(shù)據(jù)中選擇數(shù)據(jù)的子集,例如通過按照自描述格式保存的記錄的一個或多個數(shù)字字段的評估。例如,用戶可能希望選擇和文件/test1/foo.pdf對應的所有保存記錄以便進一步分析。相應地,用戶可構成一個查詢,所述查詢規(guī)定具有數(shù)據(jù)字段標記的“path”的所有記錄的選擇,這里該數(shù)據(jù)字段等于特定的值,比如“/test1/foo.pdf”。在一些實施例中,預期整個文件系統(tǒng)內(nèi)容可查詢,包括保存在文件250內(nèi)的文件數(shù)據(jù)以及保存在命名流260內(nèi)的元數(shù)據(jù),不論元數(shù)據(jù)是由例如過濾驅(qū)動器221帶內(nèi)產(chǎn)生的,還是由例如特定的內(nèi)容處理器330帶外產(chǎn)生的,或者不論如前所述,該元數(shù)據(jù)是由應用進程112通過API 114在文件系統(tǒng)205之外定義和/或產(chǎn)生的。另外,在如上所述,文件系統(tǒng)內(nèi)容訪問事件被記錄在事件日志270內(nèi)的一些實施例中,預期這些記錄事件也可被查詢。
可用查詢語言構成查詢,所述查詢語言可根據(jù)一個或多個標記的數(shù)據(jù)字段的值,為多組數(shù)據(jù)的選擇提供句法結構。在一些實施例中,除了組選擇特征之外,給定的查詢語言可支持過程特征,例如函數(shù)。此外,在一些實施例中,給定的查詢語言可支持在用其它編程語言,例如Java或C編碼的過程例程內(nèi)的嵌入。在XML格式被用于構成文件系統(tǒng)內(nèi)容的情況下,給定的應用可用由萬維網(wǎng)聯(lián)盟(W3C)規(guī)定的XML查詢(XQuery)語言,或者任何未來的XQuery標準或其變型構成選擇特定文件系統(tǒng)內(nèi)容的查詢。但是,預期可以采用任何適當?shù)牟樵冋Z言。
如前所述,在圖解說明的實施例中,進程112可產(chǎn)生查詢,并通過API 14將其傳送給查詢系統(tǒng)400。在一些實施例中,查詢系統(tǒng)400可被配置成支持具有在給定時間同時待解決的查詢的幾個進程112。此外,在一些實施例中,查詢進程112可通過網(wǎng)絡從遠程計算機系統(tǒng)提交其查詢。另外,在一些實施例中,查詢進程112需要被驗證,以限制對查詢系統(tǒng)400的訪問。在一個實施例中,連接管理器420可被配置成管理建立和保持查詢進程112和查詢系統(tǒng)400之間的連接的開銷。例如,連接管理器420可被配置成提供驗證界面(例如用戶名和口令界面),從而查詢進程112可建立它們的進行查詢的權限。另外,在一個實施例中,連接管理器420可配置成保持支持查詢進程112的基于連接的或者基于會話的語義學所必需的信息。例如,連接管理器420可保持將進行中的查詢映射到它們的相關請求者的數(shù)據(jù)結構,以便查詢結果被引向正確的查詢進程112。在一些實施例中,連接管理器420還可被配置成通過在查詢引擎430的多個實例間分布請求,實現(xiàn)查詢請求的負載均衡,從而提高總的查詢吞吐量。
在一個實施例中,查詢引擎430可被配置成解析和評估通過連接管理器420提交給查詢系統(tǒng)400的查詢。例如,查詢引擎430可接收請求在某一時間范圍內(nèi),已被特定用戶修改的所有文件250的名稱的查詢。查詢引擎430可關于句法正確性解析查詢,如果查詢不對,那么可返回錯誤條件。在一些實施例中,查詢引擎430還可對查詢進行結構變換,例如將查詢分解成多個查詢和/或關于性能優(yōu)化查詢。隨后,查詢引擎430可檢查保存在命名流260中的元數(shù)據(jù)記錄,以識別滿足規(guī)定標準的文件250,將這些文件的名稱返回給查詢進程112。配置成解析和評估查詢的查詢引擎430的眾多實現(xiàn)是可能的。
在一些實施例中,查詢引擎430可直接與存儲管理系統(tǒng)200交互作用,從而響應查詢的評估訪問文件系統(tǒng)內(nèi)容。但是,在一些情況下,通過創(chuàng)建文件系統(tǒng)內(nèi)容的一個或多個索引,并使用這些索引來幫助查詢評估,可提高查詢評估性能。在圖解說明的實施例中,索引/提交引擎440可被配置成產(chǎn)生和保持這些索引,并在查詢的評估期間,將索引信息提供給查詢引擎430。
一般來說,索引可以是按照某一特征或?qū)傩越M織一批數(shù)據(jù),借助被索引的特征或?qū)傩员憷麛?shù)據(jù)的查詢的任何數(shù)據(jù)結構。例如,在一個實施例中,索引可以是按照字母順序組織的借助文件系統(tǒng)205定義的所有文件250的名稱的列表。在一些實施例中,可以采用文件系統(tǒng)內(nèi)容的多個索引。例如,如果頻繁地用名稱,相關用戶和內(nèi)容創(chuàng)建/修改時間查詢文件系統(tǒng)內(nèi)容,那么可創(chuàng)建依據(jù)這些屬性中的每個屬性分類或組織文件系統(tǒng)內(nèi)容的單獨索引。在一些實施例中,可以采用更復雜的索引方案,包括將多個內(nèi)容屬性組合成復雜的狀態(tài)空間的索引。另外,預期可利用任何適當?shù)臄?shù)據(jù)結構,包括列表,表格,樹形結構和更高級的數(shù)據(jù)結構實現(xiàn)索引。
索引/提交引擎440創(chuàng)建的索引本身可被保存在文件系統(tǒng)205內(nèi)。在一些實施例中,可獨立于其它文件系統(tǒng)內(nèi)容保存這些索引。在這樣的實施例中,數(shù)據(jù)布局管理器450可被配置成跟蹤文件系統(tǒng)205內(nèi)的索引的位置。在一個實施例中,數(shù)據(jù)布局管理器450可被配置成在訪問與索引相關的存儲器的時候,繞過過濾驅(qū)動器221,以致不產(chǎn)生與索引訪問對應的帶內(nèi)元數(shù)據(jù)。在這樣的實施例中,可避免涉及標引和元數(shù)據(jù)的一些不一致的情形。例如,如果索引/提交引擎440試圖將給定索引的元數(shù)據(jù),例如修改時間戳記包括在給定索引內(nèi),隨后通過過濾驅(qū)動器221將給定索引寫入存儲器,那么在寫入之后的給定索引的元數(shù)據(jù)可能不再與給定索引的內(nèi)容一致,例如如果過濾驅(qū)動器221響應寫入操作,創(chuàng)建了新的修改時間戳記。
在一些實施例中,查詢進程112可使用查詢通過查詢系統(tǒng)400來修改文件系統(tǒng)內(nèi)容。例如,查詢可被用于從可用的文件系統(tǒng)內(nèi)容中選擇一組數(shù)據(jù)項,例如文件250。選擇的數(shù)據(jù)項隨后可被修改,而不是直接將修改提交給文件系統(tǒng)205,以便傳送給存儲裝置230,查詢系統(tǒng)400可協(xié)調(diào)數(shù)據(jù)更新,從而為文件系統(tǒng)內(nèi)容修改提供一條備選的路徑。但是,在存在修改文件系統(tǒng)內(nèi)容的多個路徑的實施例中,為了防止對公共數(shù)據(jù)的沖突修改,這些路徑間的協(xié)調(diào)是必需的。在一個實施例中,索引/提交引擎440可被配置成實現(xiàn)提交協(xié)議(例如兩階段提交),以確保對文件系統(tǒng)內(nèi)容的更新是一致的。
索引/提交引擎440保持的索引一般可以是文件系統(tǒng)內(nèi)容的衍生物,以致當文件系統(tǒng)內(nèi)容變化時(不論是歸因于通過查詢系統(tǒng)400的更新,歸因于內(nèi)容處理器300的活動,或者源于直接與文件系統(tǒng)205交互作用的進程112),與修改后的內(nèi)容對應的一個或多個索引可能不再準確反映內(nèi)容的新狀態(tài)。例如,如果索引/提交引擎440包括文件系統(tǒng)內(nèi)容的文件名索引,并且給定文件250被進程112重命名,那么在重命名之后,基于文件名的索引可能是陳舊的。一般來說,如果相對于被索引數(shù)據(jù)的狀態(tài),索引是最近的,那么可認為索引保持了關于被索引數(shù)據(jù)的參考完整性。
如果被索引的文件系統(tǒng)內(nèi)容變化,那么索引/提交引擎440可被配置成通過更新相關索引來反映所述變化,保持其索引的參考完整性。在一個實施例中,索引/提交引擎440可被配置成與內(nèi)容處理系統(tǒng)300內(nèi)的內(nèi)容處理后臺駐留程序320或者特定內(nèi)容處理器330協(xié)調(diào),以反映文件系統(tǒng)內(nèi)容變化,和相應地更新索引。例如,在一個實施例中,內(nèi)容處理后臺駐留程序320可被配置成檢測何時發(fā)生了對文件系統(tǒng)內(nèi)容的任何改變,例如通過掃描事件日志270。響應檢測可能導致內(nèi)容變化的文件系統(tǒng)內(nèi)容訪問事件(例如,導致文件系統(tǒng)內(nèi)容的創(chuàng)建,修改或刪除的事件),內(nèi)容處理后臺駐留程序320可被配置成將檢測到的事件通知索引/提交引擎440。作為響應,索引/提交引擎440可更新受檢測到的事件影響的一個或多個索引,以保持它們的參考完整性。例如,如果特定文件250被刪除,那么內(nèi)容處理后臺駐留程序320可檢測事件日志270內(nèi)與刪除對應的事件,并將該事件和刪除的文件250通知索引/提交引擎440。索引/提交引擎440隨后可修改它保持的索引,以除去對被刪除文件250的參考。
在另一實施例中,一個或多個特定的內(nèi)容處理器330可被配置成監(jiān)視和索引/提交引擎440保持的特殊索引對應的文件系統(tǒng)內(nèi)容。例如,在一個實施例中,索引/提交引擎440可將特殊索引的結構和內(nèi)容,例如與索引相關的自描述數(shù)據(jù)字段(例如文件名,文件大小,文件簽名等)和它們的當前值通知給定的內(nèi)容處理器330。內(nèi)容處理器330隨后可被配置成關于和特殊索引的結構和內(nèi)容相關的事件,監(jiān)視文件系統(tǒng)內(nèi)容訪問事件,并只將這些相關事件通知索引/提交引擎440。當被通知時,索引/提交引擎440可通過增加信息或者從索引中刪除信息,更新相關的索引,以保持其參考完整性。
圖9中圖解說明了包括查詢系統(tǒng)400的存儲系統(tǒng)150的操作方法的一個實施例。參見圖1-圖4,圖8和圖9,操作開始于方框900,在方框900,保存文件系統(tǒng)內(nèi)容,例如文件數(shù)據(jù)或元數(shù)據(jù)。在一個實施例中,文件系統(tǒng)內(nèi)容既可包括文件數(shù)據(jù)又可包括元數(shù)據(jù)。在一些實施例中,查詢系統(tǒng)400可被配置成如上所述產(chǎn)生文件系統(tǒng)內(nèi)容的一個或多個索引(方框902),不過在其它實施例中,該步驟可被省略。
在保存文件系統(tǒng)內(nèi)容之后,帶內(nèi)檢測文件系統(tǒng)內(nèi)容訪問事件(方框904)。例如,可如上所述由過濾驅(qū)動器221檢測文件系統(tǒng)內(nèi)容訪問事件。如上所述,在一些實施例中,文件系統(tǒng)內(nèi)容的初始保存本身可以是一個可檢測的文件系統(tǒng)內(nèi)容訪問事件。例如,文件創(chuàng)建操作可以是在步驟902中可檢測的文件系統(tǒng)內(nèi)容訪問事件。
響應文件系統(tǒng)內(nèi)容訪問事件的檢測,產(chǎn)生一個元數(shù)據(jù)記錄(方框906)。例如,在一個實施例中,過濾驅(qū)動器221可被配置成產(chǎn)生包含和事件或正被訪問的文件系統(tǒng)內(nèi)容相關的信息,例如時間戳記,文件簽名,產(chǎn)生事件的進程的身份等的元數(shù)據(jù)記錄。在一個實施例中,這樣的記錄可被保存在特定的命名流260中。另外,在一些實施例中,可響應事件檢測產(chǎn)生事件記錄。這樣的事件記錄可被保存在事件日志270中。在一個實施例中,如前所述,可按照可擴展的自描述數(shù)據(jù)格式,例如XML格式,保存元數(shù)據(jù)記錄和/或響應事件檢測產(chǎn)生的事件記錄。
在文件系統(tǒng)內(nèi)容被索引的實施例中,文件系統(tǒng)內(nèi)容訪問事件的通知被接收(方框908),并且可關于文件系統(tǒng)內(nèi)容訪問事件保持相關索引的參考完整性(方框910)。例如,內(nèi)容處理后臺駐留程序320可被配置成將所有文件系統(tǒng)內(nèi)容訪問事件通知索引/提交引擎440,或者特殊的內(nèi)容處理器330可被配置成監(jiān)視和索引/提交引擎440保持的索引相關的那些事件,如上所述。響應收以相關事件的通知,索引/提交引擎440可被配置成更新相關索引以保持其參考完整性,如上所述。預期在不采用標引的實施例中,這些步驟可被省略。
在元數(shù)據(jù)記錄的產(chǎn)生之后,文件系統(tǒng)內(nèi)容可被查詢(方框912)。例如,查詢系統(tǒng)400可被配置成通過查詢文件數(shù)據(jù)和/或元數(shù)據(jù),答復進程112提交的查詢。在按照XML格式保存文件系統(tǒng)內(nèi)容的實施例中,可按照XML查詢(XQuery格式)產(chǎn)生查詢。
雖然相當詳細地說明了上面的實施例,不過一旦充分理解上面的公開內(nèi)容,那么對本領域的技術人員來說,各種變化和修改將變得明顯。下面的權利要求意圖包含所有這樣的變化和修改。
權利要求
1.一種系統(tǒng),包括配置成保存數(shù)據(jù)的存儲裝置;和配置成管理對于所述存儲裝置的訪問,以及保存文件系統(tǒng)內(nèi)容的文件系統(tǒng),其中所述文件系統(tǒng)還被配置成檢測文件系統(tǒng)內(nèi)容訪問事件;和響應于檢測所述文件系統(tǒng)內(nèi)容訪問事件,產(chǎn)生元數(shù)據(jù)記錄,其中按照可擴展的自描述數(shù)據(jù)格式保存所述元數(shù)據(jù)記錄。
2.按照權利要求1所述的系統(tǒng),其中檢測所述文件系統(tǒng)內(nèi)容訪問事件在帶內(nèi)執(zhí)行。
3.按照權利要求1所述的系統(tǒng),其中所述可擴展的自描述數(shù)據(jù)格式符合可擴展置標語言(XML)格式的版本。
4.按照權利要求1所述的系統(tǒng),其中所述元數(shù)據(jù)記錄被保存在與給定文件相對應的命名流中。
5.按照權利要求1所述的系統(tǒng),其中所述元數(shù)據(jù)記錄被保存在與所述文件系統(tǒng)相對應的事件日志中。
6.按照權利要求1所述的系統(tǒng),其中所述文件系統(tǒng)內(nèi)容包括一個或多個元數(shù)據(jù)記錄以及保存在所述多個文件的一個或多個中的文件數(shù)據(jù)。
7.按照權利要求1所述的系統(tǒng),還包括內(nèi)容處理器和應用,其中所述內(nèi)容處理器被配置成響應于帶外檢測所述文件系統(tǒng)內(nèi)容訪問事件,調(diào)用所述應用。
8.按照權利要求1所述的系統(tǒng),還包括查詢引擎,應用借助于所述查詢引擎來查詢所述文件系統(tǒng)內(nèi)容。
9.一種方法,包括保存文件系統(tǒng)內(nèi)容;檢測文件系統(tǒng)內(nèi)容訪問事件;響應于檢測所述文件系統(tǒng)內(nèi)容訪問事件,產(chǎn)生元數(shù)據(jù)記錄;和按照可擴展的自描述數(shù)據(jù)格式保存所述元數(shù)據(jù)記錄。
10.按照權利要求9所述的方法,其中檢測所述文件系統(tǒng)內(nèi)容訪問事件在帶內(nèi)執(zhí)行。
11.按照權利要求9所述的方法,其中所述可擴展的自描述數(shù)據(jù)格式符合可擴展置標語言(XML)格式的版本。
12.按照權利要求9所述的方法,其中所述元數(shù)據(jù)記錄被保存在與給定文件相對應的命名流中。
13.按照權利要求9所述的方法,其中所述元數(shù)據(jù)記錄被保存在事件日志中。
14.按照權利要求9所述的方法,其中所述文件系統(tǒng)內(nèi)容包括一個或多個元數(shù)據(jù)記錄和保存在多個文件的一個或多個中的文件數(shù)據(jù)。
15.按照權利要求9所述的方法,還包括響應于帶外檢測所述文件系統(tǒng)內(nèi)容訪問事件,調(diào)用應用。
16.按照權利要求9所述的方法,還包括查詢所述文件系統(tǒng)內(nèi)容。
17.一種包含程序指令的計算機可訪問媒體,其中所述程序指令可被執(zhí)行,從而保存文件系統(tǒng)內(nèi)容;檢測文件系統(tǒng)內(nèi)容訪問事件;響應于檢測所述文件系統(tǒng)內(nèi)容訪問事件,產(chǎn)生元數(shù)據(jù)記錄;和按照可擴展的自描述數(shù)據(jù)格式保存所述元數(shù)據(jù)記錄。
18.按照權利要求17所述的計算機可訪問媒體,其中檢測所述文件系統(tǒng)內(nèi)容訪問事件在帶內(nèi)執(zhí)行。
19.按照權利要求17所述的計算機可訪問媒體,其中所述可擴展的自描述數(shù)據(jù)格式符合可擴展置標語言(XML)格式的版本。
20.按照權利要求17所述的計算機可訪問媒體,其中所述元數(shù)據(jù)記錄被保存在與給定文件相對應的命名流中。
21.按照權利要求17所述的計算機可訪問媒體,其中所述元數(shù)據(jù)記錄被保存在事件日志中。
22.按照權利要求17所述的計算機可訪問媒體,其中所述文件系統(tǒng)內(nèi)容包括一個或多個元數(shù)據(jù)記錄和保存在多個文件的一個或多個中的文件數(shù)據(jù)。
23.按照權利要求17所述的計算機可訪問媒體,其中所述程序指令還可被執(zhí)行,從而響應于帶外檢測所述文件系統(tǒng)內(nèi)容訪問事件而調(diào)用應用。
24.按照權利要求17所述的計算機可訪問媒體,其中所述程序指令還可被執(zhí)行,從而查詢所述文件系統(tǒng)內(nèi)容。
25.一種系統(tǒng),包括配置成保存數(shù)據(jù)的存儲裝置;配置成管理對于所述存儲裝置的訪問,以及保存文件系統(tǒng)內(nèi)容,執(zhí)行文件系統(tǒng)內(nèi)容訪問事件的帶內(nèi)檢測,并且作為響應而產(chǎn)生事件記錄的文件系統(tǒng);和配置成執(zhí)行所述事件記錄的帶外檢測,并作為響應而產(chǎn)生另外的文件系統(tǒng)內(nèi)容的內(nèi)容處理器。
26.按照權利要求25所述的系統(tǒng),其中所述內(nèi)容處理器還被配置成檢測包含多個應用的活動的事務。
27.按照權利要求25所述的系統(tǒng),其中所述內(nèi)容處理器還被配置成響應于執(zhí)行所述事件記錄的帶外檢測而調(diào)用應用。
28.按照權利要求25所述的系統(tǒng),其中所述內(nèi)容處理器還被配置成將所述文件系統(tǒng)內(nèi)容訪問事件通知查詢系統(tǒng),響應于此,所述查詢系統(tǒng)被配置成對于所述文件系統(tǒng)內(nèi)容訪問事件,保持所述文件系統(tǒng)內(nèi)容的索引的參考完整性。
29.按照權利要求25所述的系統(tǒng),其中所述文件系統(tǒng)內(nèi)容包括一個或多個元數(shù)據(jù)記錄和保存在多個文件的一個或多個中的文件數(shù)據(jù)。
30.按照權利要求29所述的系統(tǒng),其中所述一個或多個元數(shù)據(jù)記錄被保存在與給定文件相對應的命名流中。
31.按照權利要求25所述的系統(tǒng),其中按照可擴展的自描述數(shù)據(jù)格式保存所述元數(shù)據(jù)記錄。
32.按照權利要求31所述的系統(tǒng),其中所述可擴展的自描述數(shù)據(jù)格式符合可擴展置標語言(XML)格式的版本。
33.一種方法,包括保存文件系統(tǒng)內(nèi)容;執(zhí)行文件系統(tǒng)內(nèi)容訪問事件的帶內(nèi)檢測;響應于所述帶內(nèi)檢測,產(chǎn)生事件記錄;執(zhí)行所述事件記錄的帶外檢測;和響應于所述帶外檢測,產(chǎn)生另外的文件系統(tǒng)內(nèi)容。
34.按照權利要求33所述的方法,其中執(zhí)行所述事件記錄的帶外檢測包括檢測包含多個應用的活動的事務。
35.按照權利要求33所述的方法,還包括響應于執(zhí)行所述事件記錄的帶外檢測而調(diào)用應用。
36.按照權利要求33所述的方法,還包括將所述文件系統(tǒng)內(nèi)容訪問事件通知查詢系統(tǒng),響應于此,所述查詢系統(tǒng)被配置成對于所述文件系統(tǒng)內(nèi)容訪問事件,保持所述文件系統(tǒng)內(nèi)容的索引的參考完整性。
37.按照權利要求33所述的方法,其中所述文件系統(tǒng)內(nèi)容包括一個或多個元數(shù)據(jù)記錄和保存在多個文件的一個或多個中的文件數(shù)據(jù)。
38.按照權利要求37所述的方法,其中所述一個或多個元數(shù)據(jù)記錄被保存在與給定文件相對應的命名流中。
39.按照權利要求38所述的方法,其中按照可擴展的自描述數(shù)據(jù)格式保存所述元數(shù)據(jù)記錄。
40.按照權利要求39所述的方法,其中所述可擴展的自描述數(shù)據(jù)格式符合可擴展置標語言(XML)格式的版本。
41.一種包含程序指令的計算機可訪問媒體,其中所述程序指令可被執(zhí)行,以便保存文件系統(tǒng)內(nèi)容;執(zhí)行文件系統(tǒng)內(nèi)容訪問事件的帶內(nèi)檢測;響應于所述帶內(nèi)檢測,產(chǎn)生事件記錄;執(zhí)行所述事件記錄的帶外檢測;和響應于所述帶外檢測,產(chǎn)生另外的文件系統(tǒng)內(nèi)容。
42.按照權利要求41所述的計算機可訪問媒體,其中執(zhí)行所述事件記錄的帶外檢測包括檢測包含多個應用的活動的事務。
43.按照權利要求41所述的計算機可訪問媒體,其中所述程序指令還可執(zhí)行,以便響應于執(zhí)行所述事件記錄的帶外檢測而調(diào)用應用。
44.按照權利要求41所述的計算機可訪問媒體,其中所述程序指令還可被執(zhí)行,以便將所述文件系統(tǒng)內(nèi)容訪問事件通知查詢系統(tǒng),響應于此,所述查詢系統(tǒng)被配置成對于所述文件系統(tǒng)內(nèi)容訪問事件,保持所述文件系統(tǒng)內(nèi)容的索引的參考完整性。
45.按照權利要求41所述的計算機可訪問媒體,其中所述文件系統(tǒng)內(nèi)容包括一個或多個元數(shù)據(jù)記錄和保存在多個文件的一個或多個中的文件數(shù)據(jù)。
46.按照權利要求45所述的計算機可訪問媒體,其中所述一個或多個元數(shù)據(jù)記錄被保存在與給定文件相對應的命名流中。
47.按照權利要求41所述的計算機可訪問媒體,其中按照可擴展的自描述數(shù)據(jù)格式保存所述元數(shù)據(jù)記錄。
48.按照權利要求47所述的計算機可訪問媒體,其中所述可擴展的自描述數(shù)據(jù)格式符合可擴展置標語言(XML)格式的版本。
全文摘要
一種產(chǎn)生可擴展的文件系統(tǒng)元數(shù)據(jù)的系統(tǒng)和方法。在一個實施例中,系統(tǒng)可包括配置成保存數(shù)據(jù)的存儲裝置,和配置成管理對于存儲裝置的訪問,以及保存文件系統(tǒng)內(nèi)容的文件系統(tǒng)。文件系統(tǒng)還可被配置成檢測文件系統(tǒng)內(nèi)容訪問事件,并響應檢測文件系統(tǒng)內(nèi)容訪問事件,產(chǎn)生元數(shù)據(jù)記錄,按照可擴展的自描述數(shù)據(jù)格式保存元數(shù)據(jù)記錄。
文檔編號G06F17/00GK1906613SQ200480040568
公開日2007年1月31日 申請日期2004年11月19日 優(yōu)先權日2003年11月26日
發(fā)明者杜拉巴加尤蒂·波薩庫爾, 納爾·普萊默, 卓塞弗·帕斯夸 申請人:維瑞泰斯操作公司