国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于策略的文件管理的制作方法

      文檔序號:6478772閱讀:217來源:國知局
      專利名稱:基于策略的文件管理的制作方法
      技術領域
      本申請涉及存儲數(shù)據(jù)的領域,尤其涉及可擴縮高容量系統(tǒng)中的數(shù)據(jù)存儲 服務領 域。2.
      背景技術
      在2006年產生、捕獲和復制的數(shù)字信息量已估計為161千兆兆字節(jié)或161百億億 字節(jié),這是曾經寫的所有書中的信息的約300萬倍。預計在2006和2010年之間,數(shù)字世界 每年增加的信息將增加6倍以上,即從161千兆兆字節(jié)增加到988千兆兆字節(jié)。引起該大 量增長的信息類型為豐富的數(shù)字媒體和未結構化的商業(yè)內容。還有正在進行的從模擬到數(shù) 字格式的轉換,即膠片轉換為數(shù)字圖像捕獲、模擬話音轉換為數(shù)字話音、及模擬電視轉換為 數(shù)字電視。豐富的數(shù)字媒體和未結構化的商業(yè)內容具有不同于結構化數(shù)據(jù)類型(如數(shù)據(jù)庫 記錄)的獨特特性和存儲要求,為此許多今天的存儲系統(tǒng)均進行了特別設計。許多傳統(tǒng)存 儲系統(tǒng)高度優(yōu)化以對小的數(shù)據(jù)塊傳送高性能I/O。此外,這些系統(tǒng)設計成支持十億字節(jié)和萬 億字節(jié)大小的信息存儲。相比之下,豐富的數(shù)字媒體和未結構化的商業(yè)內容具有更大的容量要求(千萬億 字節(jié)對十億/萬億字節(jié)大小的系統(tǒng))、更少的可預測增長和訪問模式、大的文件大小、億萬 又億萬的對象、高吞吐量要求、單一作者、多讀者訪問模式、及需要多平臺可訪問性。傳統(tǒng)存 儲系統(tǒng)已通過使用專門硬件平臺實現(xiàn)所需性能和可靠度等級而部分滿足這些需要。遺憾的 是,專門硬件的使用導致更高的客戶價格及隨著容量需求變大而可能不支持體積經濟性, 容量需求變大是豐富的數(shù)字媒體和未結構化的商業(yè)內容的特征。部分成本問題已使用分層存儲得以解決,其試圖降低與將所有信息保持在單一高 成本存儲層上相關聯(lián)的資金和運行成本。然而,分層存儲伴隨一套復雜的決策周邊技術、數(shù) 據(jù)耐久性、功能性甚至存儲器廠家。分層存儲解決方案可能引入非零運行成本和管理要求 的、無關的平臺、技術、及軟件名稱,隨著數(shù)據(jù)量增加,運行成本和管理需求將緊張。此外,分層存儲可導致數(shù)據(jù)拷貝非相干性,這導致信息的多個不相交的副本跨存 儲層存在。例如,處理數(shù)據(jù)備份和恢復的存儲管理軟件可能在每一存儲層上產生多個信息 集副本(如快照、備份集等)。處理信息從一層到另一層的遷移的信息生命周期管理(ILM) 軟件可能產生另外的且通常重疊的數(shù)據(jù)副本。復制軟件可能在特定層內產生額外的信息集 副本以增加存取應用程序的性能。每一這些功能通常彼此獨立運行。軟件可能不能認識和 /或利用同一信息集的多個拷貝。此外,對于大規(guī)模未結構化的信息存儲,當組件故障時,很難維護系統(tǒng)和管理環(huán) 境。例如,兩千萬億字節(jié)的信息存儲可由8000個2500億字節(jié)的磁盤驅動器組成。在這種 規(guī)模的系統(tǒng)中磁盤故障應以不同的方式處理,使得無論一個或少部分磁盤驅動器在何時發(fā) 生故障,系統(tǒng)均能繼續(xù)相當平穩(wěn)地運行。因此,希望提供一種可解決與高成本專門硬件、存儲分層和故障管理相關聯(lián)的困難的存儲系統(tǒng)。

      發(fā)明內容
      根據(jù)在此所述的系統(tǒng),管理文件包括接收多個針對新文件的策略,其中根據(jù)預定條件可應用不同的策略,接收創(chuàng)建新文件的請求,根據(jù)預定條件選擇針對該新文件的適當 策略,根據(jù)所述適當策略確定是否有足夠的資源可用,及響應于依照適當策略資源足夠而 獲取文件對象以創(chuàng)建文件。策略可經用戶管理接口進行接收。預定條件可包括創(chuàng)建文件的 客戶機的身份。適當策略可包括關于文件鏡像的信息。適當策略可指出鏡像之間的最小地 理距離。確定是否有足夠資源可用可包括咨詢資源管理器。資源管理器可接收關于系統(tǒng)資 源的信息并保存其指示表。系統(tǒng)資源可包括數(shù)據(jù)存儲區(qū)。進一步根據(jù)在此所述的系統(tǒng),提供在計算機可讀介質中的計算機軟件管理文件。 該軟件包括接收多個針對新文件的策略的可執(zhí)行代碼,其中根據(jù)預定條件可應用不同的策 略,接收創(chuàng)建新文件的請求的可執(zhí)行代碼,根據(jù)預定條件選擇針對該新文件的適當策略的 可執(zhí)行代碼,根據(jù)所述適當策略確定是否有足夠的資源可用的可執(zhí)行代碼,及響應于依照 適當策略資源足夠而獲取文件對象以創(chuàng)建文件的可執(zhí)行代碼。策略可經用戶管理接口進行 接收。預定條件可包括創(chuàng)建文件的客戶機的身份。適當策略可包括關于文件鏡像的信息。 適當策略可指出鏡像之間的最小地理距離。確定是否有足夠資源可用的可執(zhí)行代碼可包括 咨詢資源管理器的可執(zhí)行代碼。資源管理器可包括接收關于系統(tǒng)資源的信息并保存其指示 表的可執(zhí)行代碼。系統(tǒng)資源可包括數(shù)據(jù)存儲區(qū)。進一步根據(jù)在此所述的系統(tǒng),數(shù)據(jù)存儲系統(tǒng)包括多個訪問文件的客戶機及包括多 個互連的服務器,服務器連接到客戶機,服務器子集接收多個針對新文件的策略,其中根據(jù) 預定條件可應用不同的策略,服務器子集接收創(chuàng)建新文件的請求,服務器子集根據(jù)預定條 件選擇針對該新文件的適當策略,服務器子集根據(jù)所述適當策略確定是否有足夠的資源可 用,及服務器子集響應于依照適當策略資源足夠而獲取文件對象以創(chuàng)建文件。策略可經用 戶管理接口進行接收。預定條件可包括創(chuàng)建文件的客戶機的身份。適當策略可包括關于文 件鏡像的信息。服務器包括被咨詢以確定是否有足夠資源可用的服務器子集。被咨詢以確 定是否有足夠資源可用的服務器子集可接收關于系統(tǒng)資源的信息并保存其指示表。系統(tǒng)資 源可包括數(shù)據(jù)存儲區(qū)。進一步根據(jù)在此所述的系統(tǒng),管理文件對象包括接收多個針對文件對象的策略, 其中根據(jù)預定條件可應用不同的策略,接收獲取新文件對象的請求,根據(jù)預定條件選擇針 對該新文件對象的適當策略,根據(jù)所述適當策略確定是否有足夠的資源可用,及響應于依 照適當策略資源足夠而獲取文件對象。進一步根據(jù)在此所述的系統(tǒng),數(shù)據(jù)存儲系統(tǒng)包括多個訪問文件對象的客戶機及包 括多個互連的服務器,服務器連接到客戶機,服務器子集接收多個針對新文件對象的策略, 其中根據(jù)預定條件可應用不同的策略,服務器子集接收獲取新文件對象的請求,服務器子 集根據(jù)預定條件選擇針對該新文件對象的適當策略,服務器子集根據(jù)所述適當策略確定是 否有足夠的資源可用,及服務器子集響應于依照適當策略資源足夠而獲取文件對象。進一步根據(jù)在此所述的系統(tǒng),管理多個文件包括提供具有表的至少一服務器,表 具有多個文件標識符,每一文件標識符包括指向包含布局存儲對象的元數(shù)據(jù)文件對象的指針,布局存儲對象指示對應文件的存儲參數(shù),及包括通過從至少一服務器獲取信息而訪問 特定文件以訪問對應于該特定文件的布局存儲對象從而確定文件的同步和異步鏡像。每一 布局存儲對象可提供為樹,及該樹的葉可將對應文件的邏輯地址映射到數(shù)據(jù)存儲位置。樹 的至少一內部節(jié)點可表明其至少一葉節(jié)點是其另一葉節(jié)點的鏡像。響應于數(shù)據(jù)寫和內部節(jié) 點表明其第一葉節(jié)點為其第二葉節(jié)點的異步鏡像,可將數(shù)據(jù)寫到第一葉節(jié)點并向至少一服 務器提供更新消息。管理多個文件還可包括,至少一服務器將信息放在對應于所述消息的 隊列上并服務于該隊列以將數(shù)據(jù)寫到第二葉節(jié)點。響應于數(shù)據(jù)寫和內部節(jié)點表明其第一葉 節(jié)點為其第二葉節(jié)點的同步鏡像,可將數(shù)據(jù)寫到第一葉節(jié)點和第二葉節(jié)點。響應于訪問數(shù) 據(jù)不成功,可訪問其鏡像。布局存儲對象可包括指向將對應文件的邏輯地址空間映射到對 應于物理數(shù)據(jù)存儲的數(shù)據(jù)存儲空間的數(shù)據(jù)文件對象的指針。每一數(shù)據(jù)文件對象可具有表明 數(shù)據(jù)文件對象是下述之一的狀態(tài)當前、另一數(shù)據(jù)對象的過時鏡像、不可改變、及無效。響應 于試圖向不可改變的數(shù)據(jù)文件對象寫,可分配新的存儲空間及可將數(shù)據(jù)寫到該新的存儲空 間。響應于試圖讀無效的數(shù)據(jù)文件對象,可返回零值。進一步根據(jù)在此所述的系統(tǒng),提供在計算機可讀介質中的計算機軟件管理多個文 件。該軟件包括提供在至少一服務器中的、管理具有多個文件標識符的表的可執(zhí)行代碼,每 一文件標識符包括指向包含布局存儲對象的元數(shù)據(jù)文件對象的指針,布局存儲對象指示對 應文件的存儲參數(shù),及包括通過從至少一服務器獲取信息而訪問特定文件以訪問對應于該 特定文件的布局存儲對象從而確定文件的同步和異步鏡像的可執(zhí)行代碼。每一布局存儲對 象可提供為樹,及該樹的葉可將對應文件的邏輯地址映射到數(shù)據(jù)存儲位置。樹的至少一內 部節(jié)點可表明其至少一葉節(jié)點是其另一葉節(jié)點的鏡像。響應于數(shù)據(jù)寫和內部節(jié)點表明其第 一葉節(jié)點為其第二葉節(jié)點的異步鏡像,可執(zhí)行代碼可使數(shù)據(jù)寫到第一葉節(jié)點并向至少一服 務器提供更新消息。至少一服務器處的可執(zhí)行代碼可將信息放在對應于所述消息的隊列上 并服務于該隊列以將數(shù)據(jù)寫到第二葉節(jié)點。響應于數(shù)據(jù)寫和內部節(jié)點表明其第一葉節(jié)點為 其第二葉節(jié)點的同步鏡像,可執(zhí)行代碼可使數(shù)據(jù)寫到第一葉節(jié)點和第二葉節(jié)點。計算機軟 件還可包括響應于訪問數(shù)據(jù)不成功而訪問其鏡像的可執(zhí)行代碼。布局存儲對象可包括指向 將對應文件的邏輯地址空間映射到對應于物理數(shù)據(jù)存儲的數(shù)據(jù)存儲空間的數(shù)據(jù)文件對象 的指針。每一數(shù)據(jù)文件對象可具有表明數(shù)據(jù)文件對象是下述之一的狀態(tài)當前、另一數(shù)據(jù)對 象的過時鏡像、不可改變、及無效。計算機軟件還可包括響應于試圖向不可改變的數(shù)據(jù)文件 對象寫而分配新的存儲空間及將數(shù)據(jù)寫到該新的存儲空間的可執(zhí)行代碼。計算機軟件還可 包括響應于試圖讀無效的數(shù)據(jù)文件對象而返回零值的可執(zhí)行代碼。進一步根據(jù)在此所述的系統(tǒng),管理多個文件包括提供具有多個文件標識符的至少 一服務器,每一文件標識符包括指向包含布局存儲對象的元數(shù)據(jù)文件對象的指針,布局存 儲對象指示對應文件的存儲參數(shù),及包括通過從至少一服務器獲取信息而訪問特定文件以 訪問對應于該特定文件的布局存儲對象從而確定怎樣保存和檢索文件的數(shù)據(jù)。進一步根據(jù)在此所述的系統(tǒng),數(shù)據(jù)存儲系統(tǒng)包括多個服務器,其中至少一服務器 具有含多個文件標識符的表,每一文件標識符包括指向包含布局存儲對象的元數(shù)據(jù)文件對 象的指針,布局存儲對象指示對應文件的存儲參數(shù),及包括多個通過從至少一服務器獲取 信息而訪問特定文件以訪問對應于該特定文件的布局存儲對象從而確定文件的同步和異 步鏡像的客戶機。
      進一步根據(jù)在此所述的系統(tǒng),數(shù)據(jù)存儲系統(tǒng)包括多個服務器,其中至少一服務器 具有多個文件標識符,每一文件標識符包括指向包含布局存儲對象的元數(shù)據(jù)文件對象的指 針,布局存儲對象指示對應文件的存儲參數(shù),及包括多個通過從至少一服務器獲取信息而 訪問特定文件以訪問對應于該特定文件的布局存儲對象從而確定怎樣保存和檢索文件數(shù) 據(jù)的客戶機。進一步根據(jù)在此所述的系統(tǒng),在數(shù)據(jù)存儲系統(tǒng)中管理文件對象包括提供多個元數(shù) 據(jù)服務器,每一元數(shù)據(jù)服務器具有僅針對存儲系統(tǒng)中的文件對象子集的信息,針對每一元 數(shù)據(jù)服務器的每一子集少于該系統(tǒng)的文件對象總量;及包括提供至少一元數(shù)據(jù)定位服務 器,其中訪問系統(tǒng)的特定文件對象的實體通過首先訪問至少一元數(shù)據(jù)定位服務器而確定哪 一元數(shù)據(jù)服務器包含該特定文件對象的數(shù)據(jù)。針對文件對象子集的信息可包括具有文件標 識符和元數(shù)據(jù)定位信息的表。元數(shù)據(jù)定位信息可指向用于文件元數(shù)據(jù)對象的數(shù)據(jù)存儲器。 所述表還可包括租用信息,指明對文件對象具有讀許可的實體和對文件對象具有寫許可的 實體。文件對象可被提供唯一的對象標識符。至少一元數(shù)據(jù)定位服務器可根據(jù)文件對象的 對象標識值確定適當?shù)脑獢?shù)據(jù)服務器用于文件對象。至少部分元數(shù)據(jù)服務器可保存使對象 標識值子集與文件對象相關聯(lián)的表。至少部分元數(shù)據(jù)服務器可被提供唯一的對象標識值子 集以分配給新的文件對象。進一步根據(jù)在此所述的系統(tǒng),提供在計算機可讀介質中的計算機軟件在數(shù)據(jù)存儲 系統(tǒng)中管理文件對象。該軟件包括提供在多個元數(shù)據(jù)服務器上的、保存僅針對存儲系統(tǒng)中 的文件對象子集的信息的可執(zhí)行代碼,針對每一元數(shù)據(jù)服務器的每一子集少于該系統(tǒng)的文 件對象總量;及包括提供在至少一元數(shù)據(jù)定位服務器上的、響應于提供給至少一元數(shù)據(jù)服 務器的請求提供哪一元數(shù)據(jù)服務器包含特定文件對象的數(shù)據(jù)的指示的可執(zhí)行代碼。針對文 件對象子集的信息可包括具有文件標識符和元數(shù)據(jù)定位信息的表。元數(shù)據(jù)定位信息可指向 用于文件元數(shù)據(jù)對象的數(shù)據(jù)存儲器。所述表還可包括租用信息,指明對文件對象具有讀許 可的實體和對文件對象具有寫許可的實體。文件對象可被提供唯一的對象標識符。至少一 元數(shù)據(jù)定位服務器可包括根據(jù)文件對象的對象標識值確定用于文件對象的適當元數(shù)據(jù)服 務器的可執(zhí)行代碼。至少部分元數(shù)據(jù)服務器可保存使對象標識值子集與文件對象相關聯(lián)的 表。至少部分元數(shù)據(jù)服務器可被提供唯一的對象標識值子集以分配給新的文件對象。進一步根據(jù)在此所述的系統(tǒng),數(shù)據(jù)存儲系統(tǒng)包括多個訪問存儲系統(tǒng)的文件對象的 客戶機及多個連接到客戶機并互連的服務器,所述服務器包括多個元數(shù)據(jù)服務器,每一元 數(shù)據(jù)服務器具有僅針對存儲系統(tǒng)中的文件對象子集的信息,針對每一元數(shù)據(jù)服務器的每一 子集少于該系統(tǒng)的文件對象總量;所述服務器還包括至少一元數(shù)據(jù)定位服務器,其中訪問 系統(tǒng)的特定文件對象的客戶機通過首先訪問至少一元數(shù)據(jù)定位服務器而確定哪一元數(shù)據(jù) 服務器包含該特定文件對象的數(shù)據(jù)。針對文件對象子集的信息可包括具有文件標識符和元 數(shù)據(jù)定位信息的表。元數(shù)據(jù)定位信息可指向用于文件元數(shù)據(jù)對象的數(shù)據(jù)存儲器。文件對象 可被提供唯一的對象標識符。至少一元數(shù)據(jù)定位服務器可根據(jù)文件對象的對象標識值確定 適當?shù)脑獢?shù)據(jù)服務器用于文件對象。至少部分元數(shù)據(jù)服務器可保存使對象標識值子集與文 件對象相關聯(lián)的表。至少部分元數(shù)據(jù)服務器可被提供唯一的對象標識值子集以分配給新的 文件對象。進一步根據(jù)在此所述的系統(tǒng),在數(shù)據(jù)存儲系統(tǒng)中管理文件對象包括提供多個第一類型的服務器,每一第一類型的服務器具有僅針對存儲系統(tǒng)中的文件對象子集的信息;及 包括提供至少一第二類型的服務器,通過首先訪問至少一第二類型的服務器提供表明哪一 第一類型的服務器包含特定文件對象的數(shù)據(jù)的信息。進一步根據(jù)在此所述的系統(tǒng),數(shù)據(jù)存儲系統(tǒng)包括多個訪問存儲系統(tǒng)的文件對象的 客戶機及包括多個連接到客戶機并互連的服務器,所述服務器包括多個元數(shù)據(jù)服務器,每 一元數(shù)據(jù)服務器具有僅針對存儲系統(tǒng)中的文件對象子集的信息,針對每一元數(shù)據(jù)服務器的 每一子集少于該系統(tǒng)的文件對象總量;所述服務器還包括至少一元數(shù)據(jù)定位服務器,其中 訪問系統(tǒng)的特定文件對象的客戶機通過首先訪問至少一元數(shù)據(jù)定位服務器而確定哪一元 數(shù)據(jù)服務器包含該特定文件對象的數(shù)據(jù)。進一步根據(jù)在此所述的系統(tǒng),追蹤存儲資源包括提供包含存儲資源及其能力和 狀態(tài)的表,響應于存儲資源的狀態(tài)的變化更新表,響應于存儲資源的能力的變化更新表,及 響應于針對具有特定能力的存儲資源的查詢,在表中搜索具有特定能力的存儲資源。追蹤 存儲資源還可包括響應于新資源添加到系統(tǒng)中而向表中添加元素。所述能力可包括RAID 分割、重復數(shù)據(jù)刪除及綠色運行。狀態(tài)可以是下述之一聯(lián)機、脫機及滿。存儲資源可以是 磁盤驅動器。磁盤驅動器可由呈現(xiàn)針對磁盤驅動器的OSD接口的數(shù)據(jù)存儲服務器管理。所 述表可由從其它服務器接收關于存儲資源的信息的資源管理服務器保存。進一步根據(jù)在此所述的系統(tǒng),提供在計算機可讀存儲介質中的計算機軟件追蹤存 儲資源。該軟件包括包含存儲資源及其能力和狀態(tài)的表,響應于存儲資源的狀態(tài)變化更 新表的可執(zhí)行代碼,響應于存儲資源的能力變化更新表的可執(zhí)行代碼,及響應于針對具有 特定能力的存儲資源的查詢,在表中搜索具有特定能力的存儲資源的可執(zhí)行代碼。該軟件 還可包括響應于新資源添加到系統(tǒng)中而向表中添加元素的可執(zhí)行代碼。所述能力可包括 RAID分割、重復數(shù)據(jù)刪除及綠色運行。狀態(tài)可以是下述之一聯(lián)機、脫機及滿。存儲資源可 以是磁盤驅動器。磁盤驅動器可由呈現(xiàn)針對磁盤驅動器的OSD接口的數(shù)據(jù)存儲服務器管 理。所述表可由從其它服務器接收關于存儲資源的信息的資源管理服務器保存。進一步根據(jù)在此所述的系統(tǒng),管理存儲系統(tǒng)的存儲資源的資源管理器包括處理裝 置和連接到處理裝置的計算機可讀存儲器,計算機可讀存儲器具有提供在數(shù)據(jù)結構中并包 含存儲資源及其能力和狀態(tài)的表,計算機可讀存儲器還具有響應于存儲資源的狀態(tài)變化更 新表的可執(zhí)行代碼,響應于存儲資源的能力變化更新表的可執(zhí)行代碼,及響應于針對具有 特定能力的存儲資源的查詢,在表中搜索具有特定能力的存儲資源的可執(zhí)行代碼。計算機 可讀存儲器還可包括響應于新資源添加到系統(tǒng)中而向表中添加元素的可執(zhí)行代碼。所述 能力可包括RAID分割、重復數(shù)據(jù)刪除及綠色運行。狀態(tài)可以是下述之一聯(lián)機、脫機及滿。 存儲資源可以是磁盤驅動器。磁盤驅動器可由呈現(xiàn)針對磁盤驅動器的OSD接口的數(shù)據(jù)存儲 服務器管理。進一步根據(jù)在此所述的系統(tǒng),數(shù)據(jù)存儲系統(tǒng)包括多個客戶機及多個連接到客戶機 的服務器,其中服務器子集使用包含存儲資源及其能力和狀態(tài)的表管理存儲資源,其中所 述子集響應于存儲資源的狀態(tài)的變化更新表,響應于存儲資源的能力的變化更新表,及響 應于針對具有特定能力的存儲資源的查詢,在表中搜索具有特定能力的存儲資源。所述服 務器子集可響應于新資源添加到系統(tǒng)中而向表中添加元素。存儲資源可以是磁盤驅動器。進一步根據(jù)在此所述的系統(tǒng),向數(shù)據(jù)存儲系統(tǒng)的資源管理器提供信息包括響應于存儲資源的能力變化向資源管理器提供信息,響應于存儲資源的狀態(tài)變化向資源管理器提供信息,及響應于添加新存儲資源向資源管理器提供信息。存儲資源可以是磁盤驅動器。進一步根據(jù)在此所述的系統(tǒng),訪問數(shù)據(jù)文件對象包括在至少一客戶機上提供文件 系統(tǒng)接口,其中文件系統(tǒng)接口使在至少一客戶機上運行的應用程序能進行文件系統(tǒng)調用以 訪問數(shù)據(jù)文件對象,及在至少一客戶機上提供環(huán)球網服務接口,其中環(huán)球網接口使應用程 序能在文件對象正通過文件系統(tǒng)接口進行訪問的同時使用環(huán)球網訪問文件對象。環(huán)球網服 務接口可以是SOAP接口和/或REST接口。訪問數(shù)據(jù)文件對象還可包括在至少一客戶機上 提供直接的文件對象接口,其中直接的文件對象接口使應用程序能在文件對象正使用環(huán)球 網服務接口和使用文件系統(tǒng)接口進行訪問的同時直接訪問文件對象。訪問數(shù)據(jù)文件對象還 可包括提供將文件名翻譯為文件對象標識符的文件名服務,其中文件名服務通過文件系統(tǒng) 接口和/或環(huán)球網服務接口進行訪問。提供文件系統(tǒng)接口可包括在至少一客戶機的內核 地址空間中提供虛擬文件系統(tǒng)。訪問數(shù)據(jù)文件對象還可包括提供管理文件對象的布局管理 器。布局管理器可提供在至少一客戶機的內核地址空間中。布局管理器提供在至少一客戶 機的用戶地址空間中。虛擬文件系統(tǒng)可使用內核存儲地址空間和用戶存儲地址空間之間的 網橋訪問布局管理器。進一步根據(jù)在此所述的系統(tǒng),訪問多個文件對象的客戶機包括文件系統(tǒng)接口,其 使在至少一客戶機上運行的應用程序能進行文件系統(tǒng)調用以訪問數(shù)據(jù)文件對象;環(huán)球網服 務接口,其使應用程序能在文件對象正通過文件系統(tǒng)接口進行訪問的同時使用環(huán)球網訪問 文件對象;及連接到文件系統(tǒng)接口和環(huán)球網服務接口的通信接口,其在客戶機和包含文件 對象的多個服務器之間交換文件對象數(shù)據(jù)??蛻魴C還可包括直接的文件對象接口,其使應 用程序能在文件對象正使用環(huán)球網服務接口和使用文件系統(tǒng)接口進行訪問的同時直接訪 問文件對象??蛻魴C還可包括將文件名翻譯為文件對象標識符的文件名服務,其中文件名 服務通過文件系統(tǒng)接口和/或環(huán)球網服務接口進行訪問。文件系統(tǒng)接口可包括在至少一客 戶機的內核地址空間中的虛擬文件系統(tǒng)??蛻魴C還可包括管理文件對象的布局管理器。布 局管理器可提供在至少一客戶機的內核地址空間中。布局管理器可提供在至少一客戶機的 用戶地址空間中。虛擬文件系統(tǒng)可使用內核存儲地址空間和用戶存儲地址空間之間的網橋 訪問布局管理器。進一步根據(jù)在此所述的系統(tǒng),提供在計算機可讀存儲介質中的計算機軟件包括使 在至少一客戶機上運行的應用程序能進行文件系統(tǒng)調用以訪問數(shù)據(jù)文件對象的可執(zhí)行代 碼,及包括使應用程序能在文件對象正通過文件系統(tǒng)接口進行訪問的同時使用環(huán)球網訪問 文件對象的可執(zhí)行代碼。計算機軟件還可包括使應用程序能在文件對象正使用環(huán)球網和使 用文件系統(tǒng)調用進行訪問的同時直接訪問文件對象的可執(zhí)行代碼。計算機軟件還可包括將 文件名翻譯為文件對象標識符的可執(zhí)行代碼。進一步根據(jù)在此所述的系統(tǒng),系統(tǒng)同時使能使用文件系統(tǒng)接口和環(huán)球網服務接口 訪問多個文件對象。該系統(tǒng)包括包含文件對象的多個服務器及連接到服務器的至少一客戶 機??蛻魴C包括文件系統(tǒng)接口,其使在至少一客戶機上運行的應用程序能進行文件系統(tǒng)調 用以訪問數(shù)據(jù)文件對象;環(huán)球網服務接口,其使應用程序能在文件對象正通過文件系統(tǒng)接 口進行訪問的同時使用環(huán)球網訪問文件對象;及連接到文件系統(tǒng)接口和環(huán)球網服務接口的 通信接口,其在客戶機和包含文件對象的多個服務器之間交換文件對象數(shù)據(jù)。文件系統(tǒng)接口可包括客戶機的內核地址空間中的虛擬文件系統(tǒng)。進一步根據(jù)在此所述的系統(tǒng),管理數(shù)據(jù)文件的對象包括獲得該文件的元數(shù)據(jù)對 象,確定元數(shù)據(jù)對象是否表明一部分數(shù)據(jù)文件包括同步鏡像,及響應于向數(shù)據(jù)文件寫新數(shù) 據(jù),將新數(shù)據(jù)寫到每一同步鏡像。數(shù)據(jù)文件的數(shù)據(jù)對象可處于下述四種狀態(tài)之一當前、失 效、空、及不可改變。響應于讀操作及對應的數(shù)據(jù)對象處于失效狀態(tài),可對處于當前狀態(tài)的 對應同步鏡像讀數(shù)據(jù)。


      圖1為根據(jù)在此所述的系統(tǒng)的實施例的服務器和客戶機的圖示。圖2A和2B為根據(jù)在此所述的系統(tǒng)的實施例,客戶機連接到服務器和其它網絡的 圖示。圖3為根據(jù)在此所述的系統(tǒng)的實施例,具有服務器操作軟件、客戶機軟件及其間 的多個接口的客戶機的圖示。圖4為根據(jù)在此所述的系統(tǒng)的實施例,具有元數(shù)據(jù)文件對象和多個數(shù)據(jù)文件對象 的文件的圖示。圖5為根據(jù)在此所述的系統(tǒng)的實施例,文件的元數(shù)據(jù)文件對象的圖示。圖6為根據(jù)在此所述的系統(tǒng)的實施例,文件的布局存儲對象樹的例示。圖7為根據(jù)在此所述的系統(tǒng)的實施例,文件的具有多個映射的布局存儲對象樹的 例示。圖8為根據(jù)在此所述的系統(tǒng)的實施例,文件的具有多個映射和復制節(jié)點的布局存 儲對象樹的例示。圖9為根據(jù)在此所述的系統(tǒng)的實施例,客戶機獲得文件的租用及操作文件的流程 圖。圖10為根據(jù)在此所述的系統(tǒng)的實施例,客戶機從文件讀數(shù)據(jù)的流程圖。圖11為根據(jù)在此所述的系統(tǒng)的實施例,客戶機向文件寫數(shù)據(jù)的流程圖。圖12為根據(jù)在此所述的系統(tǒng)的實施例,客戶機在查找備選數(shù)據(jù)副本時所執(zhí)行步 驟的流程圖。圖13為根據(jù)在此所述的系統(tǒng)的實施例,客戶機向同步鏡像進行寫的流程圖。圖14為根據(jù)在此所述的系統(tǒng)的實施例,客戶機將文件名轉換為對象標識符的流 程圖。圖15為根據(jù)在此所述的系統(tǒng)的實施例,在用戶存儲地址空間中具有應用程序及 在內核存儲地址空間中具有VFS、文件名服務、內核I/O驅動、布局管理器及通信接口的客 戶機的圖示。圖16為根據(jù)在此所述的系統(tǒng)的實施例,客戶機處的VFS的運行流程圖。圖17為根據(jù)在此所述的系統(tǒng)的實施例,在用戶存儲地址空間中具有應用程序、文 件名服務、用戶級I/O驅動及布局管理器和在內核存儲地址空間中具有通信接口的客戶機 的圖示。圖18為根據(jù)在此所述的系統(tǒng)的實施例,在用戶存儲地址空間中具有應用程序、文 件表示層、用戶級I/O驅動及布局管理器和在內核存儲地址空間中具有VFS、通信接口和內核存儲地址空間到用戶存儲地址空間的網橋的客戶機的圖示。圖19為根據(jù)在此所述的系統(tǒng)的實施例,在用戶存儲地址空間中具有應用程序和 在內核存儲地址空間中具有文件名服務、內核I/O驅動、布局管理器和通信接口的客戶機 的圖示。圖20為根據(jù)在此所述的系統(tǒng)的實施例,在用戶存儲地址空間中具有應用程序、文 件名服務、用戶級I/O驅動及布局管理器和在內核存儲地址空間中具有通信接口的客戶機 的圖示。圖21為根據(jù)在此所述的系統(tǒng)的實施例,在用戶存儲地址空間中具有應用程序、文 件名服務、用戶級I/O驅動及布局管理器和在內核存儲地址空間中具有通信接口和內核存 儲地址空間到用戶存儲地址空間的網橋的客戶機的圖示。圖22為根據(jù)在此所述的系統(tǒng)的實施例,在用戶存儲地址空間中具有應用程序和 在內核存儲地址空間中具有環(huán)球網服務模塊、內核I/O驅動、布局管理器、及通信接口的客 戶機的圖示。圖23為根據(jù)在此所述的系統(tǒng)的實施例,在用戶存儲地址空間中具有應用程序、環(huán) 球網服務層、用戶級I/O驅動、及布局管理器和在內核存儲地址空間中具有通信接口的客 戶機的圖示。圖24為根據(jù)在此所述的系統(tǒng)的實施例,在用戶存儲地址空間中具有應用程序、環(huán) 球網服務層、用戶級I/O驅動、及布局管理器和在內核存儲地址空間中具有通信接口和內 核存儲地址空間到用戶存儲地址空間的網橋的客戶機的圖示。圖25為根據(jù)在此所述的系統(tǒng)的實施例,在用戶存儲地址空間中具有多個應用程 序、環(huán)球網服務層、文件名服務、用戶級I/O驅動、及布局管理器和在內核存儲地址空間中 具有VFS、通信接口、和內核存儲地址空間到用戶存儲地址空間的網橋的客戶機的圖示。圖26為根據(jù)在此所述的系統(tǒng)的實施例,不同類型的服務器和用戶管理接口的圖
      7J\ ο圖27為根據(jù)在此所述的系統(tǒng)的實施例,在使用安全管理服務器獲取使用策略管 理服務器的憑證時所執(zhí)行的步驟的流程圖。圖28為根據(jù)在此所述的系統(tǒng)的實施例,資源管理器表的圖示。圖29為根據(jù)在此所述的系統(tǒng)的實施例,在處理資源信息以更新資源表時所執(zhí)行 的步驟的流程圖。圖30為根據(jù)在此所述的系統(tǒng)的實施例,在查找具有所需能力的資源時所執(zhí)行的 步驟的流程圖。圖31為根據(jù)在此所述的系統(tǒng)的實施例,元數(shù)據(jù)服務器服務于租用請求時所執(zhí)行 的步驟的流程圖。圖32為根據(jù)在此所述的系統(tǒng)的實施例,監(jiān)視和取消過期租用時所執(zhí)行的步驟的 流程圖。圖33為根據(jù)在此所述的系統(tǒng)的實施例,連同租用取消處理執(zhí)行的步驟的流程圖。圖34為根據(jù)在此所述的系統(tǒng)的實施例,示出為元數(shù)據(jù)服務器處理的文件保存的 數(shù)據(jù)的表。圖35為根據(jù)在此所述的系統(tǒng)的實施例,元數(shù)據(jù)服務器處理的文件租用的鏈表。
      圖36為根據(jù)在此所述的系統(tǒng)的實施例,示出由元數(shù)據(jù)服務器保存的、使對象標識 符與數(shù)據(jù)存儲位置相關聯(lián)的數(shù)據(jù)的表。圖37為根據(jù)在此所述的系統(tǒng)的實施例,元數(shù)據(jù)定位服務器處的、使對象標識符范 圍與元數(shù)據(jù)服務器相關聯(lián)的表。圖38為根據(jù)在此所述的系統(tǒng)的實施例,在返回特定元數(shù)據(jù)服務器時由元數(shù)據(jù)定 位服務器執(zhí)行的處理的流程圖。圖39為根據(jù)在此所述的系統(tǒng)的實施例,在刪除文件時由元數(shù)據(jù)服務器執(zhí)行的處 理的流程圖。圖40為根據(jù)在此所述的系統(tǒng)的實施例,在創(chuàng)建文件時由元數(shù)據(jù)服務器執(zhí)行的處 理的流程圖。圖41為根據(jù)在此所述的系統(tǒng)的實施例,在響應于失敗數(shù)據(jù)寫操作時由元數(shù)據(jù)服 務器執(zhí)行的處理的流程圖。圖42為根據(jù)在此所述的系統(tǒng)的實施例,在響應于失效鏡像更新消息時由元數(shù)據(jù) 服務器執(zhí)行的處理的流程圖。圖43為根據(jù)在此所述的系統(tǒng)的實施例,在將異步復制工作添加到隊列中時由元 數(shù)據(jù)服務器執(zhí)行的處理的流程圖。圖44為在服務于異步復制工作時由元數(shù)據(jù)服務器執(zhí)行的處理的流程圖。
      具體實施例方式參考圖1,該圖示出了服務器102連接到多個客戶機104-106。每一客戶機104-106 表示從服務器102接收文件服務的一個或多個處理裝置??蛻魴C104-106中的每一客戶機 可以也可不獨立于客戶機104-106中的其它客戶機??蛻魴C104-106中的一個或多個可以 是多處理/多用戶系統(tǒng),及可能具有多個獨立用戶??蛻魴C104-106意于表示任何數(shù)量的 客戶機。服務器102提供的文件服務可包括數(shù)據(jù)存儲和檢索及相關操作,如數(shù)據(jù)鏡像、復 制等。服務器102可使用互連處理和/或存儲裝置提供的多個服務(和/或包括SAN組件 的互連文件服務器)進行實施。在這里的實施例中,每一客戶機104-106可使用環(huán)球網連 接到服務器102,可能與本地TCP/IP連接協(xié)力。然而,一個或多個客戶機104-106也可能使 用任何其它適當?shù)耐ㄐ艡C制和/或其組合連接到服務器102以提供在此所述的功能。參考圖2A,客戶機104被示為連接到服務器102和一個或多個其它網絡。其它網 絡可包括局域網(LAN)。因此,客戶機104可以是服務器102和LAN之間的網關,一個或多 個其它裝置(未示出)也可連接到該網關。通過從服務器102向一個或多個其它裝置提供 數(shù)據(jù),客戶機104可用作連接到LAN的一個或多個其它裝置的本地文件服務器。當然,一個 或多個其它客戶機也可能同時用作到同一或不同的其它網絡的網關。總的來說,對于這里 的討論,除非另外指明,提及客戶機104-106中的特定客戶機時可理解為指連接到服務器 102的客戶機104-106中的任何或所有客戶機。參考圖2B,該圖示出了客戶機104以不同于圖2A中所示的結構連接到服務器102 和一個或多個其它網絡(如LAN)。在圖2B的結構中,路由器108連接在服務器102和客戶 機104之間。路由器108可以是可由客戶機104訪問的任何傳統(tǒng)路由器。在圖2B的結構中,客戶機104僅使用單一連接點連接到服務器102和其它網絡。在圖2B的結構中,客戶 機104可用作本地文件服務器及服務器102和連接到其它網絡的一個或多個其它裝置(未 示出)之間的網關。當然,連接到服務器102和/或其它網絡的任何客戶機104-106可使 用任何其它適當?shù)倪B接結構。參考圖3,客戶機104更詳細地示為具有服務器操作軟件122、客戶機軟件124、及 包括服務器操作軟件122和客戶機軟件124之間的多個接口 126-128的接口層125。服務 器操作軟件122有助于在客戶機104和服務器102之間交換信息/數(shù)據(jù)以提供在此所述的 功能。服務器操作軟件122在本說明書別處詳細描述??蛻魴C軟件124表示可在客戶機 104上運行的任何軟件,包括應用軟 件、操作系統(tǒng)軟件、環(huán)球網服務器軟件等,其不是服務器 操作軟件122或接口層125的一部分。如本說明書別處詳細所述,可能使客戶機軟件124 同時通過不同的接126-128與服務器102交互作用。在此所述的文件服務可通過服務器102使用一組文件對象實施,其中由客戶機軟 件訪問的文件包括指向包含該文件的數(shù)據(jù)的一個或多個數(shù)據(jù)文件對象的元數(shù)據(jù)文件對象。 訪問文件包括首先訪問元數(shù)據(jù)文件對象以定位文件的對應數(shù)據(jù)文件對象。這將在本說明書 別處詳細描述。然而,應注意,任何適當?shù)奈募ο髾C制均可用于在此所述的系統(tǒng)。參考圖4,文件130被示作包括元數(shù)據(jù)文件對象132和多個數(shù)據(jù)文件對象。元數(shù)據(jù) 文件對象132包含指向每一數(shù)據(jù)文件對象134-136的信息。訪問文件包括首先訪問元數(shù)據(jù) 文件對象132,然后使用其中的信息定位相應數(shù)據(jù)文件對象134-136中的一個或多個適當 的數(shù)據(jù)文件對象。參考圖5,元數(shù)據(jù)文件對象132被詳細地示作包括對象屬性部分142和布局存儲對 象(LSO)樹部分144。對象屬性部分包含傳統(tǒng)的文件類型屬性如系主id、組id、訪問控制列 表、上次修改時間、上次訪問時間、上次變化時間、創(chuàng)建時間、文件大小、和鏈接計數(shù)。許多屬 性自明。上次修改時間對應于數(shù)據(jù)對象134-136的數(shù)據(jù)上次進行修改的時間,而上次變化 時間對應于對象元數(shù)據(jù)上次進行改變的時間。鏈接計數(shù)指索引特定文件的其它對象(如指 向同一文件的別名)的數(shù)量。在這里的實施例中,當鏈接計數(shù)遞減到零時,刪除文件及其相 關對象。LSO樹部分144包括具有一個或多個映射的數(shù)據(jù)結構,所述映射用于將文件的邏 輯空間映射到特定數(shù)據(jù)文件對象。LSO樹部分144還可指明數(shù)據(jù)的任何鏡像及這些鏡像是 同步還是異步鏡像。LSO樹和鏡像在本說明書別處詳細描述。參考圖6,簡單的LSO樹160被示作包括LSO根節(jié)點162和單一映射164。LSO根 節(jié)點162用于識別LSO樹160并包括到連同對應于LSO樹160的文件使用的一個或多個映 射的鏈接。映射164將文件內的邏輯位置映射到實際的數(shù)據(jù)存儲位置。訪問由LSO樹160 表示的文件的邏輯存儲空間的過程首先使用LSO根節(jié)點162查找映射164,然后使用映射 164將文件內的邏輯地址翻譯為實際的數(shù)據(jù)存儲位置。參考圖7,LSO樹170被示作包括LSO根節(jié)點172和多個映射174-176。每一映射 174-176可表示對應于LSO樹170的文件內的不同邏輯偏移范圍。例如,映射174可對應于 文件中的第一邏輯偏移范圍。映射174可將第一范圍中的邏輯位置映射到第一實際存儲裝 置。映射175可對應于文件中的不同于第一范圍的第二邏輯偏移范圍,該范圍可被映射到 不同的實際存儲裝置或可被映射到與映射174 —樣的實際存儲裝置。類似地,映射176可對應于文件中的不同于第一范圍和第二范圍的第三邏輯偏移范圍,該范圍可被映射到不同 的實際存儲裝置或可被映射到與映射174和/或映射175 —樣的實際存儲裝置。參考圖8,LSO樹180被示作包括LSO根節(jié)點181和一對復制節(jié)點182a、182b,其 指明下面的數(shù)據(jù)將被鏡像(復制)及指明鏡像是同步還是異步鏡像。同步和異步鏡像在本 說明書別處詳細描述。節(jié)點182a具有多個與其關聯(lián)的子映射183-185,節(jié)點182b具有多個 與其關聯(lián)的子映射186-188。復制節(jié)點182a、182b指明對應于映射183-185的數(shù)據(jù)是對應 于映射186-188的數(shù)據(jù)的鏡像。在一些實施例中,節(jié)點182a、182b可使用單一節(jié)點189指 明復制而進行實施。訪問具有LSO樹180的文件的過程將遍歷樹180并確定數(shù)據(jù)被鏡像。如本說明書 別處詳細所述,根據(jù)鏡像類型,訪問LSO樹180的過程將或向節(jié)點182a、182b的子映射寫數(shù) 據(jù)或向執(zhí)行異步鏡像的另一進程/服務器(如服務器102)提供消息。鏡像將在本說明書 別處詳細描述。對于在此所述的系統(tǒng),文件對象由客戶機104-106之一通過首先從服務器102請 求并獲得租用而進行訪問。租用對應于所訪問特定文件的文件對象及對應于訪問類型。租 用可用于讀、寫和/或更多其它操作(如改變文件屬 性)。在這里的實施例中,對于對應于 任何特定文件的對象,服務器102可一次僅向任何客戶機104-106發(fā)出一個寫租用,但可同 時發(fā)出多個讀租用并可在發(fā)出寫租用的同時發(fā)出讀租用。然而,在一些實施例中,可能獲得 對文件的指定邏輯范圍的租用以僅對該范圍進行操作。因此,例如,第一客戶機可能獲得向 文件的第一邏輯范圍進行寫的租用,而第二客戶機可能獨立獲得向同一文件的第二且分開 的邏輯范圍進行寫的租用。針對不同邏輯范圍的兩個寫租用可能在時間上重疊,但不違反 系統(tǒng)永不對同一數(shù)據(jù)發(fā)出重疊寫租用的一般規(guī)則。從服務器102提供給客戶機104-106的租用包括使客戶機有權適當使用數(shù)據(jù)的安 全信息(安全權標)。安全權標可在一定時間量之后過期。在這里的實施例中,客戶機通過 提供針對數(shù)據(jù)的適當安全權標及客戶機用戶/所有權信息而訪問數(shù)據(jù)。因此,例如,希望訪 問數(shù)據(jù)的用戶應首先獲得租用,然后將訪問請求連同安全權標及識別訪問數(shù)據(jù)的系主(客 戶機)的信息提供給服務器102。之后,服務器102確定客戶機所請求的訪問是否許可。在 租用過期(安全權標過期)之后,用戶再次請求租用。數(shù)據(jù)安全可使用傳統(tǒng)的數(shù)據(jù)安全機 制進行實施。在獲得訪問文件的租用之后,客戶機將對應的元數(shù)據(jù)包括LSO樹高速緩存在客戶 機的本地存儲器內。之后,客戶機可使用并操縱元數(shù)據(jù)的本地緩存版本及可使用元數(shù)據(jù)獲 得對數(shù)據(jù)的使用。如本說明書別處詳細所述,客戶機不直接修改服務器102所保存的元數(shù) 據(jù),而是將更新消息發(fā)送給服務器102以發(fā)出文件的元數(shù)據(jù)需要由服務器102進行修改的信號。參考圖9,流程圖200示出了客戶機請求對文件的租用(與文件相關聯(lián)的對象)以 在其上執(zhí)行操作所執(zhí)行的步驟。處理在第一步驟202開始,客戶機請求對文件的租用。如本 說明書別處詳細所述,請求租用的客戶機包括指定訪問類型(如讀、寫等)。在步驟202之 后是測試步驟204,確定請求是否已被授權。如果否,則控制從測試步驟204轉到步驟206, 連同租用未被授權給客戶機執(zhí)行處理。在步驟206執(zhí)行的特定處理例如可包括向請求使用 對應于租用的文件和/或等待時間量然后重試請求的客戶機進程提供出錯消息。應注意,對特定文件的租用在一時間不可用但隨后在另一時間可能可用,因為,例如,在第一請求和 第二請求之間該租用由另一客戶機釋放。無論如何,任何適當?shù)奶幚砭稍诓襟E206執(zhí)行。 在步驟206之后,處理結束。如果在測試步驟204確定在步驟202請求的租用已被授權,則控制從測試步驟204 轉到步驟208,客戶機使用其租用已授權的文件執(zhí)行操作。在步驟208執(zhí)行的操作包括讀數(shù) 據(jù)和/或寫數(shù)據(jù)??稍诓襟E208執(zhí)行的不同類型處理在本說明書別處詳細描述。在步驟208之后是測試步驟212,確定在步驟208執(zhí)行的操作是否要求更新。在一 些情況下,客戶機可能獲得租用并執(zhí)行不影響文件或基礎文件對象的操作。例如,客戶機可 能取得讀文件的租用,及在步驟208執(zhí)行的操作包括客戶機讀文件。在這種情況下,不需要 更新,因為文件及對應的文件對象(元數(shù)據(jù)、數(shù)據(jù)對象等)尚未變化。另一方面,如果客戶 機獲得寫數(shù)據(jù)的租用,及在步驟208執(zhí)行的操作包括將數(shù)據(jù)寫到文件,則基礎文件對象已 改變,需要向服務器102發(fā)送更新消息。如果在測試步驟212確定需要更新,則控制從測試 步驟212進行到步驟214,由客戶機向服務器102發(fā)送更新消息。在步驟214之后,或如果不需要更新則在步驟212之后,控制進行到測試步驟216, 確定客戶機關于該文件是否已完成。在一些情況下,客戶機可能對文件執(zhí)行少量操作,之后 在步驟216,客戶機關于該文件完成。在其它情況下,客戶機可能正執(zhí)行一系列操作及可能 尚未完成所有操作。如果在測試步驟216確定關于該文件客戶機尚未完成,則控制從測試步驟216進 行到測試步驟218,確定對該文件的租用是否已過期。應注意,租用可由服務器102提供給 客戶機,特定到期時間和/或相關安全權標可能過期。此外,在某些情形下,服務器102可 能取消提供給客戶機的租用。在任一情形下,租用不再有效。因此,如果在步驟218確定租 用已過期(和/或已被服務器102取消),則控制從測試步驟218轉回到步驟202,再次請 求租用。否則,如果租用尚未過期,則控制從測試步驟218轉回到步驟208執(zhí)行另一迭代。如果在測試步驟216確定關于該文件客戶機已完成,則控制從測試步驟216進行 到步驟222,客戶機通過向服務器102發(fā)送指明客戶機不再需要租用的消息而釋放租用。一 旦客戶機釋放租用,其可用于另一客戶機。在步驟222之后,處理結束。在這里的實施例中,數(shù)據(jù)文件對象可被指明為具有四種可能狀態(tài)之一當前、失 效、不可改變或空。當前狀態(tài)表明數(shù)據(jù)對象為最新及當前數(shù)據(jù)對象。失效狀態(tài)表明數(shù)據(jù)無 效而是需要可能由一些其它進程進行更新。在一些情況下,失效狀態(tài)僅可連同數(shù)據(jù)的鏡像 副本使用(在本說明書別處詳細描述)。數(shù)據(jù)可能失效,因為其是最近寫的但尚未復制的其 它數(shù)據(jù)的鏡像。不可改變的狀態(tài)表明對應數(shù)據(jù)被寫保護,可能與先前的復制(快照)操作 有關。空狀態(tài)表明尚未對該數(shù)據(jù)分配實際的存儲空間。參考圖10,流程圖240示出了客戶機在獲得對文件的讀租用之后進行讀操作所執(zhí) 行的步驟。處理在第一測試步驟242開始,確定所讀數(shù)據(jù)對象是否處于當前狀態(tài)。如果否, 則控制從測試步驟242轉到步驟244,確定所讀數(shù)據(jù)對象是否處于不可改變狀態(tài)。如果在步 驟244確定所讀數(shù)據(jù)對象處于不可改變狀態(tài)或如果在測試步驟242確定所讀數(shù)據(jù)對象處于 當前狀態(tài),則控制轉到步驟246,執(zhí)行讀操作??蛻魴C通過將適當?shù)臄?shù)據(jù)文件對象標識符提 供給服務器102及提供適當?shù)陌踩珣{證讀文件數(shù)據(jù)。因此,在步驟246執(zhí)行的讀操作包括 客戶機向服務器102發(fā)送適當?shù)恼埱蟛⒌却齺碜苑掌?02的結果。
      在步驟246之后是測試步驟248,確定服務器102是否已返回表明數(shù)據(jù)文件對象不 可用的結果。在一些情況下,當前或不可改變的數(shù)據(jù)文件對象仍然可能變得不可用。例如, 保存數(shù)據(jù)文件對象的物理存儲空間可能暫時斷開連接和/或暫時忙于一些其它操作。如果 在測試步驟248確定數(shù)據(jù)文件對象可用,則控制從測試步驟248轉到測試步驟252,確定讀 操作是否成功。如果是,則控制從測試步驟252轉到步驟254,讀操作的結果被返回給使得 讀操作進行的客戶機的進程。結果可包括所讀數(shù)據(jù)及狀態(tài)指示符。在步驟254之后,處理 結束。如果在測試步驟252確定在步驟246進行的讀操作不成功,則控制從測試步驟252 轉到步驟256,執(zhí)行出錯處理。在步驟256進行的特定出錯處理為隨實施而變的處理,例如 可包括將出錯報告給調用進程和/或可能重試讀操作指定次數(shù)。在步驟256之后,處理結
      束ο如果在測試步驟244確定所讀數(shù)據(jù)對象不處于不可改變狀態(tài),則控制從測試步驟 244轉到測試步驟258,確定數(shù)據(jù)對象是否處于失效狀態(tài)。如果否,則根據(jù)測試步驟242、 244,258和排除過程,數(shù)據(jù)對象處于空狀態(tài)。在這里的 實施例中,讀處于空狀態(tài)的數(shù)據(jù)對象 導致零值返回給調用進程。因此,如果在測試步驟258確定數(shù)據(jù)對象不處于失效狀態(tài),則控 制從測試步驟258轉到步驟262,響應于讀操作返回零值。在步驟262之后,處理結束。如果在測試步驟258確定數(shù)據(jù)文件對象處于失效狀態(tài),或如果在測試步驟248確 定數(shù)據(jù)文件對象不可用,則控制轉到測試步驟264確定數(shù)據(jù)文件對象的備選版本是否可用 于讀。如本說明書別處詳細所述,由于鏡像,可能同時存在同一數(shù)據(jù)文件對象的多個版本。 因此,如果所讀數(shù)據(jù)文件對象處于失效狀態(tài)或不可用,可能讀數(shù)據(jù)文件對象的處于當前狀 態(tài)的鏡像副本。在步驟264執(zhí)行的測試在本說明書別處詳細描述。如果在測試步驟264確定數(shù)據(jù)文件對象的備選版本可用,則控制從測試步驟264 轉到步驟266,選擇數(shù)據(jù)文件對象的備選版本進行使用。在步驟266之后,控制轉回到測試 步驟242以該備選數(shù)據(jù)文件對象進行另一迭代。如果在測試步驟264確定數(shù)據(jù)文件對象的備選版本不可用,則控制從測試步驟 264轉到步驟268,客戶機進程等待。在這里的實施例中,可能希望等待數(shù)據(jù)文件對象變成 當前狀態(tài)和/或可用。在步驟268之后,控制轉回到步驟242進行另一迭代。應注意,如果 沒有備選數(shù)據(jù)文件對象可用,不是在步驟268等待,而是處理可從步驟264進行到步驟256 以執(zhí)行出錯處理。在其它實施例中,步驟268可能執(zhí)行一定次數(shù),如果數(shù)據(jù)文件對象仍不可 用或處于失效狀態(tài)及沒有備選數(shù)據(jù)文件對象,則在步驟256執(zhí)行出錯處理。參考圖11,流程圖280示出了客戶機在獲得對文件的寫租用之后進行寫操作所執(zhí) 行的步驟。處理在第一測試步驟282開始,確定正對其進行寫的數(shù)據(jù)文件對象是否處于不 可改變狀態(tài)。如果是,則控制從步驟282轉到步驟284,為數(shù)據(jù)文件對象分配新的實際存儲 空間以避免蓋寫不可改變的數(shù)據(jù)。為數(shù)據(jù)對象分配新的存儲空間可包括向服務器102提供 適當?shù)恼埱蟆T诓襟E284之后,控制轉回到步驟282以再次開始寫操作的處理。如果在步驟282確定正對其進行寫的數(shù)據(jù)文件對象不處于不可改變狀態(tài),則控制 從步驟282轉到步驟286,確定正對其進行寫的數(shù)據(jù)文件對象是否處于失效狀態(tài)。如果否, 則控制從測試步驟286轉到測試步驟288,確定正對其進行寫的數(shù)據(jù)文件對象是否處于空 狀態(tài)。如果是,則控制從步驟288轉到步驟284,如上所述,分配新的物理存儲空間。在步驟284之后,控制轉回到步驟282以再次開始寫操作的處理。如果在步驟288確定正對其進行寫的數(shù)據(jù)文件對象不處于空狀態(tài),則控制從測試 步驟288轉到步驟292,執(zhí)行寫操作。應注意,如果正對其進行寫的數(shù)據(jù)文件對象不處于不 可改變狀態(tài)、不處于失效狀態(tài)及不處于空狀態(tài)(因而處于當前狀態(tài)),則達到步驟292???戶機通過向服務器102提供適當?shù)臄?shù)據(jù)文件對象位置標識符及提供適當?shù)陌踩珣{證寫文 件數(shù)據(jù)。因此,在步驟292執(zhí)行的寫操作包括客戶機向服務器102發(fā)送適當?shù)恼埱蠹暗却?來自服務器的結果。在步驟292之后是測試步驟294,確定在步驟292執(zhí)行的寫操作是否成 功。如果 是,則控制從測試步驟294轉到測試步驟296,確定是否有正對其進行寫的數(shù)據(jù)文件對象的 同步鏡像。例如,在步驟296執(zhí)行的測試可包括確定文件LSO樹中的數(shù)據(jù)文件對象的父節(jié) 點是否指明復制。如果否,則控制從測試步驟296轉到步驟298,更新(消息)發(fā)送給服務 器102,指明寫已被執(zhí)行。在步驟298之后,處理結束。如果在測試步驟296確定有正對其進行寫的數(shù)據(jù)文件對象的同步鏡像,則控制從 測試步驟296轉到步驟302,在步驟292寫的數(shù)據(jù)也被寫到同步鏡像。在步驟302執(zhí)行的處 理在本說明書別處詳細描述。在步驟302之后,控制轉到步驟298,如上所述,向服務器102 發(fā)送更新(消息)。在步驟298之后,處理結束。如果在測試步驟294確定在步驟292執(zhí)行的寫操作不成功,或者如果在測試步驟 286確定正對其進行寫的數(shù)據(jù)文件對象處于失效狀態(tài),則控制轉到步驟304,嘗試對其進行 寫的數(shù)據(jù)文件對象從LSO樹的客戶機本地副本刪除。在流程圖280所示的寫操作結束時, 如果需要,客戶機可將向數(shù)據(jù)對象進行寫的困難通知給服務器102 (在步驟298),使得服務 器102可采取適當?shù)男袆印T诓襟E304之后是測試步驟306,確定數(shù)據(jù)的備選版本是否可用。如本說明書別處 詳細所述,由于鏡像,同一數(shù)據(jù)文件對象可能同時存在多個版本。因此,如果正對其進行寫 操作的數(shù)據(jù)文件對象處于失效狀態(tài)或不能對其進行寫,則可能寫到數(shù)據(jù)的鏡像副本。在步 驟306進行的測試與在步驟264進行的測試類似并在本說明書別處詳細描述。如果在測試 步驟306確定對應于數(shù)據(jù)文件對象的數(shù)據(jù)備選版本可用,則控制從測試步驟306轉到步驟 308,選擇備選版本以進行寫。在步驟308之后,控制轉回到測試步驟282以備選數(shù)據(jù)文件 對象進行另一迭代。如果在測試步驟306確定對應于數(shù)據(jù)文件對象的數(shù)據(jù)備選版本不可用,則控制從 測試步驟306轉到步驟312執(zhí)行出錯處理。在步驟312執(zhí)行的特定出錯處理隨實施而變并 可包括將出錯報告給調用進程和/或可能在報告出錯之前重試寫操作指定次數(shù)。在步驟 312之后,控制轉到步驟298,如上所述,向服務器102發(fā)送更新消息。在步驟298之后,處
      理結束。參考圖12,流程圖320更詳細地示出了圖10的備選版本可用性測試步驟264和/ 或圖11的備選版本可用性測試步驟306所執(zhí)行的步驟。處理在第一測試步驟322開始,確 定文件是否具有任何鏡像數(shù)據(jù)文件對象。在一些情況下,文件可能不使用鏡像,在該情形下 將沒有備選副本可用。因此,如果在測試步驟322確定文件不具有任何鏡像數(shù)據(jù)文件對象, 則控制從測試步驟322轉到步驟324,返回表明沒有備選副本可用的值。在步驟324之后, 處理結束。
      如果在測試步驟322確定鏡像副本可用,則控制從測試步驟322轉到步驟326,使 指針指向第一鏡像數(shù)據(jù)文件對象。對于在此所述的處理,指針可用于對鏡像數(shù)據(jù)文件對象 從頭到尾進行迭代以查找可使用的數(shù)據(jù)文件對象。在步驟326之后是測試步驟328,確定指 針是否越過鏡像數(shù)據(jù)文件對象的列表的末端(已對所有鏡像數(shù)據(jù)文件對象進行迭代)。如 果是,則控制從測試步驟328進行到步驟324,如上所述,返回表明沒有備選版本可用的值。
      如果在測試步驟328確定指針未越過鏡像數(shù)據(jù)文件對象的列表的末端,則控制從 測試步驟328轉到測試步驟332,確定指針是否指向處于失效狀態(tài)的數(shù)據(jù)文件對象。如果 是,則控制從測試步驟332轉到步驟334,使指針指向將要檢查的下一數(shù)據(jù)文件對象。在步 驟334之后,控制轉回到步驟328,如上所述,進行另一迭代。如果在測試步驟332確定指針 沒有指向處于失效狀態(tài)的數(shù)據(jù)文件對象,則控制從測試步驟332轉到步驟336,指針所指向 的數(shù)據(jù)文件對象返回為可由調用進程使用的備選數(shù)據(jù)文件對象。在步驟336之后,處理結 束ο參考圖13,流程圖350更詳細地示出了圖11的流程圖280的步驟302所執(zhí)行的 操作,其中已寫的數(shù)據(jù)被復制到多個同步鏡像(鏡像數(shù)據(jù)文件對象)。處理在第一步驟352 開始,用于對鏡像數(shù)據(jù)文件對象從頭到尾進行迭代的指針設定為指向第一鏡像數(shù)據(jù)文件對 象。在步驟352之后是測試步驟354,確定用于對鏡像數(shù)據(jù)文件對象從頭到尾進行迭代的指 針是否越過末端(即是否所有鏡像數(shù)據(jù)文件對象均已被處理)。如果是,則處理結束。否 貝U,控制從測試步驟354轉到測試步驟356,確定指針所指向的鏡像數(shù)據(jù)文件對象的狀態(tài)是 否表明鏡像數(shù)據(jù)文件對象處于當前狀態(tài)。如果否,則控制從測試步驟356進行到測試步驟 358,確定指針所指向的鏡像數(shù)據(jù)文件對象的狀態(tài)是否表明鏡像數(shù)據(jù)文件對象處于失效狀 態(tài)。如果是,則控制從測試步驟358進行到步驟362,從LSO樹的客戶機本地副本刪除鏡像 數(shù)據(jù)文件對象。在這里的實施例中,同步鏡像數(shù)據(jù)文件對象不應處于失效狀態(tài),如果出現(xiàn)這 種情況,則其可表明出錯情況。因此,在步驟362之后是步驟364,關于失效鏡像的信息被發(fā) 送給服務器102,其響應于此進行恢復處理。應注意,如果鏡像數(shù)據(jù)文件對象既不處于失效狀態(tài)也不處于當前狀態(tài),則鏡像數(shù) 據(jù)文件對象或處于空狀態(tài)或處于不可改變狀態(tài)。在任一情形下,需要為將要向其寫數(shù)據(jù)的 數(shù)據(jù)文件對象分配新的空間。因此,如果在測試步驟358確定數(shù)據(jù)文件對象不處于失效狀 態(tài),則控制從測試步驟358轉到步驟366,為鏡像數(shù)據(jù)文件對象分配新空間。在步驟366之 后是步驟368,正跨同步鏡像數(shù)據(jù)文件對象進行復制的數(shù)據(jù)被寫到用于對鏡像數(shù)據(jù)文件對 象從頭到尾進行迭代的指針所指向的鏡像數(shù)據(jù)文件對象。應注意,如果確定鏡像數(shù)據(jù)文件 對象處于當前狀態(tài),也可從測試步驟356達到步驟368。在步驟368之后是步驟372,用于對 鏡像數(shù)據(jù)文件對象從頭到尾進行迭代的指針被使得指向下一鏡像數(shù)據(jù)文件對象。應注意, 步驟372也可在步驟364之后達到。在步驟372之后,控制轉回到測試步驟354進行另一 迭代。在此所述的系統(tǒng)可使用對象標識符訪問文件對象。在這里的實施例中,保存在服 務器102當中的每一文件對象可被分配唯一的對象標識符,其識別每一文件對象并使每一 文件對象區(qū)別于系統(tǒng)中的其它文件對象。然而,許多應用程序使用文件命名結構和/或分 層目錄訪問文件及其中的數(shù)據(jù)。例如,文件名“C: \ABC\DEF\GHI.doc”表明稱為“GHI.doc” 的文件保存在子目錄“DEF”中,子目錄“DEF”保存在位于根卷“C”上的另一目錄“ABC”中。嵌套目錄結構可通過將目錄實施為保存在其它目錄中的特殊文件而進行提供。在上面給出 的例子中,子目錄“DEF”可實施為保存在目錄“ABC”中的文件。在此所述的系統(tǒng)可通過將傳統(tǒng)文件名翻譯為文件對象標識符而向應用程序呈現(xiàn) 傳統(tǒng)命名結構和目錄層次。這樣的翻譯服務可由其它服務在文件操作時使用。在這里的實 施例中,每一目錄可包括將文件名和子目錄名與文件對象標識符相關聯(lián)的表。該系統(tǒng)可一 次檢查一個目錄并遍歷子目錄,直到達到目標文件為止。參考圖14,流程圖380示出了提供文件名翻譯服務(文件名服務)時所執(zhí)行的步驟,該服務將傳統(tǒng)分層文件名翻譯為文件對象標識符。文件名服務可將傳統(tǒng)分層文件名作 為輸入進行接收并可返回對象標識符(或在一些情況下,出錯)。處理在第一步驟382開 始,文件名服務接收文件名,如傳統(tǒng)分層文件名。在步驟382之后是測試步驟384,確定文 件名的句法是否對。檢查分層文件名的句法眾所周知,例如包括檢查只使用了適當?shù)淖址?如果在測試步驟384確定句法不對,則控制從測試步驟384轉到步驟386,出錯指示符(出 錯消息)返回給調用進程。在步驟386之后,處理結束。如果在測試步驟384確定所提供名稱的句法對,則控制從測試步驟384轉到步驟 388,讀根目錄。在這里的實施例中,所有文件名路徑在用于服務器102中保存的所有文件 對象的單一共同根目錄處開始。在其它實施例中,可以有多個根目錄,其中特定根目錄的說 明可通過任何適當?shù)氖侄翁峁?,如使用卷標識符、明確選擇特定根目錄等。在步驟388之后是測試步驟392,確定目標文件(或作為文件名路徑的一部分的子 目錄)是否在已讀的目錄中。如果否,則控制從測試步驟392轉到步驟386,如上所述,返回 出錯。在一些實施例中,源自步驟392的測試的未找到文件出錯不同于源自步驟384的測 試的句法出錯。如果確定目標文件或作為文件名路徑的一部分的子目錄在剛讀的目錄中,則控制 從測試步驟392轉到測試步驟394,確定剛讀的目錄是否包含目標文件(與包含作為文件名 路徑的一部分的子目錄對照)。如果是,則控制從測試步驟394轉到步驟396,將目標文件 對象的對象標識符返回給調用進程。在步驟396之后,處理結束。如果在測試步驟394確定剛讀的目錄包含作為文件名路徑的一部分的子目錄,則 控制從測試步驟394轉到步驟398,讀該子目錄,使得該子目錄變成受檢查的目錄。有效地, 步驟398的處理遍歷子目錄鏈以最終達到目標文件。在步驟398之后,控制轉回到步驟392, 如上所述,進行下一迭代。參考圖15,該圖將客戶機104示作包括用戶存儲地址空間和內核存儲地址空間。 在這里的實施例中,用戶存儲地址空間為通常由用戶應用程序及有關進程使用的存儲空 間,而內核存儲地址空間為通常僅可由系統(tǒng)進程訪問的存儲空間,系統(tǒng)進程如操作系統(tǒng)內 核和有關進程。如本說明書別處詳細所述,可能使在此所述的系統(tǒng)的不同部分在用戶存儲 空間和/或內核存儲空間中駐留和運行。此外,對于客戶機104,可能具有多個不同的、訪問 服務器處的文件對象的接口。在圖15中,客戶機104被示為包括用戶存儲地址空間中的應用程序及內核存儲地 址空間中的虛擬文件系統(tǒng)(VFS)、文件名服務、內核I/O驅動、布局管理器和通信接口。VFS 為更具體文件系統(tǒng)之上的抽象層。VFS的目的是使客戶機應用程序能以一致的方式訪問不 同類型的具體文件系統(tǒng)。VFS使客戶機104上運行的應用程序能訪問服務器102上的文件對象,而應用程序無需理解基礎文件系統(tǒng)的細節(jié)。VFS可通過將應用程序的文件系統(tǒng)調用翻 譯為文件對象操控而以傳統(tǒng)方式實施,反之亦然。例如,VFS可將文件系統(tǒng)調用如打開、讀、 寫、關閉等翻譯為文件對象調用如創(chuàng)建對象、刪除對象等。VFS可使用本說明書別處描述的文件名服務將文件名翻譯為對象標識符。內核I/ 0驅動提供到低級對象級I/O操作的接口。內核I/O驅動可在Linux I/O驅動之后建模并 與之類似。布局管理器可對對應于文件的LSO樹執(zhí)行一些處理,如本說明書別處詳細所述。 通信接口在客戶機104和服務器102之間提供通信。通信接口可使用任何適當?shù)耐ㄐ艡C制 實施。例如,如果客戶機104經因特網連接與服務器102通信,則通信接口可使用TCP/IP 以有助于服務器102和客戶機104之間的通信。圖15的應用程序可對應于圖3的客戶機軟件124。圖15的VFS可對應于圖3的 接口 126-128之一。圖15的文件名服務、內核I/O驅動、布局管理器和通信接口可對應于 圖3的服務器操作軟件122。圖3和其它圖的組成之間也可發(fā)現(xiàn)類似的關聯(lián)。參考圖16,流程圖410示出了 VFS連同客戶機104上運行的應用程序提供文件服 務所執(zhí)行的步驟。處理在第一步驟412開始,應用程序請求的文件系統(tǒng)操作可被翻譯為一 個或多個對象操作。例如,打開文件以進行讀的文件操作可轉換為包括獲得對象租用以進 行讀的對象操作,如本說明書別處所述。在步驟412之后是步驟414,VFS使用上面結合圖 14所述的文件名服務將文件名翻譯為對象標識符。之后的操作可使用在步驟414獲得的對 象標識符進行。在步驟414之后是測試步驟416,驅動所請求的操作是否要求LSO樹。如本說明書 別處所述,操作如讀、寫等使用對應于文件對象的LSO樹。然而,一些可能的文件操作可能 不要求訪問對應的LSO樹。如果在測試步驟416確定需要LSO樹,則控制從測試步驟416轉 到步驟418,VFS訪問LSO管理器以執(zhí)行必要的操作。例如,對于讀操作,LSO管理器可執(zhí)行 如圖10的流程圖240中所示的處理。在步驟418之后,或者如果不需要LSO而在步驟416 之后,是步驟422,操作轉到低級內核I/O驅動(如經一個或多個適當?shù)腁PI)。在執(zhí)行所請 求的操作時,內核I/O驅動使用通信模塊在客戶機104和服務器102之間通信。在客戶機 104上運行的應用程序已從服務器102請求數(shù)據(jù)和/或其它信息的情形下,數(shù)據(jù)和/或信息 可通過通信接口、內核I/O驅動等倒退傳給VFS并最終傳給應用程序。參考圖17,客戶機104被示為具有應用程序、文件名服務、用戶級I/O驅動和布局 管理器,所有這些均提供在用戶存儲地址空間中。在圖15中所示和上面所述的VFS的功能 可改為由鏈接到應用程序的庫例程執(zhí)行,因而是應用程序的一部分。這些例程將提供結合 圖16所述的功能。因此,是應用程序使用文件名服務和對用戶級I/O驅動(象內核I/O驅 動)及布局管理器進行調用。通信接口仍保留在內核存儲地址空間中。應注意,對于圖15的結構,修改通過修改系統(tǒng)進程(操作系統(tǒng))實現(xiàn),這由于幾個 原因而不利。例如,如果客戶機104為多用戶計算系統(tǒng),則修改操作系統(tǒng)可能包括重啟動整 個系統(tǒng)因而中斷所有用戶。相反,圖17的結構有利,因為其使能在應用程序/用戶存儲地 址空間中修改系統(tǒng),使得客戶機104的操作系統(tǒng)不需要進行修改。然而,圖17的結構不使 用VFS,因而不能獲得圖15中的VFS提供的、應用程序與文件系統(tǒng)的有利分隔。參考圖18,客戶機104被示為在用戶存儲地址空間中具有應用程序,其通過內核 存儲地址空間中的VFS訪問文件對象,如同圖15中所示那樣。然而,文件名服務、I/O驅動和布局管理器均駐留在用戶存儲地址空間中,如同圖17中所示的那樣。VFS通過內核存儲 地址空間和用戶存儲地址空間之間的網橋與用戶存儲地址空間中的組成部分通信,網橋如 FUSE(或類似的)接口。網橋使文件系統(tǒng)組成部分將提供在用戶存儲地址空間中而不是內 核存儲地址空間中,同時仍將VFS保留在內核存儲地址空間中。因此,圖18所示的結構提 供使用VFS的優(yōu)點,如圖15的結構所示,及提供使文件系統(tǒng)組成部分在用戶存儲地址空間 中的優(yōu)點,如圖17的結構所示。在一些情況下,可能使客戶機104的用戶存儲地址空間中的應用程序和/或其它 處理直接訪問文件對象,而不是通過象VFS和/或由用戶可鏈接庫提供的等效功能的文件 服務層(如圖17中所示的結構)。直接訪問文件對象可包括調用創(chuàng)建對象、讀對象、修改 對象、刪除對象等的例程。在這種情況下,應用程序將需要知道怎樣解釋和/或操控對象數(shù) 據(jù),這可能不總是合乎需要。例如,通過VFS訪問文件對象的應用程序可能不需要考慮(甚 或了解)LS0樹的結構,而直接訪問對象的應用程序需要使用LSO樹。另一方面,消除文件 服務層可為要不然不可用的優(yōu)化提供機會。應注意,由于服務器102與客戶機104-106交 換對象信息/操作,服務器102可能不需要或不能夠在客戶機104-106上使用文件系統(tǒng)接 口(如VFS的文件服務)的應用程序和非這樣的應用程序之間區(qū)分。參考圖19,客戶機104被示為包括用戶存儲地址空間中的應用程序和內核存儲地 址空間中的內核I/O驅動、布局管理器及文件名服務。圖19中所示的結構與圖15中所示 的類似,但未使用VFS。在圖19中所示的結構中,應用 程序可直接訪問文件名服務、內核I/ 0驅動及布局管理器。內核存儲地址空間中的通信接口象其它結構中一樣與服務器102通 信。圖19中所示的直接訪問使應用程序能操控文件對象(例如經適當?shù)腁PI),而VFS(或 類似)的訪問使應用程序能通過對VFS的文件系統(tǒng)調用而間接訪問文件對象。參考圖20,客戶機104被示為具有應用程序、用戶級I/O驅動、布局管理器和文件 名服務,所有這些均提供在用戶存儲地址空間中。圖20中所示的結構與圖17中所示的類 似。然而,如前面提出的那樣,圖17的結構包括鏈接到應用程序因而成為其一部分的文件 服務庫。相反,在圖20的結構中,應用程序不鏈接到具有廣泛文件服務的庫內。而是,與圖 19所示結構的應用程序類似,圖20的結構中的應用程序使用最小文件服務,改為使用用戶 級I/O驅動、布局管理器、及文件名服務(如果需要文件名翻譯)直接使用和操作文件對 象。參考圖21,客戶機104被示為具有用戶存儲地址空間中的應用程序和內核存儲 地址空間中的網橋。文件名服務、用戶級I/O驅動和布局管理器提供在用戶存儲地址空間 中。然而,與圖20的結構不同,應用程序不直接調用用戶存儲地址空間中的文件系統(tǒng)組成 部分。而是,應用程序通過網橋間接調用文件系統(tǒng)組成部分。同圖18中所示的結構一樣,圖 21的結構有利地查找用戶存儲地址空間中的文件系統(tǒng)組成部分,同時在應用程序和文件系 統(tǒng)組成部分之間提供內核存儲地址空間層。參考圖22,客戶機104被示為具有用戶存儲地址空間中的應用程序和內核存儲地 址空間中的環(huán)球網服務模塊。應用程序可以是環(huán)球網服務器應用程序或處理與環(huán)球網的通 信的任何應用程序。在這里的實施例中,應用程序使能與客戶機104通信,其用作通過環(huán)球 網連接訪問客戶機104的其它計算設備(未示出)的環(huán)球網服務器。圖22中所示的結構以與其它結構提供的文件服務和/或文件對象訪問類似的方式提供環(huán)球網服務。然而,環(huán)球網服務經環(huán)球網數(shù)據(jù)協(xié)議如HTML接收請求/數(shù)據(jù),及還按 與用于請求/數(shù)據(jù)的協(xié)議相同或不同的環(huán)球網數(shù)據(jù)協(xié)議提供響應/數(shù)據(jù)。環(huán)球網服務處理 的操作可包括對象級操作如創(chuàng)建對象、刪除對象、讀對象、修改對象、修改對象元數(shù)據(jù)等。還 可能經環(huán)球網服務提供更多的文件系統(tǒng)級操作,通過包括本說明書別處所述的文件服務的 至少部分功能,用環(huán)球網服務打開文件、從文件讀數(shù)據(jù)等。環(huán)球網服務可向其它計算設備呈 現(xiàn)傳統(tǒng)的眾所周知的環(huán)球網服務協(xié)議如REST或SOAP,或可提供任何其它適當?shù)膮f(xié)議。參考圖23,客戶機104被示為在用戶存儲地址空間中具有應用程序、環(huán)球網服務、用戶級I/O驅動和布局管理器。應用程序可包括使能與客戶機104通信的環(huán)球網連接,其 用作通過環(huán)球網連接訪問客戶機104的其它計算設備(未示出)的環(huán)球網服務器。圖23 的結構與圖17和圖20的類似。圖23所示的結構相比于圖22中所示結構的優(yōu)點為圖23 中所示結構的變化不要求重配置內核存儲地址空間進程。參考圖24,客戶機104被示為在用戶存儲地址空間中具有應用程序、環(huán)球網服務、 用戶級I/O驅動和布局管理器。應用程序可包括使能與客戶機104通信的環(huán)球網連接,其 用作通過環(huán)球網連接訪問客戶機104的其它計算設備(未示出)的環(huán)球網服務器。網橋提 供在內核存儲地址空間中。圖24的結構具有與圖23中所示結構類似的優(yōu)點,但還具有本 說明書別處描述的因提供網橋而提供的優(yōu)點。參考圖25,客戶機104被示為在用戶存儲地址空間中具有多個應用程序,每一應 用程序可使用不同的接口訪問服務器102的文件對象。圖25中所示的每一應用程序意于表 示一個或多個應用程序。因此,APPl可表示使用環(huán)球網服務接口訪問服務器102處的文件 對象的一個或多個應用程序。APPl應用程序可包括使能與客戶機104通信的環(huán)球網連接, 其用作通過環(huán)球網連接訪問客戶機104的其它計算設備(未示出)的環(huán)球網服務器。APP2 可表示使用VFS訪問服務器102處的文件對象的一個或多個應用程序,及APP3可表示直接 對服務器102處的文件對象進行操作的一個或多個應用程序。不同的接口可同時在客戶機 104處運行。應注意,包括所示結構的結構的其它組合也是可能的,使得客戶機104可同時向 其上的應用程序呈現(xiàn)不同的接口。例如,可能組合圖15、19和22中所示的結構和/或組合 圖17、20和23的結構。其它組合,包括只有兩個所示結構的組合,也是可能的。如果1)發(fā) 出請求的客戶機對文件對象無論進行哪一所請求的操作均具有適當?shù)氖跈?;?)與任何 先前的請求沒有沖突,則服務器102將文件對象提供給客戶機104。例如,在任一次只有一 個客戶機被允許向對象進行寫的系統(tǒng)中,在客戶機104-106中的另一客戶機正修改對象的 同時,服務器102將不允許客戶機104-106之一修改特定對象。參考圖26,服務器102被更詳細地示為包括一個或多個策略管理服務器402、一 個或多個安全管理服務器403、一個或多個審計服務器404、一個或多個元數(shù)據(jù)服務器405、 一個或多個資源管理服務器406、一個或多個數(shù)據(jù)存儲服務器407、和一個或多個元數(shù)據(jù)定 位服務器408。服務器402-408中的每一個可實施為能夠提供在此所述的功能的一個或多 個單式處理裝置。對于在此的討論,提及服務器時應理解為指一個或多個服務器。服務器 402-408可使用任何適當?shù)臄?shù)據(jù)通信機制如TCP/IP互連,及可使用任何適當?shù)臄?shù)據(jù)通信機 制如TCP/IP鏈接到客戶機104-106 (未在圖26中示出)。服務器102可包括有助于系統(tǒng)管理的用戶管理接口 412。用戶管理接口 412與策略管理服務器402、安全管理服務器403和審計服務器404交換數(shù)據(jù)以影響服務器102怎樣 與客戶機104-106和對應的用戶交互作用。數(shù)據(jù)可通過用戶管理接口 412以多種方式中的 任何方式提供,包括傳統(tǒng)的交互計算機屏幕輸入和數(shù)據(jù)文件輸入(如具有用戶管理命令的 文本文件)。數(shù)據(jù)可包括使用戶類別和存儲參數(shù)相關聯(lián)的信息,如服務質量(QOS) ,RAID保 護水平、鏡像的數(shù)量和地理位置等。例如,管理員可通過用戶管理接口 412指定特定類的用 戶(屬于特定分組的用戶)將數(shù)據(jù)文件對象保存在具有特定RAID水平保護的存儲設備上。服務器102還包括鏈接到數(shù)據(jù)存儲服務器407的物理存儲器414。盡管物理存儲器 414在圖26中被示為單一制品,但可以有任何數(shù)量的、地理上分散的物理存儲單元。此外, 可以有不同類型的、具有不同能力的物理存儲單元。因此,物理存儲器414 一般地表示由數(shù) 據(jù)存儲服務器407管理的系統(tǒng)的物理數(shù)據(jù)存儲器的一個或多個范例,如下面詳細所述。數(shù)據(jù)修改,包括修改元數(shù)據(jù)文件對象和/或影響元數(shù)據(jù)文件對象的處理/創(chuàng)建的 策略,要求適當?shù)陌踩珣{證。因此,安全管理服務器403可限制/抑制某些管理員(用戶) 針對多類用戶修改和/或創(chuàng)建策略的能力。參考圖27,流程圖430示出了用戶管理接口 412獲得和使用用于訪問策略管理服 務器402的安全憑證時所執(zhí)行的步驟。處理在第一步驟432開始,用戶管理接口 412向安 全管理服務器403發(fā)送請求以為將由用戶管理接口 412執(zhí)行的操作獲得權標(或其它適當 的安全憑證)。在步驟432之后是測試步驟434,確定權標是否已授權(提供)。在一些情 況下,安全管理服務器403可能根本不發(fā)出安全權標。例如,如果管理員(用戶)沒有足夠 的權力執(zhí)行所需功能。如果安全權標未被授權,則控制從步驟434轉到步驟436,執(zhí)行與安全權標未被授 權有關的處理。在步驟436執(zhí)行的操作可包括通過安全管理接口 412向管理員(用戶)提 供表明管理員沒有足夠權力執(zhí)行所需操作的消息。在步驟436之后,處理結束。如果在測試步驟434確定安全權標已由安全管理服務器403授權(提供),則控 制從測試步驟434轉到步驟438,用戶管理接口 412將安全權標及用戶id信息提供給策略 管理服務器402。當然,表明所需操作/修改的信息也可在步驟438提供。在步驟438之 后是測試步驟442,確定策略管理服務器402是否已允許所請求的操作。應注意,在一些情 況下,即使安全管理服務器403已提供安全權標,策略管理服務器402也可能不允許特定操 作。例如,如果用戶id和安全權標指示的用戶不匹配和/或如果所請求的操作和安全權標 指示的操作不匹配。如果在測試步驟442確定所請求的操作未被允許,則控制從測試步驟442轉到步 驟436,如上所述,執(zhí)行處理以表明有安全問題。在步驟436執(zhí)行的處理可包括向管理員(用 戶)提供表明由于安全權力不足從而操作不能被執(zhí)行的消息。當步驟436是從步驟442達 到時,所提供的消息可不同于當步驟436是從步驟434達到時提供的消息。如果在測試步驟442確定允許所請求的操作,則控制從測試步驟442轉到步驟 444,執(zhí)行操作。在步驟444執(zhí)行操作可包括修改策略數(shù)據(jù),如本說明書別處詳細所述。在 步驟444之后,處理結束。因此,訪問策略管理服務器402的管理員(用戶)將首先向安全管理服務器403 提供標識信息,安全管理服務器返回安全權標(可能具有期滿時間)。管理員將權標和標 識信息呈現(xiàn)給策略管理服務器402,其基于權標和標識信息決定授權或拒絕訪問。應注意,圖27的流程圖430所示的安全機制可擴展到連同訪問任何服務器402-408和/或其它數(shù) 據(jù)使用。例如,客戶機104-106之一可通過在執(zhí)行操作之前首先從安全管理服務器403請 求安全權標而獲得/修改文件對象,前述操作包括關于文件對象的操作。因此,對于在此的 討論,可以假定,訪問文件對象、服務器等包括如圖27中所示的適當安全程序。策略管理服務器402處理文件對象的放置和保護。管理員(用戶)可通過用戶管 理接口 412輸入不同的策略模板,其可分配給不同的客戶機104-106、不同的用戶、不同類 的用戶、或任何其它適當?shù)姆纸M。例如,策略模板可表明,對于特定組的用戶,無論何時創(chuàng)建 新文件,均將創(chuàng)建地理上遠離初始數(shù)據(jù)集至少一定距離的鏡像。在這種情況下,當該組的第 一用戶在紐約創(chuàng)建初始數(shù)據(jù)集時,可自動在洛杉磯創(chuàng)建鏡像;同時當?shù)诙脩粼诼迳即墑?chuàng) 建初始數(shù)據(jù)集時,可在紐約創(chuàng)建鏡像。審計服務器404可用于提供系統(tǒng)審計能力。用戶可通過用戶管理接口 412與審計 服務器404通信。用戶可指明將要審計(追蹤)的信息的類型。資源管理服務器406追蹤可用系統(tǒng)資源。在一些情況下,資源管 理服務器406可 在建立策略模板和/或分配策略模板時與策略管理服務器402交互作用。在一些情況下, 用戶可能試圖構建如果分配給一組則不可能實現(xiàn)的策略模板。例如,如果所有物理數(shù)據(jù)存 儲器位于單一地理位置,則具有指明新文件應包括地理上遠離初始數(shù)據(jù)集的鏡像的策略模 板將不合適。資源管理服務器406從系統(tǒng)的其它組成部分接收信息以能夠追蹤哪些資源可用。 無論資源在何時增加到系統(tǒng),該資源或另一組成部分將該信息報告給資源管理服務器406。 例如,如果新的物理存儲器增加到系統(tǒng),則新的物理存儲器本身或對應的數(shù)據(jù)存儲服務器 407向資源管理服務器406發(fā)送消息。類似地,如果資源變滿(如物理磁盤滿了)或被從 系統(tǒng)除去(計劃的除去或非計劃的資源故障),則信息提供給資源管理服務器406。在這里 的實施例中,系統(tǒng)資源可對應于物理存儲器414和/或管理物理存儲器414的數(shù)據(jù)服務器 407的部分。參考圖28,資源表460被示為包括多個表項462-464,每一表項對應于特定的存儲 資源。盡管只示出了三個表項,但表460可包含任何數(shù)量的表項。表460可使用任何適當 的技術實施,包括陣列、鏈表等。每一表項462-464包括識別對應于該表項的特定資源的資源字段。在這里的實 施例中,每一表項462-464可對應于特定數(shù)據(jù)存儲服務器407和/或其部分。每一表項 462-464包括與相應資源的狀態(tài)對應的狀態(tài)字段。在這里的實施例中,狀態(tài)字段可表明資源 聯(lián)機(可用)或脫機(不可用)。狀態(tài)字段還可表明已使用資源空間的百分比,及可能指明 任何性能降級。每一表項462-464還可包括能力字段,其指明對應資源的能力。在這里的實施例 中,當資源表示存儲區(qū)時,能力字段可指明對應存儲區(qū)的特定能力。特定能力可包括資源為 綠色(例如通過在不使用時使磁盤轉速降低而低能使用)、能夠重復數(shù)據(jù)刪除(僅保留單一 數(shù)據(jù)副本,要不然重復)、能夠各種RAID配置等。能力字段可指明任何適當?shù)臄?shù)據(jù)存儲能 力。參考圖29,流程圖480示出了資源管理服務器406在維護關于系統(tǒng)資源的信息時 的操作。處理在第一步驟482開始,資源管理服務器406用關于資源的信息初始化。在步驟482執(zhí)行的初始化處理可采取任何形式,包括加載固定的初始可用的資源表、使資源管理服 務器406輪詢系統(tǒng)資源等。在步驟482之后是測試步驟484,資源管理服務器406等待將要提供的新信息。在 這里的實施例中,在初始化之后,資源管理服務器406等待從其它系統(tǒng)組成部分接收信息。 在其它實施例中,可能使資源管理服務器406定期輪詢系統(tǒng)組成以看是否已發(fā)生變化。如 果在測試步驟484確定沒有新信息可用,控制循環(huán)回到測試步驟484以繼續(xù)輪詢。一旦在測試步驟484確定新信息可用,則控制從測試步驟484轉到測試步驟486, 確定新信息是否與增加到系統(tǒng)的新資源有關。如果是,則控制從測試步驟486轉到步驟 488,向由資源管理服務器406管理的資源表添加新表項。在步驟488之后,控制轉回到步 驟484以繼續(xù)等待新信息。如果在測試步驟486確定所接收的資源信息與新資源無關(因而與現(xiàn)有資源的變 化有關),則控制從步驟486轉到步驟492,查找資源表中的現(xiàn)有表項。在步驟492之后是 測試步驟494,確定是否正針對修改的資源改變能力。資源的能力可在許多不同的情形下改 變。例如,資源可能降級并失去能力,資源可能被修改/增強并獲得能力,資源的本地管理 器可決定使某些能力可用/不可用等。如果在步驟494確定資源的能力已改變,則控制從測試步驟494轉到步驟496,改 變所修改資源的能力字段。否則,控制從測試步驟494轉到步驟498,改變所修改資源的狀 態(tài)字段(如資源滿、資源脫機、資源聯(lián)機等)。在步驟496或498之后,控制轉回到步驟484, 如上所述,進行另一迭代。應注意,資源管理服務器406可表示多個分開的計算設備,這些計算設備可遍布 系統(tǒng)分散。此外,每一分開的計算設備可保留其自己的資源表副本。用于實施資源管理服 務器406的分開的計算設備可以也可不共享資源信息及可以也可不接收相同的資源狀態(tài) 消息。在信息共享和/或狀態(tài)消息的接收不理想的情形下,每一計算設備可具有稍微不同 的資源表版本,及可能沒有一個資源表版本能反映系統(tǒng)的所有資源的確切狀態(tài)的完全準確 的描述。物理存儲器414可使用相對便宜的現(xiàn)成大量制造的存儲器硬件提供。在這里的實 施例中,至少部分物理存儲器414可使用串行ATA磁盤驅動器實施,其可從多個制造商如 Seagate和Western Digital獲得。如本說明書別處所述,物理存儲器可以地理上分散。然 而,物理存儲器的每一部分可由至少一數(shù)據(jù)存儲服務器407管理/控制,其可使用物理存儲 器的對應部分本地的傳統(tǒng)計算設備實施。在這里的實施例中,數(shù)據(jù)存儲服務器407可將OSD標準接口呈現(xiàn)給系統(tǒng)。因此,服 務器102和/或客戶機104-106可通過數(shù)據(jù)存儲服務器407使用OSD調用訪問物理存儲器 414,及可根據(jù)OSD協(xié)議接收信息/數(shù)據(jù)。此外,數(shù)據(jù)存儲服務器407可處理物理存儲器414 的不同部分的能力和狀態(tài)的管理/記錄。因此,例如,當物理存儲器414的一部分由數(shù)據(jù)存 儲服務器407的特定服務器管理時,該特定服務器可向資源管理服務器406發(fā)送指明新狀 態(tài)的消息。參考圖30,流程圖510示出了資源管理服務器406在對查詢具有特定能力的資源 進行服務時(即查找具有特定能力的資源)所執(zhí)行的步驟。處理在第一步驟512開始,用 于對資源表的每一表項從頭到尾進行迭代的指針被設定為指向第一表項。在步驟512之后是測試步驟514,確定指針指向是否越過表的末端(即所有表項均已被檢查)。如果是,則 控制從測試步驟514轉到步驟516,由資源管理服務器406返回表明對所請求的能力沒有匹 配的結果。在步驟516之后,處理結束。如果在測試步驟514確定用于對表項從頭到尾進行迭代的指針沒有越過表的末 端,則控制從測試步驟514轉到測試步驟518,確定指針當前所指示的表項是否匹配所請求 的能力。應注意,在步驟518的測試可包括檢查資源的狀態(tài)以確保資源聯(lián)機及未滿,否則不 可使用。如果在步驟518確定指針所指示的資源具有所請求的能力,則控制從測試步驟518 轉到步驟522,資源管理服務器406返回指出匹配資源的指示符。在步驟522之后,處理結 束ο如果在步驟518確定指針所指示的資源不具有所請求的能力(或脫機、滿等),則 控制從測試步驟518轉到步驟524,遞增指針。在步驟524之后,控制轉回到步驟514,如上 所述,進行下一迭代。作為文件的元數(shù)據(jù)對象的一部分的LSO樹由元數(shù)據(jù)服務器405創(chuàng)建、保持和操控。 元數(shù)據(jù)服務器205在操控文件對象時處理來自客戶機104-106的更新(如在圖9的流程圖 200的步驟214、在圖11的流程圖280的步驟298等)。除了修改LSO樹之外,元數(shù)據(jù)服務 器205還可處理可能需要連同更新執(zhí)行的任何操作。元數(shù)據(jù)服務器205還處理針對文件對 象所獲得的租用。參考圖31,流程圖550示出了元數(shù)據(jù)服務器205在服務于文件租用請求時所執(zhí)行 的步驟。如本說明書別處所述,租用可由客戶機104-106之一請求。然而,也可能由服務器 102的組成部分之一請求租用。甚至可能由元數(shù)據(jù)服務器405之一請求租用。元數(shù)據(jù)服務 器405之一可在文件維護(如修復鏡像)時請求租用,如本說明書別處詳細所述。在這里的 實施例中,租用由元數(shù)據(jù)服務器405保存在指明已獲得租用的實體、租用類型(如讀或寫) 及可能指明期滿時間的表中。此外,如本說明書別處所述,可能對文件中的邏輯地址范圍執(zhí)行租用操作,例如使 得可對文件的邏輯地址A-B執(zhí)行一組租用操作,而對同一文件的邏輯地址C-D單獨執(zhí)行另 一組租用操作,其中A-B不與C-D重疊。在一次只發(fā)出一個寫租用的系統(tǒng)中,還可能一個實 體獲得對文件的A-B部分的寫租用,而另一獨立的實體同時獲得對同一文件的C-D部分的 寫租用。因此,對于在此的討論,在適當情形下,提及文件時應理解為包括文件的非重疊部 分。處理在第一測試步驟552開始,確定所請求的租用是否可用。步驟552的測試確 定請求者是否具有適當?shù)陌踩珣{證、是否存在對應的數(shù)據(jù)文件等。同樣,如本說明書別處詳 細所述,在某些情形下,租用可被故意使得不可用。如果在測試步驟552確定租用不可用, 則控制從測試步驟552轉到步驟554,將失敗指示符返回給請求者。失敗指示符可包括失敗 的原因(如不正確的安全憑證、文件不存在等)。在步驟554之后,處理結束。如果在測試步驟552確定所請求的租用可用,則控制從步驟552轉到測試步驟 556,確定租用請求是否用于將數(shù)據(jù)寫到對應于租用的文件。在這里的實施例中,多個用戶 (如客戶機、服務器)可同時從同一文件讀,但只有一個用戶可向同一文件寫。因此,如果 在測試步驟556確定用戶不是請求寫訪問,則控制從測試步驟556轉到步驟558,元數(shù)據(jù)服 務器405返回租用(即返回適當?shù)?、對應于授權租用的指示?標識符)。在這里的實施例中,租用還可被提供預定的期滿時間,在其之后租用不再有效。租用期滿和租用取消將在 本說明書別處詳細描述。此外,租用可連同僅允許所請求操作(如只讀、讀寫等)的安全憑 證(可能由安全管理服務器403產生)一起提供。安全憑證也可在租用期滿時過期,以加 強租用期滿。在步驟558之后,處理結束。如果在測試步驟556確定用戶是請求寫租用,則控制從測試步驟558轉到測試步 驟562,確定另一用戶是否已經獲得對同一文件的寫租用。如本說明書別處所述,對一個文 件一次只授權一個寫租用。如果在測試步驟562確定另一寫租用已被授權,則控制從測試 步驟562轉到步驟564,返回失敗指示符。如同步驟562 —樣,步驟564返回的失敗指示符 可包括識別失敗性質的信息。在步驟564之后,處理結束。如果在測試步驟562確定尚未 授權另一寫租用,則控制從測試步驟562轉到步驟566,元數(shù)據(jù)服務器405返回租用,可能連 同截止時間一起。在步驟566之后,處理結束。如本說明書別處所述,在一些情形下,可能希望發(fā)出具有期滿日期的租用。在這里 的實施例中,特定元數(shù)據(jù)服務器405可負責特定文件及相應文件對象。負責的元數(shù)據(jù)服務 器405發(fā)出對文件及相應文件對象的租用并處理租用期滿處理。租用信息可由負責的元數(shù) 據(jù)服務器405保存在適當?shù)臄?shù)據(jù)結構中(如表、鏈表等)。此外,可能使一個以上的元數(shù)據(jù) 服務器405負責特定文件或特定的一組文件,其中元數(shù)據(jù)服務器405之一為主服務器,其它 負責的元數(shù)據(jù)服務器為輔助服務器,其保存適當?shù)男畔⒌惶峁┓?,除非主服務器失?。參考圖32,流程圖580示出了負責的元數(shù)據(jù)服務器405在監(jiān)視租用期滿時所執(zhí)行 的步驟。處理在第一步驟582開始,對服務器所負責的所有租用(文件和租用組合)從頭 到尾進行迭代的指針被使得執(zhí)行第一租用。在步驟582之后是測試步驟584,確定租用是否 已期滿。在步驟584執(zhí)行的處理可使用任何適當?shù)募夹g,包括將租用期滿時間與當前時間 進行比較。如果在步驟584確定租用已期滿,則控制從步驟584轉到步驟586,取消租用。 步驟586的取消租用將在本說明書別處詳細描述。在步驟586之后,或者如果租用尚未期滿而在步驟584之后,是步驟588,遞增對 服務器所負責的文件和租用從頭到尾進行迭代的指針。在步驟588之后是測試步驟592, 確定指針是否越過末端(即所有文件和相應租用均已被處理)。如果是,則控制從步驟592 轉回到步驟582,如上所述,將指針復位為指向第一租用并開始另一遍檢查期滿租用。如果 在步驟592確定指針未越過末端,則控制從測試步驟592轉回到步驟584,如上所述,進行另 一迭代。在這里的實施例中,系統(tǒng)可提供關-開一致性,其中數(shù)據(jù)一致性在實體已釋放寫 訪問之后提供。換言之,當沒有實體對文件具有有效的寫租用時對文件提供一致性。相反, 當實體具有有效的寫租用時,可能不對讀數(shù)據(jù)的任何實體保證數(shù)據(jù)的狀態(tài)。在這里所述的 系統(tǒng)中,租用可在期滿之后取消或可因其它原因取消。取消租用可提高正由其它實體訪問 的數(shù)據(jù)的一致性。參考圖33,流程圖610示出了特定元數(shù)據(jù)服務器405取消租用時所執(zhí)行的步驟。 處理開始于第一步驟612,向占用租用的實體(如客戶機104-106之一)發(fā)送消息以向該實 體報警租用正被取消。如本說明書別處所述,任何適當?shù)膶嶓w均可占用租用,包括客戶機 104-106、其它服務器、甚或元數(shù)據(jù)服務器405之一。在一些實施例中,步驟612可包括確保 消息由實體接收(如等待確認),而在其它實施例中,簡單地發(fā)送消息并假定消息由任何操作接受者接收。當然,在等待確認的系統(tǒng)中,可能有超時和/或嘗試次數(shù)的限制。在步驟612之后是步驟614,調節(jié)適當?shù)谋硪苑从骋讶∠淖庥貌辉傥赐瓿伞_B同 租用使用的表和其它數(shù)據(jù)結構在本說明書別處詳細描述。在步驟614之后是測試步驟616, 確定所取消的租用是否為寫租用(允許寫數(shù)據(jù)的租用)。如本說明書別處所述,系統(tǒng)可提供 關-開一致性,使得當寫租用被釋放時,數(shù)據(jù)讀被使得一致。這可通過在寫租用被取消時取 消所有讀租用而使得容易。取消其讀租用的實體可在取消之后重新獲得讀租用之前轉儲清 除它們的內部緩沖器。應注意,取消其寫租用的實體也可響應于接收到取消通知通過將未 保存的數(shù)據(jù)(經數(shù)據(jù)存儲服務器407)寫到物理存儲器414而轉儲清除緩沖器。因此,在一 些實施例中,接收寫租用取消消息的實體可被提供一定量的時間,在該時間內將任何未保 存的數(shù)據(jù)寫到物理存儲器。為此,連同寫租用提供的安全憑證可被設定為在寫租用期滿之 后的預定時間量才期滿。如果在步驟616確定正被取消的租用不是寫租用,則處理結束。否則,控制從測試 步驟616轉到步驟618,用于對正取消其寫租用的文件的所有未完成租用從頭到尾進行迭 代的指針被使得指向第一未完成租用。在步驟618之后是測試步驟622,確定指針是否越過 末端(即所有未完成租用均已被取消)。如果是,則處理結束。否則,控制從測試步驟622 轉到步驟624,取消租用。租用可通過調用流程圖610所示的處理進行取消,因而可能遞歸。 在步驟624之后是步驟626,遞增用于對具有未完成文件租用的實體從頭到尾進行迭代的 指針。在步驟626之后,控制轉回到步驟622進行另一迭代。參考圖34,表630被示為包括用于追蹤特定元數(shù)據(jù)服務器405所負責文件的多個 表項。當然,其它適當?shù)臄?shù)據(jù)結構也可用于代替表630,如鏈表、雙向鏈表等。元數(shù)據(jù)服務器 405中的每一主服務器和元數(shù)據(jù)服務器405的任何相應輔助服務器可包含對應于特定元數(shù) 據(jù)服務器405所負責的具體文件集的數(shù)據(jù)。因此,例如,元數(shù)據(jù)服務器405中的第一主服務 器可包含針對第一主元數(shù)據(jù)服務器所負責的第一文件集的表版本,而元數(shù)據(jù)服務器405中 的第二主服務器可包含針對第二主元數(shù)據(jù)服務器所負責的第二(不同)文件集的完全不同 的表版本。表630的每一表項包括文件標識符字段(FID),其唯一地識別對應于表項的文件。 在這里的實施例中,F(xiàn)ID字段可以是文件的元數(shù)據(jù)對象(例如,圖4的示圖130中的元數(shù)據(jù) 對象132)的對象id。應注意,如本說明書別處所述,文件的元數(shù)據(jù)對象可用于查找該文件 的所有其它數(shù)據(jù)對象。MD LOC字段可描述文件的元數(shù)據(jù)對象的數(shù)據(jù)存儲位置。在這里的實施例中,MD LOC字段可包含用于保存文件的元數(shù)據(jù)對象的數(shù)據(jù)存儲服務器407的標識符。MD LOC字段 還可包含可用于檢索及將數(shù)據(jù)保存在數(shù)據(jù)存儲服務器407之一處的唯一標識符(可能初始 由數(shù)據(jù)存儲服務器407之一分配)。租用列表字段可包含關于對相應文件具有未完成有效租用的所有實體的信息。在 這里的實施例中,租用列表字段可包含指向對應于具有未完成租用的實體的鏈表的指針。 當然,可使用任何其它適當?shù)臄?shù)據(jù)結構(如陣列)。參考圖35,示圖640示出了可用于追蹤對文件具有未完成有效租用的實體的鏈 表。鏈表的每一單元包含指向鏈表的下一單元的“下一”字段。鏈表末端處的單元包含零 值指示符。因此,鏈表可通過以租用列表指針所指向的單元為開始及隨后指向由下一字段指向的單元而進行遍歷(如,連同圖32的流程圖580中所示的處理一起)。類似地,傳統(tǒng)的 鏈表操作可用于添加和去除單元。鏈表的每一單元還包含指明租用類型(如讀或寫)的類型字段及包括指明對應于 該單元的租用何時期滿的EXP字段。每一單元還包含指明占用相應租用的實體(如客戶機 104-106之一、另一服務器等)的ENT字段。鏈表的操控相當直接。當租用被授權時,單元的字段用對應于該租用的類型、截止 時間和實體填充,然后將該單元添加到鏈表。類似地,當租用被取消或返回時,從鏈表刪除 對應的單元。當然,可使用其它數(shù)據(jù)結構代替鏈表。
      參考圖36,表650被示為包含使對象標識符(OID)與位置信息(LOC)相關聯(lián)的多 個表項。在這里的實施例中,對象標識符為數(shù)值。每一元數(shù)據(jù)服務器405被提供唯一的對 象標識符范圍進行使用/管理。在一些實施例中,對象標識符可重新使用,而在其它實施例 中對象標識符沒有重新使用。當然,在對象標識符未重新使用的情形下,每一元數(shù)據(jù)服務器 405需要被提供足夠的可使用對象標識符范圍。LOC字段與表630的MD LOC字段類似。LOC字段描述對應對象的數(shù)據(jù)存儲位置。 在這里的實施例中,LOC字段可包含用于包含(處理)對象的數(shù)據(jù)存儲服務器407之一的標 識符,其作為可用于檢索和保存該對象的數(shù)據(jù)的唯一標識符(可能由數(shù)據(jù)存儲服務器407 之一分配)。因此,如果元數(shù)據(jù)服務器405之一具有針對特定對象的表項,實體可將對象標 識符傳給元數(shù)據(jù)服務器405之一及作為回報而接收相應的LOC信息以使實體能直接訪問適 當?shù)臄?shù)據(jù)存儲服務器407。具有多個元數(shù)據(jù)服務器405使能分布式服務文件操作(因而具有很大的可擴縮 性)及提供故障切換/冗余能力。在一些情況下,對象可從元數(shù)據(jù)服務器405之一重新分 配給另一元數(shù)據(jù)服務器。然而,由于每一元數(shù)據(jù)服務器405僅包含文件子集(和相應文件 對象)的信息,可能需要提供在執(zhí)行操作時查找適當元數(shù)據(jù)服務器405的機制。元數(shù)據(jù)位置服務器408對實體尋找適當元數(shù)據(jù)服務器405以對特定文件進行操作 提供位置服務。在這里的實施例中,每一元數(shù)據(jù)位置服務器408可接收具有對象標識符的 調用及可返回處理特定對象的具體元數(shù)據(jù)服務器405。此外,如本說明書別處詳細所述,元 數(shù)據(jù)位置服務器408通過向調用實體(如客戶機104-106之一)指明將用于新對象的具體 元數(shù)據(jù)服務器405而有助于新對象的創(chuàng)建。元數(shù)據(jù)服務器408可如同環(huán)球網上的域名服務 器一樣運行,及每一客戶機104-106 (及其它實體)可被提供主要和輔助元數(shù)據(jù)位置服務器 408進行咨詢。參考圖37,表670被示為包含由元數(shù)據(jù)位置服務器408之一使用的表項。每一表 項包括指明對象標識符的范圍的OID范圍字段及識別特定元數(shù)據(jù)服務器405或可能識別一 組元數(shù)據(jù)服務器405的MDS ID字段,在一組元數(shù)據(jù)服務器情形下一服務器為主服務器而其 余服務器為輔助服務器。實體可將特定對象標識符提供給元數(shù)據(jù)位置服務器408,之后其可 咨詢表670并返回來自MDS ID字段的對應值。此外,元數(shù)據(jù)位置服務器408在創(chuàng)建新對象時可分配特定的元數(shù)據(jù)服務器405。分 配可基于任何適當?shù)亩攘?,包括隨機分配、基于地理接近的分配、負荷均衡、和/或用戶通 過用戶管理接口 412進行的策略輸入,如上所述。例如,策略可指明由特定客戶機創(chuàng)建的新 對象提供在特定元數(shù)據(jù)服務器上。
      參考圖38,流程圖680示出了元數(shù)據(jù)位置服務器408之一連同新文件對象的創(chuàng)建 分配特定元數(shù)據(jù)服務器的處理。處理開始于第一步驟682,咨詢策略。如本說明書別處所 述,可能通過用戶管理接口 412輸入策略。策略可(直接或間接)指示哪些元數(shù)據(jù)服務器 405將用于哪些客戶機104-106。應注意,其它策略也可能。例如,策略可指示哪些元數(shù)據(jù) 服務器405將在一天的不同時間使用(獨立于客戶機104-106)或基于負荷、用戶等進行使 用。策略信息可保存在用戶管理接口 412處并在步驟682時進行訪問,或可在先前已傳送 到元數(shù)據(jù)位置服務器408之一之后保存在該元數(shù)據(jù)位置服務器處。在步驟682之后是步驟 684,具體元數(shù)據(jù)位置服務器405的標識信息被返回給調用實體。在步驟684之后,處理結 束ο參考圖39,流程圖700示出了元數(shù)據(jù)服務器405之一在刪除元數(shù)據(jù)服務器405之一所負責的文件時所執(zhí)行的步驟。處理開始于第一步驟702,取消對文件的所有租用(如通 過對租用列表640從頭到尾進行迭代并提供與圖33的流程圖610所示類似的取消處理)。 在步驟702之后是步驟704,租用被使得不可用于其它進程(例如,通過設置適當?shù)臉酥?,?防止授權對文件的進一步租用)。在步驟704之后是步驟706,獲得文件的元數(shù)據(jù)(例如通 過檢索文件的元數(shù)據(jù)對象)。應注意,如本說明書別處所述,文件的元數(shù)據(jù)對象包含關于連 同文件使用的所有文件對象的位置的信息。在步驟706之后是步驟708,用于對連同文件使用的對象從頭到尾進行迭代的指 針被使得指向第一對象。指針和隨后的迭代處理使用在步驟706獲得的信息確定文件的對 象。在步驟708之后是測試步驟712,確定用于對對象從頭到尾進行迭代的指針是否越過 末端(即所有文件對象均已被處理)。如果是,則控制從測試步驟712轉到步驟714,刪除 (如設為零值)對應于文件的表項(及圖34的表630中的表項)。在步驟714之后,處理 結束。如果在步驟712確定有更多的文件對象要處理,則控制從步驟712轉到步驟716, 獲得對象的LOC信息。LOC信息與如上所述的圖36的表650中保存的信息類似。在一些情 況下,LOC信息將在執(zhí)行處理的元數(shù)據(jù)服務器405之一的本地。在其它情形下,可能需要調 用元數(shù)據(jù)位置服務器408之一來獲得對象的位置信息。在步驟716之后是步驟718,向適當 的數(shù)據(jù)存儲服務器407 (即處理對象的數(shù)據(jù)存儲服務器)發(fā)送消息以使對象刪除。在這里的實施例中,不同的文件可能使用相同的對象(如重復數(shù)據(jù)刪除、文件別 名使用等),在這種情況下,數(shù)據(jù)存儲服務器407之一簡單地遞減針對對象的、表明其用戶 數(shù)量的計數(shù)器。當計數(shù)器遞減到零時,數(shù)據(jù)存儲服務器可刪除對應于對象的數(shù)據(jù)。應注意, 與文件相關聯(lián)的對象可異步刪除。在步驟718之后是步驟722,遞增用于對文件對象從頭到 尾進行迭代的指針。在步驟722之后,控制轉回到步驟712,如上所述,進行另一迭代。參考圖40,流程圖740示出了元數(shù)據(jù)服務器405之一在創(chuàng)建新文件時所執(zhí)行的步 驟。應注意,在執(zhí)行圖40中所示的處理之前,創(chuàng)建文件的實體(如客戶機104-106之一) 可首先咨詢元數(shù)據(jù)位置服務器408以確定將用于創(chuàng)建文件的適當元數(shù)據(jù)服務器405。處理開始于第一步驟742,咨詢策略管理服務器402以獲得新文件的策略信息(如 客戶機X的新文件具有地理上至少位于距主數(shù)據(jù)集一定距離的鏡像)。在步驟742之后是 步驟744,咨詢資源管理服務器406以確定滿足步驟742獲得的策略指示的可用資源。在步 驟744之后是測試步驟746,確定是否可能滿足策略指示給出的可用資源。例如,如果系統(tǒng)中的所有其余物理存儲器在一個地理位置,則不可能滿足具有地理上分開的鏡像的策略。 如果在測試步驟746確定不可能實現(xiàn)策略,則控制從測試步驟746轉到步驟748,執(zhí)行備選 處理。任何適當?shù)奶幚砭稍诓襟E748執(zhí)行,包括向調用實體返回出錯指示符、創(chuàng)建具有下 一最佳可用資源的文件等。在步驟748之后,處理結束。如果在步驟746確定可能用可用資源實現(xiàn)策略,則控制從測試步驟746轉到步驟 752,創(chuàng)建文件的元數(shù)據(jù)對象。創(chuàng)建元數(shù)據(jù)對象可包括填充元數(shù)據(jù)對象的數(shù)據(jù)字段并從適當 的數(shù)據(jù)存儲服務器407獲得存儲器。在這里的實施例中,數(shù)據(jù)存儲服務器407可以是池及 沒有任何其它特殊要求,基于請求可在物理存儲器414的適當部分提供存儲空間。在步驟 752創(chuàng)建的元數(shù)據(jù)對象將與在此所述的類似。例如,參見圖4-8及相應的描述。在步驟752 之后是步驟754,在表630中為新文件創(chuàng)建表項。在步驟754之后是步驟756,文件的元數(shù) 據(jù)對象的對象id被返回給調用實體。在步驟756之后,處理結束。如本說明書別處所述,當客戶機或其它實體未成功嘗試寫操作時,消息(更新)由 客戶機或其它實體發(fā)送給服務器102。類似地,消息(更新)也可連同查找與同步鏡像副本 有關的失效鏡像(參見圖13的流程圖350的步驟358)和/或向具有異步鏡像的數(shù)據(jù)寫而 發(fā)送給服務器102。參考圖41,流程圖760示出了元數(shù)據(jù)服務器405之一處理寫操作 未成功的消息時 所執(zhí)行的步驟。處理開始于第一步驟762,取消對文件的所有租用。在步驟762之后是步驟 764,對文件的租用被使得不可用。在步驟764之后是步驟766,分配新的存儲空間以代替對 其進行寫的操作未成功的舊存儲空間。在步驟766之后是步驟768,調節(jié)文件的元數(shù)據(jù)對象 中的適當信息。在步驟768之后是步驟772,開始數(shù)據(jù)復制操作以用例如來自鏡像之一的數(shù) 據(jù)重新填充新的數(shù)據(jù)存儲空間。在正進行數(shù)據(jù)復制操作的同時,在步驟772,數(shù)據(jù)可被指示 為無效。當然,如果沒有鏡像或其它數(shù)據(jù)可用于重新填充新存儲空間,則將不執(zhí)行步驟772 的處理。在步驟772之后是步驟774,對文件的租用被使得可用。在步驟774之后,處理結 束ο參考圖42,流程圖780示出了元數(shù)據(jù)服務器405之一接收同步鏡像無效的指示時 所執(zhí)行的步驟。處理開始于第一測試步驟782,確定鏡像當前是否處于用數(shù)據(jù)進行填充的進 程中(可能連同先前的有害寫操作)。如果是,則數(shù)據(jù)填充操作被允許繼續(xù),及處理結束。 否則,控制從測試步驟782轉到步驟784,執(zhí)行如上所述的、與圖41的流程圖760中所示類 似的處理。在步驟784之后,處理結束。參考圖43,流程圖790示出了服務器102接收對應于異步副本的數(shù)據(jù)已被寫因而 迫使更新異步副本的消息時所執(zhí)行的步驟。處理開始于第一步驟792,向隊列(例如,在受 影響的元數(shù)據(jù)服務器405處提供的工作隊列)添加指明不需要復制異步數(shù)據(jù)的信息。如本 說明書別處詳細所述,每一元數(shù)據(jù)服務器405處的進程服務于對應的隊列。在步驟792之 后,處理結束。參考圖44,流程圖800示出了在服務于由圖43的流程圖790所示處理填充的對應 隊列的每一元數(shù)據(jù)服務器405處的進程所執(zhí)行的處理。處理開始于第一測試步驟802,確定 隊列是否為空。如果是,則控制轉回到測試步驟802以繼續(xù)輪詢隊列。如果隊列不為空,則 控制從測試步驟802轉到步驟804,刪除隊列中的下一表項。在這里的實施例中,隊列單元 可在先進先出的基礎上進行處理。然而,還可能有選擇地以任何順序從隊列刪除單元。例如,與接收更高優(yōu)先級的文件相關聯(lián)的單元可在其它單元之前刪除(例如在文件的轉儲清 除操作時)。作為另一例子,單元可根據(jù)(所需寫操作的)大小或根據(jù)任何其它適當?shù)臈l件 進行刪除。在步驟804之后是步驟806,取消受影響文件的寫租用。在步驟806之后是步驟808,獲得寫租用。在步驟808之后是步驟812,執(zhí)行寫操作以將異步數(shù)據(jù)寫到鏡像。在步驟 812之后是步驟814,釋放寫鎖定。在步驟814之后,控制轉回到步驟802繼續(xù)輪詢隊列。在此所述的系統(tǒng)可與能夠向客戶機提供文件對象的任何服務器或任一組服務器 一起使用。文件對象的特定形式可變化,而不背離本發(fā)明的精神和范圍。在一些情況下,只 要合適,可修改流程圖的步驟的順序。在此所述的系統(tǒng)可使用計算機可讀存儲介質中提供 的計算機程序產品/軟件實施。在本發(fā)明已結合不同實施例進行公開的同時,其修改對本領域技術人員顯而易 見。因此,本發(fā)明的精神和范圍在所附權利要求中提出。
      權利要求
      訪問數(shù)據(jù)文件對象的方法,包括在至少一客戶機上提供文件系統(tǒng)接口,其中文件系統(tǒng)接口使在至少一客戶機上運行的應用程序能使文件系統(tǒng)調用訪問數(shù)據(jù)文件對象;及在至少一客戶機上提供環(huán)球網服務接口,其中環(huán)球網服務接口使應用程序能在文件對象正通過文件系統(tǒng)接口進行訪問的同時使用環(huán)球網訪問文件對象。
      2.根據(jù)權利要求1的方法,還包括在至少一客戶機上提供直接文件對象接口,其中直接文件對象接口使應用程序能在文 件對象正使用環(huán)球網服務接口和使用文件系統(tǒng)接口進行訪問的同時直接訪問文件對象。
      3.根據(jù)權利要求1的方法,還包括提供將文件名翻譯為文件對象標識符的文件名服務,其中文件名服務至少由下述之一 訪問文件系統(tǒng)接口和環(huán)球網服務接口。
      4.根據(jù)權利要求1的方法,其中提供文件系統(tǒng)接口包括在至少一客戶機的內核地址空 間中提供虛擬文件系統(tǒng)。
      5.根據(jù)權利要求1的方法,還包括提供管理文件對象的布局管理器。
      6.管理文件的方法,包括接收針對新文件的多個策略,其中根據(jù)預定條件可應用不同的策略;接收創(chuàng)建新文件的請求;根據(jù)預定條件為新文件選擇適當?shù)牟呗裕桓鶕?jù)所述適當?shù)牟呗源_定是否有足夠的資源可用;及響應于根據(jù)所述適當?shù)牟呗杂凶銐虻馁Y源可用而獲得文件對象以創(chuàng)建新文件。
      7.根據(jù)權利要求6的方法,其中確定是否有足夠的資源可用包括咨詢資源管理器。
      8.根據(jù)權利要求7的方法,其中所述資源管理器接收關于系統(tǒng)資源的信息并維護其表 指示。
      9.根據(jù)權利要求8的方法,其中所述系統(tǒng)資源包括數(shù)據(jù)存儲區(qū)。
      10.根據(jù)權利要求6的方法,其中所述適當?shù)牟呗园P于文件鏡像的信息。
      全文摘要
      本發(fā)明公開了管理數(shù)據(jù)文件對象的方法,包括接收針對新文件的多個策略,其中根據(jù)預定條件可應用不同的策略;接收創(chuàng)建新文件的請求;根據(jù)預定條件為新文件選擇適當?shù)牟呗?;根?jù)所述適當?shù)牟呗源_定是否有足夠的資源可用;及獲得文件對象以創(chuàng)建新文件??蛻魴C文件系統(tǒng)接口使客戶機上運行的應用程序使文件系統(tǒng)調用能訪問數(shù)據(jù)文件對象,及還可在客戶機上提供環(huán)球網服務接口,其中環(huán)球網服務接口使應用程序能在文件對象正通過文件系統(tǒng)接口進行訪問的同時使用環(huán)球網服務訪問文件對象。
      文檔編號G06F7/00GK101836184SQ200880113184
      公開日2010年9月15日 申請日期2008年10月21日 優(yōu)先權日2007年10月24日
      發(fā)明者F·奧利韋拉, P·伊頓, R·安杰洛內, R·迪米特羅夫, S·弗里德拉 申請人:伊姆西公司
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1