專利名稱::從存儲系統(tǒng)遷移內容的方法和裝置的制作方法
技術領域:
:本發(fā)明涉及從存儲系統(tǒng)遷移內容。
背景技術:
:實際上,所有計算機應用程序均依賴于存儲器,該存儲器可用于保存計算機代碼及所述計算機代碼所操作的數(shù)據(jù)。典型的計算機系統(tǒng)包括一個或多個運行所述應用程序的主計算機和一個或多個提供存儲器的存儲系統(tǒng)。主計算機可通過向所述一個或多個存儲系統(tǒng)發(fā)送訪問請求而訪問數(shù)據(jù)。一些存儲系統(tǒng)要求所述訪問請求使用邏輯巻和塊地址識別將要訪問的數(shù)據(jù)單元。這樣的存儲系統(tǒng)被稱為"塊i/o"存儲系統(tǒng)。盡管由存儲系統(tǒng)呈現(xiàn)給主機的邏輯巻可能不按一對一方式映射到物理存儲設備,但它們可由主機感知為對應于物理存儲設備,且邏輯巻和塊地址的規(guī)約表明所引用的數(shù)據(jù)物理存儲在存儲系統(tǒng)內的什么地方。與塊1/0存儲系統(tǒng)相反,一些存儲系統(tǒng)接收并處理使用對象標識符識別數(shù)據(jù)或其它內容單元的訪問請求,而不是使用指明數(shù)據(jù)單元物理或邏輯存儲在存儲系統(tǒng)內的什么地方的地址。這樣的存儲系統(tǒng)稱為對象可尋址存儲(OAS)系統(tǒng)。在對象可尋址存儲中,內容單元可使用其對象標識符進行識別(例如,通過主計算機請求訪問所述內容單元),且對象標識符可獨立于保存所述內容單元的物理或邏輯位置(盡管不要求這樣)。然而,從訪問OAS系統(tǒng)上的內容單元的主計算機(或用戶)的角度,所述對象標識符不控制所述內容單元保存在什么地方。因而,在OAS系統(tǒng)中,如果保存內容單元的物理或邏輯位置改變,主計算機借助于其訪問內容單元的標識符仍可保持一樣。相反,在塊I/O存儲系統(tǒng)中,如果保存內容單元的物理或邏輯位置改變,訪問內容單元的主計算機通常必須被使得意識到該位置變化并使用新的內容單元物理或邏輯位置用于將來的訪問。OAS系統(tǒng)的一個例子為內容可尋址存儲(CAS)系統(tǒng)。在CAS系統(tǒng)中,識別內容單元的對象標識符為內容地址。內容地址為至少部分從其相應的內容單元的至少一部分內容計算的標識符,所述內容單元可以是數(shù)據(jù)和/或元數(shù)據(jù)。例如,內容單元的內容地址可通過散列內容單元及使用所得到的散列值作為內容地址進行計算。通過內容地址識別內容的存儲系統(tǒng)稱為內容可尋址存儲(CAS)系統(tǒng)。
發(fā)明內容本發(fā)明的一方面致力于在包括至少一保存多個內容單元的存儲系統(tǒng)的計算機系統(tǒng)中使用的方法。所述方法包括步驟(A)在所述至少一存儲系統(tǒng)接收提供至少一選擇條件的請求;及(B)響應于接收到所述請求,從所述至少一存儲系統(tǒng)提供滿足所述至少-"選擇條件的多個內容單元中的每一內容單元。本發(fā)明的另一方面致力于編碼以指令的至少一計算機可讀介質,當在計算機系統(tǒng)上運行時,其實現(xiàn)上述方法。本發(fā)明的另一方面致力于保存多個內容單元的至少一存儲系統(tǒng)。所述至少一存儲系統(tǒng)包括輸入;及連接到所述輸入的至少一控制器,該控制器經(jīng)所述輸入接收提供至少一選擇條件的請求;及響應于接收到所述請求,提供滿足所述至少一選擇條件的多個內容單元中的每一內容單元。本發(fā)明的另一方面致力于在包括至少一保存多個內容單元的存儲系統(tǒng)的計算機系統(tǒng)中使用的方法。所述方法包括步驟(A)向所述至少一存儲系統(tǒng)發(fā)出請求,其請求所述至少一存儲系統(tǒng)提供滿足所述請求中提供的至少一選擇條件的多個內容單元中的每一內容單元。本發(fā)明的另一方面致力于編碼以指令的至少一計算機可讀介質,當在計算機系統(tǒng)上運行時,其實現(xiàn)上述方法。本發(fā)明的另一方面致力于主計算機,包括輸出;及連接到所述輸出的至少一控制器,該控制器經(jīng)所述輸出向保存多個內容單元的至少一存儲系統(tǒng)發(fā)出請求,其請求所述至少一存儲系統(tǒng)提供滿足所述請求中提供的至少一選擇條件的多個內容單元中的每一內容單元。本發(fā)明的另一方面致力于在包括至少一保存多個內容單元的存儲系統(tǒng)的計算機系統(tǒng)中使用的方法。所述方法包括步驟(A)在處理于所述至少一存儲系統(tǒng)處接收的請求以從所述至少一存儲系統(tǒng)向至少一第一目的地提供滿足至少一選擇條件的多個內容單元中的每一內容單元的同時,其中滿足所述至少一選擇條件的所述多個內容單元包括第一組內容單元,接收至少一指令以開始將第一組內容單元屮尚未提供給所述至少一第一目的地的那些內容單元提供給至少一第二目的地,其中所述至少一第一目的地不同于所述至少一第二目的地;及(B)響應于所述至少一指令的接收,將第一組內容單元中尚未提供給所述至少--第一目的地的那些內容單元提供給所述至少一第二目的地。本發(fā)明的另--方面致力于編碼以指令的至少一計算機可讀介質,當在計算機系統(tǒng)上運行時,其實現(xiàn)上述方法。本發(fā)明的另一方面致力于保存多個內容單元的至少一存儲系統(tǒng)。所述至少一存儲系統(tǒng)包括輸入;及連接到所述輸入的至少一控制器,該控制器在處理經(jīng)所述輸入接收的請求以將滿足至少一選擇條件的多個內容單元中的每一內容單元從所述至少一存儲系統(tǒng)提供給至少一第一目的地的同時,其中滿足所述至少一選擇條件的所述多個內容單元包括第一組內容單元,經(jīng)所述輸入接收至少一指令以開始將第一組內容單元中尚未提供給所述至少一第一目的地的那些內容單元提供給至少一第二目的地,其中所述至少一第一目的地不同于所述至少一第二目的地;及響應于所述至少一指令的接收,將第一組內容單元中尚未提供給所述至少一第一目的地的那些內容單元提供給所述至少一第二目的地。本發(fā)明的另一方面致力于在包括保存多個內容單元的至少一存儲系統(tǒng)和可被編程以處理內容單元的多個服務器的計算機系統(tǒng)中處理內容單元的方法。所述方法包括步驟(A)向所述至少一存儲系統(tǒng)發(fā)出請求以將滿足至少一選擇條件的多個內容單元中的每一內容單元從所述至少一存儲系統(tǒng)進棧到所述多個服務器中的第一組服務器,其中滿足所述至少一選擇條件的所述多個內容單元包括第一組內容單元;(B)在第一組服務器中處理在所述第一組服務器處接收的所述第一組內容單元的第一子集;(C)在所述至少一存儲系統(tǒng)已開始將第一組內容單元的部分進棧到所述第一組服務器之后,向所述至少一存儲系統(tǒng)發(fā)出請求以開始將第一組內容單元中尚未進棧到第一組服務器的內容單元進棧到所述多個服務器中的第二組服務器,所述第二組服務器不同于所述第一組服務器;及(D)在第二組服務器中處理在所述第二組服務器處接收的所述第一組內容單元的第二子集。本發(fā)明的另一方面致力于編碼以指令的至少一計算機可讀介質,當在計算機系統(tǒng)上運行時,實現(xiàn)上述方法。本發(fā)明的另一方面致力于計算機系統(tǒng),包括保存多個內容單元的至少一存儲系統(tǒng);可被編程以處理內容單元的多個服務器;將所述多個服務器中的每一服務器連接到所述至少一存儲系統(tǒng)的通信網(wǎng)絡;及至少一控制器,該控制器向所述至少一存儲系統(tǒng)發(fā)出請求以將滿足至少一選擇條件的多個內容單元中的每一內容單元從所述至少一存儲系統(tǒng)進棧到所述多個服務器中的第一組服務器,其中滿足所述至少一選擇條件的所述多個內容單元包括第一組內容單元;在第一組服務器中處理在所述第一組服務器處接收的所述第一組內容單元的第一子集;在所述至少一存儲系統(tǒng)已開始將第一組內容單元的部分進棧到所述第一組服務器之后,向所述至少一存儲系統(tǒng)發(fā)出請求以開始將第一組內容單元中尚未進棧到第一組服務器的內容單元進棧到所述多個服務器中的第二組服務器,所述第二組服務器不同于所述第一組服務器;及在第二組服務器中處理在所述第二組服務器處接收的所述第一組內容單元的第二子集。本發(fā)明的另一方面致力于在包括保存多個內容單元的至少一存儲系統(tǒng)的計算機系統(tǒng)中使用的方法,所述至少一存儲系統(tǒng)提供使多個內容單元中的每一內容單元能經(jīng)對象標識符進行訪問的接口。所述方法包括步驟(A)在所述至少一存儲系統(tǒng)處接收訪問所述多個內容單元中的至少一個的請求,其中所述請求不包括所述至少一內容單元的對象標識符但包括至少一選擇條件;及(B)響應于接收到所述請求,使用所述至少一選擇條件確定所述多個內容單元中的所述至少一內容單元并從所述至少一存儲系統(tǒng)提供所述多個內容單元中的所述至少一內容單元。本發(fā)明的另一方面致力于編碼以指令的至少一計算機可讀介質,當在計算機系統(tǒng)上運行時,實現(xiàn)上述方法。本發(fā)明的另一方面致力于保存多個內容單元的至少一存儲系統(tǒng),包括使多個內容單元中的每一內容單元能經(jīng)對象標識符進行訪問的接口;及連接到所述接口的至少一控制器,該控制器在所述至少一存儲系統(tǒng)處接收訪問所述多個內容單元中的至少一個的請求,其中所述請求不包括所述至少一內容單元的對象標識符但包括至少一選擇條件;及響應于接收到所述請求,使用所述至少一選擇條件確定所述多個內容單元中的所述至少一內容單元并從所述至少一存儲系統(tǒng)提供所述多個內容單元中的所述至少一內容單元。本發(fā)明的另一方面致力于訪問保存在至少一存儲系統(tǒng)上的至少一內容單元的方法,所述至少一存儲系統(tǒng)保存多個內容單元,所述至少一存儲系統(tǒng)提供使多個內容單元中的每一內容單元能經(jīng)對象標識符進行訪問的接口。所述方法包括步驟(A)向所述至少一存儲系統(tǒng)提供訪問所述至少一內容單元的請求,其中所述請求不包括所述至少一內容單元的對象標識符但包括使所述至少一存儲系統(tǒng)能確定所述至少一內容單元的至少一選擇條件。本發(fā)明的另一方面致力于編碼以指令的至少一計算機可讀介質,當在計算機系統(tǒng)上運行時,實現(xiàn)上述方法。本發(fā)明的另一方面致力于主計算機,包括輸出,所述主計算機通過該輸出連接到保存多個內容單元的至少一存儲系統(tǒng),所述至少一存儲系統(tǒng)提供使多個內容單元中的每一內容單元能經(jīng)對象標識符進行訪問的接口;及至少一控制器,該控制器經(jīng)所述輸出向所述至少一存儲系統(tǒng)提供訪問所述多個內容單元中的所述至少一內容單元的請求,其中所述請求不包括所述至少一內容單元的對象標識符但包括使所述至少一存儲系統(tǒng)能確定所述至少一內容單元的至少一選擇條件。圖1為根據(jù)本發(fā)明一實施例的計算機系統(tǒng)的框圖,其中響應于請求從存儲系統(tǒng)遷移多個內容單元。圖2為根據(jù)本發(fā)明一實施例的從存儲系統(tǒng)遷移內容單元的說明性過程的流程圖。圖3為根據(jù)一些實施例,引用多個二進制大對象的內容描述符文件(CDF)的圖示,其中所述CDF包括與所引用的二進制大對象有關的元數(shù)據(jù)。圖4為根據(jù)一些實施例,基于可在主計算機上采用的對象標識符進行組織的目錄結構的框圖,內容可從存儲系統(tǒng)遷移到所述主計算機。圖5為根據(jù)一些實施例的計算機系統(tǒng)的框圖,其中在主計算機上運行的應用程序通過應用程序編程接口(API)與存儲系統(tǒng)通信。圖6為根據(jù)一實施例的計算機系統(tǒng)的框圖,其中多個主計算機可加入在存儲系統(tǒng)上創(chuàng)建的迭代以從所述存儲系統(tǒng)遷移內容單元。圖7為根據(jù)一實施例的說明性過程的流程圖,主計算機通過該過程可加入存儲系統(tǒng)上進行中的迭代。及圖8為分布式存儲系統(tǒng)的框圖,本發(fā)明的各個實施例可在該系統(tǒng)上實施。具體實施例方式有時希望基于一定選擇條件從一存儲系統(tǒng)將其上保存的一個或多個內容單元提供給另一系統(tǒng),使得滿足所述選擇條件的所有內容單元可被識別。使用現(xiàn)有技術OAS系統(tǒng),訪問滿足選擇條件的內容單元包括多步驟過程。首先,應用程序(如主計算機上運行的應用程序)向OAS系統(tǒng)發(fā)出查詢,其請求滿足特定選擇條件的內容單元。所述OAS通過在其保存的內容單元中掃描滿足所述選擇條件的那些內容單元對所述查詢進行響應并將那些內容單元的對象標識符列表返回給所述應用程序。之后,所述應用程序使用所述對象標識符向存儲系統(tǒng)發(fā)送針對這些內容單元中的每一內容單元的各個訪問請求,其通過對象標識符識別每一內容單元。如果有大量滿足所述選擇條件的內容單元,則必須發(fā)送許多訪問請求以取回這些內容單元中的每一內容單元。一些存儲系統(tǒng)提供復制功能,保存在存儲系統(tǒng)上的大量數(shù)據(jù)(即復制源)藉此可被提供給另一系統(tǒng)(即復制目標),例如用于容錯或備份目的時。然而,在這樣的系統(tǒng)中,存儲系統(tǒng)上的存儲器巻可被指定用于復制及指定巻中的所有數(shù)據(jù)(或自上一次復制之后發(fā)生變化的部分)均被復制,因為這樣的系統(tǒng)不能以單個內容單元的粒度操作。申請人已意識到,當從存儲系統(tǒng)請求內容單元時,可能希望在可共享其處理的幾個主計算機之間劃分內容單元。例如,可能希望使用面部識別算法處理來自機場安全攝像機的、保存在OAS系統(tǒng)上的內容單元中的視頻數(shù)據(jù)以査找一個或多個個體。由于將要處理整個數(shù)據(jù)巻,可能希望使用多個主計算機以使每一主計算機并行處理所述視頻數(shù)據(jù)的一部分。為使用現(xiàn)有技術OAS系統(tǒng)實現(xiàn)該目的,必須在從存儲系統(tǒng)請求內容單元之前分割搜索空間。例如,如果有3臺主計算機可用于處理數(shù)據(jù)及將要處理9小時的視頻,則可確定每一主計算機將處理3小時的視頻數(shù)據(jù)。之后,第一處理器可在前3小時時間段期間向OAS查詢內容單元、接收識別對應于前3小時的內容單元的對象標識符的第一列表,及第二和第三處理器分別可在中間和最后3小時時間段做同樣的工作。因而,在現(xiàn)有技術OAS系統(tǒng)中,必須提早決定對處理工作怎樣分配資源且在處理工作中使用的處理器的數(shù)量不能進行動態(tài)改變。另外,一些現(xiàn)有技術OAS系統(tǒng)不能基于希望的搜索條件過濾內容單元。例如,保存包括來自多個機場安全攝像機的視頻數(shù)據(jù)的內容單元的存儲系統(tǒng)可能保存表明特定內容單元中的視頻數(shù)據(jù)由哪一攝像機產(chǎn)生的元數(shù)據(jù)。該元數(shù)據(jù)可保存在與視頻數(shù)據(jù)相同的內容單元中,或保存在弓I用保存所述視頻數(shù)據(jù)的內容單元的單獨內容單元中??赡芟M幚碛蓹C場安全攝像機中的一個產(chǎn)生的視頻數(shù)據(jù)。傳統(tǒng)的OAS系統(tǒng)不能夠基于與那些內容相關聯(lián)的元數(shù)據(jù)搜索內容單元。因而,為識別將要處理的內容單元,包括保存在存儲系統(tǒng)上的元數(shù)據(jù)(或至少在某一時間范圍內保存在存儲系統(tǒng)上的那些元數(shù)據(jù))的每一內容單元均必須單獨從存儲系統(tǒng)取回及搜索其元數(shù)據(jù)以確定所述內容單元(或由所述內容單元引用的內容單元)中的內容是否包括來自所希望安全攝像機的視頻數(shù)據(jù)。一些傳統(tǒng)的計算機系統(tǒng)包括位于OAS系統(tǒng)之外并基于內容單元的元數(shù)據(jù)或其它搜索條件對保存在OAS系統(tǒng)上的內容單元進行索引的搜索工具,使得不必每次均搜索每一內容單元,而是確定滿足某一搜索條件的內容單元的對象標識符列表?,F(xiàn)有技術存儲系統(tǒng)的上述局限性在將滿足一個或多個指定選擇條件的大量內容單元從存儲系統(tǒng)提供給另一系統(tǒng)(例如進行處理)時是急待解決的問題。本發(fā)明的一些實施例解決了這些局限性。然而,應意識到,不是本發(fā)明的每一實施例均解決所有上述局限性,部分實施例并不明確致力于解決這些特定局限性中的任何局限性。如在此使用的,術語"內容單元"可包括任何類型的內容,不管所述內容在哪里產(chǎn)生、怎樣產(chǎn)生或由什么實體產(chǎn)生,并可包括原始(或獨立)數(shù)據(jù)和元數(shù)據(jù)(即關于其它數(shù)據(jù)的數(shù)據(jù))。在一些實施例中,可被處理或遷移的內容單元的一種特定類型在此稱為限定內容單元。如在此使用的,限定內容單元定義為包括不同于文件系統(tǒng)屬性的至少一類型的內容或數(shù)據(jù)的內容單元,所述文件系統(tǒng)屬性由安裝在保存所述內容單元的存儲系統(tǒng)上的文件系統(tǒng)產(chǎn)生。文件系統(tǒng)屬性為由文件系統(tǒng)產(chǎn)生的、與保存在文件系統(tǒng)中的一個或多個文件相關聯(lián)的元數(shù)據(jù)。例如,文件系統(tǒng)屬性中的信息可包括上次訪問所述文件的時間、上次修改所述文件的吋間、所述文件的訪問許可、和/或關于所述文件的任何其它適當?shù)男畔?。應意識到,在一些實施例中,內容單元可保存為存儲系統(tǒng)上的文件系統(tǒng)中的文件,并可保存與存儲系統(tǒng)上的文件系統(tǒng)保存在文件系統(tǒng)屬性中的信息類似的信息。例如,第一內容單元可保存關于第二內容單元中保存的內容的元數(shù)據(jù)。例如,該元數(shù)據(jù)可包括創(chuàng)建第二內容單元的時間、第二內容單元的大小和/或任何其它適當?shù)男畔?。當保存在第一內容單元中的元?shù)據(jù)由不同于存儲系統(tǒng)上的文件系統(tǒng)的實體創(chuàng)建時,即使第一內容單元被保存為文件系統(tǒng)中的文件,第一內容單元不被視為限定內容單元,因為該元數(shù)據(jù)不是由保存第一內容單元的存儲系統(tǒng)上的文件系統(tǒng)創(chuàng)建。除了不限定于由其上保存內容單元的存儲系統(tǒng)上的文件系統(tǒng)保存的文件系統(tǒng)屬性之外,限定內容單元在其它任何方面均沒有限制。在一實施例中,遷移至少部分僅保存用戶內容的限定內容單元。用戶內容是由在不同于存儲系統(tǒng)的計算機上運行的應用程序產(chǎn)生的內容,其可包括數(shù)據(jù)和/或元數(shù)據(jù)。如在此使用的,應用程序是有助于面向用戶的任務的計算機程序,所述任務如字處理、記錄(如財務或醫(yī)療記錄)的存儲和/或査看、管理庫存、發(fā)送和接收電子郵件、和/或任何其它面向用戶的任務。應意識到,當用戶內容由存儲系統(tǒng)外面的應用程序引起但在存儲之前被加密、壓縮或重新格式化(在所述存儲系統(tǒng)或別處)時,所保存的內容仍然被視為用戶內容。在另一實施例中,可遷移僅保存原始數(shù)據(jù)(即不保存任何元數(shù)據(jù))的限定內容單元。如下面更詳細描述的,僅保存原始數(shù)據(jù)的內容單元的一個例子是二進制大對象,保存元數(shù)據(jù)(及也可保存原始數(shù)據(jù))的內容單元的一個例子是內容描述符文件(CDF)。在另一實施例中,可遷移僅保存由所述存儲系統(tǒng)外面的實體(如主計算機和/或應用程序)產(chǎn)生的數(shù)據(jù)的限定內容單元。這樣的限定內容單元沒有在存儲系統(tǒng)內部產(chǎn)生的位(例如在所述存儲系統(tǒng)上運行的文件系統(tǒng)產(chǎn)生的文件系統(tǒng)屬性)。應意識到,當這樣的內容單元由所述存儲系統(tǒng)外面的實體產(chǎn)生但隨后在存儲之前在所述存儲系統(tǒng)內被加密、壓縮或重新格式化時,所保存的內容仍然被視為已在所述存儲系統(tǒng)外面產(chǎn)生。在另一實施例中,可遷移不保存任何可變元數(shù)據(jù)的限定內容單元。應意識到,在部分限定內容單元中保存的元數(shù)據(jù)可能不可變(即不能被改變)。相反,部分內容單元可包括能被改變的元數(shù)據(jù)(如由保存內容單元的存儲系統(tǒng)上的文件系統(tǒng)所寫的文件系統(tǒng)屬性),如上次訪問或修改的時間及訪問許可。在另一實施例中,可遷移對象可尋址的限定內容單元。對象可尋址內容單元是與對象標識符相關聯(lián)并可經(jīng)對象標識符進行訪問的內容單元,從訪問所述內容單元的實體的角度,所述對象標識符不控制所述內容單元保存在什么地方。應意識到,限定內容單元是內容單元的子集(即每一限定內容單元均為內容單元)。在本發(fā)明的不同實施例中,所述的各方面均可用于僅遷移限定內容單元、僅遷移不是限定內容單元的內容單元、或其一些組合。在一實施例中,提供存儲系統(tǒng),其能接收請求滿足至少一選擇條件的內容單元的請求。所述存儲系統(tǒng)可查找滿足所述選擇條件的任何內容單元并可響應于所述請求返回這些內容單元。在另一實施例中,主計算機可向存儲系統(tǒng)發(fā)出請求以提供保存在所述存儲系統(tǒng)上的、滿足所述請求中指明的選擇條件的內容單元(與僅僅對象標識符的情形相反)。在另一實施例中,所述存儲系統(tǒng)可以是提供OAS接口的OAS系統(tǒng),使用識別內容單元的對象標識符可通過所述接口對所述內容單元進行訪問。OAS系統(tǒng)還可具有接收請求的能力,該請求不提供特定內容單元的任何對象標識符但指明至少一選擇條件。響應于接收到所述請求,所述存儲系統(tǒng)識別保存于其上的、滿足所述請求中指定的選擇條件的內容單元并返回這些內容單元。在一有關實施例中,提供發(fā)出所述請求的主計算機。在另一實施例中,可提供動態(tài)向存儲系統(tǒng)的進行中的請求增加處理器或從其去除處理器的能力以提供滿足至少一選擇條件的內容單元。圖1為本發(fā)明的實施例可在其上實施的計算機系統(tǒng)ioo的框圖。計算機系統(tǒng)100包括存儲系統(tǒng)101和主計算機103。圖2為根據(jù)一實施例將存儲系統(tǒng)101上保存的內容單元提供給主計算機103的說明性過程的流程圖。如同2中所示,所述過程開始于步驟201,主計算機103向存儲系統(tǒng)101發(fā)送請求105,請求存儲系統(tǒng)提供其上保存的、滿足一個或多個選擇條件的內容單元。之后,所述過程進行到步驟203,存儲系統(tǒng)101接收所述請求。接著,所述過程進行到步驟205,所述存儲系統(tǒng)識別和査找滿足所述請求中指定的選擇條件的內容單元。之后,所述過程進行到步驟207,所述存儲系統(tǒng)將滿足請求105中指定的選擇條件的內容單元(如圖1中的內容單元107a、107b.....107n)提供給主計算機103。接下來,所述過程進行到步驟209,主計算機從所述存儲系統(tǒng)接收內容單元,及步驟211,所述主計算機處理所接收的內容單元。所述主計算機可按希望的方式處理所述內容單元,本發(fā)明在這方面沒有限制。請求105可指定任何適當?shù)倪x擇條件,本發(fā)明在這方面沒有限制。例如,所述選擇條件可包括內容單元保存在存儲系統(tǒng)101上的時間范圍、關鍵字(如包括在內容單元的元數(shù)據(jù)中的關鍵字)、內容單元的大小限制或大小范圍、內容類型(如數(shù)據(jù)、元數(shù)據(jù)或二者)、和/或任何其它適當?shù)臈l件。應意識到,所述請求可指定一個以上的搜索條件,當指定多個搜索條件時,這些搜索條件可以任何適當?shù)姆绞接刹紶栠壿嬤M行組合,本發(fā)明在這方面沒有限制。在圖1的例子中,存儲系統(tǒng)101響應于從主計算機103接收到請求105而將內容單元提供給主計算機103。然而,本發(fā)明在這方面沒有限制。如下面更詳細描述的,代替主計算機103或除了主計算機103之外,存儲系統(tǒng)101可將內容單元提供給其它目的地或其它類型的系統(tǒng)。主計算機103可以是任何類型的系統(tǒng),本發(fā)明在這方面沒有限制。例如,主計算機103可以是服務器,如應用程序服務器、個人計算機、設備或任何其它適當類型的系統(tǒng)。在一些實施例中,第二存儲系統(tǒng)可向存儲系統(tǒng)101發(fā)出指定一個或多個選擇條件的請求105(例如,代替主計算機103或除主計算機103之外),并響應于所述請求從存儲系統(tǒng)101接收滿足所述選擇條件的內容單元。.在一實施例中,存儲系統(tǒng)101可以是對象可尋址存儲(OAS)系統(tǒng)。也就是說,保存在存儲系統(tǒng)101上的每一內容單元均可與唯一(或近乎唯一)識別內容單元的對象標識符相關聯(lián)。因而,例如,要從存儲系統(tǒng)101請求特定內容單元,主計算機103可向存儲系統(tǒng)101發(fā)送包括所述內容單元的對象標識符的請求。從請求實體(如主計算機103)的角度,對象標識符與內容單元在存儲系統(tǒng)101上的物理或邏輯位置無關。因而,如果存儲系統(tǒng)101將內容單元移到不同的物理或邏輯位置,主計算機103仍能使用同一對象標識符訪問所述內容單元??稍谝恍嵤├惺褂玫膶ο髽俗R符類型的一個例子是內容地址。內容地址是至少部分從內容單元的至少一部分內容計算的標識符。也就是說,例如,內容單元的所有或部分內容可被散列(例如使用MD5或任何其它適當?shù)纳⒘兴惴?及散列值可用作內容地址或內容地址的一部分。使用內容地址作為對象標識符的OAS系統(tǒng)在此稱為內容可尋址存儲(CAS)系統(tǒng)。因而,在一實施例中,存儲系統(tǒng)101可以是CAS系統(tǒng)。在本發(fā)明的存儲系統(tǒng)101為OAS系統(tǒng)的實施例中,請求105可能不包括識別特定內容單元的任何對象標識符。而是,請求105僅可通過指定一個或多個選擇條件識別將要取回的內容單元。然而,本發(fā)明在這方面沒有限制,除了提供一個或多個選擇條件之外,請求105也可包括識別特定內容單元的一個或多個對象標識符和/或識別一個或多個內容單元的任何其它適當?shù)男畔?。如上所述,可在請?05中指定的選擇條件的例子為存儲系統(tǒng)返回滿足所述選擇條件的內容單元和/或關于這些內容單元的元數(shù)據(jù)。這可以任何適當?shù)姆绞綄崿F(xiàn),本發(fā)明在這方面沒有限制。在本發(fā)明的一些實施例中,保存在內容單元中的內容可包括數(shù)據(jù)(如應用數(shù)據(jù))及關于所述數(shù)據(jù)的元數(shù)據(jù)(例如,當保存所述數(shù)據(jù)時,保存其的應用程序的身份等)。在本發(fā)明的一些實施例中,數(shù)據(jù)及其相應的元數(shù)據(jù)可保存在同一內容單元中。然而,本發(fā)明在這方面沒有限制,在其它實施例中,數(shù)據(jù)及其相應的元數(shù)據(jù)可保存在分開的內容單元中。將數(shù)據(jù)和元數(shù)據(jù)保存在分開的內容單元中可以任何適當?shù)姆绞綄崿F(xiàn),本發(fā)明在這方面沒有限制。在一實施例中,保存元數(shù)據(jù)的內容單元,在此稱為內容描述符文件(CDF),包括對保存所述元數(shù)據(jù)所屬數(shù)據(jù)的一個或多個分開的內容單元的引用。保存數(shù)據(jù)的內容單元在此稱為二進制大對象。CDF可引用和保存任何適當數(shù)量的二進制大對象的元數(shù)據(jù),本發(fā)明在這方面沒有限制。例如,如圖3中所示,CDF301引用及包括三個二進制大對象(即二進制大對象303、305和307)的元數(shù)據(jù)。具有CDF的系統(tǒng)及OAS系統(tǒng)中的二進制大對象的例子的詳細情況在表l所列申請中提供(每一申請均通過引用組合于此)。CDF301可以任何適當?shù)姆绞揭枚M制大對象,本發(fā)明在這方面沒有限制。例如,CDF301可將其引用的每一二進制大對象的對象標識符保存為對二進制大對象的引用。因而,例如,如果二進制大對象303保存來自機場安全攝像機1的視頻數(shù)據(jù),二進制大對象305和307保存來自機場安全攝像機2的視頻數(shù)據(jù),CDF301中二進制大對象303的元數(shù)據(jù)可表明二進制大對象303的內容是來自機場安全攝像機1的視頻數(shù)據(jù),而二進制大對象305和307的元數(shù)據(jù)表明這些二進制大對象的內容是來自機場安全攝像機2的視頻數(shù)據(jù)。因而,對機場安全攝像機1的元數(shù)據(jù)搜索可導致識別CDF301。CDF301的元數(shù)據(jù)可被檢查以確定二進制大對象303保存來自機場安全攝像機1的視頻數(shù)據(jù)。二進制大對象303的對象標識符可從CDF301獲得,之后,使用該對象標識符可對二進制大對象303進行訪問使得該二進制大對象可以任何所希望的方式(例如,使用面部識別軟件)進行處理。當元數(shù)據(jù)保存在CDF中及其相應的數(shù)據(jù)保存在二進制大對象中時,如果僅希望接收元數(shù)據(jù)且不希望接收數(shù)據(jù),作為選擇條件之一,主計算機103可請求存儲系統(tǒng)101僅提供CDF而不提供二進制大對象。類似地,如果僅希望接收數(shù)據(jù)而不希望接收元數(shù)據(jù),作為選擇條件之一,主計算機103可請求存儲系統(tǒng)101僅提供二進制大對象而不提供CDF?;蛘呖烧埱筇峁┰獢?shù)據(jù)和數(shù)據(jù)。在一實施例中,存儲系統(tǒng)101默認配置成響應于請求105僅提供二進制大對象。因而,不必將"僅二進制大對象"指定為選擇條件之一。例如,存儲系統(tǒng)101可接收包括選擇條件的請求。所述存儲系統(tǒng)可識別滿足所述選擇條件的CDF而不是返回這些CDF,及可査找和返回由滿足所述選擇條件的CDF引用的二進制大對象。存儲系統(tǒng)101響應于請求105可以任何適當?shù)姆绞郊叭魏芜m當?shù)母袷较蛑鳈C103提供內容單元,本發(fā)明在這方面沒有限制。在一實施例中,存儲系統(tǒng)以冇助于主機處理及可由主機指定的方式向所述主機提供內容單元。在一實施例中,存儲系統(tǒng)101可將內容單元保存在主計算機103上的文件系統(tǒng)中。當主計算機103上的文件系統(tǒng)用于保存響應于請求105提供的內容單元時,所述文件系統(tǒng)可以任何適當?shù)姆绞竭M行組織。例如,所述文件系統(tǒng)可使用基于時間的目錄結構、基于對象標識符組織的目錄結構、基于元數(shù)據(jù)關鍵字組織的目錄結構、或任何其它適當?shù)哪夸浗Y構。圖4為具有基于對象標識符組織的目錄結構的說明性文件系統(tǒng)。圖4的目錄結構包括多個分層目錄。頂層目錄稱為根目錄402。在層次的第二級為多個子目錄404。這些子目錄中的每一個代表內容單元的對象標識符中的第一字符。也就是說,具有以字符"A"開始的對象標識符的內容單元保存在目錄"A"的子目錄之一中。內容單元保存于其中的子目錄406隨對象標識符的第二字符確定。當主計算機103訪問已從存儲系統(tǒng)101取回并保存在文件系統(tǒng)中的內容單元時,主計算機可基于它們的對象標識符查找特定內容單元。例如,主計算機上的應用程序可通過遍歷文件系統(tǒng)層級以查找其名稱與內容單元的對象標識符的前兩個字符匹配的子目錄而查找特定內容單元。在圖4的目錄結構中,葉目錄406代表內容單元的對象標識符的前兩個字符。然而,本發(fā)明在這方面沒有限制,本發(fā)明的各實施例可使用具有附加層級的分層目錄結構。可使用任何適當數(shù)量的附加層級,本發(fā)明在這方面沒有限制。例如,子目錄"AA"可具有子目錄AAA-MZ(即26個子目錄),其為目錄結構的葉子目錄。因而,內容單元保存于其中的子目錄隨其對象標識符的前三個字符確定。在另一實施例中,主計算機103上的文件系統(tǒng)目錄結構可基于時間進行組織,及所述目錄結構中的內容單元的位置可基于所述內容單元初始保存于存儲系統(tǒng)101上的時間進行選擇。例如,在2004年7月31日上午11點整保存的內容單元可保存在具有6級(按層次順序L1-L6)的目錄結構屮的目錄/2004/07/31/11/00/00中,其中目錄L1保存指明保存內容單元的年度的值2004,子目錄L2保存指明月份的值07,子目錄L3保存指明日子的值31,子目錄L4保存指明小時的值ll,子目錄L5保存指明分鐘的值00,及子目錄L6保存指明秒數(shù)的值OO。因而,例如,如果第二內容單元在2004年7月31日上午11點30分保存在存儲系統(tǒng)上,則該第二內容單元可保存在主計算機上的文件系統(tǒng)的目錄/2004/07/31/11/30/00中?;跁r間的目錄結構有助于使主計算機上的應用程序能基于內容單元初始保存于存儲系統(tǒng)101上的時間査找內容單元。應意識到,采用時間指明保存內容單元的目錄結構的本發(fā)明實施例不限于上述的特定例子,本發(fā)明的實施例可以多種方式中的任何方式實施,包括在建立子目錄層級邊界和子目錄層級數(shù)量時使用不同的時間單位。如上所述,可使用許多其它適當?shù)哪夸浗Y構(例如,基于元數(shù)據(jù)關鍵字或其它選擇條件組織的目錄結構),本發(fā)明在這方面沒有限制??梢匀魏芜m當?shù)姆绞絼?chuàng)建目錄結構及將內容單元放入適當?shù)哪夸浿?,本發(fā)明在這方面沒有限制。在一實施例中,主計算機103上的文件系統(tǒng)可以是網(wǎng)絡化文件系統(tǒng)。存儲系統(tǒng)101可創(chuàng)建目錄結構并將內容單元放入目錄結構中的適當目錄中。在另一實施例中,主計算機103上的文件系統(tǒng)不必須是可由存儲系統(tǒng)101訪問的網(wǎng)絡化文件系統(tǒng)(盡管其可以是)。主計算機103上的軟件,如應用程序編程接口(API),可用作所述存儲系統(tǒng)101和希望訪問存儲系統(tǒng)101上的內容的應用程序之間的接口。API負責創(chuàng)建和管理目錄結構。例如,如圖5中所示,主計算機103可運行應用程序501和API503。應用程序501可以是任何類型的應用程序,其從存儲系統(tǒng)101讀內容單元和/或將內容單元寫到存儲系統(tǒng)101。API503可提供一組可由應用程序501調用以與存儲系統(tǒng)101通信的子例程。因此,例如,應用程序501可調用API503的子例程,其使API503發(fā)送請求給存儲系統(tǒng)101以請求滿足指定選擇條件的內容單元。應用程序可在子例程調用中指定選擇條件或以任何其它適當?shù)姆绞街付?。應用程序還可在子例程調用中指定返回結構的方式(如基于時間的冃錄結構或其它類型的目錄結構)或以任何其它適當?shù)姆绞街付?。存儲系統(tǒng)101可接收所述請求、識別所請求的內容單元、及將這些內容單元返回給API503。API503可接收所返回的內容單元并將每一內容單元放在文件系統(tǒng)目錄結構中的適當目錄中。如果適當?shù)哪夸浬胁淮嬖?,則API503可向文件系統(tǒng)目錄結構添加適當?shù)哪夸?。在上面的例子中,API503用作接口,應用程序501通過其與存儲系統(tǒng)101通信,及用作將從存儲系統(tǒng)101接收的內容單元組織到特定目錄結構內的實體。然而,本發(fā)明在這方面沒有限制,在一些實施例中,這兩個操作可由分開的實體(例如分開的軟件程序)執(zhí)行。在上面的例子中,內容單元保存在文件系統(tǒng)中(盡管本發(fā)明在這方面沒有限制)。在一些實施例中,每一內容單元保存為文件系統(tǒng)中的單獨文件。然而,本發(fā)明在這方面沒有限制,多個內容單元也可"集裝箱化"(即保存)在單一文件中。內容單元的集裝箱化在下面表1中所列的部分普通轉讓的申請中詳細討論。上面的例子將文件系統(tǒng)稱為具有包括目錄的目錄結構。如在此使用的,目錄指文件系統(tǒng)中的邏輯實體,其邏輯上保存文件和/或其它目錄。一些文件系統(tǒng)使用術語"文件夾"而不是術語"目錄"。應意識到,如在此使用的,術語"目錄"包括"文件夾"或文件系統(tǒng)中邏輯上保存文件的任何其它邏輯實體和/或其它邏輯存儲實體。此外,上面例子中的說明性文件系統(tǒng)目錄結構采用分層目錄結構,藉此按層次安排目錄。應意識到,在內容單元保存在主計算機上的文件系統(tǒng)中的本發(fā)明實施例中,文件系統(tǒng)的目錄結構不必須分層,也可使用扁平的目錄結構或任何其它適當?shù)哪夸浗Y構。此外,文件系統(tǒng)不必須基于將要保存在文件系統(tǒng)中的內容單元的部分特征進行組織,本發(fā)明在這方面沒有限制。文件系統(tǒng)可以任何適當?shù)姆绞竭M行組織或根本不必組織。如上所述,當存儲系統(tǒng)101接收請求以提供其上保存的、滿足所述請求中指定的選擇條件的內容單元,存儲系統(tǒng)101可識別和查找其上保存的滿足所述請求的內容單元。這可以任何適當?shù)姆绞竭M行,本發(fā)明在這方面沒有限制。例如,在一實施例中,存儲系統(tǒng)101可識別滿足所述選擇條件的每一內容單元并創(chuàng)建對應于這些內容單元的對象標識符的列表。在完成該列表之后,存儲系統(tǒng)可遍歷所述列表,訪問對應于所述列表中的每一對象標識符的內容單元并將其提供給主計算機。在另一實施例中,存儲系統(tǒng)101可開始識別滿足選擇條件的內容單元,當每一內容單元均被識別時,所述內容單元可被訪問并提供給主計算機。應意識到,識別內容單元和訪問內容單元可以是兩個分立的程序(盡管每一程序可由同一計算機進程或線程執(zhí)行,在此所述的本發(fā)明的各實施例在這方面沒有限制)。例如,由存儲系統(tǒng)101接收的請求可詢問其元數(shù)據(jù)包括某一關鍵字的內容單元。存儲系統(tǒng)可以任何適當?shù)姆绞阶R別內容單元,本發(fā)明在這方面沒有限制。在一實施例中,存儲系統(tǒng)可具有元數(shù)據(jù)索引,其將元數(shù)據(jù)關鍵字映射到對應于其元數(shù)據(jù)包括所述關鍵字的內容單元的一個或多個對象標識符。識別內容單元使必須搜索元數(shù)據(jù)索引以確定對應于其內容包括所指定關鍵字的內容單元的對象標識符。訪問內容單元使必須將對象標識符轉換為內容單元的內容保存于其處的物理存儲位置(如磁盤位置)及從該存儲位置取回所述內容。在一些情況下,識別內容單元可包括訪問內容單元。例如,在一些實施例中,存儲系統(tǒng)101可能沒有將元數(shù)據(jù)關鍵字映射到對象標識符的先前存在的元數(shù)據(jù)索引。因而,要確定哪些內容單元具有包括某一關鍵字的元數(shù)據(jù),存儲系統(tǒng)101可訪問內容單元并對所述關鍵字搜索元數(shù)據(jù)。在采用先前存在的元數(shù)據(jù)索引的實施例中,所述元數(shù)據(jù)索引將元數(shù)據(jù)關鍵字映射到其內容單元在元數(shù)據(jù)中包括那些關鍵字的對象標識符,應意識到,所述索引不必須保存在存儲系統(tǒng)101上,及存儲系統(tǒng)101不必須執(zhí)行這些元數(shù)據(jù)關鍵字的索引,本發(fā)明在這方面沒有限制。例如,在一些實施例中,元數(shù)據(jù)關鍵字的索引可獨立于存儲系統(tǒng)執(zhí)行(例如,由位于所述存儲系統(tǒng)外面的設備或其它計算機執(zhí)行)。單獨的編索引器可能不保存內容單元,但可接收(同步或異步)保存在存儲系統(tǒng)101上的內容單元并處理它們以創(chuàng)建元數(shù)據(jù)索引。如上所述,滿足主計算機103發(fā)出的請求中指明的選擇條件的內容單元可從存儲系統(tǒng)101返回到不同于主計算機103的系統(tǒng)或除主計算機103之外還返回到其它系統(tǒng)。例如,在主計算機103上運行的應用程序可發(fā)出請求內容單元的請求,所述內容單元包括來自機場安全攝像機的在2005年1月12日和2005年1月18日之間保存在存儲系統(tǒng)101上的視頻數(shù)據(jù)。所述應用程序可配置成對所述視頻數(shù)據(jù)執(zhí)行面部識別(和/或其它處理)技術。其它主計算機可用于運行同一應用程序的分開的例圖。因而,可能希望將滿足所述選擇條件的部分內容單元發(fā)送給每一主計算機,使得應用程序的每一例圖可并行處理內容單元的一部分。因而,相較應用程序的單一例圖處理所有內容單元的情況,可更快地獲得結果。在上面的例子中,面部識別應用程序用于處理保存來自機場安全系統(tǒng)的視頻數(shù)據(jù)的內容單元。然而,本發(fā)明在這方面沒有限制,任何適當類型的應用程序均可使用,及保存任何適當類型的內容的內容單元可從所述存儲系統(tǒng)提供和處理。滿足指定選擇條件的內容單元從存儲系統(tǒng)101遷移到一個或多個主計算機而不是發(fā)出請求所述內容單元的請求的主計算機或者除發(fā)出所述請求的主計算機之外還遷移到其它主計算機可以任何適當?shù)姆绞綀?zhí)行,本發(fā)明在這方面沒有限制。此外,如下面詳述的,將內容單元遷移到不同于發(fā)出所述請求的主計算機(即主計算機103)的主計算機可在存儲系統(tǒng)101已開始向主計算機103提供滿足所述選擇條件的內容單元之后開始。滿足所述選擇條件的內容單元將被提供給其它主計算機而不是主計算機103或除主計算機103之外還提供給其它主計算機的指示不必須在所述請求之前或與所述請求同時提供給存儲系統(tǒng)。而是,所述指令可在存儲系統(tǒng)已接收所述請求之后的任何時間提供給存儲系統(tǒng)。另外,響應于所述請求已開始從存儲系統(tǒng)ioi接收內容單元的主計算機可向存儲系統(tǒng)101發(fā)送指示以停止向其發(fā)送內容單元。因而,內容單元可被發(fā)送給其的計算機的數(shù)量可動態(tài)改變以增加或減少處理器的數(shù)量或替換處理器。在一些實施例中,給存儲系統(tǒng)101的初始請求可指定結果將提供給其的一個或多個主計算機(包括發(fā)出所述請求的主計算機或除發(fā)出所述請求的主計算機之外的主計算機)。如在此使用的,術語"迭代"指在存儲系統(tǒng)101上搜索滿足訪問請求中指明的條件的內容單元。因而,當存儲系統(tǒng)101接收請求以將滿足指定條件的內容單元提供給一個或多個目的地時,代表搜索那些內容單元的迭代在存儲系統(tǒng)101上創(chuàng)建(即存儲系統(tǒng)101開始搜索那些內容單元)。當存儲系統(tǒng)101隨后接收請求以開始將在所述搜索中識別的內容單元提供給另外的目的地(如主計算機)時,所述另外的目的地在此稱為"加入迭代"。當存儲系統(tǒng)101接收請求以停止向正作為迭代的一部分接收內容單元的目的地提供內容單元時,所述目的地在此稱為"退出迭代"。因此,在向存儲系統(tǒng)發(fā)送請求以提供內容單元之前不必須分配資源來處理從所述存儲系統(tǒng)提供的那些內容單元。而是,所述存儲系統(tǒng)可在資源可用于處理內容單元時將在迭代中識別的那些內容單元提供給所述資源,并可在所述資源不可用時停止向其提供內容單元(例如,那些被其它處理任務需要的資源)。圖6示出了包括存儲系統(tǒng)101和多個主計算機601a、601b、601c和601d的計算機系統(tǒng)。每一主計算機可運行應用程序603a-d(例如處理來自內容單元的內容的程序)并包括接口605a-d,應用程序(例如應用程序601)通過所述接口與存儲系統(tǒng)101通信以創(chuàng)建和/或加入迭代。接口605可以是與應用程序通過其與存儲系統(tǒng)101通信的接口分開的接口以用于其它類型的訪問請求(如讀、寫和査詢請求)或可形成該接口的一部分,本發(fā)明在這方面沒有限制。例如,接口605可以是與圖5中的接口503分開的接口,或可形成接口503的一部分。在接口605與API503分開的實施例中,每一接口605可執(zhí)行在上面的例子中描述的山API503執(zhí)行的操作的一部分。除了API503之外或替代API503,接口605可執(zhí)行這些操作。例如,在從存儲系統(tǒng)接收的內容單元保存在主計算機上的文件系統(tǒng)中的實施例中,接口605可將內容單元保存在文件系統(tǒng)的適當目錄中和/或創(chuàng)建及管理文件系統(tǒng)的目錄結構。圖7描述了說明性過程,通過其可在存儲系統(tǒng)101上創(chuàng)建迭代及另外的主計算機可加入所述迭代。過程開始于步驟701,主計算機(如主計算機601a)初始發(fā)送請求給存儲系統(tǒng)101請求滿足指定選擇條件的內容單元。之后所述過程進行到步驟703,存儲系統(tǒng)接收所述請求并創(chuàng)建對應于所述請求的迭代(即開始搜索內容單元)。在一些實施例中,存儲系統(tǒng)101可以是分布式存儲系統(tǒng)。分布式存儲系統(tǒng)的例子800如圖8中所示。分布式存儲環(huán)境800包括多個訪問節(jié)點801a-801c和多個存儲節(jié)點803a-803e。訪問節(jié)點801可從主計算機接收訪問請求并對其進行響應,存儲節(jié)點803可保存由主計算機發(fā)送給存儲環(huán)境800的內容。訪問節(jié)點801和存儲節(jié)點803可由網(wǎng)絡(未示出)連接并在網(wǎng)絡上通信,使得每一節(jié)點可使其存在于網(wǎng)絡上可為其它節(jié)點知道。這樣,所述節(jié)點可一起工作以處理訪問請求并保存給主計算機的數(shù)據(jù)。每一節(jié)點可包括處理資源(如處理器和內存)及存儲設備。所述節(jié)點相互通信以保存內容、響應于訪問請求、及執(zhí)行其它環(huán)境功能。對于存儲環(huán)境的用戶(如主計算機或其上運行的應用程序),存儲環(huán)境可表現(xiàn)為單一實體。也就是說,用戶不必意識到所述存儲環(huán)境包括多個分開的節(jié)點或某一單位的數(shù)據(jù)保存或鏡像在哪一存儲節(jié)點上。在存儲系統(tǒng)101為分布式存儲系統(tǒng)的實施例中,迭代可在存儲系統(tǒng)中滿足所述選擇條件的內容單元可能保存于其上的每一存儲節(jié)點上創(chuàng)建。也就是說,分布式存儲系統(tǒng)中的訪問節(jié)點可接收請求滿足所述選擇條件的內容單元的請求并指示可能保存那些內容單元中的任何內容單元的每一存儲節(jié)點開始搜索保存于其上的、滿足所述選擇條件的內容單元。當存儲節(jié)點識別滿足所述選擇條件的內容單元時,其可將這些內容單元返回給發(fā)出指示的訪問節(jié)點從而提供給迭代中的一個或多個主計算機,或可將所述內容單元直接提供給加入所述迭代的主計算機之一。在分布式存儲系統(tǒng)中,內容單元可被鏡像在兩個或兩個以上存儲節(jié)點上。也就是說,同一內容單元的兩個或兩個以上拷貝可被保存在分布式存儲系統(tǒng)中的不同存儲節(jié)點上。可以這樣做,例如使得在內容單元的拷貝之一被破壞或內容單元保存于其上的存儲節(jié)點變得不可用(如由于硬件故障)時所述內容單元仍可用。在響應于請求在每一存儲節(jié)點上創(chuàng)建迭代的實施例中,兩個或兩個以上的存儲節(jié)點可識別同一內容單元,因為這些存儲節(jié)點中的每一個可識別保存于其上的內容單元的鏡像拷貝。因此,在一些實施例中,同一內容單元的鏡像拷貝可被過濾使得所述內容單元只有一個拷貝提供給加入迭代的應用程序。鏡像拷貝可以任何適當?shù)姆绞竭^濾,本發(fā)明在這方面沒有限制。例如,在一實施例中,與內容單元相關聯(lián)或包括在內容單元中的元數(shù)據(jù)可指明所述內容單元是原始拷貝還是鏡像拷貝。存儲節(jié)點可讀所述元數(shù)據(jù)并僅返回內容單元的原始拷貝。在另一實施例中,其中存儲節(jié)點將滿足選擇條件的內容單元提供給發(fā)出指示的訪問節(jié)點(即接收所述請求的訪問節(jié)點)且所述訪問節(jié)點將所述內容單元返回給加入迭代的主計算機,所述訪問節(jié)點可(例如使用內容單元的對象標識符)追蹤己發(fā)送哪些內容單元并濾掉任何副本。在一些實施例中,副本內容單元(如鏡像拷貝)不可被濾掉,因為本發(fā)明不限于濾掉副本。因而,例如,同一內容單元的兩個拷貝可被提供給迭代中的一個或多個應用程序及每一拷貝可由應用程序之一處理。在已創(chuàng)建迭代之后,所述過程進行到步驟705,存儲系統(tǒng)創(chuàng)建識別所述迭代的會話標識符并將所述會話標識符返回給發(fā)出請求的主計算機(在該例子中為主計算機601a)。存儲系統(tǒng)101可經(jīng)接口605a或以任何其它適當?shù)姆绞綄⑺鰰挊俗R符返回給應用程序603a。使用會話標識符使存儲系統(tǒng)能同時處理多個迭代。實際上,同一主計算機上的不同應片J程序可同時參與不同的迭代,或同一應用程序可同時參與兩個不同的迭代。接著,所述過程進行到步驟707,應用程序可將所述會話標識符分發(fā)給在其它主計算機上運行的其它應用程序。接著,所述過程進行到步驟709,在其它主計算機上運行的其它應用程序使用所述會話標識符加入所述迭代。這可以任何適當?shù)姆绞綄崿F(xiàn),本發(fā)叨在這方面沒有限制。例如,在主計算機601b上運行的應用程序603b,在從應用程序603a接收到所述會話標識符之后,可向接口605b表明其希望加入存儲系統(tǒng)101上對應于所接收會話標識符的迭代。應用程序603b可向接口605b登記調回。g卩,應用程序603b可提供當接口605b從存儲系統(tǒng)101接收到所述迭代產(chǎn)生的內容單元時要調用的子例程的名稱。所述子例程可以是將所接收的內容單元提供給所述應用程序的子例程或可以是通知所述應用程序內容單元已被接收并保存在主計算機上(如文件系統(tǒng)中)的子例程。在上面的例子中,接口605b通過調用所登記的子例程將內容單元"進棧"到應用程序603b。然而,本發(fā)明不限于使用調回子例程,因為應用程序可以任何適當?shù)姆绞綇慕涌诮邮諆热輪卧@?,應用程序可通過調用接口的子例程而從所述接口"出棧"內容單元。當接口605b從應用程序接收到請求加入由所述會話標識符識別的迭代的指示時,所述接口可向存儲系統(tǒng)101發(fā)送主計算機601b希望加入該迭代的指令。對于每一迭代,存儲系統(tǒng)101可(如在記錄中)保留加入所述迭代的主計算機的信息。當存儲系統(tǒng)101(如從接口)接收到主計算機希望加入對應于指定會話標識符的迭代的指令時,所述存儲系統(tǒng)可將該主計算機添加到識別加入迭代的主計算機的信總中。根據(jù)一實施例,將主計算機添加到迭代的指令可在請求內容單元的初始請求巳由存儲系統(tǒng)接收之后但所述迭代完成之前的任何吋間發(fā)送給存儲系統(tǒng)101,本發(fā)明在這方面沒有限制。因而,即使在滿足指定搜索條件的部分(甚至大多數(shù))內容單元已被識別并提供給先前加入迭代的一個或多個主計算機之后,主計算機仍可加入迭代。接下來,所述過程進行到步驟711,存儲系統(tǒng)將內容單元提供給已加入所述迭代的主計箅機。如上所述,存儲系統(tǒng)101可保留加入所述迭代的所有主計算機的記錄。當內容單元已被識別為滿足所指定選擇條件且所述存儲系統(tǒng)己訪問所述內容單元并準備好將這些內容單元返回給加入所述迭代的主計算機之一時,所述存儲系統(tǒng)可選擇這些主計算機之一接收所述內容單元。這可以任何適當?shù)姆绞綄崿F(xiàn),本發(fā)明在這方面沒有限制。例如,在一實施例中,存儲系統(tǒng)可任意或偽隨機地選擇主計算機之一接收內容單元。在另一實施例中,負載均衡方案可用于選擇主計算機之一。任何適當?shù)呢撦d均衡方案均可使用,本發(fā)明在這方面沒有限制。例如,可使用循環(huán)方案,即使用關于每一主計算機上的可用處理資源和/或能力的信息的方案,或可使用任何其它適當?shù)呢撦d均衡方案。應意識到,本發(fā)明不限于將內容單元提供給多個主計算機,在一些實施例中,在迭代中識別的內容單元可僅提供給單一主計算機例如發(fā)出請求的主計算機。此外,在一些實施例中,將迭代中識別的內容單元提供給多個主計算機的能力可能不被實現(xiàn),即使在實現(xiàn)時,向迭代動態(tài)添加主計算機或從迭代動態(tài)去除主計算機的能力也可能不被實現(xiàn),本發(fā)明在這方面沒有限制。另外,在一些實施例中,向迭代動態(tài)添加主計算機的能力可被實現(xiàn),但不實現(xiàn)動態(tài)去除主計算機的能力;或者,從迭代動態(tài)去除主計算機的能力可被實現(xiàn),但不實現(xiàn)動態(tài)添加主計算機的能力,本發(fā)明在這方面沒有限制。根據(jù)一實施例,加入迭代的主計算機可在所述迭代結束之前的任何時間退出所述迭代,及所述存儲系統(tǒng)可停止向所述主計算機提供內容單元。這可以任何適當?shù)姆绞綄崿F(xiàn),本發(fā)明在這方面沒有限制。例如,加入存儲系統(tǒng).101上的迭代的應用程序603b可向接口605b發(fā)送指明會話標識符并請求退出相應迭代的指示。接口605b可向存儲系統(tǒng)101發(fā)送表明所述主計算機希望退出由所述會話標識符識別的迭代的請求。作為響應,存儲系統(tǒng)101可從識別加入迭代的主計算機的記錄中去除所述主計算機。因而,存儲系統(tǒng)101將不再繼續(xù)從該迭代提供內容單元給所述主計算機。如在此使用的,為保存從存儲系統(tǒng)接收的不同內容單元而被分配單獨存儲空間和/或單獨處理不同內容單元的每一節(jié)點、處理器或并行計算機的處理器核均可視為單獨的主計算機、系統(tǒng)或服務器,而共同處理相同內容單元的節(jié)點、處理器或處理器核(即協(xié)作處理單一內容單元的多個節(jié)點、處現(xiàn)器或處理器核)可共同視為單一主計算機、系統(tǒng)或服務器。在一實施例中,存儲系統(tǒng)101可服務迭代并同時接收與所述迭代無關的其它訪問請求。例如,在服務迭代的同時,存儲系統(tǒng)101可從未參與所述迭代的主計算機或正參與所述迭代的主計算機接收讀和/或寫請求(如與所述迭代無關的請求)。因而,在一實施例中,存儲系統(tǒng)可確定所述訪問請求相對于所述迭代的優(yōu)先級,如果確定所述訪問請求具有高優(yōu)先級,則減慢所述迭代以釋放資源從而用于處理這些訪問請求。存儲系統(tǒng)可以任何適當?shù)姆绞酱_定訪問請求的優(yōu)先級,本發(fā)明在這方面沒有限制。例如,在一實施例中,存儲系統(tǒng)可基于發(fā)出所述訪問請求的主計算機或應用程序確定優(yōu)先級。在另一實施例中,所述訪問請求可包括優(yōu)先級額定值,所述存儲系統(tǒng)可使用該額定值確定是否釋放處理資源及釋放多少處理資源來服務于所述請求。存儲系統(tǒng)可以任何適當?shù)姆绞结尫耪糜诜盏奶幚碣Y源。例如,存儲系統(tǒng)可包括一個或多個多任務處理器,其中在一個或多個所述處理器上運行的一個或多個進程是服務所述迭代的進程及一個或多個其它進程是服務所述訪問請求的進程。存儲系統(tǒng)可指定所述處理器花費其一定數(shù)量^rs分比的吋間運行服務于所述迭代的進程。當接收到高優(yōu)先級訪問請求時,存儲系統(tǒng)可減少所述處理器在服務亍所述迭代的進程上花費的時間量。在一實施例中,存儲系統(tǒng)101可以是存儲系統(tǒng)聯(lián)合。艮p,存儲系統(tǒng)101可包括兩個或兩個以上分開的存儲系統(tǒng),每一存儲系統(tǒng)包括單獨的處理資源,但對訪問這些存儲系統(tǒng)中的任一存儲系統(tǒng)上的內容的實體這些存儲系統(tǒng)表現(xiàn)為單一存儲系統(tǒng)。存儲系統(tǒng)聯(lián)合的例子在下面表i中所列部分申請中詳細描述。當主計算機向存儲系統(tǒng)聯(lián)合發(fā)送請求滿足指定選擇條件的內容單元的請求時,在一實施例中,該請求可僅由所述存儲系統(tǒng)聯(lián)合中的存儲系統(tǒng)之一接收。然而,可以預計,保存在所述存儲系統(tǒng)聯(lián)合中的滿足所述選擇條件的任何內容單元均將被返回,不管這些內容單元是保存在接收請求的存儲系統(tǒng)上還是保存在所述存儲系統(tǒng)聯(lián)合中的其它存儲系統(tǒng)上。在存儲系統(tǒng)101為存儲系統(tǒng)聯(lián)合的本發(fā)明實施例中,當所述存儲系統(tǒng)聯(lián)合中的存儲系統(tǒng)之一接收請求滿足指定選擇條件的內容單元的請求時,所述存儲系統(tǒng)在該存儲系統(tǒng)上創(chuàng)建迭代并產(chǎn)生用于該迭代的會話標識符。此外,所述存儲系統(tǒng)可指示所述存儲系統(tǒng)聯(lián)合中可能保存滿足所述請求的內容單元的其它存儲系統(tǒng)也創(chuàng)建迭代并賦予這些迭代相同的會話標識符。所述存儲系統(tǒng)也可指定發(fā)出所述請求的主計算機,使得所述存儲系統(tǒng)聯(lián)合中的其它存儲系統(tǒng)可將滿足所述選擇條件的內容單元返回給該主計算機。如果所述存儲系統(tǒng)聯(lián)合中的任何存儲系統(tǒng)隨后接收到向迭代添加主計算機的指令,接收所述指令的存儲系統(tǒng)可將該指令轉發(fā)給所述存儲系統(tǒng)聯(lián)合中的其它主計算機及每一存儲系統(tǒng)均可向其迭代添加所述主計算機。本發(fā)明的上述實施例可在任何適當?shù)挠嬎銠C或存儲系統(tǒng)上實施。適當?shù)挠嬎銠C和/或存儲系統(tǒng)的例子在下表1中列出的專利申請中描述(統(tǒng)稱為"OAS申請"),每一申請通過引用組合于此。應意識到,在這些申請中描述的計算機和存儲系統(tǒng)僅是本發(fā)明的實施例可于其上實施的計算機和存儲系統(tǒng)的例子,因為本發(fā)明不限于在這些對象可尋址存儲系統(tǒng)中的任一系統(tǒng)上實施,或根本不限于對象可尋址存儲系統(tǒng)。表1<table>tableseeoriginaldocumentpage29</column></row><table><table>tableseeoriginaldocumentpage30</column></row><table><table>tableseeoriginaldocumentpage31</column></row><table><table>tableseeoriginaldocumentpage32</column></row><table>在任何適當?shù)奶幚砥骰蛱幚砥鹘M上運行,無論提供在單一計算機中還是分布在多個計算機之間。應意識到,執(zhí)行上述功能的任何組成部分可被一般地視作控制上述功能的一個或多個控制器。一個或多個控制器可以多種方式中的任一方式實現(xiàn),如使用微代碼或軟件編程以執(zhí)行上述功能的專用硬件或通用硬件(如一個或多個處理器)。在這方面,應意識到,本發(fā)明的實施例的一種實施包括編碼以計算機程序(即多條指令)的至少一計算機可讀介質(如計算機存儲器、軟盤、光盤、磁帶等),所述計算機程序在處理器上運行時執(zhí)行本發(fā)明實施例的上述功能。計算機可讀介質可移動,使得其上保存的程序可被裝到任何計算機環(huán)境資源上以實現(xiàn)在此描述的本發(fā)明的各方面。此外,應意識到,提及當運行時執(zhí)行上述功能的計算機程序時不限于在主計算機上運行的應用程序。而是,術語計算機程序在此按一般意義使用,其指可用于編程處理器以實施本發(fā)明的上述各方面的任何類型的計算機代碼(如軟件或微代碼)。應意識到,根據(jù)其中方法實施在計算機可讀介質中的本發(fā)明的幾個實施例,計算機實施的方法在其運行過程期間也可接收人工輸入(如從用戶)。在此使用的措辭和術語用于描述的目的,不應被視作限制。"包括"、"包含"、"具有"及其變化的使用意為包括其后列出的項目及另外的項目。上面已詳細描述本發(fā)明的幾個實施例,對本領域技術人員而言,各種修改和改進將容易發(fā)生。這些修改和改進應在本發(fā)明的精神和范圍內。因而,前面的描述僅作為例子,并非意于限制。本發(fā)明僅限定為下述權利要求及其等同內容定義的范圍。權利要求1、在包括至少一保存多個限定內容單元的存儲系統(tǒng)的計算機系統(tǒng)中使用的方法,該方法包括步驟(A)在所述至少一存儲系統(tǒng)接收提供至少一選擇條件的請求;及(B)響應于接收到所述請求,從所述至少一存儲系統(tǒng)提供滿足所述至少一選擇條件的多個限定內容單元中的每一內容單元。2、根據(jù)權利要求1的方法,其中所述至少一選擇條件包括至少一不同于每一所提供的限定內容單元保存于所述至少一存儲系統(tǒng)上的時間的條件。3、根據(jù)權利要求1的方法,其中所述請求從主計算機接收,及其中所述步驟(B)包括將滿足所述至少一選擇條件的多個限定內容單元中的每一內容單元提供給所述主計算機。4、根據(jù)權利要求3的方法,其中所述請求從在至少一主計算機上運行的至少一應用程序接收,及其中所述步驟(B)包括將滿足所述至少一選擇條件的多個限定內容單元中的每一內容單元提供給所述至少一應用程序。5、根據(jù)權利要求1的方法,其中每一限定內容單元經(jīng)相異標識符進行邏輯對象識別,及其中所述步驟(B)包括用識別信息提供滿足所述至少一選擇條件的多個限定內容單元中的每一內容單元,所述識別信息將限定內容單元識別為相異邏輯對象。6、保存多個內容單元的至少一存儲系統(tǒng),所述至少一存儲系統(tǒng)包括輸入;及連接到所述輸入的至少一控制器,該控制器在處理經(jīng)所述輸入接收的請求以將滿足至少一選擇條件的多個內容單元中的每一內容單元從所述至少一存儲系統(tǒng)提供給至少一第一目的地的同時,其中滿足所述至少一選擇條件的所述多個內容單元包括第一組內容單元,經(jīng)所述輸入接收至少一指令以開始將第一組內容單元中尚未提供給所述至少一第一目的地的那些內容單元提供給至少一第二目的地,其中所述至少一第一目的地不同于所述至少一第二目的地;及響應于所述至少一指令的接收,將第一組內容單元中尚未提供給所述至少一第一目的地的那些內容單元提供給所述至少一第二目的地。7、根據(jù)權利要求6的至少一存儲系統(tǒng),其中所述至少一控制器在所述第一組內容單元中的部分已被識別并提供給所述至少一第一目的地之后接收所述指令。8、根據(jù)權利要求6的至少一存儲系統(tǒng),其中所述至少一第二目的地包括所述至少一第一目的地及至少一另外的目的地。9、根據(jù)權利要求6的至少一存儲系統(tǒng),其中所述至少一第一目的地包括所述至少一第二目的地及至少一另外的目的地。10、根據(jù)權利要求6的至少一存儲系統(tǒng),其中所述至少一第一目的地和所述至少一第二目的地中的每一個包括至少一服務器。全文摘要本發(fā)明一方面涉及處理從主計算機接收的請求的存儲系統(tǒng),其請求滿足所述請求中指定的至少一選擇條件的內容單元。所述存儲系統(tǒng)可識別保存于其上的滿足所述選擇條件的內容單元并響應于所述請求將這些內容單元返回給所述主計算機。另一方面,在所述存儲系統(tǒng)響應于所述請求識別和返回內容單元的過程中,第二主計算機可向所述存儲系統(tǒng)發(fā)送請求接收滿足所述搜索條件的內容單元的一部分的指令。作為響應,所述存儲系統(tǒng)可開始將滿足所述選擇條件且尚未提供給發(fā)出所述請求的主計算機的一部分內容單元提供給所述第二主計算機。文檔編號G06F17/30GK101438287SQ200780016456公開日2009年5月20日申請日期2007年3月27日優(yōu)先權日2006年3月28日發(fā)明者K·基思利,M·基利恩,S·J·托德,Z·察凱利奇申請人:伊姆西公司