在網(wǎng)絡(luò)上傳輸文件系統(tǒng)變化的制作方法
【專利摘要】公開了在網(wǎng)絡(luò)上傳輸文件系統(tǒng)變化。在客戶機(jī)系統(tǒng)處計(jì)算數(shù)據(jù)的散列,其包括目錄要素的組塊,目錄要素的組塊包括按規(guī)范順序分類的一組要素中的一個(gè)或多個(gè)連續(xù)的目錄要素。在至少部分地基于計(jì)算的散列而確定存儲(chǔ)在遠(yuǎn)程服務(wù)器上的對(duì)應(yīng)的目錄要素與存儲(chǔ)在客戶機(jī)系統(tǒng)上的、包括組塊的目錄要素不同的情況下,將包括組塊的一個(gè)或多個(gè)目錄要素發(fā)送到遠(yuǎn)程服務(wù)器。
【專利說(shuō)明】在網(wǎng)絡(luò)上傳輸文件系統(tǒng)變化
【背景技術(shù)】
[0001]跨過(guò)網(wǎng)絡(luò)使遠(yuǎn)程(“服務(wù)器”)文件系統(tǒng)與本地(“客戶機(jī)”)文件系統(tǒng)同步的技術(shù)是已知的。遠(yuǎn)程文件系統(tǒng)可為本地文件系統(tǒng)的近拷貝;例如,它可表示本地文件系統(tǒng)的近期備份。為了使遠(yuǎn)程文件系統(tǒng)與本地文件系統(tǒng)同步,例如為了反映本地文件系統(tǒng)自從上一次同步以來(lái)的任何變化,更新遠(yuǎn)程文件系統(tǒng)的結(jié)構(gòu)、命名空間和元數(shù)據(jù)是必要的。
[0002]典型的“完全”同步方法使用最大網(wǎng)絡(luò)帶寬但不使用額外的本地存儲(chǔ)來(lái)使文件系統(tǒng)的結(jié)構(gòu)、命名空間和元數(shù)據(jù)同步。比較本地文件系統(tǒng)上的每個(gè)文件的修改時(shí)間(“mtime”)和大小與服務(wù)器上的文件的mtime和大小。如果文件不存在,或者文件的mtime和/或大小與服務(wù)器上的不同,則客戶機(jī)在服務(wù)器上創(chuàng)建文件,并且使文件內(nèi)容同步??蛻魴C(jī)還更新與文件相關(guān)聯(lián)的任何其它元數(shù)據(jù)(用戶ID( “瓜0”)、群組10( “610”)、文件許可等)。月艮務(wù)器刪除不是由客戶機(jī)規(guī)定的任何文件。流行工具“rsync”使用這種方法。
[0003]典型的“遞增”同步方法使用較少網(wǎng)絡(luò)帶寬,但使用一些本地存儲(chǔ)。在完全同步之后,客戶機(jī)將當(dāng)前文件系統(tǒng)結(jié)構(gòu)、命名空間和元數(shù)據(jù)存儲(chǔ)在“編目”(典型地?cái)?shù)據(jù)庫(kù))中。在遞增同步期間,對(duì)于每個(gè)文件,客戶機(jī)首先詢問(wèn)編目數(shù)據(jù)庫(kù)。如果在編目中未表示文件,或者文件的mtime和/或大小不同,則客戶機(jī)在服務(wù)器上創(chuàng)建文件,并且使文件內(nèi)容同步。如果在編目中表示了文件,而且文件的mtime和大小相同,則假設(shè)文件的內(nèi)容不變,而如果與編目中表示的不同,則客戶機(jī)只更新與文件相關(guān)聯(lián)的任何其它元數(shù)據(jù)。客戶機(jī)在服務(wù)器上刪除在編目中有表示但在本地文件系統(tǒng)上不再存在的任何文件。
[0004]另一種遞增方法使用大致相同量的網(wǎng)絡(luò)帶寬但(通常)使用較少本地存儲(chǔ)。自從上一次備份以來(lái)對(duì)每個(gè)文件的每個(gè)操作都記錄在文件系統(tǒng)“日志”中。為了使遠(yuǎn)程文件系統(tǒng)同步,日志在實(shí)質(zhì)上如記錄那樣回放。這消除對(duì)于存儲(chǔ)每個(gè)文件的元數(shù)據(jù)的需要(因?yàn)榇蟛糠治募牟桓淖?,但它更復(fù)雜且易于有同步錯(cuò)誤。
【專利附圖】
【附圖說(shuō)明】
[0005]在以下詳細(xì)描述和附圖中公開本發(fā)明的多種實(shí)施例。
[0006]圖1是示出數(shù)據(jù)存儲(chǔ)系統(tǒng)的實(shí)施例的框圖。
[0007]圖2是示出數(shù)據(jù)存儲(chǔ)系統(tǒng)的實(shí)施例的框圖。
[0008]圖3是示出用以使文件系統(tǒng)信息同步的過(guò)程的實(shí)施例的流程圖。
[0009]圖4是示出用于使文件系統(tǒng)信息同步的過(guò)程的實(shí)施例的流程圖。
[0010]圖5是示出用于使用目錄要素的組塊來(lái)使目錄同步的過(guò)程的實(shí)施例的流程圖。
[0011]圖6是示出用于使目錄服務(wù)要素的組塊的區(qū)間同步的過(guò)程的實(shí)施例的流程圖。
[0012]圖7是示出用于使目錄服務(wù)要素的組塊同步的過(guò)程的實(shí)施例的流程圖。
[0013]圖8是示出用于基于目錄信息來(lái)計(jì)算和比較散列值的過(guò)程的實(shí)施例的流程圖。
[0014]圖9是示出用以使包括整個(gè)目錄的區(qū)間同步的過(guò)程的實(shí)施例的流程圖。
[0015]圖10是示出計(jì)算機(jī)系統(tǒng)的實(shí)施例的框圖?!揪唧w實(shí)施方式】
[0016]可用許多方式實(shí)施本發(fā)明,包括將本發(fā)明實(shí)施為過(guò)程、設(shè)備、系統(tǒng)、物的組合、包含在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的計(jì)算機(jī)程序產(chǎn)品,以及/或者處理器,諸如配置成執(zhí)行存儲(chǔ)在耦接到處理器上的存儲(chǔ)器上的以及/或者由該存儲(chǔ)器提供的指令的處理器。在本說(shuō)明書中,這些實(shí)現(xiàn)或者本發(fā)明可采取的任何其它形式可被稱為技術(shù)。一般而言,在本發(fā)明的范圍內(nèi)可更改公開的過(guò)程的步驟的順序。除非另有說(shuō)明,否則諸如處理器或存儲(chǔ)器的、被描述為配置成執(zhí)行任務(wù)的構(gòu)件可被實(shí)現(xiàn)臨時(shí)配置成在給定時(shí)間執(zhí)行任務(wù)的一般構(gòu)件,或者制造成執(zhí)行任務(wù)的特定構(gòu)件。如本文所用,術(shù)語(yǔ)“處理器”指的是配置成處理數(shù)據(jù)(諸如計(jì)算機(jī)程序指令)的一個(gè)或多個(gè)裝置、電路和/或處理核。
[0017]在下面與附圖一起提供本發(fā)明的一個(gè)或多個(gè)實(shí)施例的詳細(xì)描述,附圖示出本發(fā)明的原理。與這樣的實(shí)施例結(jié)合起來(lái)描述本發(fā)明,但本發(fā)明不限于任何實(shí)施例。本發(fā)明的范圍僅由權(quán)利要求限制,而且本發(fā)明包括許多備選方案、修改和等效物。在以下描述中闡述了許多具體細(xì)節(jié),以便提供本發(fā)明的詳盡理解。提供這些細(xì)節(jié)是為示例的目的,而且在有或沒(méi)有這些具體細(xì)節(jié)中的一些或全部的情況下,可根據(jù)權(quán)利要求來(lái)實(shí)踐本發(fā)明。為了清楚的目的,未詳細(xì)描述與本發(fā)明有關(guān)的【技術(shù)領(lǐng)域】中已知的技術(shù)材料,使得本發(fā)明不會(huì)不必要地模糊不清。
[0018]公開了跨過(guò)網(wǎng)絡(luò)傳輸文件系統(tǒng)變化??邕^(guò)網(wǎng)絡(luò)將本地文件系統(tǒng)從例如備份客戶機(jī)系統(tǒng)(其本身可為生產(chǎn)服務(wù)器,諸如文件服務(wù)器)復(fù)制到遠(yuǎn)程服務(wù)器。保持文件系統(tǒng)信息(例如目錄結(jié)構(gòu)和其它元數(shù)據(jù))的同步。在一些實(shí)施例中,在備份或其它客戶機(jī)處,為了使文件系統(tǒng)信息或其一部分同步,創(chuàng)建關(guān)于每個(gè)節(jié)點(diǎn)(例如,目錄中的每個(gè)文件)的元數(shù)據(jù)的規(guī)范表示,并且按規(guī)范順序(例如按文件ID)對(duì)產(chǎn)生的目錄(或其它)要素分類。將目錄要素的產(chǎn)生的分類列表分成組塊。使包括每個(gè)組塊的數(shù)據(jù)散列,并且比較結(jié)果與關(guān)于存儲(chǔ)在服務(wù)器上的對(duì)應(yīng)的目錄信息而確定的對(duì)應(yīng)的值。如果該信息不匹配,則將相關(guān)聯(lián)的目錄要素發(fā)送到服務(wù)器。如果信息匹配,則在一些實(shí)施例中,比較在組塊的區(qū)間上的散列與基于服務(wù)器處的對(duì)應(yīng)的文件系統(tǒng)信息而確定的對(duì)應(yīng)的值,以確保服務(wù)器不會(huì)仍然存儲(chǔ)剛好落到例如關(guān)于已經(jīng)在客戶機(jī)處刪除的節(jié)點(diǎn)或一定范圍的節(jié)點(diǎn)的組塊之間的廢棄信息。在一些實(shí)施例中,一旦確定組塊(或者在一些實(shí)施例中,區(qū)間)散列匹配,將值存儲(chǔ)在客戶機(jī)處的散列高速緩沖存儲(chǔ)器中,以避免不得不與之通信,以及在相關(guān)聯(lián)的目錄要素在同步之間保持不變的情況下,在服務(wù)器處使用處理循環(huán)。在一些實(shí)施例中,一旦確定包括整個(gè)目錄的組塊同步,則計(jì)算包括整個(gè)目錄的目錄要素的分類列表的散列,并且將其存儲(chǔ)在散列高速緩沖存儲(chǔ)器中,作為關(guān)于其中一些或甚至許多整個(gè)目錄在同步之間保持不變的常見情況的進(jìn)一步優(yōu)化。
[0019]圖1是示出數(shù)據(jù)存儲(chǔ)系統(tǒng)的實(shí)施例的框圖。在顯示的示例中,備份客戶機(jī)102通過(guò)連接104而連接到互聯(lián)網(wǎng)(或其它網(wǎng)絡(luò))106。配置成備份客戶機(jī)102上的文件系統(tǒng)數(shù)據(jù)(例如,文件和相關(guān)聯(lián)的文件系統(tǒng)結(jié)構(gòu)和其它元數(shù)據(jù))的備份服務(wù)器108也連接到互聯(lián)網(wǎng)(或其它網(wǎng)絡(luò))106。文件和文件系統(tǒng)信息通過(guò)互聯(lián)網(wǎng)(或其它網(wǎng)絡(luò))106從客戶機(jī)102發(fā)送到服務(wù)器108,以保持存儲(chǔ)在服務(wù)器108上的文件系統(tǒng)拷貝和客戶機(jī)102上的本地文件系統(tǒng)之間的同步。在這個(gè)示例中,顯示了單個(gè)客戶機(jī),但在多種實(shí)施例中,可通過(guò)網(wǎng)絡(luò)106將多個(gè)客戶機(jī)和/或文件系統(tǒng)復(fù)制到服務(wù)器108。在顯示的示例中,備份服務(wù)器108被表示為單個(gè)框,但在多種實(shí)施例中,服務(wù)器108可包括多個(gè)系統(tǒng),例如協(xié)調(diào)服務(wù)器,其通過(guò)網(wǎng)絡(luò)106而連接,或者以別的方式連接,例如通過(guò)獨(dú)立的網(wǎng)絡(luò)(諸如存儲(chǔ)區(qū)域網(wǎng)(SAN))連接到配置成存儲(chǔ)文件和/或其它復(fù)制的文件系統(tǒng)數(shù)據(jù)的一個(gè)或多個(gè)存儲(chǔ)節(jié)點(diǎn)上。
[0020]圖2是示出數(shù)據(jù)存儲(chǔ)系統(tǒng)的實(shí)施例的框圖。在顯示的示例中,跨過(guò)網(wǎng)絡(luò)將客戶機(jī)系統(tǒng)上的目錄202a復(fù)制到服務(wù)器,并且將由目錄202b表示的相關(guān)聯(lián)的文件系統(tǒng)信息發(fā)送到服務(wù)器,并且隨著在客戶機(jī)處對(duì)本地文件系統(tǒng)作出改變,如果有任何改變的話,與對(duì)應(yīng)的目錄信息202a保持同步。在顯示的示例中,目錄202a包括五個(gè)文件,由0_4標(biāo)示且分別標(biāo)記為文件A、B、C、E和F,如圖2中顯示的那樣。由目錄202b表示的、服務(wù)器處的對(duì)應(yīng)信息在這個(gè)示例中變得與目錄信息202a不同步。在目錄202b處,目錄信息指示目錄包括六個(gè)節(jié)點(diǎn),由圖2中的0-5標(biāo)示,并且被標(biāo)識(shí)為文件A、B、C、D、E和F。可產(chǎn)生圖2中顯示的狀態(tài)的示例為在同步之間從本地文件系統(tǒng)中刪除文件,諸如文件D。
[0021]在多種實(shí)施例中,與典型的遞增方法相比,本文描述的方法使用大致相同量的網(wǎng)絡(luò)帶寬,但使用更少本地存儲(chǔ)器,并且不像日志方法那樣易于出錯(cuò)。不是將每個(gè)文件的全部元數(shù)據(jù)存儲(chǔ)在編目中,此方法僅將〈文件路徑、mtime、大小 > 至〈文件ID>的映射存儲(chǔ)在“文件高速緩沖存儲(chǔ)器”中。像編目那樣,文件高速緩沖存儲(chǔ)器允許客戶機(jī)檢測(cè)自從上一次備份以來(lái)哪個(gè)文件不變。如果在文件高速緩沖存儲(chǔ)器中發(fā)現(xiàn)文件,則文件內(nèi)容在服務(wù)器上不變,并且僅需要更新元數(shù)據(jù)(例如WD、GID、許可等)。但是,為了最小化本地存儲(chǔ),元數(shù)據(jù)不存儲(chǔ)在文件高速緩沖存儲(chǔ)器中。相反,元數(shù)據(jù)只是假設(shè)為很少有變化,并且正好得到核實(shí)。
[0022]一旦要么在目錄中已經(jīng)創(chuàng)建(如果是新的)所有文件,要么已經(jīng)更新(如果有變化)所有文件,要么在文件高速緩沖存儲(chǔ)器(如果無(wú)變化)中已經(jīng)發(fā)現(xiàn)所有文件,則從文件系統(tǒng)中讀取它們的相關(guān)聯(lián)的元數(shù)據(jù)。每個(gè)文件的規(guī)范表示(“DIRELEM”)由其元數(shù)據(jù)形成。按文件ID對(duì)目錄中的DIRELEM的列表分類,并且將其分成組塊。然后使每個(gè)組塊“散列”(或“采指紋”),并且咨詢(consult) “散列高速緩沖存儲(chǔ)器”,以確定服務(wù)器上是否同樣存在由組塊表示的文件。
[0023]如果在散列高速緩沖存儲(chǔ)器中未發(fā)現(xiàn)組塊的散列,則不知道服務(wù)器上是否存在由組塊表示的文件。組塊的散列、由組塊表示的第一文件的偏移以及由組塊表示的文件的數(shù)量被發(fā)送到服務(wù)器供核實(shí)。服務(wù)器形成待同步的目錄中的每個(gè)文件的相同規(guī)范表示,而且還按文件ID對(duì)DIRELEM的列表分類。服務(wù)器以特定偏移按照DIRELEM計(jì)算散列,并且將其與客戶機(jī)提供的散列比較。如果散列相同,則不需要更新文件。如果散列不同,則客戶機(jī)發(fā)送特定組塊的DIRELEM,使得服務(wù)器可更新文件的元數(shù)據(jù),以及/或者刪除在由組塊表示的文件ID的區(qū)間內(nèi)不再存在的文件。然后客戶機(jī)將組塊的散列添加到散列高速緩沖存儲(chǔ)器。
[0024]如果在散列高速緩沖存儲(chǔ)器中發(fā)現(xiàn)組塊的散列,則肯定在服務(wù)器上存在由組塊表示的文件,但服務(wù)器仍然需要?jiǎng)h除存在于由組塊表示的文件和由前面的組塊(如果有的話)表示的那些之間的舊文件。因而,當(dāng)在散列高速緩沖存儲(chǔ)器中發(fā)現(xiàn)組塊的散列時(shí),組塊添加到“區(qū)間”,或者運(yùn)行全部都存在于服務(wù)器上的組塊的列表。如果在散列高速緩沖存儲(chǔ)器中未發(fā)現(xiàn)后面的組塊的散列,則區(qū)間在組塊之前與服務(wù)器同步。作為優(yōu)化,如果到達(dá)目錄的末尾,而且區(qū)間覆蓋目錄中的所有文件,則區(qū)間的散列可添加到散列高速緩沖存儲(chǔ)器(通常將僅添加組塊的散列),使得服務(wù)器根本不需要針對(duì)整個(gè)目錄在備份之間保持不變的普通情況進(jìn)行咨詢。
[0025]進(jìn)一步參照?qǐng)D2,在顯示的示例中,以相同的規(guī)范順序,S卩,基于顯示的單個(gè)字母的文件ID的A-F的字母數(shù)字順序,表示目錄202a和目錄202b中的文件的文件系統(tǒng)信息。在多種實(shí)施例中,客戶機(jī)202a將目錄要素流分成組塊。在顯示的示例中,目錄要素A、B、C、E、F已經(jīng)分為第一組塊AB和第二組塊CEF。在客戶機(jī)處計(jì)算包括第一組塊AB中的目錄要素的數(shù)據(jù)的散列。在一些實(shí)施例中,檢查客戶機(jī)處的散列高速緩沖存儲(chǔ)器,以確定相同組塊以前(例如在同步之前)是否確認(rèn)存儲(chǔ)于服務(wù)器處。如果在高速緩沖存儲(chǔ)器中發(fā)現(xiàn)散列,則客戶機(jī)處理下一個(gè)組塊。如果在散列高速緩沖存儲(chǔ)器中未發(fā)現(xiàn)散列(例如,因?yàn)槟夸浶畔⒆詮纳弦淮瓮揭詠?lái)已經(jīng)改變),或者在其中未使用散列高速緩沖存儲(chǔ)器的實(shí)施例中,則散列和標(biāo)識(shí)目錄要素的順序列表內(nèi)的組塊的位置的相關(guān)聯(lián)的偏移(例如在顯示的示例中,指示組塊所包含的范圍的偏移信息0-1)被發(fā)送到服務(wù)器。
[0026]在服務(wù)器處,如在客戶機(jī)處那樣,按相同的規(guī)范順序?qū)?duì)應(yīng)于存儲(chǔ)在服務(wù)器處的目錄的信息分類。服務(wù)器配置成:接收偏移和散列;計(jì)算存儲(chǔ)在服務(wù)器上的目錄要素的順序列表中的對(duì)應(yīng)的記錄的散列;以及對(duì)客戶機(jī)返回指示服務(wù)器處的計(jì)算是否與客戶機(jī)所發(fā)送的散列值匹配的結(jié)果。
[0027]在客戶機(jī)處,如果來(lái)自服務(wù)器的響應(yīng)指示散列匹配,則客戶機(jī)將散列添加到散列高速緩沖存儲(chǔ)器(如果存在),并且處理下一個(gè)組塊。如果來(lái)自服務(wù)器的響應(yīng)指示散列不匹配,則客戶機(jī)將包括組塊的目錄要素發(fā)送到服務(wù)器,并且將散列添加到散列高速緩沖存儲(chǔ)器(如果存在)。在一些實(shí)施例中,如果有的話,也使在散列高速緩沖存儲(chǔ)器中發(fā)現(xiàn)的連續(xù)的組塊的以前產(chǎn)生的區(qū)間同步,以檢測(cè)其中孤立要素或從本地文件系統(tǒng)中刪除的要素可保持在服務(wù)器上的文件系統(tǒng)信息中、但由于它們位于組塊之間而未被檢測(cè)到的任何情況。
[0028]在圖2中顯示的示例中,將在服務(wù)器處確定在客戶機(jī)處針對(duì)對(duì)應(yīng)于組中的記錄2-4的組塊CEF而計(jì)算的散列與服務(wù)器上的記錄2-4的對(duì)應(yīng)的散列不匹配,因?yàn)槟切┯涗洶ńM塊CDE,而不是CEF。注意,在其中使用散列高速緩沖存儲(chǔ)器的實(shí)施例中,組塊CEF的散列將不在高速緩沖存儲(chǔ)器中,因?yàn)樵谇懊娴耐讲痪弥?,不?huì)在服務(wù)器(或在高速緩沖存儲(chǔ)器中)上發(fā)現(xiàn)鄰近的組塊CEF。因此,服務(wù)器將對(duì)客戶機(jī)返回“不匹配”結(jié)果,并且客戶機(jī)將把包括組塊的要素C、E和F發(fā)送到服務(wù)器。在服務(wù)器處,服務(wù)器將確定要素D在客戶機(jī)處已被刪除,并且服務(wù)器將在服務(wù)器處刪除其對(duì)應(yīng)的記錄,從而使目錄202a和202b修復(fù)為同步。
[0029]圖3是示出用以使文件系統(tǒng)信息同步的過(guò)程的實(shí)施例的流程圖。在顯示的示例中,以目錄中的第一文件開始(302),獲得(304)文件狀況信息(和/或其它文件元數(shù)據(jù))。文件狀況信息的示例包括文件的大小和它上一次被修改的時(shí)間。如果文件是新的,或者無(wú)變化(自從上一次備份或其它復(fù)制以來(lái))(306),則文件被發(fā)送到服務(wù)器(或其它復(fù)制目的地,本地或遠(yuǎn)程)(308)。如果文件無(wú)變化,以及/或者一旦文件或其變化已被發(fā)送(306,308),則獲得(310)文件的文件ID,并且文件ID與文件狀況信息結(jié)合起來(lái)形成目錄要素的規(guī)范表示(312)。對(duì)每個(gè)文件目錄重復(fù)該過(guò)程,直到目錄中的最后一個(gè)文件處理完為止(314),此時(shí),在顯示的示例中,在客戶機(jī)和服務(wù)器之間的目錄的同步開始(316)。
[0030]圖4是示出用于使文件系統(tǒng)信息同步的過(guò)程的實(shí)施例的流程圖。在一些實(shí)施例中,圖4的過(guò)程實(shí)現(xiàn)圖3的316。在顯示的示例中,當(dāng)目錄準(zhǔn)備好同步時(shí)(402),S卩,對(duì)于目錄中的每個(gè)文件,相關(guān)聯(lián)的目錄要素元數(shù)據(jù)的規(guī)范表示已經(jīng)創(chuàng)建,按規(guī)范順序(例如按文件ID)對(duì)包括目錄的目錄要素分類(404)。分類列表分成組塊,組塊各自包括一個(gè)或多個(gè)目錄要素(406)。在多種實(shí)施例中,例如,基于最后的修改時(shí)間、訪問(wèn)權(quán)利等,組塊的大小和/或邊界可由一個(gè)或多個(gè)預(yù)先確定的和/或動(dòng)態(tài)地確定的準(zhǔn)則確定,包括組塊大小和/或指示相鄰要素之間(或不在它們之間)的關(guān)系的數(shù)據(jù)。然后相應(yīng)的組塊用來(lái)使客戶機(jī)和服務(wù)器之間的目錄信息同步(408)。
[0031]圖5是示出用于使用目錄要素的組塊來(lái)使目錄同步的過(guò)程的實(shí)施例的流程圖。在一些實(shí)施例中,圖5的過(guò)程實(shí)現(xiàn)圖4的408。在顯示的示例中,當(dāng)準(zhǔn)備好基于按規(guī)范順序分類的一組目錄要素來(lái)使目錄同步時(shí)(502),客戶機(jī)從目錄要素的第一組塊開始,并且基于它們來(lái)計(jì)算散列(504)。如果散列存儲(chǔ)在本地散列高速緩沖存儲(chǔ)器中(506),則知道它在服務(wù)器上。在顯示的示例中,如果在高速緩沖存儲(chǔ)器中發(fā)現(xiàn)組塊的散列,則將其添加到在散列中發(fā)現(xiàn)的連續(xù)的組塊的區(qū)間(512)。如果散列不在散列高速緩沖存儲(chǔ)器中,則當(dāng)前區(qū)間(如果有任何組塊在其中)和組塊與服務(wù)器同步(508,510)。對(duì)包括目錄的組塊重復(fù)該過(guò)程的迭代,直到最后的組塊被處理完為止(514)。
[0032]圖6是示出用于使目錄服務(wù)要素的組塊的區(qū)間同步的過(guò)程的實(shí)施例的流程圖。在多種實(shí)施例中,圖6的過(guò)程實(shí)現(xiàn)圖5的508。在顯示的示例中,為了使區(qū)間同步,區(qū)間的散列和指示目錄要素的分類列表中的區(qū)間的位置和廣度(extent)的相關(guān)聯(lián)的偏移被發(fā)送到服務(wù)器(604)。服務(wù)器計(jì)算存儲(chǔ)在服務(wù)器處的對(duì)應(yīng)的目錄信息(即,指示的偏移處的、指示的廣度的區(qū)間)的散列,并且告知客戶機(jī)該結(jié)果是否與客戶機(jī)所發(fā)送的值匹配。如果服務(wù)器指示散列不匹配(606),則目錄要素的區(qū)間被發(fā)送到服務(wù)器(608)。一旦區(qū)間已經(jīng)發(fā)送(608),或者如果確定散列匹配(606),則在客戶機(jī)處使區(qū)間(610)復(fù)位,并且過(guò)程結(jié)束。添加到復(fù)位的區(qū)間的下一個(gè)組塊(如果有的話)將成為區(qū)間中的第一組塊。
[0033]圖7是示出用于使目錄服務(wù)要素的組塊同步的過(guò)程的實(shí)施例的流程圖。在多種實(shí)施例中,圖7的過(guò)程實(shí)現(xiàn)圖5的510。在顯示的示例中,為了使目錄要素的組塊同步,客戶機(jī)計(jì)算組塊的散列,并且將散列和相關(guān)聯(lián)的偏移信息發(fā)送到服務(wù)器(704)。如果客戶機(jī)從服務(wù)器中接收到關(guān)于服務(wù)器計(jì)算出的對(duì)應(yīng)的散列與客戶機(jī)發(fā)送的散列不匹配的指示(706),則客戶機(jī)將包括組塊的目錄要素發(fā)送到服務(wù)器(708)。一旦組塊已經(jīng)發(fā)送(708),或者如果確定散列匹配(706),則在客戶機(jī)處將組塊的散列添加到本地散列高速緩沖存儲(chǔ)器(710),并且過(guò)程結(jié)束。
[0034]圖8是示出用于基于目錄信息來(lái)計(jì)算和比較散列值的過(guò)程的實(shí)施例的流程圖。在一些實(shí)施例中,在文件系統(tǒng)信息復(fù)制到其上的服務(wù)器上實(shí)現(xiàn)圖8的過(guò)程。在顯示的示例中,例如從客戶機(jī)中接收關(guān)于目錄要素的組塊的散列值和相關(guān)聯(lián)的目錄要素偏移和廣度信息或這樣的組塊的區(qū)間(804)。創(chuàng)建按規(guī)范順序分類的、對(duì)應(yīng)目錄的目錄要素的列表(806)。計(jì)算(808)存儲(chǔ)在服務(wù)器上的、對(duì)應(yīng)于接收的偏移和廣度的目錄要素的散列,并且將其與接收的散列值比較。如果它們匹配(810),則對(duì)客戶機(jī)返回“匹配”結(jié)果(812)。如果它們不匹配(810),則返回“不匹配”結(jié)果(814)。
[0035]在返回“不匹配”結(jié)果的情況下,在多種實(shí)施例中,客戶機(jī)可發(fā)送相關(guān)聯(lián)的目錄要素。服務(wù)器配置成接收要素,以及使用它們來(lái)更新存儲(chǔ)在服務(wù)器處的對(duì)應(yīng)的信息。
[0036]圖9是示出用以使包括整個(gè)目錄的區(qū)間同步的過(guò)程的實(shí)施例的流程圖。在顯示的示例中,在到達(dá)目錄的末尾,并且確定當(dāng)前區(qū)間包括包含目錄的所有組塊的情況下,執(zhí)行進(jìn)一步的優(yōu)化。這種情況的示例為這樣的情形,即,其中,在客戶機(jī)處的散列高速緩沖存儲(chǔ)器中發(fā)現(xiàn)包括目錄的所有組塊,例如因?yàn)樵谥暗耐街幸磺卸家呀?jīng)同步,而且目錄的文件系統(tǒng)信息從此都沒(méi)有變化。在顯示的示例中,一旦到達(dá)處理包括目錄的組塊的末尾(902),就執(zhí)行檢查,以確定當(dāng)前區(qū)間是否覆蓋整個(gè)目錄(904)。如果是的話,執(zhí)行檢查,以確定區(qū)間的散列是否存在于散列高速緩沖存儲(chǔ)器中(906)。如果在散列高速緩沖存儲(chǔ)器中發(fā)現(xiàn)目錄寬度的區(qū)間的散列,則過(guò)程結(jié)束。如果在到達(dá)目錄的末尾時(shí),區(qū)間不覆蓋整個(gè)目錄(904),或者如果目錄寬度的區(qū)間的散列已經(jīng)不在散列高速緩沖存儲(chǔ)器中(908),則使同步區(qū)間(908),并且將整個(gè)目錄的散列(即,包括目錄的所有組塊)添加到散列高速緩沖存儲(chǔ)器(910)。
[0037]在一些實(shí)施例中,在后續(xù)同步中,在將目錄的目錄要素分成組塊且如上面描述的那樣繼續(xù)之前,客戶機(jī)首先對(duì)目錄要素的整個(gè)順序列表計(jì)算散列,并且檢查散列高速緩沖存儲(chǔ)器以獲得結(jié)果。如果整個(gè)目錄上的散列都在散列高速緩沖存儲(chǔ)器中,則客戶機(jī)知道存儲(chǔ)在服務(wù)器上的目錄處于同步,并且繼續(xù)前進(jìn)到下一個(gè)目錄,如果有的話。否則,客戶機(jī)分塊,并且處理分類列表,如上面描述的那樣。
[0038]在一些實(shí)施例中,文件高速緩沖存儲(chǔ)器和散列高速緩沖存儲(chǔ)器兩者都不需要是全面的;也就是說(shuō),如果本地存儲(chǔ)非常珍貴,不需要表示客戶機(jī)文件系統(tǒng)上的所有文件或元數(shù)據(jù)的所有組塊。如果在文件高速緩沖存儲(chǔ)器中未發(fā)現(xiàn)文件,或者在散列高速緩沖存儲(chǔ)器中未發(fā)現(xiàn)元數(shù)據(jù)的組塊的散列,因?yàn)橐粋€(gè)或兩者在空間上受到限制,則將只是重新發(fā)送文件或組塊。這允許有權(quán)衡本地存儲(chǔ)與帶寬節(jié)約的柔性,同時(shí)保持正確。相反,日志方法需要保存自從上一次備份以來(lái)的所有操作,以便保持正確。
[0039]文件和散列高速緩沖存儲(chǔ)器本質(zhì)上實(shí)現(xiàn)在空間上非常高效和柔性的編目系統(tǒng)。在本文的多種實(shí)施例中描述的技術(shù)和協(xié)議允許使文件和散列高速緩沖存儲(chǔ)器來(lái)使大量本地文件系統(tǒng)實(shí)施(NTFS、ext3等)與大量遠(yuǎn)程文件系統(tǒng)實(shí)現(xiàn)(Avamar FS、數(shù)據(jù)域FS等)同步。
[0040]圖10是示出計(jì)算機(jī)系統(tǒng)的實(shí)施例的框圖。在顯示的示例中,備份客戶機(jī)系統(tǒng)102 (其可為關(guān)于未顯示的一個(gè)或多個(gè)功能和/或網(wǎng)絡(luò)元件的服務(wù)器,例如文件服務(wù)器)具有通過(guò)連接104和通信接口 1006(諸如網(wǎng)絡(luò)接口卡(NIC))的網(wǎng)絡(luò)連接性。備份客戶機(jī)1008通過(guò)通信接口 1006和連接104通信,以在網(wǎng)絡(luò)上將存儲(chǔ)在文件系統(tǒng)1010中的文件和相關(guān)聯(lián)的文件系統(tǒng)信息復(fù)制到遠(yuǎn)程服務(wù)器。在多種實(shí)施例中,備份客戶機(jī)1008包括軟件代理和/或在包括系統(tǒng)102的處理器上運(yùn)行的其它代碼。備份客戶機(jī)1008使用存儲(chǔ)在例如存儲(chǔ)器或包括系統(tǒng)102的其它數(shù)據(jù)存儲(chǔ)裝置中的散列高速緩沖存儲(chǔ)器1012(如上面描述的那樣)來(lái)使與文件系統(tǒng)1010相關(guān)聯(lián)的文件系統(tǒng)信息與遠(yuǎn)程服務(wù)器高效地同步。
[0041]雖然在本文描述的許多實(shí)施例中,跨過(guò)網(wǎng)絡(luò)復(fù)制文件和相關(guān)聯(lián)的文件系統(tǒng)信息,以及/或者使它們同步,但在其它實(shí)施例中,本文描述的技術(shù)可用于其它環(huán)境中,例如,備份到本地備份存儲(chǔ)節(jié)點(diǎn)或其它存儲(chǔ)節(jié)點(diǎn)。另外,雖然在多種實(shí)施例中描述了文件和文件系統(tǒng)元數(shù)據(jù),但本文描述的技術(shù)可用來(lái)使關(guān)于以分層或其它方式存儲(chǔ)或表示的其它存儲(chǔ)對(duì)象的元數(shù)據(jù)同步。
[0042]雖然為了清楚地理解而在一些細(xì)節(jié)中描述了前述實(shí)施例,但本發(fā)明不限于所提供的細(xì)節(jié)。存在許多實(shí)現(xiàn)本發(fā)明的備選方式。公開的實(shí)施例是說(shuō)明性的,而非約束性的。
【權(quán)利要求】
1.一種使文件系統(tǒng)變化同步的方法,包括: 在客戶機(jī)系統(tǒng)處計(jì)算包括目錄要素的組塊的數(shù)據(jù)的散列,所述目錄要素的組塊包括按規(guī)范順序分類一組要素中的一個(gè)或多個(gè)連續(xù)的目錄要素;以及 在至少部分地基于所計(jì)算的散列而確定存儲(chǔ)在遠(yuǎn)程服務(wù)器上的對(duì)應(yīng)的目錄要素與存儲(chǔ)在所述客戶機(jī)系統(tǒng)上的、包括所述組塊的所述目錄要素不同的情況下,將包括所述組塊的所述一個(gè)或多個(gè)目錄要素發(fā)送到所述遠(yuǎn)程服務(wù)器。
2.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括至少部分地基于所述計(jì)算的散列來(lái)確定存儲(chǔ)在所述遠(yuǎn)程服務(wù)器上的所述對(duì)應(yīng)的目錄要素與存儲(chǔ)在所述客戶機(jī)系統(tǒng)上的、包括所述組塊的所述目錄要素是否相同。
3.根據(jù)權(quán)利要求2所述的方法,其中,確定包括檢查散列高速緩沖存儲(chǔ)器,以確定所述計(jì)算的散列之前是否存儲(chǔ)在所述散列高速緩沖存儲(chǔ)器中。
4.根據(jù)權(quán)利要求3所述的方法,進(jìn)一步包括在所述散列高速緩沖存儲(chǔ)器中未發(fā)現(xiàn)所述計(jì)算的散列的情況下,將所述計(jì)算的散列發(fā)送到所述遠(yuǎn)程服務(wù)器。
5.根據(jù)權(quán)利要求4所述的方法,進(jìn)一步包括接收來(lái)自所述遠(yuǎn)程服務(wù)器的、關(guān)于對(duì)應(yīng)于所述計(jì)算的散列的且由所述服務(wù)器基于存儲(chǔ)在所述服務(wù)器上的對(duì)應(yīng)的文件系統(tǒng)信息而計(jì)算出的對(duì)應(yīng)的散列是否與所述計(jì)算的散列匹配的指示。
6.根據(jù)權(quán)利要求5所述的方法,進(jìn)一步包括如果來(lái)自所述服務(wù)器的響應(yīng)指示所述對(duì)應(yīng)的散列與所述計(jì)算的散列匹配,則將所述計(jì)算的散列添加到所述散列高速緩沖存儲(chǔ)器。
7.根據(jù)權(quán)利要求6所述的方法,進(jìn)一步包括一旦響應(yīng)于從所述服務(wù)器中接收到關(guān)于在所述服務(wù)器處計(jì)算出的所述對(duì)應(yīng)的散列與所述客戶機(jī)系統(tǒng)所發(fā)送的所述計(jì)算的散列不匹配的指示,而已經(jīng)將包括所述組塊的所述一個(gè)或多個(gè)目錄要素發(fā)送到所述遠(yuǎn)程服務(wù)器,將所述計(jì)算的散列添加到所述散列高速緩沖存儲(chǔ)器。
8.根據(jù)權(quán)利要求2所述的方法,進(jìn)一步包括如果有的話,將所述計(jì)算的散列添加到連續(xù)的組塊的區(qū)間,在所述散列高速緩沖存儲(chǔ)器中發(fā)現(xiàn)所述計(jì)算的散列的情況下,已經(jīng)在所述散列高速緩沖存儲(chǔ)器中發(fā)現(xiàn)所述連續(xù)的組塊的所述相應(yīng)的散列。
9.根據(jù)權(quán)利要求8所述的方法,進(jìn)一步包括如果在所述散列高速緩沖存儲(chǔ)器中未發(fā)現(xiàn)所述計(jì)算的散列,則使所述區(qū)間和所述組塊同步。
10.根據(jù)權(quán)利要求9所述的方法,其中,使所述區(qū)間同步包括將包括包含在所述區(qū)間中的組塊的目錄要素的散列發(fā)送到所述遠(yuǎn)程服務(wù)器。
11.根據(jù)權(quán)利要求10所述的方法,進(jìn)一步包括在接收到關(guān)于基于存儲(chǔ)在所述服務(wù)器上的、對(duì)應(yīng)于包括包含 在所述區(qū)間中的所述組塊的、存儲(chǔ)在所述客戶機(jī)系統(tǒng)上的要素的目錄要素而計(jì)算出的對(duì)應(yīng)的散列與包括包含在所述客戶機(jī)系統(tǒng)所發(fā)送的所述區(qū)間中的組塊的目錄要素的所述散列不匹配的指示的情況下,將包括包含在所述區(qū)間中的組塊的目錄要素發(fā)送到所述遠(yuǎn)程服務(wù)器。
12.根據(jù)權(quán)利要求8所述的方法,進(jìn)一步包括: 在到達(dá)所述組要素的末尾時(shí),確定所述區(qū)間覆蓋整組要素;以及 確保所述整組要素的散列存儲(chǔ)在所述散列高速緩沖存儲(chǔ)器中。
13.根據(jù)權(quán)利要求12所述的方法,進(jìn)一步包括在所述組要素的同步開始時(shí)檢查所述整組要素的所述散列是否存儲(chǔ)在所述散列高速緩沖存儲(chǔ)器中;以及在沒(méi)有進(jìn)一步處理的情況下,作出這樣的結(jié)論,即,如果在所述散列高速緩沖存儲(chǔ)器中發(fā)現(xiàn)所述整組要素的所述散列,則所述組要素在所述客戶機(jī)系統(tǒng)和所述遠(yuǎn)程服務(wù)器之間處于同步。
14.根據(jù)權(quán)利要求12所述的方法,進(jìn)一步包括如果在到達(dá)所述組要素的末尾時(shí)確定所述區(qū)間未覆蓋所述整組要素,則使所述區(qū)間同步。
15.根據(jù)權(quán)利要求1所述的方法,其中,所述目錄要素中的每個(gè)包括與所述目錄要素與之相關(guān)聯(lián)的目錄中的對(duì)應(yīng)的文件相關(guān)聯(lián)的文件系統(tǒng)信息的規(guī)范表示。
16.根據(jù)權(quán)利要求15所述的方法,進(jìn)一步包括產(chǎn)生所述相應(yīng)的規(guī)范表示。
17.根據(jù)權(quán)利要求16所述的方法,進(jìn)一步包括按所述規(guī)范順序?qū)λ瞿夸浺胤诸悺?br>
18.一種計(jì)算機(jī)系統(tǒng),包括: 處理器,其配置成進(jìn)行下者:
計(jì)算包括目錄要素的組塊的數(shù)據(jù)的散列,所述目錄要素的組塊包括按規(guī)范順序分類的一組要素中的一個(gè)或多個(gè)連續(xù)的目錄要素;以及
在至少部分地基于所述計(jì)算的散列而確定存儲(chǔ)在遠(yuǎn)程服務(wù)器上的對(duì)應(yīng)的目錄要素與存儲(chǔ)在所述計(jì)算機(jī)系統(tǒng)上的、包括所述組塊的所述目錄要素不同的情況下,將包括所述組塊的所述一個(gè)或多個(gè)目錄要素發(fā)送到所述遠(yuǎn)程服務(wù)器;以及 存儲(chǔ)裝置,其耦接到所述處理器上,并且配置成存儲(chǔ)包括所述目錄要素的數(shù)據(jù)。
19.根據(jù)權(quán)利要求18所述的系統(tǒng),進(jìn)一步包括通信接口,所述通信接口耦接到所述處理器上,并且配置成被所述處理器用來(lái)將包括所述組塊的所述一個(gè)或多個(gè)目錄要素發(fā)送到所述遠(yuǎn)程服務(wù)器。
20.根據(jù)權(quán)利要求18所述的系統(tǒng),其中,所述目錄要素中的每個(gè)包括與對(duì)應(yīng)的文件相關(guān)聯(lián)的文件系統(tǒng)信息,并且所述處理器配置成產(chǎn)生所述規(guī)范表示。
21.根據(jù)權(quán)利要求18所述的系統(tǒng),其中,所述處理器配置成按所述規(guī)范順序?qū)λ瞿夸浺胤诸悺?br>
22.根據(jù)權(quán)利要求18所述的系統(tǒng),其中,所述處理器配置成至少部分地基于所述計(jì)算的散列來(lái)確定存儲(chǔ)在所述遠(yuǎn)程服務(wù)器上的所述對(duì)應(yīng)的目錄要素是否與包括所述組塊的、存儲(chǔ)在所述客戶機(jī)系統(tǒng)上的所述目錄要素相同。
23.根據(jù)權(quán)利要求22所述的系統(tǒng),其中,所述過(guò)程配置成至少部分地通過(guò)檢查散列高速緩沖存儲(chǔ)器以確定在所述散列高速緩沖存儲(chǔ)器中是否發(fā)現(xiàn)所述計(jì)算的散列,來(lái)確定存儲(chǔ)在所述遠(yuǎn)程服務(wù)器上的所述對(duì)應(yīng)的目錄要素是否與包括所述組塊的、存儲(chǔ)在所述客戶機(jī)系統(tǒng)上的所述目錄要素相同。
24.根據(jù)權(quán)利要求23所述的系統(tǒng),其中,所述處理器進(jìn)一步配置成如果包括所述組塊的所述一個(gè)或多個(gè)目錄要素被發(fā)送到所述遠(yuǎn)程服務(wù)器,則將所述計(jì)算的散列添加到所述散列高速緩沖存儲(chǔ)器。
25.一種用于使文件系統(tǒng)變化同步的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包含在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,并且包括用于進(jìn)行下者的計(jì)算機(jī)指令: 在客戶機(jī)系統(tǒng)處計(jì)算包括目錄要素的組塊的數(shù)據(jù)的散列,所述目錄要素的組塊包括按規(guī)范順序分類的一組要素中的一個(gè)或多個(gè)連續(xù)的目錄要素;以及 在至少部分地基于所計(jì)算的散列而確定存儲(chǔ)在遠(yuǎn)程服務(wù)器上的對(duì)應(yīng)的目錄要素與存儲(chǔ)在所述客戶機(jī)系統(tǒng)上的、包括所述組塊的所述目錄要素不同的情況下,將包括所述組塊的所述一個(gè)或多個(gè)目錄要素發(fā)送到所述遠(yuǎn)程服務(wù)器。
26.一種使文件系統(tǒng)變化同步的方法,包括: 從客戶機(jī)系統(tǒng)中接收包括目錄要素的組塊的數(shù)據(jù)的散列,所述目錄要素的組塊包括按規(guī)范順序分類的一組要素中的一個(gè)或多個(gè)連續(xù)的目錄要素,以及標(biāo)識(shí)所述組塊在所述組內(nèi)的位置和廣度的偏移數(shù)據(jù);以及 按相同的規(guī)范順序?qū)Ρ镜卮鎯?chǔ)的對(duì)應(yīng)的目錄要素分類; 按照包括所述組內(nèi)的指示的位置中的、本地分類組中的目錄要素的數(shù)據(jù),計(jì)算對(duì)應(yīng)的散列。
27.根據(jù)權(quán)利要求26所述的方法,進(jìn)一步包括比較所計(jì)算的對(duì)應(yīng)的散列與所接收的散列,以及對(duì)所述客戶機(jī)返回 指示所述計(jì)算的對(duì)應(yīng)的散列和所述接收的散列是否相同的結(jié)果數(shù)據(jù)。
【文檔編號(hào)】G06F17/30GK103649946SQ201180046759
【公開日】2014年3月19日 申請(qǐng)日期:2011年9月16日 優(yōu)先權(quán)日:2010年9月30日
【發(fā)明者】M.黃, C.安德森, R.H.帕特森 申請(qǐng)人:Emc 公司