針對文件不同版本生成內(nèi)容可尋址存儲簽名的方法和系統(tǒng)的制作方法
【技術領域】
[0001]本公開涉及存儲具有未填充(unpopulated)部分的文件的數(shù)據(jù)系統(tǒng)。特別地,本公開涉及對提供可以存儲具有多個版本歷史的文件的內(nèi)容可尋址存儲的系統(tǒng)內(nèi)的文件的訪問。
【背景技術】
[0002]內(nèi)容可尋址存儲(CAS)使得能夠使用根據(jù)數(shù)據(jù)的內(nèi)容所生成的標識符來存儲數(shù)據(jù)。這樣使得能夠在無需知曉存儲裝置內(nèi)的物理地址的情況下使用這些標識符來檢索數(shù)據(jù)。例如,在將文件(或數(shù)據(jù)對象)存儲在CAS系統(tǒng)中的情況下,該CAS系統(tǒng)至少在統(tǒng)計意義上可以生成唯一地標識文件內(nèi)容的簽名。該CAS系統(tǒng)還可以針對各標識符指定存儲位置。這種類型的地址有時被稱為“內(nèi)容地址”。
[0003]具有相同的數(shù)據(jù)內(nèi)容的兩個以上的數(shù)據(jù)塊(無論這些數(shù)據(jù)塊是彼此的副本還是偶然包含相同數(shù)據(jù))將導致針對文件生成相同的簽名。在數(shù)據(jù)內(nèi)容中檢索這些文件中的任意文件將使用該共用簽名。因而,單個位置可以存儲多個數(shù)據(jù)對象的數(shù)據(jù)并且CAS系統(tǒng)可以減少文件所消耗的存儲空間、特別是數(shù)據(jù)備份和存檔所用的存儲空間。CAS系統(tǒng)還便于進行文件的認證。例如,由于僅存在文件的一個副本,因此可以簡化對文件合法性的驗證。
【發(fā)明內(nèi)容】
[0004]實施例涉及一種用于處理對訪問內(nèi)容可尋址存儲CAS系統(tǒng)中所存儲的文件中的邏輯位置的請求的方法。所述方法包括從表示所述文件的第一版本的第一散列樹中的第一節(jié)點檢索第一樹數(shù)據(jù)。所述第一樹數(shù)據(jù)包括第一散列樹深度、第一 CAS簽名、塊大小和文件大小。基于所述第一樹數(shù)據(jù)來從所述第一散列樹的較高層級選擇第二節(jié)點。從表示所述文件的所述第一版本的所述第一散列樹中的所述第二節(jié)點檢索第二樹數(shù)據(jù)。所述第二樹數(shù)據(jù)包括第二 CAS簽名。判斷所述第二 CAS簽名與保留CAS簽名相匹配,并且響應于判斷為所述第二 CAS簽名與所述保留CAS簽名相匹配,檢索表示所述文件的第二版本的第二散列樹中的第三節(jié)點。從所述第二散列樹中的第三節(jié)點檢索第三樹數(shù)據(jù)。所述第三樹數(shù)據(jù)包括第三散列樹深度、第三CAS簽名、塊大小和文件大小?;谒龅谌龢鋽?shù)據(jù)來遍歷所述第二散列樹。
[0005]各種實施例涉及一種用于針對文件的不同版本生成內(nèi)容可尋址存儲CAS簽名的方法。所述方法包括:針對所述文件的第一版本生成第一散列樹。所述第一散列樹具有利用所述第一散列樹的深度、所述第一散列樹的塊大小和所述文件的文件大小進行編碼的第一根CAS簽名。通過以下來針對所述文件的第二版本生成第二散列樹:相對于所述文件的所述第一版本中的相應塊,將所述文件的所述第二版本中的第一集合的一個或多個塊分類為修改過的,并且將所述第二版本中的第二集合的一個或多個塊分類為未修改過的;通過以下來針對所述第二散列樹生成第一層級的CAS簽名:向被分類為修改過的所述第一集合的一個或多個塊應用散列函數(shù),以及向被分類為未修改過的所述第二集合的一個或多個塊應用共用CAS簽名;以及根據(jù)所述第一層級的CAS簽名生成第二根CAS簽名,其中利用所述第二散列樹的深度、所述第二散列樹的塊大小和所述文件的文件大小來對所述第二根CAS簽名進行編碼。
[0006]一種用于針對文件的不同版本生成內(nèi)容可尋址存儲CAS簽名的系統(tǒng)。所述系統(tǒng)包括:客戶端裝置,其配置有客戶端接口模塊,所述客戶端接口模塊被設計為進行以下:從表示所述文件的第一版本的第一散列樹中的第一節(jié)點檢索第一樹數(shù)據(jù),其中所述第一樹數(shù)據(jù)包括第一散列樹深度、第一 CAS簽名、塊大小和文件大?。换谒龅谝粯鋽?shù)據(jù)來從所述第一散列樹的較高層級選擇第二節(jié)點;從表示所述文件的所述第一版本的所述第一散列樹中的所述第二節(jié)點檢索第二樹數(shù)據(jù),其中所述第二樹數(shù)據(jù)包括第二 CAS簽名;判斷所述第二CAS簽名與保留CAS簽名相匹配;響應于判斷為所述第二 CAS簽名與所述保留CAS簽名相匹配,檢索表示所述文件的第二版本的第二散列樹中的第三節(jié)點;從所述第二散列樹中的第三節(jié)點檢索第三樹數(shù)據(jù),其中所述第三樹數(shù)據(jù)包括第三散列樹深度、第三CAS簽名、塊大小和文件大小;以及基于所述第三樹數(shù)據(jù)來遍歷所述第二散列樹。
[0007]以上概述并不意圖描述本公開的每個例示實施例或每種實現(xiàn)。
【附圖說明】
[0008]本申請所包括的附圖并入并形成說明書的一部分。這些附圖例示出本公開的實施例,并且連同說明書一起用來解釋本公開的原理。附圖僅例示本發(fā)明的特定實施例,但并沒有限制本公開。
[0009]圖1不出根據(jù)本公開實施例的CAS存儲系統(tǒng);
[0010]圖2示出根據(jù)與本公開實施例的、用于生成散列樹的邏輯流程圖;
[0011]圖3示出根據(jù)本公開實施例的、散列樹和CAS存儲器中所存儲的數(shù)據(jù)之間的邏輯映射;
[0012]圖4示出根據(jù)本公開實施例的、具有表示如下元素的節(jié)點的流程圖,其中這些元素對于針對具有分配部分和未分配部分的文件生成散列樹是有用的;
[0013]圖5示出根據(jù)本公開實施例的、具有表示如下元素的節(jié)點的流程圖,其中這些元素對于遍歷散列樹以從具有分配部分和未分配部分的文件獲得數(shù)據(jù)是有用的;
[0014]圖6示出根據(jù)本公開實施例的、具有多個版本的文件或鏡像的框圖;
[0015]圖7示出根據(jù)本公開實施例的、包含表示如下元素的節(jié)點的流程圖,其中這些元素對于針對具有多個版本的文件生成散列樹是有用的;
[0016]圖8示出根據(jù)本公開實施例的、具有表示如下元素的節(jié)點的流程圖,其中這些元素對于遍歷散列樹以從具有分配部分和未分配部分的文件獲得數(shù)據(jù)是有用的;以及
[0017]圖9示出用于實現(xiàn)各種實施例的計算機系統(tǒng)的框圖。
[0018]盡管本發(fā)明可修改為各種變形和替代形式,但在附圖中通過示例已經(jīng)示出了其細節(jié)并且將詳細說明這些細節(jié)。然而,應當理解,目的不是將本發(fā)明局限于所述的特定實施例。相反,目的是涵蓋落在本發(fā)明的精神和范圍內(nèi)的所有變形例、等同物和替代。
【具體實施方式】
[0019]本公開的方面涉及內(nèi)容可尋址存儲,更特別的方面涉及針對具有未填充部分的文件的內(nèi)容可尋址存儲。盡管本發(fā)明并非必須局限于這些應用,但可以通過使用該上下文論述各種示例來理解本發(fā)明的各種方面。
[0020]根據(jù)本公開的各種實施例,內(nèi)容可尋址存儲(CAS)系統(tǒng)可被配置為針對單個文件或數(shù)據(jù)對象生成簽名(散列)樹。散列樹可以由單個文件或數(shù)據(jù)對象的不同部分(塊)的多個簽名構成。特定實施例涉及使用指定(保留)簽名來表示不包含(例如,相對于文件的使用)有意義的數(shù)據(jù)的數(shù)據(jù)塊??梢酝ㄟ^在監(jiān)視保留簽名的同時遍歷散列樹來便于對數(shù)據(jù)對象的檢索。
[0021]特定實施例涉及利用散列樹中所包含的簽名對附加信息進行編碼。該附加信息可以包括便于進行從起始散列節(jié)點到標識所需數(shù)據(jù)的最終散列(葉子)節(jié)點的散列樹的遍歷(traversal)的信息。例如,附加數(shù)據(jù)可以包含諸如散列樹深度、文件大小和塊大小等的信息。使用該信息,請求裝置可以遍歷散列樹,直到該請求裝置遇到保留簽名或向該請求裝置提供了所請求的數(shù)據(jù)塊為止。在遇到保留簽名的情況下,該裝置可以停止樹遍歷并結束相應的針對數(shù)據(jù)的請求。這可用于減少在請求裝置和CAS系統(tǒng)之間傳送的數(shù)據(jù)量。
[0022]各種實施例涉及訪問(存儲、修改或讀取)填充內(nèi)容可以相對稀疏的文件。例如,磁盤鏡像(disk image)可以包含與操作系統(tǒng)的文件系統(tǒng)(例如,為了備份的目的而創(chuàng)建磁盤鏡像的場所)相對應的數(shù)據(jù)。文件系統(tǒng)可以指定盤的某些部分是未分配文件空間。盡管盤的相應物理存儲位置可以包含數(shù)據(jù),但沒有要求該數(shù)據(jù)重新創(chuàng)建系統(tǒng)鏡像(image)。例如,可以從諸如硬盤驅動器等的存儲裝置檢索系統(tǒng)鏡像的數(shù)據(jù)。系統(tǒng)可能使用/分配了小于可用盤驅動空間的一半。未分配部分在被訪問的情況下將返回二進制數(shù)據(jù)值;然而,本公開的實施例是在意識到這些值對于許多應用而言不相關的情況下構建的。因此,實施例涉及使用散列樹來識別文件的未分配或未填充部分的CAS系統(tǒng)。
[0023]本公開的實施例涉及負責正存儲在CAS系統(tǒng)中的不同版本的文件的CAS系統(tǒng)。在存儲新版本的文件的情況下,所創(chuàng)建的散列樹可以僅包含與較舊版本的文件的細微差別。因此,實施例涉及對在后續(xù)版本之間沒有改變的塊進行分類,以使得可以針對相應塊將保留簽名放置在散列樹內(nèi)。遍歷特定版本的文件的散列樹的請求裝置可能遇到保留簽名。作為響應,請求裝置可以遍歷先前版本的文件的散列樹或者訪問先前版本的文件的本地緩存副本??梢灾貜驮撎幚?,直到檢索到針對請求塊的數(shù)據(jù)、或者請求裝置在原始版本的文件中遇到可以表示數(shù)據(jù)未分配的保留簽名為止。
[0024]盡管(利用對散列函數(shù)的適當選擇)與特定保留簽名和文件中的實際數(shù)據(jù)的沖突的可能性從統(tǒng)計上不太可能,但特定實施例使得能夠在生成散列樹時使用沖突避免。例如,系統(tǒng)可以監(jiān)視散列函數(shù)的輸出以檢測與保留簽名的沖突(匹配)。如果檢測到匹配,則系統(tǒng)可以應用附加算法以修改簽名,以使得不再與保留簽名相匹配。在特定實施例中,附加算法可以簡單地應用針對沖突所保留的第二預定簽名;然而,還可以應用更復雜的算法,諸如向簽名應用第二散列函數(shù)等。如果系統(tǒng)被設計成對數(shù)據(jù)進行驗證,則驗證算法還可以包括該沖突檢測和解決方案,以使得該驗證算法還可以生成(再生成)適當簽名。
[0025]現(xiàn)在參考附圖,圖1示出根據(jù)本公開實施例的CAS存儲系統(tǒng)??蛻舳?02、104、106可被配置為使用CAS接口模塊108、110、112來訪問CAS數(shù)據(jù)中心116。網(wǎng)絡114可用于在客戶端和數(shù)據(jù)中心之間路由數(shù)據(jù)。網(wǎng)絡可以包括但不必限于一個或多個局域網(wǎng)(LAN)、一個或多個廣域網(wǎng)(WAN)、因特網(wǎng)和它們的組合。數(shù)據(jù)中心116可以使用數(shù)據(jù)中心CAS接口模塊118與客戶端102、104、106相接口,其中數(shù)據(jù)中心CAS接口模塊118可以與一個或多個散列樹表120和CAS存儲裝置122相接口。在特定實施例中,客戶端可以高速緩存樹表的本地副本或樹表的部分。
[0026]根據(jù)各種實施例,CAS存儲系統(tǒng)可以包含多個附加組件并且可以以各種方式配置。例如,一個或多個計算機或服務器可被配置為與數(shù)據(jù)中心并且與一個或多個客戶端接口。計算機可被配置為提供諸如但不限于以下等的功能:基于web的訪問和入口、備份功能、存檔功能、搜索能力、系統(tǒng)鏡像生成、用戶認證、鏡像/文件