用于備份和恢復(fù)克隆文件的方法和系統(tǒng)的制作方法
【專利摘要】本申請(qǐng)?zhí)峁┝擞糜趥浞莺突謴?fù)克隆文件的方法和系統(tǒng)。在所述方法中,一個(gè)或多個(gè)處理器生成克隆管理表。一個(gè)或多個(gè)處理器在克隆管理表中記錄關(guān)于每個(gè)克隆文件的克隆管理信息。為了備份克隆文件,一個(gè)或多個(gè)處理器更新克隆管理信息,并存儲(chǔ)處于克隆文件樹中的一個(gè)或多個(gè)數(shù)據(jù)塊。為了恢復(fù)克隆文件,一個(gè)或多個(gè)處理器分析克隆管理信息,并恢復(fù)克隆文件中的一個(gè)或多個(gè)數(shù)據(jù)塊。為了恢復(fù)克隆文件父親,一個(gè)或多個(gè)處理器分析克隆管理信息,并恢復(fù)克隆文件父親中的一個(gè)或多個(gè)數(shù)據(jù)塊。為了恢復(fù)克隆文件樹,一個(gè)或多個(gè)處理器分析克隆管理信息,并恢復(fù)克隆文件樹中的一個(gè)或多個(gè)數(shù)據(jù)塊。
【專利說明】
用于備份和恢復(fù)克隆文件的方法和系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明一般涉及文件系統(tǒng)領(lǐng)域,并且更具體地涉及具有克隆文件的文件系統(tǒng)。
【背景技術(shù)】
[0002]將以可迅速訪問的形式存儲(chǔ)的數(shù)據(jù)量的顯著增長對(duì)于關(guān)心存儲(chǔ)效率和數(shù)據(jù)完整性保護(hù)的系統(tǒng)設(shè)計(jì)者來說是一個(gè)挑戰(zhàn)。例如,分析學(xué)、流計(jì)算(對(duì)來自實(shí)時(shí)源的高帶寬數(shù)據(jù)流的分析)、以及數(shù)據(jù)倉儲(chǔ)需要快速訪問大量的數(shù)據(jù)。在大存儲(chǔ)系統(tǒng)中,數(shù)據(jù)必須可用于立即和循環(huán)處理,被高效地存儲(chǔ),被保護(hù)免于硬件和軟件故障,并且可按照其大小以及可應(yīng)用到其上的計(jì)算能力的量進(jìn)行縮放。高效存儲(chǔ)技術(shù)常常使得存儲(chǔ)系統(tǒng)能夠更快,這能夠向用戶提供快速訪問。
[0003]為了高效地利用存儲(chǔ),一種被稱為文件克隆的技術(shù)已經(jīng)得到發(fā)展,以減少被多個(gè)用戶打開和編輯的文件的多個(gè)版本(克隆)所消耗的存儲(chǔ)。通過以只讀模式存儲(chǔ)原始文件并且只將額外的存儲(chǔ)空間分配給被用戶寫入該文件的數(shù)據(jù),文件克隆使得存儲(chǔ)空間能夠得到保存。該額外空間僅僅大到足以包含已經(jīng)被用戶寫入該克隆文件的新數(shù)據(jù)。該額外空間是讀和寫使能的,從該額外空間中讀取使得不在原始文件中的新寫入的數(shù)據(jù)可以被訪問。還未被改變的數(shù)據(jù)從原始文件中被讀取。這樣的布置被稱為克隆文件。例如,這使得被兩個(gè)用戶變更的一個(gè)文件的兩個(gè)拷貝(文件的兩個(gè)克隆)只消耗空間的一小部分,否則的話,原始文件的兩個(gè)完整拷貝(每個(gè)用戶一個(gè)完整拷貝)將會(huì)消耗該空間。在文件拷貝(被稱為孩子或克隆文件)相比于原始文件(父親文件)具有顯著量的未變更數(shù)據(jù)的情況下,文件克隆降低了文件的拷貝的總空間需求。
[0004]例如,通過克隆共同的基礎(chǔ)映像文件(常常被稱為“金映像”)而為每個(gè)虛擬機(jī)創(chuàng)建虛擬磁盤,克隆文件可用來提供虛擬機(jī)。相關(guān)的使用是作為拍下虛擬機(jī)狀態(tài)的快照的一部分,來克隆一個(gè)個(gè)體虛擬機(jī)的虛擬磁盤映像??寺∫粋€(gè)文件與創(chuàng)建一個(gè)文件拷貝相類似,只不過創(chuàng)建過程更快并且更有空間效率,這是因?yàn)橹钡娇寺』蛟嘉募恍薷臑橹苟疾幌念~外的磁盤空間。無需分配額外的存儲(chǔ)空間,同一文件的多個(gè)克隆就可以得到創(chuàng)建,并且克隆的克隆可以得到創(chuàng)建。盡管文件的克隆降低了服務(wù)器上用于活動(dòng)文件的存儲(chǔ)空間,但是當(dāng)前用于備份克隆文件的技術(shù)針對(duì)每個(gè)已備份克隆文件來說消耗了未被克隆文件的存儲(chǔ)空間,并且在恢復(fù)時(shí)將原始克隆文件恢復(fù)為未被克隆文件。
[0005]Unix風(fēng)格的文件系統(tǒng)以被稱為inode的數(shù)據(jù)結(jié)構(gòu)記錄信息,該數(shù)據(jù)結(jié)構(gòu)被用來定位和管理文件。在Unix風(fēng)格的文件系統(tǒng)中,非正式地稱為inode的索引節(jié)點(diǎn)是一種用來表示文件系統(tǒng)對(duì)象的數(shù)據(jù)結(jié)構(gòu),所述文件系統(tǒng)對(duì)象可以是包括文件或目錄在內(nèi)的若干事物之一。inode存儲(chǔ)文件系統(tǒng)對(duì)象的數(shù)據(jù)的屬性和磁盤塊位置。文件系統(tǒng)對(duì)象屬性可以包括操縱元數(shù)據(jù)(例如,改變、訪問和修改時(shí)間),以及所有者和權(quán)限數(shù)據(jù)(例如,組id、用戶id和權(quán)限Kinode在支持克隆文件的Unix風(fēng)格的系統(tǒng)上的克隆文件的創(chuàng)建和管理中也是工具性的。克隆文件的inode中的元數(shù)據(jù)指定了其父親文件。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例的各方面公開了一種用于備份和恢復(fù)一個(gè)或多個(gè)克隆文件樹的方法、程序產(chǎn)品和系統(tǒng)。所述方法包括:由一個(gè)或多個(gè)處理器生成克隆管理表。所述方法還包括:由一個(gè)或多個(gè)處理器在所述克隆管理表中記錄關(guān)于文件系統(tǒng)中的一個(gè)或多個(gè)克隆文件樹中的每個(gè)克隆文件的克隆管理信息。所述方法還包括:響應(yīng)于接收到備份請(qǐng)求,由一個(gè)或多個(gè)處理器更新所述克隆管理信息,并存儲(chǔ)處于所述一個(gè)或多個(gè)克隆文件樹中的一個(gè)或多個(gè)數(shù)據(jù)塊。所述方法還包括:響應(yīng)于接收到恢復(fù)克隆文件的請(qǐng)求,由一個(gè)或多個(gè)處理器分析關(guān)于所述克隆文件的克隆管理信息,并將所述克隆文件中的一個(gè)或多個(gè)數(shù)據(jù)塊恢復(fù)到所述文件系統(tǒng)。所述方法還包括:響應(yīng)于接收到恢復(fù)克隆文件父親的請(qǐng)求,由一個(gè)或多個(gè)處理器分析關(guān)于所述克隆文件父親的克隆管理信息,并將所述克隆文件父親中的一個(gè)或多個(gè)數(shù)據(jù)塊恢復(fù)到所述文件系統(tǒng)。所述方法還包括:響應(yīng)于接收到恢復(fù)克隆文件樹的請(qǐng)求,由一個(gè)或多個(gè)處理器分析關(guān)于所述克隆文件樹的克隆管理信息,并將所述克隆文件樹中的一個(gè)或多個(gè)數(shù)據(jù)塊恢復(fù)到所述文件系統(tǒng)。
【附圖說明】
[0007]圖1繪出克隆文件樹的框圖。
[0008]圖2根據(jù)本發(fā)明實(shí)施例繪出計(jì)算復(fù)合體(computingcomplex)的一部分的框圖。
[0009]圖3根據(jù)本發(fā)明實(shí)施例繪出圖2中所示的計(jì)算節(jié)點(diǎn)A的細(xì)節(jié)。
[0010]圖4根據(jù)本發(fā)明實(shí)施例繪出圖3中所示的克隆管理表的細(xì)節(jié)。
[0011]圖5根據(jù)本發(fā)明實(shí)施例繪出圖3中所示的克隆管理表的示例性內(nèi)容的細(xì)節(jié)。
[0012]圖6根據(jù)本發(fā)明實(shí)施例繪出一示例性克隆文件樹的框圖。
[0013]圖7根據(jù)本發(fā)明實(shí)施例繪出一示例性克隆文件樹的框圖。
[0014]圖8根據(jù)本發(fā)明實(shí)施例繪出圖3中所示的克隆管理表的示例性內(nèi)容的細(xì)節(jié)。
[0015]圖9根據(jù)本發(fā)明實(shí)施例繪出圖3中所示的克隆管理表的示例性內(nèi)容的細(xì)節(jié)。
[0016]圖10根據(jù)本發(fā)明實(shí)施例繪出圖3中所示的克隆管理表的示例性內(nèi)容的細(xì)節(jié)。
[0017]圖11根據(jù)本發(fā)明實(shí)施例繪出已經(jīng)被恢復(fù)的克隆文件樹的示例性表示。
[0018]圖12根據(jù)本發(fā)明實(shí)施例繪出已經(jīng)被恢復(fù)的克隆文件的示例性表示。
[0019]圖13根據(jù)本發(fā)明實(shí)施例繪出說明由圖3的備份和恢復(fù)服務(wù)器執(zhí)行的操作步驟的流程圖。
[0020]圖14根據(jù)本發(fā)明實(shí)施例繪出包含圖2和3中所示的計(jì)算節(jié)點(diǎn)A的計(jì)算機(jī)系統(tǒng)的框圖。
【具體實(shí)施方式】
[0021]在本文中參考附圖公開本發(fā)明的詳細(xì)實(shí)施例。應(yīng)理解的是,所公開的實(shí)施例僅僅舉例說明本發(fā)明的潛在實(shí)施例,并且可以采取各種形式。另外,結(jié)合各個(gè)實(shí)施例給出的每個(gè)示例意在是說明性的而非限制性的。此外,附圖不一定按比例繪制,一些特征可以被夸大以顯示特定組件的細(xì)節(jié)。因此,本文公開的特定結(jié)構(gòu)和功能細(xì)節(jié)不應(yīng)被解釋為限制性的,而應(yīng)僅僅被解釋為用于教導(dǎo)本領(lǐng)域技術(shù)人員以各種方式采用本發(fā)明的代表性基礎(chǔ)。
[0022]說明書中對(duì)“一個(gè)實(shí)施例”、“一實(shí)施例”、“示例性實(shí)施例”等的提及表示所述實(shí)施例可以包括特定特征、結(jié)構(gòu)或特性,但是每個(gè)實(shí)施例可能不一定包括該特定特征、結(jié)構(gòu)或特性。此外,這樣的措辭不一定指的是同一實(shí)施例。此外,當(dāng)特定特征、結(jié)構(gòu)或特性結(jié)合一實(shí)施例被描述時(shí),結(jié)合其他明確或非明確描述的實(shí)施例來影響這樣的特征、結(jié)構(gòu)或特性應(yīng)該也在本領(lǐng)域技術(shù)人員的知識(shí)內(nèi)。
[0023]克隆文件是個(gè)體文件的可寫的時(shí)間點(diǎn)快照。通過克隆共同的基礎(chǔ)映像(常常被稱為“金映像”)而為每個(gè)虛擬機(jī)創(chuàng)建虛擬磁盤,克隆文件可用來提供虛擬機(jī)。相關(guān)的使用是作為拍下虛擬機(jī)狀態(tài)的快照的一部分,來克隆一個(gè)個(gè)體虛擬機(jī)的虛擬磁盤映像??寺∫粋€(gè)文件與創(chuàng)建一個(gè)文件拷貝相類似,只不過創(chuàng)建過程更快并且更有空間效率,這是因?yàn)橹钡娇寺』蛟嘉募恍薷臑橹苟疾幌念~外的磁盤空間。無需額外的空間開銷,同一文件的多個(gè)克隆就可以得到創(chuàng)建??寺〉目寺】梢缘玫絼?chuàng)建。
[0024]文件克隆是用于在文件拷貝(孩子或克隆)相比于原始文件(父親)具有顯著量的未變更數(shù)據(jù)的情況下,減少文件的拷貝的總空間需求的概念。在一個(gè)實(shí)施例中,文件系統(tǒng)被包括,該文件系統(tǒng)實(shí)現(xiàn)克隆文件的概念,并且針對(duì)原始文件使用術(shù)語父親文件、父親或克隆父親,且針對(duì)父親的克隆使用術(shù)語克隆文件或克隆??寺「赣H是只讀文件,其包含當(dāng)創(chuàng)建該克隆時(shí)原始地處于該文件中的所有數(shù)據(jù)塊。當(dāng)克隆文件被創(chuàng)建時(shí),其父親中的數(shù)據(jù)變成只讀。克隆(即,父親的孩子)是只包含相對(duì)于父親已經(jīng)被寫入或已經(jīng)被添加的數(shù)據(jù)塊的文件。該克隆文件中的這些數(shù)據(jù)塊是相對(duì)于父親已經(jīng)被修改(添加或改變)的數(shù)據(jù)塊。從該克隆文件或其父親中刪除的數(shù)據(jù)塊在被刪除的克隆文件中有其表示??寺『⒆拥挠脩魪母赣H訪問所有未修改的數(shù)據(jù)??寺『⒆記]有父親是無用的,因?yàn)樗话晃募械乃袛?shù)據(jù),并且因此一有效的克隆孩子沒有父親是不存在的。在實(shí)現(xiàn)克隆的文件系統(tǒng)中,如果用戶(從被克隆文件)讀取自從克隆被創(chuàng)建以來還未被修改的數(shù)據(jù)塊,則文件系統(tǒng)自動(dòng)地從父親讀取該數(shù)據(jù)塊并將其返回給用戶,否則文件系統(tǒng)從克隆讀取該數(shù)據(jù)塊。
[0025]克隆文件可以被克隆。例如,具有父親A的克隆文件B可以被克隆。如果一額外的克隆文件(例如,克隆文件C)從克隆文件B被創(chuàng)建,則克隆文件B中的數(shù)據(jù)變成只讀并且不可變。這時(shí),克隆文件B包含在克隆文件B的創(chuàng)建之后,在父親A中增添或變更的數(shù)據(jù)。當(dāng)克隆文件C被創(chuàng)建時(shí),父親A和克隆文件B中的數(shù)據(jù)不可變,S卩,父親A和克隆文件B中的數(shù)據(jù)在這些文件的生命期中保持不改變。當(dāng)創(chuàng)建克隆文件C時(shí),克隆文件B變成克隆文件C的父親。對(duì)父親A和克隆文件B中的數(shù)據(jù)的所有后續(xù)寫入和增添被存儲(chǔ)在克隆文件C中。如果克隆文件C的用戶從克隆文件C讀取數(shù)據(jù),則實(shí)際數(shù)據(jù)可以從克隆文件C、或其父親克隆文件B、或從克隆文件B的父親即父親A讀取,即數(shù)據(jù)從包含該數(shù)據(jù)的最新近拷貝的克隆文件讀取。
[0026]父親可以有多個(gè)孩子。也就是說,被克隆且已經(jīng)成為父親的文件可以被再次克隆。父親文件中的數(shù)據(jù)在文件被第一次克隆時(shí)變成只讀。具有多個(gè)自身可能已被克隆的孩子的父親可被設(shè)想為克隆文件的樹的單個(gè)根??寺∥募倪@樣的樹被稱為克隆文件樹。
[0027]圖1繪出克隆文件樹100。克隆文件101是原始文件并且處于樹深度O??寺∥募?11是克隆文件101的克隆,并且當(dāng)克隆文件111被創(chuàng)建時(shí),克隆文件101變成克隆文件111的父親,并且克隆文件101中的數(shù)據(jù)變成只讀且是不可變的??寺∥募?11處于克隆樹深度I。如果作為克隆文件111的克隆的克隆文件121被創(chuàng)建,則克隆文件111變成克隆文件121的父親,并且克隆文件111中的數(shù)據(jù)變成只讀且是不可變的??寺∥募?21處于樹深度2??寺∥募?11包含自從克隆文件111被創(chuàng)建以來已經(jīng)被寫入或增添的數(shù)據(jù),并且克隆文件121包含自從克隆文件121被創(chuàng)建以來已經(jīng)被寫入或增添的數(shù)據(jù)。因此,如果用戶從克隆文件121讀取數(shù)據(jù),以對(duì)用戶而言未知的方式,該數(shù)據(jù)從包含該數(shù)據(jù)的最新近拷貝的克隆文件(即克隆文件101、克隆文件111或克隆文件121)被讀取??寺∥募蘒Nl處于樹深度N,且在克隆文件的鏈條的末端,并且說明克隆文件的鏈條能夠具有任意長度。如果用戶從克隆文件INl讀取數(shù)據(jù),則以對(duì)用戶而言未知的方式,該數(shù)據(jù)從包含該數(shù)據(jù)的最新近拷貝的鏈條中的克隆文件被讀取,從克隆文件101開始。
[0028]克隆文件101有多個(gè)孩子。如圖1中所示,克隆樹100中的克隆文件101已經(jīng)被第二次克隆,使得克隆文件101成為第二克隆文件即克隆文件112的父親。在克隆樹100中,克隆文件112已經(jīng)被克隆兩次,一次變成克隆文件122的父親,而第二次變成克隆文件123的父親。
[0029]本發(fā)明的實(shí)施例認(rèn)識(shí)到,如果諸如克隆文件樹100之類的克隆文件樹中的克隆文件在備份服務(wù)器上以不復(fù)制數(shù)據(jù)的方式被備份,則會(huì)產(chǎn)生顯著的存儲(chǔ)效率。本發(fā)明的實(shí)施例還認(rèn)識(shí)到,如果克隆文件樹的全部或一部分在被備份后可以在文件系統(tǒng)上被恢復(fù)其原始克隆文件樹形式,從而保持克隆文件樹中固有的存儲(chǔ)空間效率,則會(huì)產(chǎn)生顯著的存儲(chǔ)效率。本發(fā)明的實(shí)施例在克隆管理表中維護(hù)信息,其使得能夠按照排除數(shù)據(jù)冗余并將克隆文件樹恢復(fù)到其在被備份時(shí)具有的形式的方式來備份和恢復(fù)克隆文件樹的全部或一部分。
[0030]在一個(gè)實(shí)施例中,包含了一文件系統(tǒng),其以被稱為索引節(jié)點(diǎn)(inode)的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)關(guān)于該文件系統(tǒng)中的文件的信息。例如,Unix風(fēng)格的文件系統(tǒng)在索引節(jié)點(diǎn)中記錄用來定位和管理文件的信息。在Unix風(fēng)格的文件系統(tǒng)中,非正式地稱為inode的索引節(jié)點(diǎn)是一種用來表示文件系統(tǒng)對(duì)象的數(shù)據(jù)結(jié)構(gòu),所述文件系統(tǒng)對(duì)象可以是包括文件或目錄在內(nèi)的若干事物之一。索引節(jié)點(diǎn)存儲(chǔ)文件系統(tǒng)對(duì)象的數(shù)據(jù)的屬性和磁盤塊位置。文件系統(tǒng)對(duì)象屬性可以包括操縱元數(shù)據(jù)(例如,改變、訪問和修改時(shí)間),以及所有者和權(quán)限數(shù)據(jù)(例如,組id、用戶id和權(quán)限)。在某些情形和實(shí)施例中,關(guān)于一個(gè)或多個(gè)索引節(jié)點(diǎn)的信息被包括在克隆管理表中的信息中,所述克隆管理表被用來管理克隆文件以及克隆文件和克隆文件樹的備份和恢復(fù)。
[0031]在一些實(shí)施例和情形中,用戶讀取的數(shù)據(jù)塊的位置的自動(dòng)確定是通過存儲(chǔ)在克隆孩子的索引節(jié)點(diǎn)中和克隆父親的索引節(jié)點(diǎn)中的元數(shù)據(jù)來實(shí)現(xiàn)的。孩子中的索引節(jié)點(diǎn)元數(shù)據(jù)指定了父親文件。孩子中的其他數(shù)據(jù)指定了在孩子(被修改數(shù)據(jù))和父親(未被修改數(shù)據(jù))中的數(shù)據(jù)塊的位置。在一實(shí)施例中,存儲(chǔ)在父親中的索引節(jié)點(diǎn)元數(shù)據(jù)包括父親的克隆孩子的計(jì)數(shù)。
[0032]圖2繪出分布式計(jì)算系統(tǒng)200。在一些情形和實(shí)施例中,計(jì)算系統(tǒng)200包括經(jīng)由網(wǎng)絡(luò)202連接到分布式文件系統(tǒng)203的客戶端主機(jī)201。客戶端主機(jī)201執(zhí)行訪問分布式文件系統(tǒng)203上的文件的應(yīng)用212。分布式文件系統(tǒng)203包括網(wǎng)絡(luò)連接204、計(jì)算節(jié)點(diǎn)A 205、計(jì)算節(jié)點(diǎn)B206和計(jì)算節(jié)點(diǎn)C 207、存儲(chǔ)網(wǎng)絡(luò)208、以及存儲(chǔ)單元209、210和211。存儲(chǔ)網(wǎng)絡(luò)208將計(jì)算節(jié)點(diǎn)A 205、計(jì)算節(jié)點(diǎn)B 206和計(jì)算節(jié)點(diǎn)C 207連接到存儲(chǔ)單元209、210和211,并且使任何計(jì)算節(jié)點(diǎn)能夠訪問任何存儲(chǔ)單元。分布式文件系統(tǒng)203是用于客戶端主機(jī)201的文件服務(wù)器,并且為存儲(chǔ)在分布式文件系統(tǒng)203上的數(shù)據(jù)提供備份和恢復(fù)服務(wù)??寺∥募涂寺∥募淇梢栽诜植际轿募到y(tǒng)203上被創(chuàng)建、存儲(chǔ)、備份和恢復(fù)。本領(lǐng)域技術(shù)人員應(yīng)理解的是,計(jì)算系統(tǒng)200可以具有各種數(shù)量的計(jì)算節(jié)點(diǎn)和存儲(chǔ)單元,并且客戶端主機(jī)和在客戶端主機(jī)上執(zhí)行的應(yīng)用的數(shù)量可以變化。
[0033]計(jì)算節(jié)點(diǎn)A205、計(jì)算節(jié)點(diǎn)B 206和計(jì)算節(jié)點(diǎn)C 207是這樣的計(jì)算機(jī),其托管管理分布式文件系統(tǒng)203的軟件,并且響應(yīng)于來自客戶端主機(jī)201中執(zhí)行的應(yīng)用212的請(qǐng)求而訪問存儲(chǔ)單元209、210和211上的數(shù)據(jù)。存儲(chǔ)單元209、210和211也被計(jì)算節(jié)點(diǎn)A 205、計(jì)算節(jié)點(diǎn)B206和計(jì)算節(jié)點(diǎn)C 207訪問,以備份和恢復(fù)由分布式文件系統(tǒng)203管理的數(shù)據(jù)。
[0034]圖3更詳細(xì)地繪出計(jì)算節(jié)點(diǎn)A。在一些情形和實(shí)施例中,計(jì)算節(jié)點(diǎn)A包括文件服務(wù)器301以及備份和恢復(fù)服務(wù)器303。在替代實(shí)施例中,備份和恢復(fù)服務(wù)器303駐留在分布式文件系統(tǒng)203中的一個(gè)或多個(gè)計(jì)算節(jié)點(diǎn)上。在一實(shí)施例中,文件服務(wù)器301包括備份和恢復(fù)客戶端302。備份和恢復(fù)服務(wù)器303包括克隆管理表304。文件服務(wù)器301通過訪問存儲(chǔ)單元209、210和211中的數(shù)據(jù)而對(duì)來自應(yīng)用212的數(shù)據(jù)請(qǐng)求作出響應(yīng)。備份和恢復(fù)客戶端302響應(yīng)于計(jì)劃(schedule)、系統(tǒng)故障或可自動(dòng)或手動(dòng)生成的維護(hù)請(qǐng)求,備份和恢復(fù)存儲(chǔ)單元209、210和211中的文件。在一實(shí)施例中,克隆管理表304包括關(guān)于存儲(chǔ)在分布式文件系統(tǒng)203中的克隆文件和克隆文件樹的克隆管理信息。
[0035]圖4繪出存儲(chǔ)在備份和恢復(fù)服務(wù)器303上的克隆管理表304中的條目中的信息400的細(xì)節(jié)。在一些情形和實(shí)施例中,克隆管理表304對(duì)于每父親文件或克隆文件包含一個(gè)或多個(gè)條目。針對(duì)其在分布式文件系統(tǒng)203中的每個(gè)數(shù)據(jù)塊,父親文件或克隆文件在克隆管理表304中都具有一個(gè)條目。文件名401是該文件系統(tǒng)對(duì)象(父親文件或克隆文件)的唯一標(biāo)識(shí)符。文件名401是該文件的完整合格路徑(qualifying path)。文件索引節(jié)點(diǎn)號(hào)402是該文件的索引節(jié)點(diǎn)號(hào)。文件大小403是該文件的以文件系統(tǒng)塊表示的邏輯大小,S卩,處于克隆文件樹的根部的父親(根父親文件)在文件系統(tǒng)中使用的塊的數(shù)量。文件索引節(jié)點(diǎn)數(shù)據(jù)404是被包括在該索引節(jié)點(diǎn)中的文件元數(shù)據(jù),并且使該文件能夠被管理和恢復(fù)。在一實(shí)施例中,文件索引節(jié)點(diǎn)數(shù)據(jù)404包括權(quán)限、時(shí)間戳、訪問控制列表(ACL)和擴(kuò)展屬性(EA)。文件索引節(jié)點(diǎn)數(shù)據(jù)404有時(shí)被稱為二進(jìn)制大對(duì)象塊(BLOB)。塊偏移405是通過文件名401引用的克隆文件中的唯一數(shù)據(jù)塊相對(duì)于預(yù)先確定的位置的偏移。塊長度406是克隆文件中的唯一數(shù)據(jù)塊的長度。父親文件索引節(jié)點(diǎn)號(hào)407是文件名401的父親文件的索引節(jié)點(diǎn)號(hào)。深度級(jí)別408是文件在克隆文件樹中的級(jí)別,其中深度O被分配給根父親文件。孩子計(jì)數(shù)409是該文件作為其父親、且除其他目的外被用來定位克隆文件樹的根的克隆文件(孩子)的數(shù)量。在一實(shí)施例中,孩子計(jì)數(shù)O表明該文件沒有孩子,-1的文件計(jì)數(shù)表明該條目提供關(guān)于該文件中的額外數(shù)據(jù)塊的信息,并且針對(duì)該文件的另一條目包含該文件的孩子計(jì)數(shù)。最新近更新410是在備份該文件的備份操作期間針對(duì)該條目的最新近更新的時(shí)間戳。有效411是表明該條目是否有效的值。當(dāng)備份和恢復(fù)客戶端302執(zhí)行克隆管理表304的有效性檢查時(shí),一個(gè)條目的有效性被備份和恢復(fù)客戶端302評(píng)估。在一實(shí)施例中,如果該文件未被檢查(例如,新的或更新后的文件),則有效411是“U”,如果該文件已經(jīng)被檢查并且具有有效的父親克隆,則有效411是“V”,而如果該文件已經(jīng)被檢查但是該文件處于其中的克隆文件樹在有效性檢查中正在丟失該點(diǎn)處的克隆文件,則有效411是“I”。
[0036]圖5繪出克隆管理表304中的數(shù)據(jù)500,其是在克隆管理表304中填充的數(shù)據(jù)集的示例,在一個(gè)實(shí)施例中克隆管理表304描述了圖6中所示的克隆文件樹600。該表包含兩個(gè)處于克隆樹深度O的父親克隆文件。處于克隆樹深度O的任何克隆文件根據(jù)定義是父親文件??寺∥募﨑 601和克隆文件Z 602處于深度O。克隆文件Z 602沒有孩子,并且克隆文件D 601有2個(gè)孩子。因?yàn)榭寺∥募 602處于深度O但是沒有孩子,所以克隆文件Z 602是沒有孩子的根父親。檢查克隆管理表304中的處于克隆文件樹600的深度I的克隆文件會(huì)揭示出兩個(gè)處于級(jí)別I的克隆文件,即克隆文件A 603和克隆文件G 604,兩個(gè)克隆文件都具有“0003”作為它們的父親文件索引節(jié)點(diǎn)號(hào)??寺∥募﨑 601的文件索引節(jié)點(diǎn)號(hào)是“0003”,因此克隆文件D601是克隆文件A 603和克隆文件G604的父親??寺∥募嗀 603具有一個(gè)孩子,并且克隆文件G 604具有一個(gè)孩子??寺∥募嗀 603的文件索引節(jié)點(diǎn)號(hào)是“0001”,因此克隆文件A 603的孩子具有“0001”的父親文件索引節(jié)點(diǎn)號(hào)。克隆文件X 605的父親文件索引節(jié)點(diǎn)號(hào)是“0001”,因此克隆文件X 605是克隆文件A 603的孩子,并且克隆文件A 603是克隆文件X 605的父親??寺∥募 605在克隆管理表304中有兩個(gè)條目,一個(gè)條目具有孩子計(jì)數(shù)0,因此克隆文件X605沒有孩子,并且一個(gè)條目具有孩子計(jì)數(shù)-1。孩子計(jì)數(shù)-1表明該克隆文件X 605條目描述克隆文件X 605中的數(shù)據(jù)塊的位置,所述數(shù)據(jù)塊與克隆文件X 605中的在針對(duì)克隆文件X605的不同條目中描述的數(shù)據(jù)塊不連續(xù)。
[0037]克隆文件G604具有文件索引節(jié)點(diǎn)號(hào)“0005”且具有孩子計(jì)數(shù)1,因此克隆文件G604的孩子會(huì)具有父親索引節(jié)點(diǎn)號(hào)“0005”??寺∥募﨓 606具有父親索引節(jié)點(diǎn)號(hào)“0005”,并且因此是克隆文件G 604的孩子??寺」芾肀?04中的針對(duì)克隆文件E 606的條目表明孩子計(jì)數(shù)O,因此克隆文件E 606沒有孩子。
[0038]如果有必要在分布式文件系統(tǒng)203上備份一些克隆文件,則備份和恢復(fù)客戶端302請(qǐng)求備份和恢復(fù)服務(wù)器303備份克隆文件。備份和恢復(fù)服務(wù)器303分析克隆管理表304并且使用該表中的信息來恢復(fù)文件。
[0039]在一示例的克隆文件備份操作中,備份和恢復(fù)服務(wù)器303從備份和恢復(fù)客戶端302接收備份請(qǐng)求,以備份圖7中所示的文件700。在一實(shí)施例中,備份和恢復(fù)服務(wù)器303分析分布式文件系統(tǒng)203上的文件700,并且更新克隆管理表304,該克隆管理表304在該示例的克隆文件備份操作中最初包含圖8中所示的數(shù)據(jù)800。數(shù)據(jù)800繪出一空的克隆管理表304。備份和恢復(fù)客戶端302在時(shí)間99發(fā)起備份過程,遍歷文件系統(tǒng),并在分布式文件系統(tǒng)203中找到克隆文件A 701、克隆文件C 702和克隆文件B 703。備份和恢復(fù)服務(wù)器303訪問數(shù)據(jù)800以確定數(shù)據(jù)800是否是最新的,并且沒有找到針對(duì)克隆文件A 701、克隆文件C 702和克隆文件B 703的條目。備份和恢復(fù)服務(wù)器303從分布式文件系統(tǒng)203中的關(guān)于克隆文件A 701、克隆文件C 702和克隆文件B 703的元數(shù)據(jù)收集關(guān)于克隆文件的丟失信息,并且利用該丟失信息更新數(shù)據(jù)800。圖9繪出克隆管理表304中的數(shù)據(jù)900,其是在已經(jīng)利用該丟失信息進(jìn)行更新之后的克隆管理表304中的數(shù)據(jù)800。備份和恢復(fù)服務(wù)器303備份分布式文件系統(tǒng)203中的克隆文件A 701、克隆文件C 702和克隆文件B 703,并且在數(shù)據(jù)900中記錄針對(duì)克隆文件A701、克隆文件C 702和克隆文件B 703的最新近備份時(shí)間“99”。
[0040]圖10繪出克隆管理表304中的數(shù)據(jù)1000,其是在備份和恢復(fù)服務(wù)器303從備份和恢復(fù)客戶端302接收到有效性檢查請(qǐng)求、并對(duì)數(shù)據(jù)900執(zhí)行有效性檢查之后的數(shù)據(jù)900。在一實(shí)施例中,備份和恢復(fù)服務(wù)器303遍歷數(shù)據(jù)900,搜索不具有父親文件信息的文件條目。備份和恢復(fù)服務(wù)器303首先找到克隆文件A 701,并且克隆文件A 701通過在數(shù)據(jù)1000中將有效411設(shè)置為“V”而被標(biāo)記為有效。因?yàn)榭寺∥募嗀 701的孩子計(jì)數(shù)是1(表明它是I個(gè)孩子的父親),所以備份和恢復(fù)服務(wù)器303在數(shù)據(jù)900中搜索具有克隆文件A 701的文件索引節(jié)點(diǎn)號(hào)(“0001”)作為父親文件索引節(jié)點(diǎn)號(hào)的一個(gè)或多個(gè)文件條目。針對(duì)克隆文件B 703的條目列出“0001”作為其父親文件索引節(jié)點(diǎn)號(hào),因此克隆文件B 703是克隆文件A 701的孩子。備份和恢復(fù)服務(wù)器303確定克隆文件B 703是否有孩子。因?yàn)楹⒆佑?jì)數(shù)409在數(shù)據(jù)900中的針對(duì)克隆文件B 703的條目中被設(shè)置為0,所以有效411在數(shù)據(jù)1000中在針對(duì)克隆文件B 703的條目中被設(shè)置為“V”(即,有效)。因?yàn)榭寺∥募嗀 701在數(shù)據(jù)900中沒有未檢查的孩子,所以備份和恢復(fù)服務(wù)器303在數(shù)據(jù)900中搜索不具有父親文件的文件,并且發(fā)現(xiàn)克隆文件C 702。因?yàn)榭寺∥募﨏 702沒有孩子,所以備份和恢復(fù)服務(wù)器303在數(shù)據(jù)1000中(通過將有效411設(shè)置為“V”)使針對(duì)克隆文件C 702的條目有效,并且在數(shù)據(jù)900中搜索不具有父親文件的下一個(gè)文件條目。因?yàn)樵跀?shù)據(jù)900中沒有未檢查的文件或無效文件,所以有效性檢查終止。
[0041 ]在一實(shí)施例中,在備份和恢復(fù)服務(wù)器303完成有效性檢查之后,它創(chuàng)建無效條目表,其包含數(shù)據(jù)900中的任何剩余的無效或未被檢查的條目。該無效條目表被用戶用來人工分析無效條目表中的克隆文件當(dāng)中的不一致性。
[0042]通過分析克隆管理表304中的關(guān)于克隆文件孩子的信息,備份和恢復(fù)服務(wù)器303可以將(已丟失或損壞的)克隆文件孩子恢復(fù)到其在克隆文件樹中的克隆文件父親。例如,如果備份和恢復(fù)服務(wù)器303從備份和恢復(fù)客戶端302接收到請(qǐng)求以將克隆文件C 702恢復(fù)到分布式文件系統(tǒng)203,則備份和恢復(fù)客戶端302在克隆管理表304中的數(shù)據(jù)1000中搜索針對(duì)克隆文件C 702的一個(gè)或多個(gè)條目,并且確定克隆文件C 702是克隆文件A 701的孩子且克隆文件C 702沒有孩子。備份和恢復(fù)客戶端302使用數(shù)據(jù)1000中的關(guān)于克隆文件C 702的信息,在分布式文件系統(tǒng)203中創(chuàng)建克隆文件C 702。圖11示出在克隆文件C 702已經(jīng)被恢復(fù)之后,克隆文件C 702作為克隆文件樹700中的克隆文件A 701的孩子的表示1100。
[0043]通過分析克隆管理表304中的關(guān)于克隆文件父親的信息,備份和恢復(fù)服務(wù)器303可以將(已丟失或損壞的)克隆文件父親恢復(fù)到其克隆文件樹。例如,如果備份和恢復(fù)服務(wù)器303從備份和恢復(fù)客戶端302接收到請(qǐng)求以將克隆文件A 701恢復(fù)到分布式文件系統(tǒng)203,則備份和恢復(fù)客戶端302在克隆管理表304中的數(shù)據(jù)1000中搜索針對(duì)克隆文件A 701的一個(gè)或多個(gè)條目,并且驗(yàn)證克隆文件A 701有一個(gè)或多個(gè)孩子。備份和恢復(fù)客戶端302使用數(shù)據(jù)1000中的關(guān)于克隆文件A 701的信息,在分布式文件系統(tǒng)203中創(chuàng)建克隆文件A 701。圖12示出在克隆文件A 701已經(jīng)被恢復(fù)后的克隆文件A 701的表示1200。
[0044]圖13根據(jù)本發(fā)明的實(shí)施例繪出說明由圖3的備份和恢復(fù)服務(wù)器303執(zhí)行的操作步驟的流程圖。在圖13的實(shí)施例中,流程圖的步驟還由在備份和恢復(fù)服務(wù)器303上操作的軟件實(shí)施。如此,該軟件在被執(zhí)行時(shí)使備份和恢復(fù)服務(wù)器303執(zhí)行該流程圖的步驟中所述的過程。在其他實(shí)施例中,至少一部分所述過程由備份和恢復(fù)服務(wù)器303可訪問的硬件實(shí)施。這樣的硬件被配置成執(zhí)行流程圖的步驟中所包括的過程中的一個(gè)或多個(gè)。在該實(shí)施例中,備份和恢復(fù)服務(wù)器303生成克隆管理表(CMT)304(步驟1302)。備份和恢復(fù)服務(wù)器303在克隆管理表304中記錄關(guān)于所有克隆樹中的所有克隆文件的克隆管理信息(步驟1304)。備份和恢復(fù)服務(wù)器303接收請(qǐng)求(步驟1306)。如果該請(qǐng)求是備份請(qǐng)求(判斷步驟1308,YES分支),則備份和恢復(fù)服務(wù)器303使用CMT 304中的信息來備份克隆文件樹中的數(shù)據(jù)塊(步驟1309),并終止(步驟1330)。
[0045]在步驟1309中,在執(zhí)行備份操作之前,備份和恢復(fù)服務(wù)器303遍歷文件系統(tǒng),并收集關(guān)于它找到的克隆文件的信息。對(duì)于每個(gè)找到的父親或孩子克隆文件,備份和恢復(fù)服務(wù)器303收集:父親索引節(jié)點(diǎn)號(hào)(如果父親不存在,則為O),具有偏移和長度的唯一塊序列的列表、克隆樹深度、以及孩子計(jì)數(shù)。對(duì)于每個(gè)找到的克隆文件,備份和恢復(fù)服務(wù)器303將它已經(jīng)收集的關(guān)于它已找到的克隆文件的信息與克隆管理表304中的信息進(jìn)行比較,并采取以下動(dòng)作:如果克隆管理表304中存在針對(duì)該克隆文件的條目,并且該條目中的所有值等于在文件系統(tǒng)中找到的值,則在克隆管理表304中利用備份開始時(shí)間更新時(shí)間戳,并且不備份該文件。如果在克隆管理表304中不存在針對(duì)該克隆文件的條目,則在該克隆管理表304中為該克隆文件中的每個(gè)唯一塊序列創(chuàng)建一個(gè)條目,并備份該克隆文件。利用備份開始時(shí)間來更新條目中的時(shí)間戳。如果克隆管理表304中存在針對(duì)該克隆文件的條目,但是塊序列內(nèi)的塊已經(jīng)被寫入,則更新克隆管理表304中針對(duì)該克隆文件的條目。利用備份開始時(shí)間更新條目中的時(shí)間戳。備份在該克隆文件中已經(jīng)被寫入的塊。如果在克隆管理表304中存在針對(duì)該克隆文件的條目,但是該條目中的塊序列已經(jīng)在文件系統(tǒng)中被增添了額外的塊,則在克隆管理表304中創(chuàng)建和添加針對(duì)該克隆文件的描述所述額外塊的新條目。利用備份開始時(shí)間更新針對(duì)文件條目的時(shí)間戳,并備份額外塊。如果在克隆管理表304中存在針對(duì)克隆文件的條目,但是文件系統(tǒng)中的塊序列不具有該條目中所描述的所有塊,則從克隆管理表304中移除在文件系統(tǒng)中沒有找到的塊的描述。如果克隆管理表304中存在針對(duì)克隆文件的條目并且顯示沒有孩子,但是在文件系統(tǒng)中找到一個(gè)或多個(gè)孩子,則將克隆管理表304中針對(duì)克隆文件的條目更新成正確的孩子數(shù)量。利用備份開始時(shí)間更新克隆管理表304中的克隆文件條目中的時(shí)間戳。
[0046]如果請(qǐng)求不是備份請(qǐng)求(判斷步驟1308,N0分支),則備份和恢復(fù)服務(wù)器303判斷該請(qǐng)求是否是恢復(fù)克隆文件的請(qǐng)求(判斷步驟1310)。如果該請(qǐng)求是要恢復(fù)克隆文件(判斷步驟1310,YES分支),則備份和恢復(fù)服務(wù)器303使用CMT中的信息將數(shù)據(jù)塊恢復(fù)到克隆文件(步驟1312 ),并終止(步驟1330)。
[0047]如果請(qǐng)求不是恢復(fù)克隆文件的請(qǐng)求(判斷步驟1310,N0分支),則備份和恢復(fù)服務(wù)器303判斷該請(qǐng)求是否是恢復(fù)克隆文件父親的請(qǐng)求(判斷步驟1314)。如果請(qǐng)求是要恢復(fù)克隆文件父親(判斷步驟1314,YES分支),則備份和恢復(fù)服務(wù)器303使用CMT中的信息將數(shù)據(jù)塊恢復(fù)到克隆文件父親(步驟1316),并終止(步驟1330)。
[0048]如果請(qǐng)求不是恢復(fù)克隆文件父親的請(qǐng)求(判斷步驟1314,N0分支),則備份和恢復(fù)服務(wù)器303判斷該請(qǐng)求是否是恢復(fù)克隆文件樹的請(qǐng)求(判斷步驟1318)。如果該請(qǐng)求是要恢復(fù)克隆文件樹(判斷步驟1318,YES分支),則備份和恢復(fù)服務(wù)器303使用CMT中的信息將數(shù)據(jù)塊恢復(fù)到克隆文件樹(步驟1320),并終止(步驟1330)。
[0049]如果請(qǐng)求不是恢復(fù)克隆文件樹的請(qǐng)求(判斷步驟1318,N0分支),則備份和恢復(fù)服務(wù)器303判斷該請(qǐng)求是否是文件到期請(qǐng)求(判斷步驟1322)。如果該請(qǐng)求是文件到期請(qǐng)求(判斷步驟1322,YES分支),則備份和恢復(fù)服務(wù)器303使用CMT中的信息從克隆文件樹中刪除數(shù)據(jù)塊(步驟1324),并終止(步驟1330)。
[0050]如果請(qǐng)求不是文件到期請(qǐng)求(判斷步驟1322,N0分支),則備份和恢復(fù)服務(wù)器303判斷該請(qǐng)求是否是有效性檢查請(qǐng)求(判斷步驟1326)。如果請(qǐng)求是有效性檢查請(qǐng)求(判斷步驟1326,YES分支),則備份和恢復(fù)服務(wù)器303分析CMT中的信息的一致性(步驟1328),并終止(步驟1330)。如果請(qǐng)求不是有效性檢查請(qǐng)求(判斷步驟1326,N0分支),則備份和恢復(fù)服務(wù)器303向備份和恢復(fù)客戶端302報(bào)告請(qǐng)求錯(cuò)誤,并終止(步驟1330)。
[0051]圖14繪出計(jì)算節(jié)點(diǎn)A205的示例性實(shí)施例,其托管文件服務(wù)器301以及備份和恢復(fù)服務(wù)器303。計(jì)算節(jié)點(diǎn)A 205包括處理器1404、高速緩存1416、通信結(jié)構(gòu)1402,該通信結(jié)構(gòu)1402提供高速緩存1416、存儲(chǔ)器1406、永久存儲(chǔ)裝置1408、通信單元1410以及輸入/輸出(I/O)接口 1412之間的通信。通信結(jié)構(gòu)1402可以利用設(shè)計(jì)成在處理器(諸如微處理器、通信和網(wǎng)絡(luò)處理器、等等)、系統(tǒng)存儲(chǔ)器、外圍設(shè)備和系統(tǒng)內(nèi)的任何其他硬件組件之間傳遞數(shù)據(jù)和/或控制信息的任何架構(gòu)來實(shí)現(xiàn)。例如,通信結(jié)構(gòu)1402可以利用一個(gè)或多個(gè)總線來實(shí)現(xiàn)。
[0052]存儲(chǔ)器1406和永久存儲(chǔ)裝置1308是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。在該實(shí)施例中,存儲(chǔ)器1406包括隨機(jī)存取存儲(chǔ)器(RAM)。通常,存儲(chǔ)器1406可以包括任何適合的易失性或非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。高速緩存1416是快速存儲(chǔ)器,其通過保持最近訪問的數(shù)據(jù)以及從存儲(chǔ)器1306訪問的數(shù)據(jù)附近的數(shù)據(jù)來增強(qiáng)處理器1304的性能。
[0053]用來實(shí)踐本發(fā)明實(shí)施例的程序指令和數(shù)據(jù)可以被存儲(chǔ)在永久存儲(chǔ)裝置1408中,用于經(jīng)由高速緩存1416和存儲(chǔ)器1306中的一個(gè)或多個(gè)存儲(chǔ)器由相應(yīng)的處理器1404中的一個(gè)或多個(gè)執(zhí)行。在一實(shí)施例中,永久存儲(chǔ)裝置1408包括磁硬盤驅(qū)動(dòng)器。可替換地,或者除了磁硬盤驅(qū)動(dòng)器之外,永久存儲(chǔ)裝置1308可以包括固態(tài)硬驅(qū)、半導(dǎo)體存儲(chǔ)設(shè)備、只讀存儲(chǔ)器(R0M)、可擦除可編程只讀存儲(chǔ)器(EPROM)、閃存存儲(chǔ)器、或者能夠存儲(chǔ)程序指令或數(shù)字信息的任何其他計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
[0054]永久存儲(chǔ)裝置1408所使用的介質(zhì)也可以是可移動(dòng)的。例如,可移動(dòng)硬驅(qū)可以被用于永久存儲(chǔ)裝置1408。其他示例包括光或磁盤,拇指驅(qū)動(dòng)器,以及智能卡,該智能卡被插入驅(qū)動(dòng)器中用于向也是永久存儲(chǔ)裝置1408的一部分的另一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)傳送。
[0055]在這些示例中,通信單元1410提供與其他數(shù)據(jù)處理系統(tǒng)或設(shè)備的通信。在這些示例中,通信單元1410包括一個(gè)或多個(gè)網(wǎng)絡(luò)接口卡。通信單元1410可以通過使用物理和無線通信鏈路中的一個(gè)或二者來提供通信。用來實(shí)踐本發(fā)明實(shí)施例的程序指令和數(shù)據(jù)可以通過通信單元1410被下載到永久存儲(chǔ)裝置1408。
[0056]I/O接口 1412允許與可連接到每個(gè)計(jì)算機(jī)系統(tǒng)的其他設(shè)備進(jìn)行數(shù)據(jù)輸入和輸出。例如,I/O接口 1412可以提供去往外部設(shè)備1418(諸如鍵盤、小鍵盤、觸摸屏、和/或一些其他適合的輸入設(shè)備)的連接。外部設(shè)備1418還可以包括便攜式計(jì)算機(jī)可讀存儲(chǔ)器介質(zhì),諸如拇指驅(qū)動(dòng)器、便攜式光或磁盤、以及存儲(chǔ)卡。用來實(shí)踐本發(fā)明實(shí)施例的軟件和數(shù)據(jù)可以被存儲(chǔ)在這樣的便攜式計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上,并且可以經(jīng)由I/O接口 1412被加載到永久存儲(chǔ)裝置1408上。I/O接口 1412還連接到顯示器1420。
[0057]顯示器1420提供了一種向用戶顯示數(shù)據(jù)的機(jī)構(gòu),并且可以是例如計(jì)算機(jī)監(jiān)視器。
[0058]本文中描述的程序是基于在本發(fā)明的特定實(shí)施例中為其實(shí)現(xiàn)這些程序的應(yīng)用來識(shí)別的。然而,應(yīng)當(dāng)理解的是,本文中對(duì)任何特定程序的命名僅僅是出于方便的目的而被使用的,并且因此本發(fā)明不應(yīng)局限于唯一地用于由這樣的命名識(shí)別和/或暗示的任何特定應(yīng)用。
[0059]本發(fā)明可以是系統(tǒng)、方法和/或計(jì)算機(jī)程序產(chǎn)品。計(jì)算機(jī)程序產(chǎn)品可以包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上載有用于使處理器實(shí)現(xiàn)本發(fā)明的各個(gè)方面的計(jì)算機(jī)可讀程序指令。
[0060]計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是可以保持和存儲(chǔ)由指令執(zhí)行設(shè)備使用的指令的有形設(shè)備。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一一但不限于一一電存儲(chǔ)設(shè)備、磁存儲(chǔ)設(shè)備、光存儲(chǔ)設(shè)備、電磁存儲(chǔ)設(shè)備、半導(dǎo)體存儲(chǔ)設(shè)備或者上述的任意合適的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:便攜式計(jì)算機(jī)盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPROM或閃存)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、便攜式壓縮盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能盤(DVD)、記憶棒、軟盤、機(jī)械編碼設(shè)備、例如其上存儲(chǔ)有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、以及上述的任意合適的組合。這里所使用的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)不被解釋為瞬時(shí)信號(hào)本身,諸如無線電波或者其他自由傳播的電磁波、通過波導(dǎo)或其他傳輸媒介傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸?shù)碾娦盘?hào)。
[0061]這里所描述的計(jì)算機(jī)可讀程序指令可以從計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)下載到各個(gè)計(jì)算/處理設(shè)備,或者通過網(wǎng)絡(luò)、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無線網(wǎng)下載到外部計(jì)算機(jī)或外部存儲(chǔ)設(shè)備。網(wǎng)絡(luò)可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機(jī)、網(wǎng)關(guān)計(jì)算機(jī)和/或邊緣服務(wù)器。每個(gè)計(jì)算/處理設(shè)備中的網(wǎng)絡(luò)適配卡或者網(wǎng)絡(luò)接口從網(wǎng)絡(luò)接收計(jì)算機(jī)可讀程序指令,并轉(zhuǎn)發(fā)該計(jì)算機(jī)可讀程序指令,以供存儲(chǔ)在各個(gè)計(jì)算/處理設(shè)備中的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。
[0062]用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序指令可以是匯編指令、指令集架構(gòu)(ISA)指令、機(jī)器指令、機(jī)器相關(guān)指令、微代碼、固件指令、狀態(tài)設(shè)置數(shù)據(jù)、或者以一種或多種編程語言的任意組合編寫的源代碼或目標(biāo)代碼,所述編程語言包括面向?qū)ο蟮木幊陶Z言一諸如Smalltalk、C++等,以及常規(guī)的過程式編程語言一諸如“C”語言或類似的編程語言。計(jì)算機(jī)可讀程序指令可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。在一些實(shí)施例中,通過利用計(jì)算機(jī)可讀程序指令的狀態(tài)信息來個(gè)性化定制電子電路,例如可編程邏輯電路、現(xiàn)場(chǎng)可編程門陣列(FPGA)或可編程邏輯陣列(PLA),該電子電路可以執(zhí)行計(jì)算機(jī)可讀程序指令,從而實(shí)現(xiàn)本發(fā)明的各個(gè)方面。
[0063]這里參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的各個(gè)方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)可讀程序指令實(shí)現(xiàn)。
[0064]這些計(jì)算機(jī)可讀程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些指令在通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。也可以把這些計(jì)算機(jī)可讀程序指令存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,這些指令使得計(jì)算機(jī)、可編程數(shù)據(jù)處理裝置和/或其他設(shè)備以特定方式工作,從而,存儲(chǔ)有指令的計(jì)算機(jī)可讀介質(zhì)則包括一個(gè)制造品,其包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的各個(gè)方面的指令。
[0065]也可以把計(jì)算機(jī)可讀程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,從而使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上執(zhí)行的指令實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作。
[0066]附圖中的框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
[0067]本發(fā)明的各個(gè)實(shí)施例的描述已經(jīng)出于舉例說明的目的而被呈現(xiàn),而并非旨在是無遺漏的或局限于所公開的實(shí)施例。在不脫離本發(fā)明的范圍和精神的情況下,許多改型和變型對(duì)于本領(lǐng)域普通技術(shù)人員來說將是明顯的。本文所使用的術(shù)語被選擇為最佳地解釋所述實(shí)施例的原理、實(shí)際應(yīng)用、或者相對(duì)于在市場(chǎng)中發(fā)現(xiàn)的技術(shù)的技術(shù)改進(jìn),或者使本領(lǐng)域其他普通技術(shù)人員能夠理解本文公開的實(shí)施例。
[0068]本文使用的術(shù)語僅是為了描述特定實(shí)施例的目的,并且并非意在限制本發(fā)明。本文使用的單數(shù)形式的“一”和“該”意在也包括復(fù)數(shù)形式,除非上下文有清楚的相反指示。
[0069]除了說明本發(fā)明在各個(gè)階段的方法和功能之外,各個(gè)附圖還說明了整體或部分地由一個(gè)或多個(gè)設(shè)備和結(jié)構(gòu)實(shí)現(xiàn)的所述方法的邏輯。這樣的設(shè)備和結(jié)構(gòu)被配置成(即,包括被連接以使得能夠執(zhí)行一個(gè)過程的一個(gè)或多個(gè)組件,諸如電阻器、電容器、晶體管等等)實(shí)現(xiàn)將一個(gè)或多個(gè)非事務(wù)性存儲(chǔ)和一個(gè)或多個(gè)線程特定的事務(wù)性存儲(chǔ)融合到存儲(chǔ)高速緩存中的存儲(chǔ)緩沖器中的一個(gè)或多個(gè)高速緩存線模板中的方法。換言之,一個(gè)或多個(gè)計(jì)算機(jī)硬件設(shè)備可以被創(chuàng)建,其配置成實(shí)現(xiàn)在本文中參考附圖及其對(duì)應(yīng)描述來描述的方法和過程。
[0070]本發(fā)明的各個(gè)實(shí)施例的描述已經(jīng)出于舉例說明的目的而被呈現(xiàn),而并非旨在是無遺漏的或局限于所公開的實(shí)施例。在不脫離所述實(shí)施例的范圍和精神的情況下,許多改型和變型對(duì)于本領(lǐng)域普通技術(shù)人員來說將是明顯的。本文所使用的術(shù)語被選擇為最佳地解釋所述實(shí)施例的原理、實(shí)際應(yīng)用、或者相對(duì)于在市場(chǎng)中發(fā)現(xiàn)的技術(shù)的技術(shù)改進(jìn),或者使本領(lǐng)域其他普通技術(shù)人員能夠理解本文公開的實(shí)施例。
[0071]本發(fā)明的實(shí)施例可用于各式各樣的電子應(yīng)用中,包括但不限于高級(jí)傳感器、存儲(chǔ)器/數(shù)據(jù)存儲(chǔ)裝置、半導(dǎo)體、微處理器和其他應(yīng)用。
[0072]所得到的設(shè)備和結(jié)構(gòu)諸如集成電路(IC)芯片可以由制造者以原始晶片形式(SP,作為具有多個(gè)未封裝芯片的單個(gè)晶片)作為裸芯片或者以封裝形式來分發(fā)。在后一種情況下,芯片被安裝在單個(gè)芯片封裝體(諸如塑料載體、具有固定到母板或其他更高級(jí)載體的引線)中或者多芯片封裝體(諸如具有表面互連或埋設(shè)互連之一或二者的陶瓷載體)中。在任何情況下,芯片隨后與其他芯片、離散電路元件和/或其他信號(hào)處理設(shè)備集成,作為(a)諸如母板之類的中間產(chǎn)品或(b)終端產(chǎn)品的一部分。終端產(chǎn)品可以是包括集成電路芯片的任何產(chǎn)品,其涵蓋范圍可從玩具和其他低端應(yīng)用到具有顯示器、鍵盤或其他輸入設(shè)備和中央處理器的高級(jí)計(jì)算機(jī)產(chǎn)品。
[0073]下面的權(quán)利要求中的所有裝置或步驟加功能元件的對(duì)應(yīng)結(jié)構(gòu)、材料、動(dòng)作和等效物意在包括用于與具體要求保護(hù)的其他元件相結(jié)合地執(zhí)行功能的任何結(jié)構(gòu)、材料或動(dòng)作。本發(fā)明的描述已經(jīng)出于舉例說明和描述的目的而被呈現(xiàn),而并非旨在是無遺漏的或局限于所公開的形式的發(fā)明。在不脫離本發(fā)明的范圍和精神的情況下,許多改型和變型對(duì)于本領(lǐng)域普通技術(shù)人員來說將是明顯的。實(shí)施例被選擇并描述,以便最佳地解釋本發(fā)明的原理和實(shí)際應(yīng)用,以及使本領(lǐng)域其他普通技術(shù)人員能夠理解本發(fā)明從而獲得具有適合于所預(yù)期的特定使用情況的各種修改的各種實(shí)施例。
[0074]盡管本發(fā)明已經(jīng)結(jié)合僅僅有限數(shù)量的實(shí)施例進(jìn)行了詳細(xì)描述,但是應(yīng)該容易理解的是,本發(fā)明不限于這些公開的實(shí)施例。相反,本發(fā)明可以被修改以包含任意數(shù)量的之前并未描述、但是與并發(fā)明的精神和范圍相稱的變化、更改、替換或等效布置。另外,盡管已經(jīng)描述了本發(fā)明的各種實(shí)施例,但是應(yīng)理解的是,本發(fā)明的各方面可以僅被所述實(shí)施例的一些包括。因此,本發(fā)明不應(yīng)視為被前面的描述限制。除非具體地陳述,否則對(duì)單數(shù)元件的提及并非旨在意指“一個(gè)且僅一個(gè)”,而是指“一個(gè)或多個(gè)”。與本公開全篇中所述的各種實(shí)施例的元件等效的本領(lǐng)域普通技術(shù)人員已知或以后知曉的所有結(jié)構(gòu)和功能通過引用特意結(jié)合在本文中、并且意在被本發(fā)明包括。因此,應(yīng)理解的是,可以在所公開的特定實(shí)施例中作出落入所附權(quán)利要求所概述的本發(fā)明的范圍內(nèi)的改變。
【主權(quán)項(xiàng)】
1.一種用于備份和恢復(fù)一個(gè)或多個(gè)克隆文件樹的方法,所述方法包括: 由一個(gè)或多個(gè)處理器生成克隆管理表; 由所述一個(gè)或多個(gè)處理器在所述克隆管理表中記錄關(guān)于文件系統(tǒng)中的一個(gè)或多個(gè)克隆文件樹中的每個(gè)克隆文件的克隆管理信息; 響應(yīng)于接收到備份請(qǐng)求,由所述一個(gè)或多個(gè)處理器更新所述克隆管理信息,并存儲(chǔ)處于所述一個(gè)或多個(gè)克隆文件樹中的一個(gè)或多個(gè)數(shù)據(jù)塊; 響應(yīng)于接收到恢復(fù)克隆文件的請(qǐng)求,由所述一個(gè)或多個(gè)處理器分析關(guān)于所述克隆文件的克隆管理信息,并將所述克隆文件中的一個(gè)或多個(gè)數(shù)據(jù)塊恢復(fù)到所述文件系統(tǒng); 響應(yīng)于接收到恢復(fù)克隆文件父親的請(qǐng)求,由所述一個(gè)或多個(gè)處理器分析關(guān)于所述克隆文件父親的克隆管理信息,并將所述克隆文件父親中的一個(gè)或多個(gè)數(shù)據(jù)塊恢復(fù)到所述文件系統(tǒng);以及 響應(yīng)于接收到恢復(fù)克隆文件樹的請(qǐng)求,由所述一個(gè)或多個(gè)處理器分析關(guān)于所述克隆文件樹的克隆管理信息,并將所述克隆文件樹中的一個(gè)或多個(gè)數(shù)據(jù)塊恢復(fù)到所述文件系統(tǒng)。2.如權(quán)利要求1所述的方法,其中關(guān)于克隆文件的克隆管理信息包括關(guān)于所述克隆文件的文件信息、已經(jīng)被寫入所述克隆文件的一個(gè)或多個(gè)數(shù)據(jù)塊的位置、以及所述克隆文件的最新近備份時(shí)間。3.如權(quán)利要求2所述的方法,其中所述文件信息包括所述克隆文件的標(biāo)識(shí)符、所述克隆文件的大小、所述克隆文件的索引節(jié)點(diǎn)號(hào)、所述克隆文件的索引節(jié)點(diǎn)元數(shù)據(jù)、所述克隆文件的父親的索引節(jié)點(diǎn)號(hào)、所述克隆文件在克隆文件樹中的深度級(jí)別、所述克隆文件的孩子計(jì)數(shù)、以及針對(duì)所述克隆管理信息的有效指示符。4.如權(quán)利要求1所述的方法,其中備份和恢復(fù)服務(wù)器將克隆文件備份和恢復(fù)到所述文件系統(tǒng),以及從所述文件系統(tǒng)備份和恢復(fù)克隆文件。5.如權(quán)利要求4所述的方法,其中所述克隆管理表位于所述備份和恢復(fù)服務(wù)器中。6.如權(quán)利要求1所述的方法,還包括: 響應(yīng)于接收到文件到期請(qǐng)求,由所述一個(gè)或多個(gè)處理器更新所述克隆管理信息,并從所述一個(gè)或多個(gè)克隆文件樹中刪除一個(gè)或多個(gè)數(shù)據(jù)塊;以及 響應(yīng)于接收到檢查所述克隆管理表的有效性的請(qǐng)求,由所述一個(gè)或多個(gè)處理器分析所述克隆管理表中的信息的一致性,并生成處于所述克隆管理表中的無效信息的列表。7.如權(quán)利要求5所述的方法,其中所述備份和恢復(fù)服務(wù)器以及所述克隆管理表分布在所述文件系統(tǒng)中的多個(gè)計(jì)算機(jī)上。8.—種用于備份和恢復(fù)一個(gè)或多個(gè)克隆文件樹的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括: 一個(gè)或多個(gè)計(jì)算機(jī)處理器,一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),以及存儲(chǔ)在所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上用于由所述一個(gè)或多個(gè)處理器中的至少一個(gè)執(zhí)行的程序指令,所述程序指令包括: 生成克隆管理表的程序指令; 在所述克隆管理表中記錄關(guān)于文件系統(tǒng)中的一個(gè)或多個(gè)克隆文件樹中的每個(gè)克隆文件的克隆管理信息的程序指令; 響應(yīng)于接收到備份請(qǐng)求,更新所述克隆管理信息,并存儲(chǔ)處于一個(gè)或多個(gè)克隆文件樹中的一個(gè)或多個(gè)數(shù)據(jù)塊的程序指令; 響應(yīng)于接收到恢復(fù)克隆文件的請(qǐng)求,分析關(guān)于所述克隆文件的克隆管理信息,并將所述克隆文件中的一個(gè)或多個(gè)數(shù)據(jù)塊恢復(fù)到所述文件系統(tǒng)的程序指令; 響應(yīng)于接收到恢復(fù)克隆文件父親的請(qǐng)求,分析關(guān)于所述克隆文件父親的克隆管理信息,并將所述克隆文件父親中的一個(gè)或多個(gè)數(shù)據(jù)塊恢復(fù)到所述文件系統(tǒng)的程序指令;以及 響應(yīng)于接收到恢復(fù)克隆文件樹的請(qǐng)求,分析關(guān)于所述克隆文件樹的克隆管理信息,并將所述克隆文件樹中的一個(gè)或多個(gè)數(shù)據(jù)塊恢復(fù)到所述文件系統(tǒng)的程序指令。9.如權(quán)利要求8所述的計(jì)算機(jī)系統(tǒng),還包括存儲(chǔ)在所述一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上用于執(zhí)行以下操作的程序指令: 在關(guān)于克隆文件的克隆管理信息中包括:關(guān)于所述克隆文件的文件信息、已經(jīng)被寫入所述克隆文件的一個(gè)或多個(gè)數(shù)據(jù)塊的位置、以及所述克隆文件的最新近備份時(shí)間。10.如權(quán)利要求9所述的計(jì)算機(jī)系統(tǒng),還包括存儲(chǔ)在所述一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上用于執(zhí)行以下操作的程序指令: 在所述文件信息中包括:所述克隆文件的標(biāo)識(shí)符、所述克隆文件的大小、所述克隆文件的索引節(jié)點(diǎn)號(hào)、所述克隆文件的索引節(jié)點(diǎn)元數(shù)據(jù)、所述克隆文件的父親的索引節(jié)點(diǎn)號(hào)、所述克隆文件在克隆文件樹中的深度級(jí)別、所述克隆文件的孩子計(jì)數(shù)、以及針對(duì)所述克隆管理信息的有效指示符。11.如權(quán)利要求8所述的計(jì)算機(jī)系統(tǒng),還包括存儲(chǔ)在所述一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上用于執(zhí)行以下操作的程序指令: 使用備份和恢復(fù)服務(wù)器,將克隆文件備份和恢復(fù)到所述文件系統(tǒng),以及從所述文件系統(tǒng)備份和恢復(fù)克隆文件。12.如權(quán)利要求11所述的計(jì)算機(jī)系統(tǒng),其中所述科隆管理表位于所述備份和恢復(fù)服務(wù)器中。13.如權(quán)利要求8所述的計(jì)算機(jī)系統(tǒng),還包括: 響應(yīng)于接收到檢查所述克隆管理表的有效性的請(qǐng)求,分析所述克隆管理表中的信息的一致性,并生成處于所述克隆管理表中的無效信息的列表的程序指令;以及 響應(yīng)于接收到恢復(fù)克隆文件的請(qǐng)求,分析關(guān)于所述克隆文件的克隆管理信息,并將所述克隆文件中的一個(gè)或多個(gè)數(shù)據(jù)塊恢復(fù)到所述文件系統(tǒng)的程序指令。
【文檔編號(hào)】G06F11/14GK106021017SQ201610185066
【公開日】2016年10月12日
【申請(qǐng)日】2016年3月29日
【發(fā)明人】S·本德爾, N·豪施泰因, D·米勒-威克, W·A·索頓, J·P·史密斯
【申請(qǐng)人】國際商業(yè)機(jī)器公司