使用基于云的對象存儲的消除重復(fù)分布式文件系統(tǒng)的制作方法
【專利摘要】本發(fā)明題為“使用基于云的對象存儲的消除重復(fù)分布式文件系統(tǒng)”。公開用于提供使用基于云的對象存儲的消除重復(fù)的分布式文件系統(tǒng)的技術(shù)。在多種實施例中,接收要存儲包含多個文件數(shù)據(jù)塊的文件的請求。確定要存儲所述多個塊的至少子集。至少部分地通過提供指示來對所述請求予以響應(yīng),所述指示是要將包含所述文件的所述多個塊中至少子集的兩個或更多個塊作為包含所述兩個或更多個塊的組合塊數(shù)據(jù)的單個存儲的對象來存儲。
【專利說明】
使用基于云的對象存儲的消除重復(fù)分布式文件系統(tǒng)
【背景技術(shù)】
[0001]分布式文件系統(tǒng)、文件貢獻(xiàn)服務(wù)等均已提供。在一種方法中,客戶端系統(tǒng)上運行的文件系統(tǒng)客戶端、應(yīng)用和/或代理可以接收客戶端系統(tǒng)上運行的應(yīng)用發(fā)出的文件系統(tǒng)調(diào)用,并且可以配置成對遠(yuǎn)程文件系統(tǒng)服務(wù)器,例如元數(shù)據(jù)服務(wù)器發(fā)出對應(yīng)的調(diào)用。例如,為了存儲或更新文件,文件系統(tǒng)客戶端可以生成寫請求并將其發(fā)送到文件系統(tǒng)源數(shù)據(jù)服務(wù)器。寫請求可以標(biāo)識期望寫入文件的多個數(shù)據(jù)塊。該元數(shù)據(jù)服務(wù)器可以配置成提供響應(yīng),該響應(yīng)指示例如基于云的對象存儲中客戶端應(yīng)將數(shù)據(jù)寫入的一個或多個位置。
[0002]可以通過使用與可以優(yōu)化基于云的或其他對象存儲來存儲對象的對象大小相比相對較小的數(shù)據(jù)塊來優(yōu)化一些文件系統(tǒng)特征,如消除重復(fù)(de-dup I i cat i on )。
【附圖說明】
[0003]下文詳細(xì)描述和附圖中公開了本發(fā)明的多種實施例。
[0004]圖1是圖示分布式文件系統(tǒng)和環(huán)境的實施例的框圖。
[0005]圖2是圖示客戶端系統(tǒng)的實施例的框圖。
[0006]圖3是圖示分布式文件系統(tǒng)的實施例的框圖。
[0007]圖4是圖示用于將文件或其他文件系統(tǒng)對象存儲在分布式文件系統(tǒng)中的過程實施例的流程圖。
[0008]圖5是圖示用于將文件或其他文件系統(tǒng)對象存儲在分布式文件系統(tǒng)中的過程實施例的流程圖。
[0009]圖6是圖示用于存儲與分布式文件系統(tǒng)關(guān)聯(lián)的文件分段或“±夬”數(shù)據(jù)的過程實施例的流程圖。
[0010]圖7是圖示用于訪問分布式文件系統(tǒng)中存儲的文件或其他文件系統(tǒng)對象的過程實施例的流程圖。
[0011]圖8是圖示用于處理要訪問分布式文件系統(tǒng)中存儲的文件或其他文件系統(tǒng)對象的請求的過程實施例的流程圖。
[0012]圖9是圖示分布式文件系統(tǒng)的實施例中使用的一組示例文件系統(tǒng)元數(shù)據(jù)表的框圖。
[0013]圖10是圖示分布式文件系統(tǒng)的實施例中不同粒度級別的文件分割的示例的框圖。
[0014]圖11是圖示用于配置分布式文件系統(tǒng)以存儲文件數(shù)據(jù)的過程實施例的流程圖。
[0015]圖12是圖示用于在分布式文件系統(tǒng)的實施例中存儲文件數(shù)據(jù)的元數(shù)據(jù)表示例的框圖。
[0016]圖13是圖示用于驗證如存儲在基于云的對象存儲中的分布式文件系統(tǒng)數(shù)據(jù)的過程實施例的流程圖。
[0017]圖14是圖示與驗證分布式文件系統(tǒng)數(shù)據(jù)為存儲在基于云的對象存儲中結(jié)合來管理已緩存的文件數(shù)據(jù)的過程實施例的流程圖。
[0018]圖15是圖示用于確定與多個文件數(shù)據(jù)塊關(guān)聯(lián)的存儲的對象能夠被刪除的過程實施例的流程圖。
【具體實施方式】
[0019]本發(fā)明能夠采用多種方式實現(xiàn),包括作為過程;裝置;系統(tǒng);組成物;包含計算機(jī)可讀存儲介質(zhì)上的計算機(jī)程序產(chǎn)品;和/或處理器,如配置成執(zhí)行耦合到處理器的存儲器上存儲和/或其提供的指令的處理器。在本說明書中,這些實現(xiàn)或本發(fā)明可以采用的任何其他形式可以稱為技術(shù)。一般來說,在本發(fā)明范圍內(nèi),可以改變所公開的過程的步驟的次序。除非另行指明,否則如描述為配置成執(zhí)行任務(wù)的處理器或存儲器的組件可以實現(xiàn)為在給定時間臨時性地配置成執(zhí)行該任務(wù)的通用組件或制造成執(zhí)行該任務(wù)的特定組件。正如本文使用的,術(shù)語“處理器”是指配置成處理數(shù)據(jù),如計算機(jī)程序指令的一個或多個裝置、電路和/或處理核。
[0020]本發(fā)明的一個或多個實施例的詳細(xì)描述是結(jié)合圖示本發(fā)明原理的附圖來給出的。本發(fā)明是結(jié)合此類實施例來描述的,但是本發(fā)明不限于任何實施例。本發(fā)明的范圍僅由權(quán)利要求來限制,并且本發(fā)明涵蓋多種替代、修改和等效物。在下文的詳細(xì)描述中,闡述許多具體細(xì)節(jié),以便透徹地理解本發(fā)明。這些細(xì)節(jié)是出于示例的目的提供的,并且無需這些具體細(xì)節(jié)的其中一些或全部,本發(fā)明可以根據(jù)權(quán)利要求來實施。為了簡明的目的,與本發(fā)明相關(guān)的技術(shù)領(lǐng)域中公知的技術(shù)材料不予詳細(xì)描述,以不致使本發(fā)明非必要地晦澀難懂。
[0021]公開一種消除重復(fù)分布式文件系統(tǒng),其按以消除重復(fù)為目的的第一大小的塊來分割文件但是將文件數(shù)據(jù)存儲在遠(yuǎn)遠(yuǎn)更大對象中以便利用典型的基于云的對象存儲的性能特點。在多種實施例中,客戶端設(shè)備上運行的文件系統(tǒng)客戶端將要存儲的文件分割成第一大小的“塊(chunks)”。將表示這些塊的數(shù)據(jù),如相應(yīng)塊的散列或其他表示發(fā)送到遠(yuǎn)程文件系統(tǒng)元數(shù)據(jù)服務(wù)器。該服務(wù)器執(zhí)行消除重復(fù)處理以確定文件系統(tǒng)可能已經(jīng)存儲塊中哪一個(如果有的話)。對于文件系統(tǒng)尚未存儲的那些塊,該服務(wù)器以指令響應(yīng)客戶端,該指令是要將多個塊組合在組合的對象中并將通過HTTP PUT或其他請求將組合的對象的指令存儲在基于云的對象存儲中服務(wù)器使用例如統(tǒng)一資源定位符(URI)或服務(wù)器提供的其他定位符指定的位置處。
[0022]圖1是圖示分布式文件系統(tǒng)和環(huán)境的實施例的框圖。在所示的示例中,分布式文件系統(tǒng)環(huán)境100包括多個客戶端系統(tǒng)和/或設(shè)備,在圖1中由客戶端102、104和106表示。在所示示例中,客戶端(無線方式或其他方式)連接到網(wǎng)絡(luò)108,例如,局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、因特網(wǎng)和/或一個或多個其他公眾和/或?qū)S镁W(wǎng)絡(luò)的其中一種或多種。這些客戶端能通過網(wǎng)絡(luò)108訪問文件系統(tǒng)元數(shù)據(jù)服務(wù)器110。相應(yīng)客戶端,如客戶端102、104和106上的應(yīng)用發(fā)出文件系統(tǒng)調(diào)用,這在多種實施例中促成對文件系統(tǒng)元數(shù)據(jù)服務(wù)器110發(fā)出對應(yīng)的遠(yuǎn)程調(diào)用。例如,客戶端上的文件系統(tǒng)客戶端、代理或其他實體可以攔截或以其他方式接收該應(yīng)用對本地(例如,原生)文件系統(tǒng)的調(diào)用,并且可以將此類調(diào)用重定向到配置成對文件系統(tǒng)元數(shù)據(jù)服務(wù)器110發(fā)出對應(yīng)遠(yuǎn)程調(diào)用(例如,對于該應(yīng)用透明地)的代理。
[0023]在所示的示例中,將包括文件系統(tǒng)中存儲的對象的數(shù)據(jù),如文件存儲在基于云的對象存儲112中。在一些實施例中,可以將文件分割成多個分段或“±夬”,將每個分段或塊存儲在基于云的對象存儲中的對應(yīng)位置中。對文件系統(tǒng)元數(shù)據(jù)服務(wù)器110發(fā)出文件系統(tǒng)調(diào)用,文件系統(tǒng)元數(shù)據(jù)服務(wù)器110將文件系統(tǒng)元數(shù)據(jù)存儲在文件系統(tǒng)元數(shù)據(jù)存儲裝置114中,例如數(shù)據(jù)庫或其他數(shù)據(jù)存儲中。文件系統(tǒng)元數(shù)據(jù)服務(wù)器110可以在文件系統(tǒng)元數(shù)據(jù)存儲114中存儲例如,文件系統(tǒng)中存儲并表示的每個文件其他對象的分段或“±夬”映射圖。例如,對于每個文件名(例如,路徑名),文件系統(tǒng)元數(shù)據(jù)服務(wù)器110可以在對應(yīng)分段映射圖中存儲每個分段的散列或其他表示,以及對于每個分段,存儲基于云的對象存儲112中存儲(或要存儲)的分段的對應(yīng)位置。其他文件系統(tǒng)元數(shù)據(jù),如典型地由文件系統(tǒng)存儲的元數(shù)據(jù),可以由文件系統(tǒng)元數(shù)據(jù)服務(wù)器110存儲在文件系統(tǒng)元數(shù)據(jù)存儲114中。示例包括且不限于目錄、文件或其他節(jié)點/對象名;父和/或子節(jié)點的標(biāo)識;創(chuàng)建時間;創(chuàng)建和/或擁有對象的用戶;上次修改時間和/或其他時間;文件結(jié)尾(EOF)或指示對象大小的其他值;如分類、訪問控制列表等的安全性屬性;和/或其他文件系統(tǒng)元數(shù)據(jù)。
[0024]雖然在圖1所示的示例中,文件系統(tǒng)元數(shù)據(jù)服務(wù)器110和基于云的對象存儲112示出為位于不同網(wǎng)絡(luò)和/或物理位置中的分開的系統(tǒng),但是,在其他實施例中,可以將文件系統(tǒng)元數(shù)據(jù)和文件系統(tǒng)內(nèi)容數(shù)據(jù)存儲在一起,例如都存儲在基于云的資源上和/或都存儲在企業(yè)或其他網(wǎng)絡(luò)服務(wù)器等上。
[0025]圖2是圖示客戶端系統(tǒng)的實施例的框圖。在所示的示例中,圖1的客戶端系統(tǒng)/設(shè)備102示出為包括操作系統(tǒng)204提供的環(huán)境中運行的應(yīng)用202。操作系統(tǒng)204包括內(nèi)核(未示出)和配置成向應(yīng)用(如應(yīng)用202)提供服務(wù)和/或功能性的其他組件。例如,操作系統(tǒng)204可以包括和/或配置成提供對客戶端系統(tǒng)102的原生文件系統(tǒng)(未示出)的訪問。應(yīng)用202可以配置成對原生文件系統(tǒng)發(fā)出文件系統(tǒng)調(diào)用,例如,存儲應(yīng)用202創(chuàng)建的文件或其他對象/使用應(yīng)用202來修改、移動或刪除此類對象等。在所示的示例中,應(yīng)用202發(fā)出的文件系統(tǒng)調(diào)用(圖2中由標(biāo)記為“app”(202)的框中始發(fā)的向下指箭頭表示)被內(nèi)核模塊(或其他組件)206攔截并被重定向到文件系統(tǒng)客戶端(或其他文件系統(tǒng)代理)208。在一些實施例中,文件系統(tǒng)代理208包括用戶空間中運行的客戶端應(yīng)用。在一些實施例中,文件系統(tǒng)代理208包括內(nèi)核或其他操作系統(tǒng)組件或模塊。本示例中的文件系統(tǒng)客戶端208具有與之關(guān)聯(lián)的本地緩存210。在多種實施例中,緩存210可以用于在將文件數(shù)據(jù)發(fā)送到遠(yuǎn)程存儲裝置(例如,圖1的基于云的對象存儲112)之前緩沖和/或以其他方式存儲(stage)文件數(shù)據(jù),和/或有助于訪問對先前存儲但是稍后可能請求對其訪問的數(shù)據(jù)。
[0026 ]客戶端系統(tǒng)102包括提供至網(wǎng)絡(luò)(如圖1的網(wǎng)絡(luò)108 )的網(wǎng)絡(luò)連接性的網(wǎng)絡(luò)通信接口212。例如,在多種實施例中,來自app 202的訪問遠(yuǎn)程存儲的文件的請求可以促使文件系統(tǒng)客戶端208通過網(wǎng)絡(luò)通信接口 212對例如文件系統(tǒng)元數(shù)據(jù)服務(wù)器(如圖1的服務(wù)器110)發(fā)出遠(yuǎn)程調(diào)用。
[0027]在多種實施例中,文件系統(tǒng)客戶端208可以配置成在包括文件系統(tǒng)客戶端208和/或緩存210的或以其他方式與之關(guān)聯(lián)的元數(shù)據(jù)寫緩沖中存儲影響文件系統(tǒng)元數(shù)據(jù)的一個或多個文件系統(tǒng)操作和/或請求,而所述文件系統(tǒng)元數(shù)據(jù)包含該文件系統(tǒng)元數(shù)據(jù)中與文件系統(tǒng)客戶端208持有文件系統(tǒng)元數(shù)據(jù)寫租賃相關(guān)的部分。例如,作為應(yīng)用(如圖2的應(yīng)用202)的本地文件系統(tǒng)調(diào)用的結(jié)果,可以將影響元數(shù)據(jù)的文件系統(tǒng)操作緩沖為已接收,并且可以異步地和/或在出現(xiàn)事件,例如接收到元數(shù)據(jù)寫租賃“斷點”事件已被接收到和/或已發(fā)生的指示時,將其傳送到遠(yuǎn)程文件系統(tǒng)元數(shù)據(jù)服務(wù)器。例如,第二客戶端系統(tǒng)可以指示要執(zhí)行影響該文件系統(tǒng)元數(shù)據(jù)中與第一客戶端系統(tǒng)持有租賃相關(guān)的部分的操作的期望和需求,導(dǎo)致向第一客戶端系統(tǒng)發(fā)送“斷點”通信,進(jìn)而“刷新”緩沖中至少影響與持有租賃相關(guān)的元數(shù)據(jù)部分的那些操作。
[0028]圖3是圖示分布式文件系統(tǒng)的實施例的框圖。在所示的示例中,客戶端102通過基于安全會話的連接302與文件系統(tǒng)元數(shù)據(jù)服務(wù)器110通信。此外,客戶端102通過TCP/IP或其他連接與基于云的對象存儲112通信,該TCP/IP或其他連接使得客戶端102能夠通過HTTP“PUT”請求存儲對象(例如,文件分段或“±夬”)以及通過HTTP “GET”請求檢索分段(“±夬” )ο在多種實施例中,客戶端102(例如,客戶端102上運行的文件系統(tǒng)客戶端或其他代理)通過安全連接302發(fā)送和接收分布式文件系統(tǒng)“控制面”通信(例如,更改或要求文件系統(tǒng)元數(shù)據(jù)的處理和/或使用的文件系統(tǒng)操作),而通過連接304發(fā)送的通信可以視為包含可存儲和/或檢索文件系統(tǒng)對象數(shù)據(jù)(即,分段或“±夬”)所采用的“數(shù)據(jù)面”。在所示的示例中,文件系統(tǒng)元數(shù)據(jù)服務(wù)器110有權(quán)訪問活動目錄306,在多種實施例中,活動目錄306可以包含可用于認(rèn)證客戶端(如客戶端102)的用戶的信息。
[0029]在多種實施例中,其上已安裝分布式文件系統(tǒng)客戶端或其他代理的客戶端可以存儲如文件的文件系統(tǒng)對象。在多種實施例中,在接收到存儲(或修改)文件系統(tǒng)對象的請求時,該文件系統(tǒng)客戶端將對象分割成一個或多個分段或“±夬”,并計算每個分段或“±夬”的引用(例如,散列)。這些引用被包含在例如通過安全連接(如圖3的連接302)發(fā)送到文件系統(tǒng)元數(shù)據(jù)服務(wù)器的文件系統(tǒng)請求中。該文件系統(tǒng)元數(shù)據(jù)服務(wù)器通過例如PUT請求將分段數(shù)據(jù)直接發(fā)送到基于云的對象存儲中來返回文件系統(tǒng)客戶端要用于將(非重復(fù))分段/塊存儲在基于云的對象存儲中的信息,所述PUT請求是通過連接,如圖3所示的連接304來發(fā)送的。
[0030]圖4是圖示用于將文件或其他文件系統(tǒng)對象存儲在分布式文件系統(tǒng)中的過程實施例的流程圖。在多種實施例中,可以由客戶端系統(tǒng)/設(shè)備上運行的文件系統(tǒng)客戶端或其他代理,如圖2的文件系統(tǒng)客戶端208,在客戶端系統(tǒng)或設(shè)備上執(zhí)行圖4的過程。在所示的示例中,從例如應(yīng)用接收存儲文件的請求(402)。將文件分割成一個或多個分段(404)。對于每個分段,計算分段引用,例如散列(406)。將包含分段散列的文件寫請求發(fā)送到文件系統(tǒng)元數(shù)據(jù)服務(wù)器(408)。從文件系統(tǒng)元數(shù)據(jù)服務(wù)器接收一組統(tǒng)一資源定位符(URI)或其他指針(410)。在多種實施例中,該指針可以包含僅用于分布式文件系統(tǒng)尚未存儲的那些分段的指針。使用接收的指針通過例如直接發(fā)送到基于云的對象存儲的HTTP “PUT”請求來存儲分段(412)。
[0031]圖5是圖示用于將文件或其他文件系統(tǒng)對象存儲在分布式文件系統(tǒng)中的過程實施例的流程圖。在多種實施例中,圖5的過程可以由文件系統(tǒng)元數(shù)據(jù)服務(wù)器,如圖1的文件系統(tǒng)元數(shù)據(jù)服務(wù)器110來執(zhí)行。在所示的示例中,接收存儲文件的請求(502)。創(chuàng)建將文件系統(tǒng)對象名和/或其他標(biāo)識符(例如,文件名、路徑名)與一組一個或多個分段引用(例如,散列值)關(guān)聯(lián)的分段(“±夬”)映射圖(504)?;诶绶侄我茫R別不與分布式文件系統(tǒng)已經(jīng)存儲的分段重復(fù)的分段(506)。對于不重復(fù)的每個分段,計算存儲位置(例如,至少部分地基于全部或部分分段引用)并且生成可用于將該分段直接存儲在基于云的數(shù)據(jù)存儲中的URI或其他指針(508)。在多種實施例中,由文件系統(tǒng)元數(shù)據(jù)服務(wù)器以加密方式對該URI或其他指針簽名。URI可以具有過期時間,截至該過期時間,該URI必須被用于存儲該分段。將這些URI發(fā)送到所接收要存儲該文件的請求的始發(fā)文件系統(tǒng)客戶端(510)。
[0032]圖6是圖示用于存儲與分布式文件系統(tǒng)關(guān)聯(lián)的文件分段或“±夬”數(shù)據(jù)的過程實施例的流程圖。在多種實施例中,圖6的過程可以基于云的對象存儲,如圖1的對象存儲112來執(zhí)行。在所示的示例中,接收與請求中指定的URI關(guān)聯(lián)的“PUT”請求(602)。檢查與該URI以及編碼在該URI中的過期時間關(guān)聯(lián)的加密簽名(604)。例如,可以規(guī)定基于云的對象存儲來檢查該URI已由受信文件系統(tǒng)元數(shù)據(jù)服務(wù)器簽名和/或該URI的過期時間尚未流逝。如果確定該URI是當(dāng)前有效的(606 ),則將與該HJT請求關(guān)聯(lián)的有效負(fù)載數(shù)據(jù),例如文件系統(tǒng)對象分段或“±夬”數(shù)據(jù)存儲在與該URI關(guān)聯(lián)的位置中(608 )。如果確定該URI不是有效的(606),則HJT請求失敗(610),并且文件系統(tǒng)客戶端接收到指示它必須從文件系統(tǒng)元數(shù)據(jù)服務(wù)器獲取新URI的響應(yīng)。
[0033]在多種實施例中,其上已安裝分布式文件系統(tǒng)客戶端或其他代理的客戶端可以檢索如文件的文件系統(tǒng)對象。在多種實施例中,在接收到訪問文件系統(tǒng)對象的請求時,文件系統(tǒng)客戶端通過例如安全連接(如圖3的連接302)向文件系統(tǒng)元數(shù)據(jù)服務(wù)器發(fā)送文件訪問請求。文件系統(tǒng)元數(shù)據(jù)服務(wù)器通過例如經(jīng)連接(如圖3的連接304)發(fā)送的GET請求返回文件系統(tǒng)客戶端要用于直接從基于云的對象存儲中檢索分段/塊的信息(例如,例如一個或多個URI或其他指針)。
[0034]圖7是圖示用于訪問分布式文件系統(tǒng)中存儲的文件或其他文件系統(tǒng)對象的過程實施例的流程圖。在多種實施例中,可以由客戶端系統(tǒng)/設(shè)備上運行的文件系統(tǒng)客戶端或其他代理,如圖2的文件系統(tǒng)客戶端208,在客戶端系統(tǒng)或設(shè)備上執(zhí)行圖4的過程。在所示的示例中,從應(yīng)用接收要訪問文件系統(tǒng)對象(例如文件名標(biāo)識的文件)的請求(702)。向文件系統(tǒng)元數(shù)據(jù)服務(wù)器發(fā)送請求以檢索文件(704)。從文件系統(tǒng)元數(shù)據(jù)服務(wù)器接收一組分段引用,以及對于每個分段引用,接收對應(yīng)URI和加密密鑰(706)。檢查本地緩存以確定緩存是否有任何所需的分段(708)。對于緩存中沒有的所有分段,使用關(guān)聯(lián)的URI從基于云的對象存儲發(fā)送檢索該分段的GET請求,并且一旦以加密形式從對象存儲接收到該分段,使用關(guān)聯(lián)的密鑰將該分段解密(710)。使用這些分段重構(gòu)該文件,并向所接收訪問請求的始發(fā)應(yīng)用提供對該文件的訪問權(quán)(712)。
[0035]圖8是圖示用于處理要訪問分布式文件系統(tǒng)中存儲的文件或其他文件系統(tǒng)對象的請求的過程實施例的流程圖。在多種實施例中,圖5的過程可以由文件系統(tǒng)元數(shù)據(jù)服務(wù)器,如圖1的文件系統(tǒng)元數(shù)據(jù)服務(wù)器110來執(zhí)行。在所示的示例中,接收訪問命名的文件的請求(802)。檢索與文件關(guān)聯(lián)的分段映射圖,并使用該分段映射圖來確定一組分段引用(例如,散列),以及對于每個分段引用,確定指示該分段存儲在基于云的分段存儲中的位置的對應(yīng)URI以及可用于將該分段解密的加密密鑰(804)。將這些分段引用、URI和密鑰返回到所接收文件訪問請求的始發(fā)文件系統(tǒng)客戶端(806)。
[0036]圖9是圖示分布式文件系統(tǒng)的實施例中使用的一組示例文件系統(tǒng)元數(shù)據(jù)表的框圖。在多種實施例中,可以由文件系統(tǒng)元數(shù)據(jù)服務(wù)器,如圖1和圖3的文件系統(tǒng)元數(shù)據(jù)服務(wù)器110創(chuàng)建并維護(hù)圖9的表902、904和906。在所示的示例中,使用索引節(jié)點表902來存儲將每個命名的文件系統(tǒng)對象,例如目錄、文件或其他對象與對應(yīng)索引節(jié)點或其他唯一性編號或標(biāo)識符關(guān)聯(lián)的數(shù)據(jù)。在多種實施例中,使用塊映射圖表904來對應(yīng)于每個文件以及對應(yīng)于該文件為存儲而被拆分成的一個或多個分段(塊)中每一個來存儲該塊在文件內(nèi)的偏移量、塊標(biāo)識符(塊id)和其他元數(shù)據(jù)。例如,已作為三個塊存儲的文件在表904中將具有三個項(行),每個塊對應(yīng)于一個項。在多種實施例中,塊id是單調(diào)遞增的值,其中每個連續(xù)存儲的塊被賦予字母數(shù)字次序上連續(xù)的塊id。在多種實施例中,一旦存儲,塊是不可變的。如果修改文件數(shù)據(jù),則被影響的數(shù)據(jù)作為新塊來存儲并依序賦予下一個塊id。由此,按定義具有較高塊id的塊將被存儲在具有較低塊id的塊之后,并且可以假定自創(chuàng)建和存儲起二者均未被修改過。
[0037]進(jìn)一步參考圖9,塊元數(shù)據(jù)表906包含對應(yīng)于每個塊的一行,由塊id標(biāo)識(所示的示例中的列908),以及對應(yīng)于每個塊,包含指示該塊的大小的元數(shù)據(jù);其他元數(shù)據(jù);指示當(dāng)前有多少活動文件(或其他文件系統(tǒng)對象)引用該塊的引用計數(shù)(列910);以及指示該塊的狀態(tài)的元數(shù)據(jù),即,該塊已驗證還是已被刪除(列912)。
[0038]在多種實施例中,當(dāng)首先存儲一個塊時,該塊最初被視為處于“未驗證”狀態(tài),并且最初可以在表906的列912中存儲反映該塊未驗證狀態(tài)的元數(shù)據(jù)。驗證可以由文件系統(tǒng)元數(shù)據(jù)服務(wù)器來執(zhí)行,并且驗證可以包括讀取如存儲在基于云的對象存儲中的塊,驗證該塊數(shù)據(jù)對應(yīng)于文件系統(tǒng)所預(yù)期的(例如,計算如服務(wù)器讀取的塊的散列,并將該散列與該塊的先前存儲的散列(例如,從存儲該塊的文件系統(tǒng)客戶端接收的散列)比較),以及一旦其通過驗證,則更新表906中的狀態(tài)元數(shù)據(jù)912以反映該塊的“已驗證”狀態(tài)。
[0039]公開一種消除重復(fù)分布式文件系統(tǒng),其按以消除重復(fù)為目的的第一大小的塊來分割文件但是將文件數(shù)據(jù)存儲在遠(yuǎn)遠(yuǎn)更大對象中以便利用典型的基于云的對象存儲的性能特點。在多種實施例中,客戶端設(shè)備上運行的文件系統(tǒng)客戶端將要存儲的文件分割成第一大小的“塊”。將表示這些塊的數(shù)據(jù),如相應(yīng)塊的散列或其他表示發(fā)送到遠(yuǎn)程文件系統(tǒng)元數(shù)據(jù)服務(wù)器。該服務(wù)器執(zhí)行消除重復(fù)處理以確定文件系統(tǒng)可能已經(jīng)存儲塊中哪一個(如果有的話)。對于文件系統(tǒng)尚未存儲的那些塊,該服務(wù)器以指令響應(yīng)客戶端,該指令是要將多個塊組合在組合的對象中并將通過HTTP PUT或其他請求將組合的對象的指令存儲在基于云的對象存儲中服務(wù)器使用例如統(tǒng)一資源定位符(URL)或服務(wù)器提供的其他定位符指定的位置處。
[0040]圖10是圖示分布式文件系統(tǒng)的實施例中不同粒度級別的文件分割的示例的框圖。在所示的示例中,第一文件1002包含所示的數(shù)據(jù),在本示例中為數(shù)據(jù)“A BCDE F”。在所存儲的第一文件之后存儲的第二文件1004包含數(shù)據(jù)“C DABE G”,其中相應(yīng)文件1002和1004中的大寫字母表示在每個文件中相同序號的數(shù)據(jù)字節(jié),例如,第一文件1002開始處的“A”是與第二文件1004中系統(tǒng)大寫字母“A”所表示的數(shù)據(jù)相同的數(shù)據(jù)。
[0041]在圖10中,示出例如,可為了消除重復(fù)為目的使用的兩個可能的分段和“±夬”大小。在第一示例中,示出塊1006,每個塊的大小對應(yīng)于這些大寫字母中的三個大寫字母,這些大寫字母表示分別包含文件1002和1004的數(shù)據(jù)。在此示例中,將文件1002和1004分割成如圖所示大小的塊1006,促成如第一文件1002和第二文件1004之間不會發(fā)現(xiàn)重復(fù)塊。作為比較,以更細(xì)粒度(即,更小的塊大小)分割文件1002和1004創(chuàng)建的一組塊1008將促成顯著改善的消除重復(fù)。在此示例中,確定文件1004的塊1014為文件1002的先前存儲的塊1012的重復(fù),以及確定文件1004的塊1018為文件1002的先前存儲的塊1016的重復(fù)。在此示例中,文件1004的塊1022不會確定為文件1002的任何先前存儲的塊的重復(fù),在本例中是因為文件1004的塊1022與文件1002的塊1020(以及文件1002的其他塊)之間不同。在所示的示例中,可以將文件分割成如圖10所示的大小對應(yīng)于個體大寫字母的塊實現(xiàn)更進(jìn)一步的消除重復(fù),因為如果使用該大小的塊,則在查找文件1004不是文件1002中任何塊的重復(fù)的情況下,僅對應(yīng)于大寫字母“G”的塊。
[0042]圖10的示例圖示一般來說,更小大小的塊可以比較大大小的塊獲得更高的消除重復(fù)獲益。但是,如果使用太小的塊,則與計算和存儲塊數(shù)據(jù)的散列來檢測重復(fù)等關(guān)聯(lián)的開銷可能變得成本上太高。因此,典型地,是在通過相對較小塊大小實現(xiàn)消除重復(fù)的更大獲益與處理這些塊所關(guān)聯(lián)的開銷之間達(dá)成平衡。
[0043]在分布式文件的多種實施例中,進(jìn)一步考慮的是在基于云的對象存儲(如圖1的基于云的對象存儲112)中存儲塊的效率。典型地,將此類基于云的對象存儲優(yōu)化以存儲相對于針對消除重復(fù)以及相關(guān)開銷的目的為最優(yōu)的塊大小要大得多的對象。例如,對于典型的基于云的對象存儲,與存儲對象關(guān)聯(lián)的延遲和其他開銷可能隨大小達(dá)到某個大小而呈線性遞增,但是對某個大小以外的對象趨于平穩(wěn),例如與針對其他目的(如消除重復(fù))可能為最優(yōu)的塊大小相比相對較大的大小。為了利用此特點,在多種實施例或本文公開的分布式文件系統(tǒng)中,針對文件系統(tǒng)操作的目的將文件分割成有利于消除重復(fù)和/或其他文件系統(tǒng)操作的目的的塊大小,但是在基于云的對象存儲(如圖1的對象存儲112 )中,文件數(shù)據(jù)被存儲在相對地遠(yuǎn)比該塊大小大的大小的對象(本文中有時稱為“團(tuán)點(blobs)”以便將其與“文件”或“±夬”清楚地區(qū)分開)中。在多種實施例中,文件系統(tǒng)客戶端可以配置成和/或被指令以將塊組合成較大組合的對象,然后將組合的對象(或“團(tuán)點”)存儲在基于云的對象存儲中。
[0044]圖11是圖示用于配置分布式文件系統(tǒng)以存儲文件數(shù)據(jù)的過程實施例的流程圖。在多種實施例中,圖11的過程可以用于開發(fā)和配置分布式文件系統(tǒng)組件,如圖2的文件系統(tǒng)客戶端208和圖1和/或圖6的文件系統(tǒng)元數(shù)據(jù)服務(wù)器104。在所示的示例中,確定為實現(xiàn)有關(guān)消除重復(fù)和/或一個或多個其他文件系統(tǒng)目標(biāo)的期望性能的塊大小(I 102)。在多種實施例中,該確定可以完全或部分地基于領(lǐng)域知識、一組文件的全部或部分的靜態(tài)分析、使用不同大小的塊執(zhí)行的測試中觀察到的消除重復(fù)性能等來執(zhí)行。確定用于以利用基于云或其他對象存儲的對象大小相關(guān)點的方式來存儲文件系統(tǒng)數(shù)據(jù)的對象或“團(tuán)點”大小(1104)。例如,可以生成按對象大小的對象存儲性能和/或成本(例如,延遲、開銷)的性能圖表或其他表示,并將其用于選擇達(dá)到該對象存儲的期望性能水平的對象(“團(tuán)點”)大小。該分布式文件系統(tǒng)配置成將文件分割成針對文件系統(tǒng)操作(例如消除重復(fù))的目的而確定的塊大小的塊,以及將多個塊組合成針對在基于云的對象存儲中存儲而確定的對象大小(I 106)的較大對象(“團(tuán)點”)。
[0045]在一些實施例中,可被組合以形成要存儲在基于云的對象存儲中的較大對象(“團(tuán)點”)的塊的數(shù)量可以是可變的。例如,塊的數(shù)量可以基于文件的對象或正在存儲的文件集的大小而改變。在一些實施例中,文件系統(tǒng)客戶端可以配置成確定要組合以形成較大對象以存儲在基于云的對象存儲中的塊的數(shù)量。在一些實施例中,有關(guān)要組合的塊的數(shù)量和/或哪些塊要包含在哪個對象(“團(tuán)點”)中的的確定可以在文件系統(tǒng)服務(wù)器(如圖1和/或圖6的文件系統(tǒng)元數(shù)據(jù)服務(wù)器104)處執(zhí)行。在一些實施例中,文件系統(tǒng)客戶端可以配置成從服務(wù)器接收有關(guān)哪些塊要組合在哪個對象中的指示,并基于此類指令來創(chuàng)建和存儲對象。
[0046]在一些實施例中,可以將與兩個或更多個文件關(guān)聯(lián)的塊包含在要存儲在基于云的對象存儲中的同一個對象中。在一些實施例中,可以將與兩個或更多個不同文件系統(tǒng)客戶端關(guān)聯(lián)的文件所關(guān)聯(lián)的塊包含在為存儲在基于云的對象存儲中的對象中。例如,在一些實施例中,取消重復(fù)可以跨文件系統(tǒng)客戶端執(zhí)行,這在某種情況中可以促使包含存儲的對象(“團(tuán)點”)的一個或多個塊由與不同文件系統(tǒng)客戶端關(guān)聯(lián)的文件來引用。
[0047]圖12是圖示用于在分布式文件系統(tǒng)的實施例中存儲文件數(shù)據(jù)的元數(shù)據(jù)表示例的框圖。在多種實施例中,可以由文件系統(tǒng)元數(shù)據(jù)服務(wù)器(如圖1和/或圖6的文件系統(tǒng)元數(shù)據(jù)服務(wù)器104)創(chuàng)建并維護(hù)元數(shù)據(jù)表,如圖12的表1202和1210。在所示的示例中,塊元數(shù)據(jù)表1202包含其中存儲單調(diào)遞增的塊標(biāo)識符的塊標(biāo)識符列1203;其中存儲為每個塊基于塊的全部或部分?jǐn)?shù)據(jù)計算的對應(yīng)散列的塊散列列1204。對于每個塊,標(biāo)識包含塊數(shù)據(jù)的較大存儲的對象(“團(tuán)點”)的“團(tuán)點id”被列示在“團(tuán)點id”列1206中。每個塊在包含它的對應(yīng)存儲的對象(“團(tuán)點”)內(nèi)的位置被列示在“偏移量”列1208中。對于給定的塊,則可以使用表1202來查找其內(nèi)包含塊的數(shù)據(jù)且存儲在例如基于云的對象存儲中的存儲的對象,以及指示該塊的數(shù)據(jù)位于該對象的數(shù)據(jù)內(nèi)哪里的該對象內(nèi)的偏移量。
[0048]正如表1202的第一、第二和第四行中的團(tuán)點id值“I”與團(tuán)點元數(shù)據(jù)表1210中的系統(tǒng)團(tuán)點id“l(fā)”所關(guān)聯(lián)的項(行)之間的箭頭所指示的,可以使用對應(yīng)于給定塊散列值的塊元數(shù)據(jù)散列表1202中存儲的團(tuán)點i d以在團(tuán)點元數(shù)據(jù)表1210中查找包含團(tuán)點元數(shù)據(jù)的對應(yīng)項(參見團(tuán)點id列1212),這些團(tuán)點元數(shù)據(jù)諸如:用于將包含團(tuán)點的數(shù)據(jù)加密的加密密鑰或其他保密數(shù)據(jù)(團(tuán)點加密密鑰列(1214 )、在基于云的對象存儲中存儲團(tuán)點所在的位置(URI列1216)以及與當(dāng)前活動和/或以其他方式附帶被保留的文件系統(tǒng)對象關(guān)聯(lián)的塊的數(shù)量指示(塊引用計數(shù)列1218)。對于較后一列,例如,在團(tuán)點id = I的項(行)中,塊引用計數(shù)列1218中的對應(yīng)值指示當(dāng)前活動(或例如由于與保持被存儲的快照關(guān)聯(lián)而以其他方式附帶被保留)的3個塊。在多種實施例中,正如下文與圖15結(jié)合更全面描述的,可以使用塊引用計數(shù)列來確定何時包含多個塊的團(tuán)點可以從存儲該團(tuán)點所在的基于云的對象存儲中刪除。
[0049]在多種實施例中,本文公開的文件系統(tǒng)數(shù)據(jù)的驗證由文件系統(tǒng),例如由文件系統(tǒng)元數(shù)據(jù)服務(wù)器,如圖1和/或圖6的文件系統(tǒng)元數(shù)據(jù)服務(wù)器104來執(zhí)行。在多種實施例中,驗證使得確保文件系統(tǒng)對象的無沖突消除重復(fù)存儲能夠在客戶端之間提供,即使存在錯配置和/或功能失效(例如,“漏洞多”的)或惡意客戶端的情況中。
[0050]在一些實施例中,從基于云的對象存儲中檢索包含文件數(shù)據(jù)的多個塊的存儲的對象(“團(tuán)點”)。檢索的對象可以本地存儲,例如存儲在緩存中,并且用于驗證包含該對象的組成塊??梢允褂枚喾N技術(shù)來確定給定對象(“團(tuán)點”)的緩存的副本應(yīng)該在緩存中保留多久以有利于驗證。
[0051]圖13是圖示用于驗證分布式文件系統(tǒng)數(shù)據(jù)為存儲在基于云的對象存儲中的過程實施例的流程圖。在多種實施例中,圖13的過程可以由分布式文件系統(tǒng)元數(shù)據(jù)服務(wù)器(如圖1和/或圖6的文件系統(tǒng)元數(shù)據(jù)服務(wù)器104)使用來驗證存儲的文件系統(tǒng)數(shù)據(jù)。在所示的示例中,處理開始于或進(jìn)行到要驗證下一個塊(1302)。例如,文件系統(tǒng)元數(shù)據(jù)服務(wù)器驗證過程或模塊可以從驗證隊列抽取下一個塊驗證任務(wù)。例如,當(dāng)文件系統(tǒng)客戶端將塊報告為以存儲在基于云的對象存儲中時,所以可以將對應(yīng)的驗證任務(wù)添加到驗證隊列。在一些實施例中,驗證隊列可以包括其中可存儲標(biāo)識待驗證的塊的數(shù)據(jù)的數(shù)據(jù)庫表或其他數(shù)據(jù)結(jié)構(gòu)。進(jìn)一步參考圖13,例如,通過在塊散列表(如圖12的表1202)中執(zhí)行查詢來確定(1304)與包含該塊的數(shù)據(jù)所在的存儲的對象所關(guān)聯(lián)的“團(tuán)點”或其他存儲的對象標(biāo)識符。如果本地緩存(例如,圖2的緩存210)中尚沒有該團(tuán)點(1306),則例如使用來自團(tuán)點元數(shù)據(jù)表(如圖12的表1210)且存儲在緩存中的數(shù)據(jù),從基于云的對象存儲中檢索該團(tuán)點(1308)。如果本地緩存中已經(jīng)有該團(tuán)點(1306)或如果沒有而一旦獲得該團(tuán)點并將其存儲在緩存中(1308),則使用該團(tuán)點的緩存副本來獲取與該塊對應(yīng)的數(shù)據(jù),例如使用如塊散列表中的對應(yīng)項所指示的該塊在團(tuán)點內(nèi)的偏移量來獲取與該塊對應(yīng)的數(shù)據(jù),并且使用塊數(shù)據(jù)來驗證該塊(1310)。例如,可以將如團(tuán)點中存儲的塊數(shù)據(jù)的散列與如塊元數(shù)據(jù)中存儲的該塊的散列進(jìn)行比較。只要有塊要驗證,則圖13的過程通過連續(xù)迭代重復(fù)執(zhí)行(1312)。
[0052]在多種實施例中,可以使用多種技術(shù)來確定為執(zhí)行如圖13中所示的驗證處理要一直將已檢索的團(tuán)點緩存多久。
[0053]圖14是圖示與驗證分布式文件系統(tǒng)數(shù)據(jù)為存儲在基于云的對象存儲中結(jié)合來管理已緩存的文件數(shù)據(jù)的過程實施例的流程圖。在多種實施例中,圖14的過程可以由分布式文件系統(tǒng)元數(shù)據(jù)服務(wù)器(如圖1和/或圖6的文件系統(tǒng)元數(shù)據(jù)服務(wù)器104)使用來確定要將已從基于云的對象存儲中讀取的文件系統(tǒng)數(shù)據(jù)緩存多久。在所示的示例中,對于緩存的每個團(tuán)點,維護(hù)與仍需驗證的團(tuán)點關(guān)聯(lián)的塊的計數(shù)(1402)。例如,當(dāng)檢索團(tuán)點來執(zhí)行驗證時,如圖13的步驟1308中那樣,在一些實施例中,可以使用驗證隊列以及將塊映射到團(tuán)點id的塊散列表來確定多少個包含該團(tuán)點的塊位于驗證隊列中。在一些實施例中,每次塊被驗證,則關(guān)聯(lián)緩存的團(tuán)點的“仍待驗證的塊”計數(shù)遞減。如果該計數(shù)遞減到等于“O” (1404),指示在一些實施例中再沒有包含該團(tuán)點的塊仍待驗證,則將該團(tuán)點標(biāo)記為“同意”以便從緩存中移除(1406)。否則,該團(tuán)點繼續(xù)存儲在緩存中(1408),例如,以確保從緩存中可獲取該塊數(shù)據(jù)來驗證包含仍需驗證的團(tuán)點的一個或多個塊。在一些實施例中,其他緩存策略可以使團(tuán)點在“仍待驗證的塊”計數(shù)已經(jīng)遞減到O之后保留一段時間,以及在一些實施例中,可以基于計數(shù)遞減為O以外的策略來從緩存中移除團(tuán)點。例如,在多種實施例中,時間、空間可用性和其他考量可以促使團(tuán)點從緩存中被移除,而不管有一個或多個包含該團(tuán)點的塊仍待驗證。
[0054]在多種實施例中,組合多個塊以形成較大對象(“團(tuán)點”)以便存儲在基于云的對象存儲中,這促使需要能夠確定不再需要包含團(tuán)點的塊,以使存儲該團(tuán)點所在的存儲位置能夠通過例如“垃圾回收”的過程被再次使用。在一些實施例中,對于每個塊存儲引用計數(shù),以便確定塊何時不再被引用,以及對于每個團(tuán)點,保存單獨的團(tuán)點級引用計數(shù),以便獲知包含該團(tuán)點的最后一個塊何時變?yōu)楸粍h除。
[0055]圖15是圖示用于確定與多個文件數(shù)據(jù)塊關(guān)聯(lián)的已存儲對象能夠被刪除的過程實施例的流程圖。在多種實施例中,圖15的過程可以由分布式文件系統(tǒng)元數(shù)據(jù)服務(wù)器(如圖1和/或圖6的文件系統(tǒng)元數(shù)據(jù)服務(wù)器104)使用來確定如存儲在基于云的對象存儲上的文件系統(tǒng)數(shù)據(jù)可以被刪除。在所示的示例中,接收指示,其指示塊不再需要且可以被刪除(1502)。例如,在多種實施例中,塊的引用計數(shù)可能已經(jīng)遞減到0,且可能已經(jīng)確定沒有仍保留的快照包括該塊。確定存儲該塊所在的團(tuán)點,并將關(guān)聯(lián)的團(tuán)點引用計數(shù)(例如,圖12的表1210的列1218 )遞減(1504)。如果一旦遞減的團(tuán)點引用計數(shù)等于O (1506 ),則標(biāo)記該團(tuán)點標(biāo)以便刪除(例如,使之進(jìn)行垃圾回收)(1508)。如果遞減的團(tuán)點引用計數(shù)仍大于0(1506),則圖15的過程結(jié)束而不標(biāo)記該團(tuán)點以便刪除。
[0056]在多種實施例中,本文公開的技術(shù)可使文件系統(tǒng)操作,如消除重復(fù),能夠使用第一大小/粒度,即,本文描述的“±夬”大小來執(zhí)行,同時能夠使用存儲的對象大小(“團(tuán)點”大小)(其利用典型的基于云的對象存儲的特點)來存儲文件系統(tǒng)數(shù)據(jù)。
[0057]雖然前文實施例是出于理解簡明的目的進(jìn)行某種細(xì)節(jié)描述,但是本發(fā)明不限于所提供的細(xì)節(jié)。有許多備選方式來實現(xiàn)本發(fā)明。所公開的實施例是說明性的而非限制性的。
【主權(quán)項】
1.一種存儲文件系統(tǒng)數(shù)據(jù)的方法,其包括: 接收要存儲包含多個文件數(shù)據(jù)塊的文件的請求; 確定要存儲所述多個塊的至少子集;以及 至少部分地通過提供指示來對所述請求予以響應(yīng),所述指示用于將包含所述文件的所述多個塊中至少子集的兩個或更多個塊作為包含所述兩個或更多個塊的組合塊數(shù)據(jù)的單個存儲的對象來存儲。2.如權(quán)利要求1所述的方法,其中從文件系統(tǒng)客戶端接收所述請求。3.如權(quán)利要求1所述的方法,其中所述請求包括包含所述文件的塊的散列或其他表示。4.如權(quán)利要求3所述的方法,其中使用所述散列或其他表示來確定包含所述文件的塊是否已被所述文件系統(tǒng)存儲。5.如權(quán)利要求4所述的方法,其中要存儲所述多個塊的至少子集的確定包括,使用包含所述多個塊的所述至少子集的塊的相應(yīng)散列或其他表示來確定所述塊尚未被所述文件系統(tǒng)存儲。6.如權(quán)利要求1所述的方法,其中用于包含所述文件的所述多個塊的所述至少子集的兩個或更多個塊作為單個存儲的對象來存儲的所述指示包括,與所述單個存儲的對象關(guān)聯(lián)的定位符或其他標(biāo)識符以及將包含所述文件的所述多個塊的所述至少子集與所述定位符或其他標(biāo)識符關(guān)聯(lián)的數(shù)據(jù)。7.如權(quán)利要求6所述的方法,其中所述定位符或其他標(biāo)識符指示應(yīng)將所述單個存儲的對象發(fā)送到以便存儲所在的位置。8.如權(quán)利要求1所述的方法,其中所述請求由文件系統(tǒng)客戶端發(fā)送,所述文件系統(tǒng)客戶端配置成通過使用所述兩個或更多個塊組裝所述單個存儲的對象來對所述請求的所述響應(yīng)予以響應(yīng)。9.如權(quán)利要求1所述的方法,還包括存儲將所述兩個或更多個塊與所述單個存儲的對象關(guān)聯(lián)的元數(shù)據(jù)。10.如權(quán)利要求9所述的方法,其中所述元數(shù)據(jù)包括對應(yīng)于每個塊的,將包含含有所述單個存儲的對象的塊的數(shù)據(jù)的位置。11.如權(quán)利要求1所述的方法,還包括至少部分地通過檢索所述單個存儲的對象并使用包含所述單個存儲的對象的相應(yīng)塊的塊數(shù)據(jù)來驗證如存儲的塊數(shù)據(jù)對應(yīng)于預(yù)期要存儲的塊數(shù)據(jù),以驗證所述兩個或更多個塊的存儲。12.如權(quán)利要求11所述的方法,還包括使用“仍待驗證的塊”計數(shù)器來確定要在本地緩存中將所述單個存儲的對象的副本保留多久。13.如權(quán)利要求1所述的方法,還包括對于所述單個存儲的對象,存儲反映包含仍被所述文件系統(tǒng)保留的團(tuán)點的塊的數(shù)量的引用計數(shù)。14.如權(quán)利要求1所述的方法,還包括至少部分地基于確定包含所述團(tuán)點的塊不再被所述文件系統(tǒng)保留,將所述引用計數(shù)遞減。15.一種存儲文件系統(tǒng)數(shù)據(jù)的系統(tǒng),其包括: 通信接口;以及 處理器,所述處理器耦合到所述通信接口且配置成: 通過所述通信接口接收要存儲包含多個文件數(shù)據(jù)塊的文件的請求; 確定要存儲所述多個塊的至少子集;以及 至少部分地通過提供指示來對所述請求予以響應(yīng),所述指示是要將包含所述文件的所述多個塊中至少子集的兩個或更多個塊作為包含所述兩個或更多個塊的組合塊數(shù)據(jù)的單個存儲的對象來存儲。16.如權(quán)利要求15所述的系統(tǒng),其中所述請求包括包含所述文件的塊的散列或其他表不O17.如權(quán)利要求16所述的系統(tǒng),其中使用所述散列或其他表示來確定所述文件系統(tǒng)是否已存儲包含所述文件的塊。18.如權(quán)利要求17所述的系統(tǒng),其中要存儲所述多個塊的至少子集的確定包括,使用包含所述多個塊的所述至少子集的塊的相應(yīng)散列或其他表示來確定所述塊尚未被所述文件系統(tǒng)存儲。19.如權(quán)利要求15所述的系統(tǒng),其中所述處理器還配置成至少部分地通過檢索所述單個存儲的對象并使用包含所述單個存儲的對象的相應(yīng)塊的塊數(shù)據(jù)來驗證如存儲的所述塊數(shù)據(jù)對應(yīng)于預(yù)期要存儲的塊數(shù)據(jù),以驗證所述兩個或更多個塊的存儲。20.—種用于存儲文件系統(tǒng)數(shù)據(jù)的計算機(jī)程序產(chǎn)品,所述計算機(jī)程序產(chǎn)品包含在非瞬態(tài)計算機(jī)可讀存儲介質(zhì)中且包含用于執(zhí)行如下步驟的計算機(jī)指令: 接收要存儲包含多個文件數(shù)據(jù)塊的文件的請求; 確定要存儲所述多個塊的至少子集;以及 至少部分地通過提供指示來對所述請求響應(yīng),所述指示是要將包含所述文件的所述多個塊中至少子集的兩個或更多個塊作為包含所述兩個或更多個塊的組合塊數(shù)據(jù)的單個存儲的對象來存儲。
【文檔編號】G06F17/30GK106021256SQ201511000869
【公開日】2016年10月12日
【申請日】2015年12月28日
【發(fā)明人】T.曼維爾, J.羅佩斯, R.德賽, N.羅森布盧姆
【申請人】Emc 公司