專利名稱:使用標準塊和標準塊標識符的文件傳送的制作方法
技術(shù)領(lǐng)域:
本發(fā)明 一般地涉及使用標準塊和標準塊標識符的文件傳送。
背景技術(shù):
包括一個或多個客戶操作系統(tǒng)和應用程序的虛擬機可以由虛擬機圖像文件表示。
因此,虛擬機可以使用傳統(tǒng)文件操作(復制、移動、拷貝與粘貼)進行克隆和傳送。 每個虛擬機在虛擬機圖像文件中是自持的。該文件駐留在宿主機器上。虛擬機圖
像文件可以通過網(wǎng)絡(luò)被拷貝和傳送。如果機器必須從一個物理位置移動到另一物理位置,
那么僅需要通過計算機網(wǎng)絡(luò)將虛擬機圖像文件從第一位置處的宿主機器拷貝到第二位置
處的另一宿主機器。然而,由于虛擬機圖像文件非常大,拷貝虛擬機圖像需要高帶寬連接并
且可能花費非常長的時間。 盡管每個虛擬機圖像文件可能需要千兆字節(jié)的空間進行存儲,但是這些虛擬機文 件中的大量內(nèi)容是相同的。這是因為現(xiàn)今的軟件和操作系統(tǒng)是單一種源的。僅有幾個操作 系統(tǒng)的變體,例如Windows XP 、 Windows VistaTM^P Redhat Li皿x。此外,少量應用占 用每個機器上大部分的應用程序組。因此,注意到當虛擬機圖像文件被從一個位置向另一 位置拷貝時,拷貝的大多數(shù)信息已經(jīng)存在于目的地處的其它虛擬機文件中。
本申請要求了于2008年9月4日遞交的美國臨時申請No. 61/094, 215的權(quán)益。
發(fā)明內(nèi)容
根據(jù)第一方面,本發(fā)明提供了一種系統(tǒng),包括SBID至S塊轉(zhuǎn)換器,用于響應于通 過網(wǎng)絡(luò)從目標系統(tǒng)接收的標準塊標識符,通過所述網(wǎng)絡(luò)向所述目標系統(tǒng)返回相應標準數(shù)據(jù) 塊的版本,所述SBID至塊轉(zhuǎn)換器存儲多個標準數(shù)據(jù)塊的版本以及從所述標準數(shù)據(jù)塊的相 應拷貝生成的標準哈希值,所述SBID至塊轉(zhuǎn)換器將相應的標準塊標識符與所述標準數(shù)據(jù) 塊的相應一種相關(guān)聯(lián)。所述系統(tǒng)還包括哈希值至SBID轉(zhuǎn)換器,用于響應于所述哈希值至 SBID轉(zhuǎn)換器從所述源系統(tǒng)接收到與從所述標準數(shù)據(jù)塊的第一種生成的第一標準哈希值相 匹配的第一文件哈希值,通過所述網(wǎng)絡(luò)向源系統(tǒng)返回用于所述第一標準數(shù)據(jù)塊的第一標準 塊標識符。 根據(jù)第二方面,本發(fā)明提供了一種方法,包括在源系統(tǒng)上將原始文件轉(zhuǎn)換為原始 塊;從所述原始塊生成文件哈希值;將所述文件哈希值中的一些通過網(wǎng)絡(luò)傳輸?shù)絊BID服務 器系統(tǒng);區(qū)分匹配從標準塊生成的標準哈希值的文件哈希值以及不匹配所述標準哈希值的 那些文件哈希值;對于匹配標準哈希值的所述文件哈希值的每一個,將相應的標準塊標識 符返回到所述源系統(tǒng);生成包括所述標準塊標識符的格式文件;以及通過所述網(wǎng)絡(luò)將所述 格式文件傳送到目標系統(tǒng)。 根據(jù)第三方面,本發(fā)明提供了一種包括計算機可讀存儲介質(zhì)的制品,所述就計算 機可讀存儲介質(zhì)編碼有計算機可執(zhí)行指令的程序和標準數(shù)據(jù)塊,所述程序包括以下步驟 將原始文件劃分成未壓縮的文件塊;壓縮所述未壓縮的文件塊以產(chǎn)生壓縮文件塊;從所述壓縮文件塊生成文件哈希值;對于所述文件哈希值中的每個,當其變成當前處理的哈希值 時,確定它是否匹配在關(guān)聯(lián)先前處理的文件哈希值與文件塊標識符的表中的條目中表示的 先前處理的文件哈希值;在當前處理的文件哈希值匹配先前處理的文件哈希值的情況下, 將用于當前處理的文件哈希值的文件塊標識符與用于匹配的先前處理的文件哈希值的文 件塊標識符相關(guān)聯(lián),以及在當前處理的文件哈希值不匹配先前處理的文件哈希值的情況 下,將當前處理的文件哈希值傳輸?shù)絊BID服務器系統(tǒng),并且如果從所述SBID服務器系統(tǒng)返 回了指示該哈希值對應于標準塊的SBID,則將該SBID包括在所述格式文件中。
圖1是根據(jù)本發(fā)明實施例的計算機系統(tǒng)的網(wǎng)絡(luò)系統(tǒng)的簡要示圖。 圖2是在圖1的網(wǎng)絡(luò)系統(tǒng)中使用的格式文件和文件塊表的簡要示圖。 圖3是圖1的網(wǎng)絡(luò)系統(tǒng)中的文件編碼器的簡要示圖。 圖4是圖1的網(wǎng)絡(luò)系統(tǒng)中的文件解碼器的簡要示圖。 圖5是根據(jù)本發(fā)明的圖1的網(wǎng)絡(luò)系統(tǒng)上下文中實現(xiàn)的方法的流程圖。 圖6是圖5方法的編碼步驟的流程圖。 圖7是圖5方法的解碼步驟的流程圖。 圖8是根據(jù)本發(fā)明的另一網(wǎng)絡(luò)系統(tǒng)的簡要示圖。 在附圖中"B塊"是文件被劃分成的多個塊中的一個;"C塊"是B塊的壓縮版本;
并且"D塊"是C塊的解壓縮版本。"B哈希值"是從B塊直接生成的哈希值;C哈希值是從C 塊生成的哈希值;"CQ哈希值"是通過網(wǎng)絡(luò)傳輸?shù)?查詢"C哈希值,而"CR哈希值"是與先 前生成的CQ哈希值相匹配的(非CQ哈希值)"引用"C哈希值。"FBID"代表"文件塊標識 符";每個B塊、C塊、D塊、B哈希值、C哈希值、CQ哈希值和CR哈希值對應于各自的FBID。 "SU塊"是已經(jīng)分配標準塊標識符(SBID)的未壓縮的標準塊。"S塊"是SU塊的壓縮版本。
具體實施例方式
本發(fā)明通過替換將被傳送的文件的至少一些塊的標準塊標識符(SBID)來解決這 些以及相關(guān)問題。更具體地說,原始文件被劃分成文件塊;這些塊被壓縮,并且文件哈希值 從文件塊生成并且與從預先存在的標準塊集生成的"標準"哈希值相比較。包括用于匹配 非匹配文件塊的壓縮版本和文件塊的SBID的格式文件(recipe file)被從源系統(tǒng)傳送到 目標系統(tǒng)。部分通過交換傳送的SBID以得到他們所代表的標準塊,在目標系統(tǒng)上構(gòu)建原始 文件的復制件。盡管可以傳送多種文件類型,這種基于SBID的方法對于虛擬機來說特別適 用。虛擬機通常共享常用主機和客戶軟件,所以共享數(shù)據(jù)塊是相對普遍的。而且,由于虛擬 機盤(vmdk)文件是文件系統(tǒng)的圖像,所以來自文件系統(tǒng)的塊趨向于良好對準。
圖1中簡要示出了根據(jù)本發(fā)明的網(wǎng)絡(luò)系統(tǒng)AP1。 一般而言,本發(fā)明適用于多種網(wǎng)絡(luò) 系統(tǒng),包括局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、因特網(wǎng)、以及他們的組合。網(wǎng)絡(luò)系統(tǒng)AP1包括并且 描述了源系統(tǒng)11、目標系統(tǒng)13以及標準塊標識符(SBID)服務器系統(tǒng)15之間的連接。通 常,本發(fā)明描述的源系統(tǒng)、目標系統(tǒng)和SBID服務器系統(tǒng)是個體計算機或者他們是計算機的 網(wǎng)絡(luò)。在本發(fā)明的一些實施例中,源、目標和SBID服務器系統(tǒng)中的兩個或多個運行在相同 計算機的各自資源上。
這里關(guān)注的目標是從源系統(tǒng)11上的原始虛擬機圖像文件19在目標系統(tǒng)13上創(chuàng) 建復制的虛擬機圖像文件17。為此目的,源系統(tǒng)ll的編碼器21對相對大的原始文件19 進行編碼以在源系統(tǒng)11上產(chǎn)生相對小的格式文件23。源系統(tǒng)11上的格式文件23被傳送 (而非原始文件19)到目標系統(tǒng)13。目標系統(tǒng)13上的解碼器對格式文件23進行解碼以生 成復制文件17。 格式文件23可以包括"標準塊標識符"或"SBID" 29。 SBID 29代表相應的未壓 縮標準塊或"SU塊"30,并且進而代表存儲在標準塊存儲裝置32中的那些塊的壓縮版本, 即,壓縮標準塊或"S塊"31。解碼器27將SBID33從格式文件23通過網(wǎng)絡(luò)系統(tǒng)API傳輸?shù)?SBID服務器系統(tǒng)5,其中SBID33由SBID至S塊轉(zhuǎn)換器35接收。轉(zhuǎn)換器35包括存儲裝置 31和將SBID值映射到S塊31的SBID至S塊表37。對于從目標系統(tǒng)13接收的每個SBID 值,SBID服務器系統(tǒng)15返回對應S塊的版本。在圖示的實施例中,S塊是未壓縮標準SU塊 30的壓縮版本。另一實施例描述了未壓縮標準塊的存儲和/或傳輸。例如,標準塊可以以 未壓縮格式存儲,并且隨后被壓縮用以進行傳輸。 源系統(tǒng)編碼器21負責在格式文件23中包括SBID。編碼器21將原始文件19劃 分成文件塊,例如B塊,并且從這些塊生成哈希值,例如C哈希值。在圖示的實施例中,編碼 器21首先壓縮塊,然后從壓縮塊生成哈希值。在另一實施例中,哈希值是直接從未壓縮文 件塊生成的。至少這些哈希值中的一些,例如CQ哈希值39是通過網(wǎng)絡(luò)系統(tǒng)API被傳輸?shù)?SBID服務器系統(tǒng)15的。SBID服務器系統(tǒng)15包括S哈希值至SBID轉(zhuǎn)換器41, S哈希值至 SBID轉(zhuǎn)換器41進一步包括將S哈希值44映射到SBID 29的S哈希值至SBID表43。
在圖示的實施例中,S哈希值是從S塊生成的;在另一實施例中,哈希值是從SU塊 生成的,其中SU塊是S塊的未壓縮版本。當轉(zhuǎn)換器41從源系統(tǒng)11接收CQ哈希值時,轉(zhuǎn)換 器41進行檢查以確定CQ哈希值是否匹配表43中的S哈希值。如果存在匹配,那么轉(zhuǎn)換器 41將關(guān)聯(lián)的SBID 45返回到編碼器21。再這種情況下,從其生成了匹配CQ哈希值的塊與 標準塊相同。如果進入的CQ哈希值沒有匹配表43中的S哈希值條目,那么轉(zhuǎn)換器41向編 碼器21返回"未命中"指示,代表從其生成了 CQ哈希值的塊不匹配任何標準塊的情形。方 便的是,諸如SBID = 0的SBID值可以預留用做"未命中"指示。編碼器21在格式文件23 中存儲每個返回的SBID 45。編碼器21還在格式文件23中存儲發(fā)生SBID未命中的塊的壓 縮版本。 圖2更詳細地描述了格式文件23。格式文件23的主體被C塊所消耗,其中C塊是
B塊的壓縮版本,而B塊是由編碼器21對原始文件19進行劃分而得到的。由于C塊是經(jīng)壓
縮的,并且尺寸會變化,因此對于每個存儲在格式文件23中的C塊,相應的C塊長度51在
格式文件23中進行規(guī)定。在另一實施例中,壓縮塊的尺寸在塊自身中進行規(guī)定。 并非所有C塊都包括在格式文件23中。與C哈希值而非CQ哈希值相關(guān)聯(lián)的C塊
以及匹配S哈希值的C塊未被包括在格式文件23中。然而,所有C塊都在C塊表53中描
述,其壓縮拷貝55被包括在格式文件23中。此外,格式文件23規(guī)定表53的實際(未壓
縮)塊表尺寸57、壓縮C塊表55的尺寸58、以及壓縮C塊表55的偏移位置59。 每個B塊被分配文件塊標識符或"FBID" B01-B99 (為說明目的,示出的FBID的范
圍在B01-B99,盡管在實踐中,將需要更大的FBID值來處理虛擬機圖像文件數(shù)以百萬計的B
塊)。這些FBID還被用做關(guān)鍵字字段以標識C塊表53中的相應條目。與表53中的每個FBID相關(guān)聯(lián)的是相應的位置類型和相應的位置值。三種類型的位置被區(qū)分。SBID類型位 置由SBID定義,偏移類型位置由格式文件23內(nèi)的偏移定義,并且引用(reference)類型位 置由對FBID的引用定義的。在一個實施例中,對于與SBID相關(guān)聯(lián)的FBID,解碼器27將把 SBID傳輸?shù)絊BID服務器系統(tǒng)15,并且使用返回的S塊34來生成復制文件17。對于與偏移 相關(guān)聯(lián)的FBID,解碼器27將使用格式文件23中處于該偏移處的C塊來生成復制文件17。
對于與引用值相關(guān)聯(lián)的FBID,引用值指的是不同的FBID,例如與SBID類型位置相 關(guān)聯(lián)的FBID或者與偏移類型位置相關(guān)聯(lián)的FBID。對于對SBID類型位置的間接引用的示 例,在圖2中,F(xiàn)BID B03具有對FBID BOl的引用類型位置引用,其中FBID BOl具有對SBID =10的SBID類型引用。解碼器27將與SBID = 10相關(guān)聯(lián)的S塊(或那個S塊的解壓縮 版本)與FBID B03相關(guān)聯(lián)以生成復制文件17。對于對偏移類型位置的間接引用的示例, FBIDB04與引用類型位置B02相關(guān)聯(lián)。解碼器27將FBID B04與FBID B02所指的偏移位置 處的C塊相關(guān)聯(lián)。 圖3中更詳細描述了編碼器21。編碼器21包括分塊器(chunker)61。分塊器61 用于將原始虛擬機圖像文件19分成包括標準尺寸的B塊63在內(nèi)的未壓縮B塊。B塊的尺 寸(本圖示例子中是4kB)是更可能匹配的較小尺寸和更難于管理的較大尺寸之間的折衷。 在其他實施例中,基于系統(tǒng)性能的優(yōu)化可以為B塊分配不同的尺寸,并且對于不同的塊尺 寸可以不同。根據(jù)B塊在原始文件19中的位置,每個B塊被分配FBID B01-B99。
編碼器21的塊壓縮器54壓縮B塊63以生成壓縮的"C塊"65。每個C塊與源B 塊的FBID相關(guān)聯(lián)。通常,B塊在其能夠被壓縮的程度方面有所不同。在一個實施例中,C塊 具有不同的尺寸。 編碼器21的哈希值生成器71生成哈希值,即C哈希值69。每個FBID因此具有對 應的C哈希值。在圖示的實施例中,C哈希值是直接從C塊生成的,因此是間接從B塊生成 的。在另一實施例中,B哈希值是直接從B塊生成的。在后一個實施例中,代表標準塊的哈 希值是從那些塊的未壓縮版本生成的。 哈希值生成器71使用生成256位哈希值的SHA-2算法,又被稱為"指紋"、"簽名" 和"文摘",因此與4kB值形成對照,比較是在32字節(jié)值之間進行的。具有不同哈希值的兩 個塊必定不同。SHA-2哈希值是抗沖突的(collision resistant),因此不太可能具有相同 哈希值的兩個塊會不同。為了防止錯配的任何可能,可以使用整個塊的逐位比較來確認哈 希值的比較所指示的匹配。SHA-2哈希值還具有與安全性相關(guān)的加密屬性,這使得很難從其 哈希值確定塊。另一實施例使用其他哈希算法,例如SHA-1和MD5。 編碼器21的哈希值管理器75處理C哈希值73。在圖示的實施例中,C哈希值被 順序處理。另一實施例以并行方式處理哈希值的組以提高性能。對于每個C哈希值,哈希 值管理器75確定其是否匹配哈希值表79中的CQ哈希值77之一。對于將被處理的第一 C 哈希值,哈希值表79為空,從而發(fā)生未命中。如果發(fā)生未命中,哈希值管理器75將不匹配 的C哈希值的壓縮查詢CQ哈希值拷貝傳輸?shù)絊BID服務器系統(tǒng)15。在圖3中,該功能由門 81表示,其中門81由未命中指示使能,并且由"非未命中"或"命中"指示禁用。并且,哈希 值管理器75將CQ哈希值輸入哈希值表79,將其與源C哈希值的FBID相關(guān)聯(lián)。在第一 C哈 希值的情形中,該FBID是BOl 。 對于哈希值管理器75處理的第二和后續(xù)C哈希值,命中或未命中是可能的。如上所述,對于未命中的情形,CQ哈希值被傳輸并且對應的條目被添加到哈希值表79。對于命 中的情形,沒有CQ哈希值被傳輸或者被輸入到哈希值表79。非CQ C哈希值這里被稱為"壓 縮引用哈希值"或"CR哈希值"。編碼器21的C塊表生成器81將匹配CQ哈希值的FBID與 C塊表53中的CR哈希值條目的FBID相關(guān)聯(lián)。 當編碼器21將CQ哈希值傳輸?shù)絊BID服務器系統(tǒng)15時,將返回正的SBID或者 "未命中"指示(SBID = 0)。對于返回正的SBID的情形,認為關(guān)聯(lián)的CQ塊與相應的S塊相 同。因此,C塊表發(fā)生器81將SBID與C塊表53中處理的CQ哈希值的FBID相關(guān)聯(lián)。
對于返回未命中指示(SBID = 0)的情形,關(guān)聯(lián)的C塊沒有匹配S塊并且不能由 SBID表示。因此,編碼器21的格式生成器83在格式文件23內(nèi)的相應偏移位置處(例如, 偏移位置Q02)包括格式文件23中不匹配的C塊。C塊表生成器81隨后將該偏移位置與被 處理的CQ哈希值的FBID相關(guān)聯(lián)。由于壓縮文件具有不同的尺寸,格式生成器83將每個非 標準CQ塊與長度規(guī)范51 (圖2)相關(guān)聯(lián),從而格式文件23中下一項目的開始位置可以被容 易地計算。 —旦所有FBID均被處理,則編碼器21的表壓縮器85壓縮C塊表53以產(chǎn)生壓縮C 塊表55 (圖2)。格式生成器83隨后將壓縮C塊表55連同用于壓縮C塊表55的實際(未 壓縮)尺寸規(guī)范57、壓縮表尺寸規(guī)范58以及偏移位置規(guī)范59 —起插入格式文件23中。所 得的格式文件23隨后被從源系統(tǒng)11傳送到目標系統(tǒng)13,其在這里被稱為格式文件23。
解碼器27包括C塊表擴展器91, C塊表擴展器91用于擴展格式文件的壓縮C塊 表55以在目標系統(tǒng)13上產(chǎn)生C塊表92,該C塊表92是源系統(tǒng)11上的C塊表53的復制 件。解碼器27的C塊表解析器93順序處理表條目。對于與SBID相關(guān)聯(lián)的FBID,解析器 93利用SBID服務器系統(tǒng)15來交換SBID以得到其所代表的S塊。返回的S塊由塊擴展器 94擴展以產(chǎn)生"解壓縮塊"或"D塊"95。解碼器27的文件匯編器96將D塊插入復制文件 17中。 對于與格式文件偏移相關(guān)聯(lián)的FBID,表解析器93從格式文件23提取關(guān)聯(lián)C塊,并 且將其提供給塊擴展器94。塊擴展器94生成解壓縮D塊,其中所述解壓縮D塊被文件匯編 器96插入到復制文件17中。對于與先前處理的FBID相關(guān)聯(lián)的FBID,解析器93將先前處 理的FBID的標識傳送到文件匯編器96。文件匯編器96隨后將關(guān)聯(lián)D塊的拷貝插入到與當 前處理的FBID相關(guān)聯(lián)的文件位置中。 圖5中以流程圖的方式示出了本發(fā)明的編碼-傳送-解碼方法MEl。步驟S1包括 在源系統(tǒng)上對虛擬機圖像文件進行編碼以產(chǎn)生包括SBID的格式文件。步驟S2包括將格式 文件從源系統(tǒng)通過網(wǎng)絡(luò)傳送到目標系統(tǒng)。步驟S3包括對格式文件進行解碼以產(chǎn)生與原始 虛擬機圖像文件19相同的復制虛擬機圖像文件17。 圖6中以流程圖的方式更詳細地示出了編碼步驟S1。在步驟S11,分塊器61將原 始文件19劃分成未壓縮的B塊。在圖示的實施例中,源系統(tǒng)11上的文件系統(tǒng)將原始文件 19存儲為4kB的塊,并且這些預先存在的塊變成B塊。在另一實施例中,現(xiàn)有塊劃分被忽 略并且這個劃分步驟S11創(chuàng)建新塊。在任何一種情形中,B塊可以被分配相應的順序FBID B01-B99。 在步驟S12, B塊被壓縮以產(chǎn)生相應的壓縮C塊。在另一實施例中,原始文件被存 儲為一組壓縮塊,因為沒有使用單獨的塊壓縮步驟。
在步驟S13,為B塊版本之一進行哈希運算。在圖示的實施例中,從C塊計算C哈 希值。在另一些實施例中,哈希值是直接從預壓縮或未壓縮的B塊生成的。每個C哈希值 與關(guān)聯(lián)于B塊的FBID相關(guān)聯(lián),其中C哈希值從所述B塊直接或間接生成。
從步驟S14開始,操作在邏輯上由FBID安排。在圖示的實施例中,塊和哈希值以 他們FBID的順序被處理,例如,具有FBID BOl的C哈希值在具有FBID B02的C哈希值之 前被處理。在另一實施例中,C哈希值被成組布置,并且每個組內(nèi)的哈希值被并行處理。在 這些并行實施例中的一些實施例中,采取措施從而盡管是對哈希值的并行處理也能獲得與 順序處理相關(guān)聯(lián)的排序效果。 在步驟S14,確定當前處理的C哈希值是否匹配先前處理的C哈希值。在圖示的實 施例中,通過將當前哈希值輸入哈希值表79(其初始為空)作出該確定。因此,對于與FBID BOl相關(guān)聯(lián)的第一 C哈希值,找不到匹配,其因而被識別為CQ哈希值。當找不到匹配的時 候,在步驟S15向表79添加新條目,從而將FBID BOl與當前CQ哈希值相關(guān)聯(lián)的條目被加 入表79。并且,在步驟S16,非匹配的CQ哈希值被傳輸?shù)絊BID服務器系統(tǒng)15。
在步驟S17,服務器系統(tǒng)15確定接收到的CQ哈希值是否匹配S哈希值至SBID表 43中的S哈希值。在與FBID BOl相關(guān)聯(lián)的CQ哈希值的情形中,找到與S哈希值的匹配。 這意味著與FBID BOl相關(guān)聯(lián)的B塊匹配標準SU塊。從而,目標系統(tǒng)13將能夠從SBID服 務器系統(tǒng)15獲取S塊,而非從源系統(tǒng)11獲取C塊。在圖示的實施例中,標準塊以壓縮的形 式存儲,因此實際匹配是在C塊和S塊之間的。 在步驟S18,響應于S哈希值匹配,SBID服務器系統(tǒng)15將SBID返回到源系統(tǒng)11。 在步驟S19,返回的SBID與塊表53中的匹配CQ哈希值的FBID相關(guān)聯(lián)。
如果在步驟S17,當前CQ哈希值不匹配S哈希值,那么在步驟S20處SBID服務器 15向源系統(tǒng)ll返回"未命中"指示。在圖示的實施例中,SBID值為零被預留作為未命中指 示。在步驟S21,當前C塊被寫入格式文件23中的偏移位置。在步驟S22,偏移位置與塊表 53中的當前FBID相關(guān)聯(lián)。因此,由于與FBID B02相關(guān)聯(lián)的CQ哈希值沒有匹配S哈希值, 所以格式文件23中的關(guān)聯(lián)CQ塊的偏移值與塊表53中的當前FBID相關(guān)聯(lián)。
在步驟S14,只有當前C哈希值沒能匹配哈希值表79中的條目時,CQ哈希值才從 當前C哈希值生成。如果當前C哈希值匹配表79中的哈希值,那么當前C哈希值與先前處 理的C哈希值相同。假定上,對應的文件塊也匹配。因此,在步驟S23在塊表79中作出對 與先前處理的CQ哈希值相對應的塊的引用。換句話說,先前處理的CQ哈希值的FBID的引 用類型條目與表79中的當前FBID相關(guān)聯(lián)。 例如,具有FBID B03的CR哈希值匹配哈希值表79中與FBID B01相關(guān)聯(lián)的CQ哈 希值。從而,與FBID B01相關(guān)聯(lián)的SBID間接與塊表53中的FBID B03相關(guān)聯(lián)。對于另一 示例,具有FBID B04的CR哈希值匹配哈希值表79中與FBID B02相關(guān)聯(lián)的CQ哈希值。從 而,與FBID B02相關(guān)聯(lián)的C塊將憑借塊表53而間接與FBID B04相關(guān)聯(lián)。 一旦所有C哈希 值被處理(步驟S14-S23),則在步驟S24處塊表53被壓縮以產(chǎn)生壓縮塊表55,壓縮塊表55 被插入格式文件23。在步驟S2(圖5)格式文件23隨后被傳送到目標系統(tǒng)13。
圖7中以流程圖的方式詳細描述了解碼步驟S3。在步驟S31,格式文件23中的壓 縮C塊表55被解壓縮以產(chǎn)生C塊表92,其是C塊表53的復制件。在一個實施例中,C塊表 53存儲格式中存儲的C塊的FBID、 SBID和偏移。在步驟S32,解析器93以FBID的順序解析C塊表92。對C塊表條目的進一步處理取決于條目類型,如步驟S33處所確定的那樣。
對于SBID類型條目的情形,在步驟S34處交換SBID以得到S塊。特別地,目標系 統(tǒng)13將SBID傳輸?shù)絊BID服務器系統(tǒng)15, SBID服務器系統(tǒng)15返回S塊以與當前FBID相 關(guān)聯(lián)。該S塊在步驟S35處被解壓縮以產(chǎn)生解壓縮"D塊"。該D塊在步驟S36處被插入復 制虛擬機圖像文件。 對于偏移條目的情形,在步驟S37處對格式文件23中的引用偏移位置處的C塊進 行解壓縮以產(chǎn)生D塊,D塊被插入復制文件17中。對于引用條目的情形,作出先前解壓縮 的D塊的拷貝;該拷貝隨后被插入復制文件17中。對于間接文件的情形,這可以簡單意味 著復制塊指針被插入文件的元數(shù)據(jù)中。 一旦表92的所有條目已被處理,那么復制虛擬機圖 像文件17完成。 第二網(wǎng)絡(luò)系統(tǒng)AP2包括源系統(tǒng)201、目標系統(tǒng)203以及分布式SBID服務器系統(tǒng) 205。源系統(tǒng)201包括用于從原始文件211生成格式209的編碼器207。目標系統(tǒng)203包括 用于從格式209生成與原始文件211相同的復制文件215的解碼器213,其中格式文件209 是從原始系統(tǒng)201傳送到目標系統(tǒng)203的格式209的拷貝。SBID服務器系統(tǒng)205包括兩個 SBID服務器221和223, SBID服務器221和223實質(zhì)上彼此相同,并且與網(wǎng)絡(luò)系統(tǒng)API的 SBID服務器系統(tǒng)15實質(zhì)上相同。 網(wǎng)絡(luò)系統(tǒng)AP2提供源系統(tǒng)201和目標系統(tǒng)203之間相對慢的因特網(wǎng)連接225。格 式文件209正是通過這個因特網(wǎng)連接225而從源系統(tǒng)201傳送到目標系統(tǒng)203以產(chǎn)生格式 文件209。網(wǎng)絡(luò)系統(tǒng)AP2還提供1)在編碼器207和SBID服務器221之間相對快的局域網(wǎng) (LAN)連接227 ;以及2)在解碼器213和SBID服務器223之間相對快的LAN連接229。這 意味著編碼器207的SBID請求將被快速滿足,并且更為重要的是,解碼器213的S塊請求 被快速滿足。因此,系統(tǒng)AP2不僅將源系統(tǒng)201從必須傳送標準塊釋放出來,并且還提供了 比源系統(tǒng)201所能提供的更快的標準塊傳送。因此,與在系統(tǒng)AP1環(huán)境中相比,在系統(tǒng)AP2 環(huán)境中,圖6中的步驟S16-S18以及圖7中的步驟S34可以更高速執(zhí)行。
系統(tǒng)AP2還包括計算機可讀存儲介質(zhì)300形式的制品,其上編碼有在系統(tǒng)API或 AP2上實現(xiàn)方法ME1所需的計算機可執(zhí)行指令的所有數(shù)據(jù)和程序,包括編碼器、解碼器、轉(zhuǎn) 換器、原始文件、以及生成的復制文件和格式文件。 還可以通過讓源系統(tǒng)或目標系統(tǒng)或兩者記錄其系統(tǒng)上表示的標準塊而采用利用 本地化SBID服務器的策略。從而,當SBID返回源系統(tǒng)的時候,源系統(tǒng)可以維護將該SBID 映射到對應B塊的SBID表。類似地,當目標系統(tǒng)接收S塊時,其可以記錄用來獲取S塊的 SBID以及最終D塊的位置。下一次需要SBID或需要S塊的時候,可以檢查本地SBID表,并 且如果發(fā)生命中,那么將省略與SBID服務器系統(tǒng)的交換。 在一些實施例中使用了加密技術(shù)。例如,格式文件可以包括壓縮文件塊的加密版 本,并且SBID服務器系統(tǒng)可以存儲和/或傳輸標準塊的加密版本。文件哈希值可以從文件 塊的任何版本生成,并且標準哈希值可以從標準塊的任何版本生成。在一些實施例中,生成 標準哈希值的版本與返回到目標系統(tǒng)的S塊的版本不相同。從文件或標準塊的任何版本直 接生成的標準哈希值或文件被認為是從標準或文件塊(直接或間接)生成的。
如本領(lǐng)域普通技術(shù)人員將能理解的,并且如上面的說明書所解釋的,本發(fā)明提供 了多種替代性實施例。對所示實施例這樣或那樣的變化和修改可以由本發(fā)明提供,本發(fā)明的范圍由權(quán)利要求限定。 盡管為了理解的清晰已經(jīng)比較詳細地描述了本發(fā)明的一個或多個實施例,但是很 明顯在權(quán)利要求的范圍內(nèi)可以進行一些修改和改變。因此,所描述的實施例應被認為僅是 示例性的而非限制性的,權(quán)利要求的范圍不受這里給出的細節(jié)的限制,而是可以在權(quán)利要 求的范圍和等同物之內(nèi)進行修改。在權(quán)利要求中,元素和/或步驟并不暗示操作的任何特 定順序,除非在權(quán)利要求中有明確陳述。 此外,盡管所描述的虛擬化方法通常認為虛擬機呈現(xiàn)與特定硬件系統(tǒng)一致的接 口 ,但是本領(lǐng)域普通技術(shù)人員將意識到,所描述的方法可以結(jié)合并非直接對應于任何特定 硬件系統(tǒng)的虛擬化而使用??梢灶A想根據(jù)多種實施例被實現(xiàn)為主實施例、非主實施例或者 想要模糊二者區(qū)別的實施例的虛擬化系統(tǒng)。此外,多種虛擬化操作可以全部或部分以硬件 實現(xiàn)。例如,硬件實現(xiàn)可以使用查找表用于修改存儲裝置訪問請求,進而保護非盤數(shù)據(jù)。
許多變形、修改、添加和改進都是可能的,而與虛擬化的級別無關(guān)。虛擬化軟件因 此可以包括主機、控制臺或執(zhí)行虛擬化功能的客戶操作系統(tǒng)的組件。多個實例可以用于這 里描述為單個實例的組件、操作或結(jié)構(gòu)。最后,多個組件、操作和數(shù)據(jù)存儲之間的邊界某種 意義上是任意的,并且特定操作在具體示例性配置的上下文中示出。可以預想其它功能分 配并且也落在本發(fā)明的范圍之內(nèi)。 一般而言,在示例性配置中呈現(xiàn)為分立組件的結(jié)構(gòu)和功 能可以被實現(xiàn)為組合結(jié)構(gòu)或組件。類似地,呈現(xiàn)為單個組件的結(jié)構(gòu)和功能可以被實現(xiàn)為分 立組件。這些以及其它變形、修改、添加和改進可以落在權(quán)利要求的范圍之內(nèi)。
權(quán)利要求
一種系統(tǒng),包括SBID至S塊轉(zhuǎn)換器,用于響應于通過網(wǎng)絡(luò)從目標系統(tǒng)接收的標準塊標識符,通過所述網(wǎng)絡(luò)向所述目標系統(tǒng)返回相應標準數(shù)據(jù)塊的版本,所述SBID至塊轉(zhuǎn)換器存儲多個標準數(shù)據(jù)塊的版本以及從所述標準數(shù)據(jù)塊的相應一種生成的標準哈希值,所述SBID至塊轉(zhuǎn)換器將相應的標準塊標識符與所述標準數(shù)據(jù)塊的相應一種相關(guān)聯(lián);以及哈希值至SBID轉(zhuǎn)換器,用于響應于所述哈希值至SBID轉(zhuǎn)換器從所述源系統(tǒng)接收到與從所述標準數(shù)據(jù)塊的第一種生成的第一標準哈希值相匹配的第一文件哈希值,通過所述網(wǎng)絡(luò)向源系統(tǒng)返回用于所述第一標準數(shù)據(jù)塊的第一標準塊標識符。
2. 如權(quán)利要求1所述的系統(tǒng),其中所述哈希值至SBID轉(zhuǎn)換器響應于從所述源系統(tǒng)接收 到與所述標準數(shù)據(jù)塊的任何一種不同的第二文件哈希值,返回所述第二文件哈希值不對應 于所述標準數(shù)據(jù)塊的任何一種的指示。
3. 如權(quán)利要求2所述的系統(tǒng),進一步包括所述源系統(tǒng)和所述目標系統(tǒng),所述源系統(tǒng)包 括用于通過編碼原始文件而生成格式文件的編碼器,所述目標系統(tǒng)包括用于通過解碼所述 格式文件而生成所述原始文件的復制件的解碼器,所述格式文件包括所述原始文件的第一 文件塊的版本以及所述第一標準塊標識符。
4. 如權(quán)利要求3所述的系統(tǒng),其中所述源系統(tǒng)包括用于將所述原始文件劃分成文件塊 的分塊器、用于從所述文件塊生成文件哈希值的哈希值生成器、以及用于將所述文件哈希 值與關(guān)聯(lián)于所述文件塊的相應文件塊標識符相關(guān)聯(lián)的哈希值表,所述編碼器在當前處理的文件哈希值匹配先前處理的文件哈希值的情況下,在所述格式文件中將 用于所述當前處理的文件塊的文件塊標識符與用于所述先前處理的文件哈希值的文件塊 標識符相關(guān)聯(lián),以及在當前處理的文件哈希值不匹配先前處理的文件哈希值的情況下,在所述哈希值表中 添加與所述當前處理的文件哈希值相關(guān)聯(lián)的條目并且在所述哈希值表中添加其文件塊標 識符,并且將所述當前處理的文件哈希值傳輸?shù)剿龉V抵罸ID轉(zhuǎn)換器。
5. 如權(quán)利要求4所述的系統(tǒng),其中所述第一輸入哈希值沒有被傳輸?shù)剿龉V抵?SBID轉(zhuǎn)換器。
6. 如權(quán)利要求1所述的系統(tǒng),其中所述原始文件是虛擬機圖像文件。
7. —種方法,包括在源系統(tǒng)上將原始文件轉(zhuǎn)換為原始塊; 從所述原始塊生成文件哈希值;將所述文件哈希值中的一些通過網(wǎng)絡(luò)傳輸?shù)絊BID服務器系統(tǒng);區(qū)分匹配從標準塊生成的標準哈希值的文件哈希值以及不匹配所述標準哈希值的那 些文件哈希值;對于匹配標準哈希值的所述文件哈希值的每一個,將相應的標準塊標識符返回到所述 源系統(tǒng);以及生成包括所述標準塊標識符的格式文件; 通過所述網(wǎng)絡(luò)將所述格式文件傳送到目標系統(tǒng)。
8. 如權(quán)利要求7所述的方法,進一步包括對于不匹配標準哈希值的所述文件哈希值的每一個,將所述文件哈希值不匹配標準哈希值的指示返回到所述源系統(tǒng);以及對于不匹配標準哈希值的所述文件哈希值的每一個,在所述格式文件中包括從中生成 所述文件哈希值的原始塊的壓縮版本,此包括過程不適用于匹配標準哈希值的任何文件哈 希值。
9. 如權(quán)利要求8所述的方法,進一步包括確定當前處理的文件哈希值是否匹配先前處理的文件哈希值;以及 如果匹配,則在所述格式文件中將用于所述當前處理的文件哈希值的文件塊標識符與用于所述先前處理的文件哈希值的文件塊標識符相關(guān)聯(lián),并且不將所述當前處理的文件哈希值傳輸?shù)剿鯯BID服務器系統(tǒng),以及如果不匹配,則將所述當前處理的文件哈希值傳輸?shù)剿鯯BID服務器系統(tǒng)。
10. 如權(quán)利要求9所述的方法,進一步包括對所述格式文件解碼,以在所述目標系統(tǒng)上 產(chǎn)生所述原始文件的復制文件。
11. 如權(quán)利要求IO所述的方法,其中所述解碼包括將所述格式文件中的SBID從所述目標系統(tǒng)通過所述網(wǎng)絡(luò)傳輸?shù)剿鯯BID服務器系 統(tǒng);以及將所述標準塊的版本從所述SBID服務器系統(tǒng)通過所述網(wǎng)絡(luò)返回到所述目標系統(tǒng)。
12. 如權(quán)利要求7所述的方法,其中所述原始文件是虛擬機圖像文件。
13. —種包括計算機可讀存儲介質(zhì)的制品,所述就計算機可讀存儲介質(zhì)編碼有計算機 可執(zhí)行指令的程序和標準數(shù)據(jù)塊,所述程序包括以下步驟將原始文件劃分成未壓縮的文件塊; 壓縮所述未壓縮的文件塊以產(chǎn)生壓縮文件塊; 從所述壓縮文件塊生成文件哈希值;對于所述文件哈希值中的每個,當其變成當前處理的哈希值時,確定它是否匹配在 關(guān)聯(lián)先前處理的文件哈希值與文件塊標識符的表中的條目中表示的先前處理的文件哈希 值;在當前處理的文件哈希值匹配先前處理的文件哈希值的情況下,將用于當前處理的文 件哈希值的文件塊標識符與用于匹配的先前處理的文件哈希值的文件塊標識符相關(guān)聯(lián),以 及在當前處理的文件哈希值不匹配先前處理的文件哈希值的情況下,將當前處理的文件 哈希值傳輸?shù)絊BID服務器系統(tǒng),并且如果從所述SBID服務器系統(tǒng)返回了指示該哈希值對 應于標準塊的SBID,則將該SBID包括在所述格式文件中。
14. 如權(quán)利要求13所述的制品,其中如果所述SBID系統(tǒng)返回所述當前處理的文件哈希 值沒有對應于標準塊的指示,則在所述格式文件中包括從中生成所述當前處理的哈希值的 壓縮文件塊的拷貝。
15. 如權(quán)利要求13所述的制品,其中所述程序進一步包括以下步驟將所述格式文件從源系統(tǒng)傳輸?shù)侥繕讼到y(tǒng);以及 解碼所述格式文件以產(chǎn)生所述原始文件的復制件。
16. 如權(quán)利要求15所述的制品,其中所述解碼包括將所述格式文件中的SBID傳輸?shù)剿?述SBID服務器系統(tǒng)以及在所述復制文件中包括作為交換接收到的標準塊的版本。
17. 如權(quán)利要求16所述的制品,其中所述解碼包括對所述格式文件中的所述壓縮塊的 所述拷貝進行解壓縮以及在所述復制文件中包括所得的擴展塊。
18. 如權(quán)利要求13所述的制品,其中所述原始文件是虛擬機圖像文件。
全文摘要
與從源系統(tǒng)向目標系統(tǒng)傳送諸如虛擬機圖像文件的大原始文件不同,原始文件被編碼以定義被傳送的格式文件。格式隨后被解碼以在目標系統(tǒng)上產(chǎn)生原始文件的復制件。編碼涉及標識出原始文件中的標準塊,并且在格式中包括用于標準塊的標準塊標識符以代替原始塊。解碼涉及與標準塊標識符服務器系統(tǒng)進行交換,標準塊標識符服務器系統(tǒng)響應于接收到的標準塊標識符而提供標準塊。
文檔編號H04L29/08GK101710324SQ20091015745
公開日2010年5月19日 申請日期2009年7月30日 優(yōu)先權(quán)日2008年9月4日
發(fā)明者加內(nèi)特·蒂莫西, 沙阿·米拉, 阿斯蒂德·馬修, 阿瑪拉辛哈·薩滿P 申請人:威睿公司