404的哈希值的新的主哈希集塊454。新的主哈希集塊454的哈希值不同于原始主哈希集塊402的哈希值。因?yàn)槟夸泴ο髩K208包括主哈希集塊402的主哈希集塊哈希值,所以之前版本的目錄對象塊208 (對應(yīng)于目錄“PPTS”)也是過時(shí)的。用于“PPTS”目錄的新目錄對象塊252包括新的主哈希集塊454的主哈希集塊哈希值。在所示出的實(shí)施方式中,即使哈希集塊層次結(jié)構(gòu)400包含非常多的哈希值和/或非常多的哈希集塊(例如,在一種實(shí)施方式中,高達(dá)至約1700萬個(gè)哈希值和約7萬個(gè)哈希集塊),也生成和存儲(chǔ)三個(gè)新的哈希集塊。
[0125]盡管參考圖4中的哈希集塊詳細(xì)描述了層次結(jié)構(gòu),然而,所示出的層次結(jié)構(gòu)同樣適用于對應(yīng)于該目錄的名稱索引塊的層次結(jié)構(gòu)。
[0126]訪問目錄
[0127]圖5是示出了用于訪問目錄的方法的實(shí)施方式的流程圖??梢詮闹T如塊存儲(chǔ)服務(wù)器112等服務(wù)器端執(zhí)行該方法。還可從諸如塊系統(tǒng)客戶端110等客戶端執(zhí)行該方法。
[0128]在塊502,接收對訪問目錄的請求。該請求可包括與目錄相關(guān)聯(lián)的目錄對象塊(諸如,目錄對象塊300)的哈希值??商娲睾?或此外,該請求可包括目錄名稱、與該目錄相關(guān)聯(lián)的文件系統(tǒng)卷、文件系統(tǒng)層次結(jié)構(gòu)中父代對象塊的哈希值、或者用于獲得相關(guān)聯(lián)目錄對象塊的哈希值或目錄的任何其他訪問密鑰的任何其他數(shù)據(jù)。
[0129]處理繼續(xù)進(jìn)行至塊504,其中,從可內(nèi)容尋址存儲(chǔ)系統(tǒng)檢索目錄對象塊。使用目錄對象塊的哈希值檢索目錄對象塊。
[0130]處理繼續(xù)進(jìn)行至塊506,其中,從可內(nèi)容尋址存儲(chǔ)系統(tǒng)檢索諸如主哈希集塊320等主哈希集塊。使用存儲(chǔ)在目錄對象塊中的主哈希集塊的哈希值(例如,哈希集塊哈希值304)檢索主哈希集塊。
[0131]處理繼續(xù)進(jìn)行至塊506,其中,檢索對應(yīng)于目錄的一組子對象的數(shù)據(jù)。使用存儲(chǔ)在主哈希集塊中的哈希值(諸如,哈希值324至328)檢索對應(yīng)于該組子對象的數(shù)據(jù)。哈希值還可存儲(chǔ)在哈希集塊的層次結(jié)構(gòu)(例如,層次結(jié)構(gòu)400)中,其中,主哈希集塊是目錄下的根哈希集塊。
[0132]將對象添加到目錄
[0133]圖6是示出了用于將新的子對象添加到目錄中的方法的實(shí)施方式的流程圖??梢詮闹T如塊存儲(chǔ)服務(wù)器112等服務(wù)器端執(zhí)行該方法。還可以從諸如塊系統(tǒng)客戶端110等客戶端執(zhí)行該方法。
[0134]在塊602,新的對象塊被添加到可內(nèi)容尋址存儲(chǔ)系統(tǒng)中。新的對象塊對應(yīng)于相關(guān)聯(lián)目錄的新的子對象。
[0135]處理繼續(xù)進(jìn)行至塊604,其中,確定用于存儲(chǔ)新對象塊的哈希值的指定哈希集塊。從存儲(chǔ)目錄的子對象塊的哈希值的至少一個(gè)哈希集塊中選擇指定的哈希集塊。例如,可從哈希集塊的層次結(jié)構(gòu)中選擇指定的哈希集塊。
[0136]處理繼續(xù)進(jìn)行至塊606,其中,生成新接收哈希集塊。新接收哈希集塊包括新對象塊的哈希值。新接收的哈希集塊還可包括指定哈希集塊中所包含的哈希值。例如,如果哈希值的總數(shù)目不超過閾值,則新接收哈希集塊可包括指定哈希集塊中所包含的所有哈希值。
[0137]處理繼續(xù)進(jìn)行至決策塊608,其中,通過將新的哈希值添加到接收哈希集塊中確定是否超過閾值。如果超過閾值,則處理繼續(xù)進(jìn)行至塊610。否則,處理繼續(xù)進(jìn)行至塊614。
[0138]在塊610,生成至少一個(gè)新的同級哈希集塊。該至少一個(gè)新的同級哈希集塊包括指定哈希集塊中所包含的至少一個(gè)哈希值。新接收的哈希集塊和該至少一個(gè)新的同級哈希集塊位于在哈希集塊層次結(jié)構(gòu)的同一層級中。
[0139]處理繼續(xù)進(jìn)行至塊612,其中,生成新的直接父代哈希集塊。新的直接父代哈希集塊包括該至少一個(gè)同級哈希集塊和該新接收哈希集塊的哈希值。
[0140]處理繼續(xù)進(jìn)行至塊614,其中,針對接收哈希集塊的任何祖代生成新的祖代哈希集塊。如果指定哈希塊是主哈希集塊,則不需要生成任何新的祖代哈希集塊。新的祖代哈希集塊每個(gè)均包括新接收哈希集塊或者其祖代的哈希值。
[0141]硬件概述
[0142]根據(jù)一種實(shí)施方式,通過一個(gè)或者多個(gè)特殊用途的計(jì)算設(shè)備實(shí)現(xiàn)本發(fā)明中所描述的技術(shù)。特殊用途的計(jì)算設(shè)備可以是硬接線以執(zhí)行各種技術(shù),或者可包括諸如持久穩(wěn)固編程的一個(gè)或者多個(gè)專用集成電路(ASIC)或者現(xiàn)場可編程門陣列(FPGA)等數(shù)字電子設(shè)備以執(zhí)行各種技術(shù),或者可包括被編程為執(zhí)行有關(guān)固件、記憶體、其他存儲(chǔ)器、或者組合中的程序指令的技術(shù)的一個(gè)或者多個(gè)通用硬件處理器。特殊用途的計(jì)算設(shè)備還可將自定義硬接線邏輯、ASIC、或者FPGA與自定義編程組合以實(shí)現(xiàn)各種技術(shù)。特殊用途的計(jì)算設(shè)備可以是桌面計(jì)算機(jī)系統(tǒng)、便攜式計(jì)算機(jī)系統(tǒng)、手持式設(shè)備、網(wǎng)絡(luò)設(shè)備或者將硬接線和/或程序邏輯進(jìn)行整合以實(shí)現(xiàn)各種技術(shù)的任何其他設(shè)備。
[0143]例如,圖7是示出了可實(shí)現(xiàn)本發(fā)明的實(shí)施方式的計(jì)算機(jī)系統(tǒng)700的框圖。計(jì)算機(jī)系統(tǒng)700包括總線702或者用于通信信息的其他通信機(jī)構(gòu)、以及與總線702耦接以用于處理信息的硬件處理器704。例如,硬件處理器704可以是通用微處理器。
[0144]計(jì)算機(jī)系統(tǒng)700還包括耦接至總線702的諸如隨機(jī)存取存儲(chǔ)器(RAM)或者其他動(dòng)態(tài)存儲(chǔ)設(shè)備等主存儲(chǔ)器706,以用于存儲(chǔ)由處理器704所執(zhí)行的信息和指令。主存儲(chǔ)器706在執(zhí)行由處理器704所執(zhí)行的指令過程中還可用于存儲(chǔ)臨時(shí)變量或者其他中間信息。當(dāng)被存儲(chǔ)在可訪問處理器705的非易失性存儲(chǔ)介質(zhì)中時(shí),該指令使計(jì)算機(jī)系統(tǒng)700變成自定義執(zhí)行指令中所規(guī)定的操作的特殊用途機(jī)器。
[0145]計(jì)算機(jī)系統(tǒng)700進(jìn)一步包括耦接至總線702的只讀存儲(chǔ)器(ROM) 708或者其他靜態(tài)存儲(chǔ)設(shè)備,以用于存儲(chǔ)處理器704的靜態(tài)信息和指令。諸如磁盤、光盤、或者固態(tài)驅(qū)動(dòng)等存儲(chǔ)設(shè)備710被設(shè)置成耦接至總線702以用于存儲(chǔ)信息和指令。
[0146]經(jīng)由總線702可將計(jì)算機(jī)系統(tǒng)700耦接至顯示器712,諸如,陰極射線管(CRT),以用于將信息顯示給計(jì)算機(jī)用戶。包括字母數(shù)字和其他鍵的輸入設(shè)備714耦接至總線702以將信息和命令選擇通信給處理器704。另一類型的用戶輸入設(shè)備是光標(biāo)控制716,諸如,鼠標(biāo)、軌跡球、或者光標(biāo)方向鍵,以用于將方向信息和命令選擇通信給處理器704并且用于控制光標(biāo)在顯示器712上的移動(dòng)。通常,輸入設(shè)備在兩軸之間具有二度自由度,第一軸(例如,X)和第二軸(例如,y),以允許設(shè)備移動(dòng)至平面內(nèi)的指定位置。
[0147]計(jì)算機(jī)系統(tǒng)700可使用自定義硬接線邏輯、一個(gè)或者多個(gè)ASIC或者FPGA、固件和/或程序邏輯實(shí)現(xiàn)本發(fā)明中所描述的技術(shù),以使計(jì)算機(jī)系統(tǒng)成為或者將計(jì)算機(jī)系統(tǒng)700編程為特殊用途機(jī)器。根據(jù)一種實(shí)施方式,響應(yīng)執(zhí)行主存儲(chǔ)器706中所包含的一個(gè)或者多個(gè)序列的一個(gè)或者多個(gè)指令的處理器704,由計(jì)算機(jī)700執(zhí)行本發(fā)明中的技術(shù)。從諸如存儲(chǔ)設(shè)備710等另一存儲(chǔ)介質(zhì)中可將該等指令讀入主存儲(chǔ)器706。執(zhí)行主存儲(chǔ)器706中所包含的指令的序列以使處理器704執(zhí)行本發(fā)明中所描述的過程步驟。在可替代實(shí)施方式中,可以使用硬接線電路替換軟件指令或者可以使用與軟件指令組合的硬接線電路。
[0148]本發(fā)明中所使用的術(shù)語“存儲(chǔ)介質(zhì)”指存儲(chǔ)使機(jī)器以具體方式操作的數(shù)據(jù)和/或指令的任何非臨時(shí)(non-transitory)介質(zhì)。該存儲(chǔ)介質(zhì)可包括非易失性介質(zhì)和/或易失性介質(zhì)。例如,非易失性介質(zhì)包括諸如光盤、磁盤、或者固態(tài)驅(qū)動(dòng)等存儲(chǔ)設(shè)備710。易失性介質(zhì)包括諸如主存儲(chǔ)器706等動(dòng)態(tài)記憶體。例如,常見形式的存儲(chǔ)介質(zhì)包括軟盤、軟磁盤、硬盤、固態(tài)驅(qū)動(dòng)、磁帶、或者任何其他磁性數(shù)據(jù)存儲(chǔ)介質(zhì)、CD-ROM、任何其他光學(xué)數(shù)據(jù)存儲(chǔ)介質(zhì)、具有孔圖案的任何物理介質(zhì)、RAM、PR0M、以及EPROM、FLASH-EPROM、NVRAM、任何其他記憶體芯片或者磁帶盒。
[0149]存儲(chǔ)介質(zhì)與傳輸介質(zhì)不同,但可與傳輸介質(zhì)結(jié)合使用。傳輸介質(zhì)參與在存儲(chǔ)介質(zhì)之間傳輸信息。例如,傳輸介質(zhì)包括同軸光纜、銅線以及纖維光學(xué),其中包括包含總線702的布線。傳輸介質(zhì)還可以是諸如在無線電波和紅外數(shù)據(jù)通信過程中產(chǎn)生的聲波或者光波形式。
[0150]在將一個(gè)或者多個(gè)指令的一個(gè)或者多個(gè)序列攜帶至用于執(zhí)行的處理器704時(shí)可涉及各種形式的介質(zhì)。例如,初始時(shí),可以在遠(yuǎn)程計(jì)算機(jī)的磁盤或者固態(tài)驅(qū)動(dòng)中攜帶指令。遠(yuǎn)程計(jì)算機(jī)可將指令加載至其動(dòng)態(tài)記憶體中并且通過使用調(diào)制解調(diào)器的電話線發(fā)送指令。計(jì)算機(jī)系統(tǒng)700的本機(jī)調(diào)制解調(diào)器可接收電話線中的數(shù)據(jù)并且使用紅外發(fā)送器將數(shù)據(jù)轉(zhuǎn)換成紅外信號。紅外檢測器可接收紅外信號中所攜帶的數(shù)據(jù)并且適當(dāng)?shù)碾娐房蓪?shù)據(jù)放置在總線702中。總線702將數(shù)據(jù)攜帶至處理器704從其中檢索并且執(zhí)行指令的主存儲(chǔ)器706?在處理器704執(zhí)行之前或者之后,由主存儲(chǔ)器706所接收的指令可選地被存儲(chǔ)在存儲(chǔ)設(shè)備710上。
[0151]計(jì)算機(jī)系統(tǒng)700還包括耦接至總線702的通信接口 718。通信接口 718提供耦接至網(wǎng)絡(luò)線路720(即,連接至局部網(wǎng)絡(luò)722)的雙向數(shù)據(jù)通信。例如,通信接口 718可以是集成式服務(wù)數(shù)字網(wǎng)絡(luò)(ISDN)卡、電纜調(diào)制解調(diào)器、衛(wèi)星調(diào)制解調(diào)器、或者將數(shù)據(jù)通信連接提供給相應(yīng)類型的電話線的調(diào)制解調(diào)器。又例如,通信接口 718可以是局域網(wǎng)(LAN)卡以將數(shù)據(jù)通信連接提供給兼容的LAN。還可實(shí)現(xiàn)無線線路。在任何實(shí)施方式中,通信接口 718均發(fā)送并且接收攜帶表示各種類型信息的數(shù)字?jǐn)?shù)據(jù)流的電信號、電磁信號、或者光學(xué)信號。
[0152]通常,網(wǎng)絡(luò)鏈路720通過一個(gè)或者多個(gè)網(wǎng)絡(luò)將數(shù)據(jù)通信提供給其他數(shù)據(jù)設(shè)備。例如,網(wǎng)絡(luò)鏈路720可通過本地網(wǎng)絡(luò)722給主機(jī)724或者由因特網(wǎng)服務(wù)供應(yīng)商(ISP) 726所運(yùn)營的數(shù)據(jù)設(shè)備提供連接。ISP 726反之通過現(xiàn)在通常被稱之為“因特網(wǎng)”728的全球數(shù)據(jù)包通信網(wǎng)絡(luò)提供數(shù)據(jù)通信服務(wù)。本地網(wǎng)絡(luò)722和因特網(wǎng)728使用攜帶數(shù)字?jǐn)?shù)據(jù)流的電信號、電磁信號、或者光學(xué)信號。將數(shù)字?jǐn)?shù)據(jù)攜帶至計(jì)算機(jī)網(wǎng)絡(luò)700并且從計(jì)算機(jī)網(wǎng)絡(luò)700攜帶數(shù)字?jǐn)?shù)據(jù)的各種網(wǎng)絡(luò)中的信號以及網(wǎng)絡(luò)線路720和通信結(jié)構(gòu)718中的信號時(shí)傳輸介質(zhì)的示例性形式。
[0153]計(jì)算機(jī)系統(tǒng)700通過網(wǎng)絡(luò)、網(wǎng)絡(luò)線路720、以及通信接口 718可發(fā)送消息和接收數(shù)據(jù)(包括程序代碼)。在因特網(wǎng)實(shí)施例中,服務(wù)器730可通過因特網(wǎng)728、ISP 726、本地網(wǎng)絡(luò)722、以及通信接口 718傳輸用于應(yīng)用程序的請求代碼。
[0154]在所接收的代碼被接收和/或存儲(chǔ)在存儲(chǔ)設(shè)備710中、或者用于后期執(zhí)行的其他非易失性存儲(chǔ)器中時(shí),可由處理器704執(zhí)行所接收的代碼。
[0155]擴(kuò)展和替代
[0156]在上述說明書中,已經(jīng)參考每個(gè)實(shí)現(xiàn)方式可能均不同的多種具體細(xì)節(jié)描述了本發(fā)明的實(shí)施方式。因此,本說明書和附圖被視為具有說明性而非限制性的意義。本發(fā)明范圍的獨(dú)有和排他性指示符以及申請人旨在保護(hù)的本發(fā)明的范圍是本申請以發(fā)布權(quán)利要求的具體形式所發(fā)布的權(quán)利要求書的字面和等同范圍(其中包括任何后續(xù)的修正)。
【主權(quán)項(xiàng)】
1.一種方法,包括: 使用可內(nèi)容尋址存儲(chǔ)系統(tǒng)中的多個(gè)塊表示文件系統(tǒng)的目錄結(jié)構(gòu); 所述目錄結(jié)構(gòu)包括布置在對象層次結(jié)構(gòu)中的對象組,其中,所述對象組包括在所述對象層次結(jié)構(gòu)內(nèi)具有子對象組的特定目錄; 所述多個(gè)塊包括: 目錄對象塊,所述目錄對象塊用于所述特定目錄; 特定的子對象塊組,其中,所述特定的子對象塊組是所述子對象組中各個(gè)子對象的對象塊;以及 至少一個(gè)哈希集塊