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