在使用處理器件的計算環(huán)境中提供使用選擇性元組版本化的文件系統(tǒng)快照的方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及在使用處理器件的計算環(huán)境中提供使用選擇性元組版本化的文件系統(tǒng)快照的方法和系統(tǒng)。對文件系統(tǒng)使用選擇性元組版本化,從而提供使用選擇性元組版本化的文件系統(tǒng)快照,以便保持文件系統(tǒng)的狀態(tài)。
【專利說明】在使用處理器件的計算環(huán)境中提供使用選擇性元組版本化的文件系統(tǒng)快照的方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明一般地涉及計算機,并且更特別地,涉及提供使用選擇性元組版本化(tuple version)的用于保持文件系統(tǒng)的狀態(tài)的文件系統(tǒng)快照。
【背景技術(shù)】
[0002]在當今的社會中,計算機系統(tǒng)很普遍。計算機系統(tǒng)在工作場所、家里或者學(xué)校都可以見得到。計算機系統(tǒng)可以包括用于處理和存儲數(shù)據(jù)的數(shù)據(jù)存儲系統(tǒng)或磁盤存儲系統(tǒng)。在各種計算環(huán)境中,計算機系統(tǒng)包含用來“歸檔(file away)”用戶在以后將對其檢索以進行處理的信息的文件系統(tǒng)。文件系統(tǒng)是用于組織和管理計算機文件的方法或數(shù)據(jù)結(jié)構(gòu)。文件系統(tǒng)提供了用于在物理及邏輯上組織計算機上的文件的一種更佳方式。已知的用于實現(xiàn)文件系統(tǒng)的方法之一是通過使用關(guān)系數(shù)據(jù)庫。由于各種因素,在計算環(huán)境內(nèi)保持文件系統(tǒng)的狀態(tài)方面產(chǎn)生了挑戰(zhàn)。
【發(fā)明內(nèi)容】
[0003]如上所述,文件系統(tǒng)是用于組織和管理計算機文件的方法或數(shù)據(jù)結(jié)構(gòu)。已知的用于實現(xiàn)文件系統(tǒng)的方法之一是使用關(guān)系數(shù)據(jù)庫。文件系統(tǒng)數(shù)據(jù)庫的實現(xiàn)方式給文件系統(tǒng)的用戶及開發(fā)人員提供關(guān)系數(shù)據(jù)庫系統(tǒng)的高級的可擴展的特征。此類特征包括涉及文件系統(tǒng)內(nèi)的多個節(jié)點(例如,文件/目錄)的高效率的事務(wù)及查詢。考慮到這些特征,連同未提及的其他特征一起,需要使用用于在計算環(huán)境內(nèi)保持文件系統(tǒng)在某個時間點的狀態(tài)的快照的文件系統(tǒng)數(shù)據(jù)庫的實現(xiàn)方式。
[0004]因此,并且考慮到上述各種示例性的方法、系統(tǒng)及計算機程序產(chǎn)品,本發(fā)明提供了提供使用選擇性元組版本化的用于保持文件系統(tǒng)的狀態(tài)的文件系統(tǒng)快照的實施例??煺毡戆總€快照的單個條目,用于指示快照的時間。在快照下的文件/目錄連同不在快照下的行一起被保持于該特定的文件系統(tǒng)的主文件系統(tǒng)表內(nèi)。用于存儲每個快照的單個條目的附加快照表包含快照標識(ID)和快照時間戳。換言之,通過添加快照表來對文件系統(tǒng)使用選擇性元組版本化,以通過存儲于包含與為了保留文件系統(tǒng)中的節(jié)點的以往狀態(tài)而創(chuàng)建的快照相關(guān)的快照時間戳的快照表的行內(nèi)而與文件系統(tǒng)關(guān)聯(lián)。
[0005]除了上述示例性的方法實施例外,本發(fā)明還提供了其他示例性的系統(tǒng)及計算機產(chǎn)品的實施例并且供給相關(guān)的優(yōu)點。前面的總結(jié)已經(jīng)被提供以用簡單的形式引入概念的選取,這些概念將在下面的【具體實施方式】中進一步描述。本
【發(fā)明內(nèi)容】
并非旨在識別所要求權(quán)利的主題的關(guān)鍵特征或基本特征,也并非旨在被用作對確定所要求權(quán)利的主題的范圍的輔助。所要求權(quán)利的主題并不限定于用于解決在【背景技術(shù)】中指出的任何或全部缺點的實現(xiàn)方式。
【專利附圖】
【附圖說明】[0006]為了使本發(fā)明的優(yōu)點更容易理解,以上所簡要給出的關(guān)于本發(fā)明的更具體描述將通過參照在附圖中示出的具體實施例來給出。理解這些附圖示出了本發(fā)明的實施例并且因此不應(yīng)被認為是對本發(fā)明的范圍的限定,本發(fā)明將通過附圖的使用以附加的特異性和細節(jié)來描述和解釋,在附圖中:
[0007]圖1是示出具有其中可以實現(xiàn)本發(fā)明的各方面的實例存儲器件的計算系統(tǒng)環(huán)境的框圖;
[0008]圖2是示出其中可以實現(xiàn)本發(fā)明的各方面的在計算機系統(tǒng)中的示例性數(shù)據(jù)存儲系統(tǒng)的硬件結(jié)構(gòu)的框圖;
[0009]圖3是示出用于提供使用選擇性元組版本化的文件系統(tǒng)快照的一種示例性方法的流程圖;
[0010]圖4A是示出用于創(chuàng)建節(jié)點的一種示例性方法的流程圖;
[0011]圖4B是示出用于創(chuàng)建快照的一種示例性方法的流程圖;
[0012]圖4C是示出用于請求保留節(jié)點的一種示例性方法的流程圖;
[0013]圖4D是示出用于更新節(jié)點的一種示例性方法的流程圖;
[0014]圖4E是示出用于檢索節(jié)點的屬性的一種示例性方法的流程圖;
[0015]圖4F是示出用于去除請求以保留特定節(jié)點的一種示例性方法的流程圖;
[0016]圖4G是示出用于刪除快照的一種示例性方法的流程圖;
[0017]圖4H是示出用于刪除節(jié)點的一種示例性方法的流程圖;以及
[0018]圖5是示出一種示例性文件系統(tǒng)以及使用選擇性元組版本化的用于保留文件系統(tǒng)的狀態(tài)的快照表的框圖。
【具體實施方式】
[0019]文件系統(tǒng)是節(jié)點的容器,而節(jié)點是文件/目錄的通用名稱。文件系統(tǒng)表代表文件系統(tǒng),而節(jié)點被表示為包含于文件系統(tǒng)表內(nèi)的行。文件系統(tǒng)可以含有大量的節(jié)點。文件系統(tǒng)數(shù)據(jù)庫的實現(xiàn)方式給文件系統(tǒng)的用戶及開發(fā)人員提供了關(guān)系數(shù)據(jù)庫系統(tǒng)的高級的可擴展的特征。此類特征包括涉及文件系統(tǒng)內(nèi)的多個節(jié)點(例如,文件/目錄)的高效率的事務(wù)及查詢。
[0020]應(yīng)用程序通常需要維持文件系統(tǒng)在某個時間點的狀態(tài)。因此,需要提供使用對文件系統(tǒng)的選擇性元組版本化的文件系統(tǒng)快照,用于在計算環(huán)境中維持文件系統(tǒng)(例如,節(jié)點的容器)的狀態(tài)。還需要通過將位圖添加到節(jié)點在文件系統(tǒng)表內(nèi)的行來使用對文件系統(tǒng)的選擇性元組版本化,以便保留節(jié)點的以往狀態(tài)。要解決這些需求,計算系統(tǒng)必須滿足下列要求。(I)計算系統(tǒng)應(yīng)當使用用于保留文件系統(tǒng)的狀態(tài)的快照來允許保留文件系統(tǒng)在某個時間點的狀態(tài)。(2)計算系統(tǒng)應(yīng)當允許保留文件系統(tǒng)在某個時間點的節(jié)點。(3)計算系統(tǒng)應(yīng)當允許訪問通過快照和/或位圖保留的文件系統(tǒng)和/或節(jié)點。(4)在創(chuàng)建快照時,計算系統(tǒng)應(yīng)當需要恒定的時間和輸入/輸出(I/O)復(fù)雜度,并且消耗恒定量的存儲空間。(5)在快照的壽命期間,保留文件系統(tǒng)的快照的開銷(overhead)不可以給文件系統(tǒng)操作的經(jīng)常成本增添比固定的一小部分成本更多的成本。此外,快照所消耗的空間應(yīng)當是在快照的創(chuàng)建與文件系統(tǒng)的當前狀態(tài)之間改變的節(jié)點數(shù)的函數(shù)(例如,自快照創(chuàng)建的時間以來改變了兩次的節(jié)點應(yīng)當只保留一次)。(6)快照刪除必須需要作為由快照保留的節(jié)點的數(shù)量的函數(shù)的時間和I/O復(fù)雜度,并且恢復(fù)由快照保留的節(jié)點所占用的全部空間。
[0021]要解決以上所列出的要求,所示出的實施例設(shè)法在文件系統(tǒng)表內(nèi)提供用于保留文件系統(tǒng)(例如,節(jié)點的容器)在單個時間點的狀態(tài)的文件系統(tǒng)快照。每次請求都需要細粒度的(Finely grained)快照來保留文件系統(tǒng)(例如,節(jié)點的容器)的狀態(tài)。正因如此,文件系統(tǒng)快照的實現(xiàn)方式在復(fù)雜度及空間消耗方面必須是可擴展的且高效的。保留的含義是:如果在獲取快照的時間之前創(chuàng)建的節(jié)點被修改,則(than)在快照創(chuàng)建之前已存在的狀態(tài)被保留??煺找钥煺毡韥韺崿F(xiàn)??煺毡戆煺談?chuàng)建的時間,但不包含有關(guān)文件系統(tǒng)或文件系統(tǒng)節(jié)點的任何信息。快照表為每個快照存儲包含快照標識(ID)和快照時間戳的單個條目。
[0022]而且,在一種可替換的實施例中,通過將位圖添加至文件系統(tǒng)表而對文件系統(tǒng)使用選擇性元組版本化,用于保留單個節(jié)點的狀態(tài)。如前所述,文件系統(tǒng)是含有文件系統(tǒng)內(nèi)的全部節(jié)點(包括文件系統(tǒng)的根目錄)的表格。在各種快照下的節(jié)點行被存儲于文件系統(tǒng)表內(nèi),鄰接不在快照下的行。在文件系統(tǒng)表內(nèi)的所有行都含有起始時間和結(jié)束時間??煺盏膭?chuàng)建并不直接影響文件系統(tǒng)表內(nèi)的行,因為只有在文件系統(tǒng)表內(nèi)的行更新時該行才被復(fù)制??煺盏膭?chuàng)建會給快照表添加新的行。之后,當文件系統(tǒng)表內(nèi)的在快照下的行被更新時(使用起始時間、結(jié)束時間及快照時間戳來推導(dǎo)出的),該行被復(fù)制而不是在原地更新。一旦創(chuàng)建了快照,文件系統(tǒng)就允許訪問由快照保留的節(jié)點。文件系統(tǒng)允許刪除快照以及恢復(fù)先前由通過快照保留的文件系統(tǒng)(和/或節(jié)點)占用的全部空間。
[0023]在一種實施例中,以實例的方式(僅作不例),文件系統(tǒng)的節(jié)點被存儲于表格內(nèi)。表格的行包含每個節(jié)點的唯一標識符(例如,節(jié)點ID),包括節(jié)點屬性,例如,名稱、尺寸、創(chuàng)建時間等。文件系統(tǒng)的條目不保存于數(shù)據(jù)庫中。相反地,文件系統(tǒng)表包含文件系統(tǒng)內(nèi)的節(jié)點(包括代表文件系統(tǒng)的根目錄的節(jié)點)的條目。換言之,當文件系統(tǒng)被創(chuàng)建時,文件系統(tǒng)被創(chuàng)建為僅含有根節(jié)點的表格。之后,其他節(jié)點被創(chuàng)建為根節(jié)點的后代(decedent)。要維持文件系統(tǒng)的樹形層次結(jié)構(gòu),可以通過在節(jié)點的每個行中保存父節(jié)點ID而存在從每個節(jié)點到父節(jié)點的引用。在這個框架上,選擇性的元組版本化被使用并且使元組版本化適用于文件系統(tǒng)快照及位圖的實現(xiàn)方式,并且稱為選擇性元組版本化。選擇性元組版本化幫助在一個維度上保留行和/或單個節(jié)點的以往狀態(tài)。緯度可以被定義為數(shù)據(jù)的邏輯分組(例如,消費者/產(chǎn)品數(shù)據(jù))。
[0024]在一種實施例中,對使用元組版本化來保持文件系統(tǒng)及單個節(jié)點的狀態(tài)的保留通過給每個行添加用于定義該行有效的時間段的起始及結(jié)束時間來實現(xiàn)。當新行被添加到表內(nèi)時,起始時間包含該新行被添加的時間,而該行的結(jié)束時間被設(shè)定為無窮大(⑴)。為了在文件系統(tǒng)表中檢索當前條目,結(jié)束時間等于無窮大的行被查詢。當行在時間“T”更新時(其中“T”是用作實例的任意時間變量),該行被復(fù)制以形成新行,并且該新行的起始時間被設(shè)定為等于時間“T”。待更新的行是結(jié)束時間被設(shè)定為無窮大的新行。舊行的結(jié)束時間被更新并且被設(shè)定為等于時間“T”。要檢索節(jié)點表內(nèi)與時間“T”相關(guān)的條目,具有小于時間“T”的起始時間以及大于“T”的結(jié)束時間(例如,起始時間〈T且結(jié)束時間>τ)的行被查詢。
[0025]為了維持文件系統(tǒng)的狀態(tài),選擇性元組版本化被應(yīng)用。選擇性元組版本化通過要求待添加到數(shù)據(jù)庫內(nèi)的附加信息而允許元組版本化的“選擇性”。選擇性元組版本化允許了選擇性,使得并非表內(nèi)的所有行都要自動復(fù)制,而是僅復(fù)制與快照相關(guān)的行。首先,“快照表”被添加到數(shù)據(jù)庫內(nèi)。換言之,附加行被添加到快照表內(nèi)并且結(jié)合節(jié)點ID表來工作??煺毡戆煺斋@取的時間,并且特別地,快照表內(nèi)的行含有快照時間戳。與快照相關(guān)的所有其他信息(例如,與快照相關(guān)的節(jié)點)被維持于主文件系統(tǒng)表內(nèi)。同樣,為了允許保留單個節(jié)點,將附加字段添加到與具體節(jié)點相關(guān)的每個行內(nèi),以便指出該節(jié)點是否應(yīng)當保留。新的字段可以表示為位,其中每個位指示使用該節(jié)點的應(yīng)用程序。與保留在任意時間“T”之前的所有節(jié)點的快照表相比,位圖允許具體選擇哪些節(jié)點來保留。使用位圖,而不是簡單的布爾標志(Boolean flag)或引用計數(shù),以便通過給每個應(yīng)用程序指派不同的位而允許多個應(yīng)用程序彼此獨立地保留單個節(jié)點。而且,與引用計數(shù)相比,位圖容許應(yīng)用程序試圖多次保留或不保留同一節(jié)點。
[0026]利用文件系統(tǒng)表內(nèi)的快照表和/或位圖中的附加信息,通過檢查與具體節(jié)點相關(guān)的行的起始時間是否早于快照獲取或者行內(nèi)的位之一被開啟(例如,設(shè)定為表示開啟的“I”)的時間,可以作出關(guān)于應(yīng)當何時保留行的確定。
[0027]在一種實施例中,對由快照保留的文件系統(tǒng)的節(jié)點的訪問通過使用與快照相關(guān)的快照標識(ID)來允許。在一種可替換的實施例中,對由位圖保留的單個節(jié)點的訪問通過使用在與具體節(jié)點相關(guān)的行內(nèi)的起始時間來允許??煺誌D提供對快照表時間的訪問,用于在快照被創(chuàng)建時訪問。與快照相關(guān)的節(jié)點具有小于快照時間戳的在行內(nèi)的起始時間以及大于快照時間戳的在行內(nèi)的結(jié)束時間。
[0028]另一方面,如上所述,在文件系統(tǒng)表內(nèi)的具體節(jié)點通過位圖來保留,并且可以通過在與具體節(jié)點相關(guān)的行內(nèi)的起始時間來訪問。由位圖保留的行類似于由快照保留的行那樣通過使用小于行的起始時間且大于行的結(jié)束時間的時間“T”來訪問??煺湛梢酝ㄟ^從快照表中去除快照行以及通過去除與所刪除快照關(guān)聯(lián)的全部節(jié)點(例如,節(jié)點的結(jié)束時間小于無窮大并且在節(jié)點的創(chuàng)建之后沒有其他快照被創(chuàng)建,并且每個節(jié)點位圖都被設(shè)定于零值“O”)來刪除。
[0029]對于每個新創(chuàng)建的節(jié)點,起始時間和結(jié)束時間都被添加至主文件系統(tǒng)表內(nèi)的每個行。但是,快照表僅包含具有不同快照時間的條目。將起始時間和結(jié)束時間添加至文件系統(tǒng)表內(nèi)的每個行以及保持快照表的結(jié)合,保留了文件系統(tǒng)在某個時間點的狀態(tài)。另一方面,在文件系統(tǒng)表內(nèi)的位圖被用來保留單個節(jié)點在某個時間點的狀態(tài)??煺誌D被用來訪問由快照保留的文件系統(tǒng)節(jié)點。由于快照創(chuàng)建僅涉及將單個行添加至快照表,因而在時間和I/O操作中允許恒定的復(fù)雜度并且允許使用恒定量的存儲空間。在快照的壽命期間,節(jié)點的狀態(tài)通過一次對快照表的查詢以及另一次對文件系統(tǒng)主表的查詢(通過復(fù)制與具體節(jié)點相關(guān)的行)來保留。能夠認定快照表的大小是顯著小于節(jié)點表的,因而與快照表查詢操作的開銷被認為是較小的。所保留的行的復(fù)制添加了插入文件系統(tǒng)表的行,用于更新事務(wù)。由于插入和更新在單次數(shù)據(jù)庫事務(wù)內(nèi)完成,因而這些操作得以高效地執(zhí)行。
[0030]另外,文件系統(tǒng)(例如,節(jié)點的容器)通過同一快照來保留一次,因為在第一次更新后,文件系統(tǒng)的起始時間將晚于(例如,在其之后)快照時間(例如,快照時間戳)。這樣的操作允許消耗作為在快照與文件系統(tǒng)的當前狀態(tài)之間改變的節(jié)點的數(shù)量的函數(shù)的空間(例如,自快照創(chuàng)建的時間以來改變了兩次的節(jié)點應(yīng)當只保留一次)。
[0031]快照也可以被刪除。在這樣做時,快照被從快照表的行內(nèi)刪除,并且執(zhí)行查詢以從文件系統(tǒng)表中去除不再由任何其他快照所引用的節(jié)點。由于從快照表中去除快照以及從文件系統(tǒng)表中去除節(jié)點可以在單次事務(wù)中執(zhí)行,大部分數(shù)據(jù)庫系統(tǒng)將需要比由快照保留的節(jié)點的數(shù)量顯著要少的I/o操作。此外,在快照刪除操作之后,由快照保留的節(jié)點所消耗的全部空間都將被恢復(fù)。此外,應(yīng)當注意,位圖并不直接連接至快照并且被用來實現(xiàn)選擇性元組版本化。位圖允許對單個節(jié)點層進行更細粒度的保留。
[0032]現(xiàn)在轉(zhuǎn)到圖1,圖中示出了一種計算機系統(tǒng)實施例的示例性體系結(jié)構(gòu)10。計算機系統(tǒng)10包括與通信端口 18及存儲器件16連接的中央處理單元(CPU) 12。通信端口 18與通信網(wǎng)絡(luò)20通信。通信網(wǎng)絡(luò)20和存儲網(wǎng)絡(luò)可以被配置為與服務(wù)器(主機)24和22及存儲系統(tǒng)通信,該存儲系統(tǒng)可以包括存儲設(shè)備14。存儲系統(tǒng)可以包括可以配置于獨立磁盤冗余陣列(RAID)內(nèi)的硬盤驅(qū)動器(HDD)器件、固態(tài)器件(SSD)等。下文所描述的操作可以在存儲設(shè)備14上執(zhí)行,位于系統(tǒng)10內(nèi)或其他地方,并且可以具有獨立地和/或結(jié)合其他CPU器件12工作的多個存儲器件16。存儲器件16可以包括諸如電可擦除可編程只讀存儲器(EEPROM)之類的存儲器或者相關(guān)器件的主機。存儲器件16和存儲設(shè)備14經(jīng)由信號傳播介質(zhì)連接至CPU12。另外,CPU12通過通信端口 18連接至通信網(wǎng)絡(luò)20,具有所連接的多個附加計算機主機系統(tǒng)24和22。另外,存儲器件16和CPU12可以嵌入并包含于計算系統(tǒng)10的每個構(gòu)件內(nèi)。每個存儲系統(tǒng)也可以包括單獨的和/或不同的結(jié)合起來工作的或者作為單獨的存儲器件16和/或CPU12來工作的存儲器件16和CPU12。
[0033]圖2是示出在根據(jù)本發(fā)明的計算機系統(tǒng)內(nèi)的數(shù)據(jù)存儲系統(tǒng)的硬件結(jié)構(gòu)的示例性框圖200。圖中示出了主計算機210、220、225,每個主機都充當用于作為數(shù)據(jù)存儲系統(tǒng)200的部件來執(zhí)行數(shù)據(jù)處理的中央處理單元。集群主機/節(jié)點(物理或虛擬設(shè)備)210、220和225可以是一個或多個新的物理設(shè)備或邏輯設(shè)備,用于在數(shù)據(jù)存儲系統(tǒng)200中實現(xiàn)本發(fā)明的目的。在一種實施例中,以實例的方式(僅作示例),數(shù)據(jù)存儲系統(tǒng)200可以被實現(xiàn)為IBM?System Storage?DS8000?o網(wǎng)絡(luò)連接260可以是光纖通道架構(gòu)、光纖通道點到點鏈路、通過以太網(wǎng)架構(gòu)或點到點鏈路的光纖通道、FICON或ESCON I/O接口、任何其他I/O接口類型、無線網(wǎng)絡(luò)、有線網(wǎng)絡(luò)、LAN、WAN、異構(gòu)網(wǎng)絡(luò)、同構(gòu)網(wǎng)絡(luò)、公共網(wǎng)絡(luò)(S卩,英特網(wǎng))、專用網(wǎng)絡(luò)或者它們的任意組合。主機210、220和225可以是本地的或者分布于一個或多個位置,并且可以配備任何類型的架構(gòu)(或架構(gòu)通道)(在圖2中未示出)或者到存儲控制器240的網(wǎng)絡(luò)適配器260,例如,光纖通道、FIC0N、ESC0N、以太網(wǎng)、光纖、無線或同軸適配器。因此,數(shù)據(jù)存儲系統(tǒng)200配備有適合的架構(gòu)(在圖2中未示出)或網(wǎng)絡(luò)適配器260,以進行通信。在圖2中示出了數(shù)據(jù)存儲系統(tǒng)200,包括存儲控制器240及集群主機210、220和225。集群主機210、220和225可以包括集群節(jié)點。
[0034]為促進對本文所描述的方法的更清楚的理解,在圖2中示出了作為單個處理單元的存儲控制器240,包括將在下文更詳細地描述的微處理器242、系統(tǒng)存儲器243和非易失性存儲設(shè)備(“NVS”)216。應(yīng)當注意,在某些實施例中,存儲控制器240包括多個處理單元,每個處理單元都具有它們自己的處理器復(fù)合體和系統(tǒng)存儲器,并且通過數(shù)據(jù)存儲系統(tǒng)200內(nèi)的專用網(wǎng)絡(luò)來互連。存儲設(shè)備230 (在圖3中標記為230a、230b和230η)可以包括一個或多個存儲器件(例如,存儲陣列),該一個或多個存儲器件(通過存儲網(wǎng)絡(luò))連接至存儲控制器240,一個或多個集群主機210、220和225連接至每個存儲控制器240。
[0035]在某些實施例中,包含于存儲設(shè)備230內(nèi)的器件可以連接成環(huán)路結(jié)構(gòu)。存儲控制器240管理存儲設(shè)備230并且促進針對存儲設(shè)備230的寫請求和讀請求的處理。存儲控制器240的系統(tǒng)存儲器243存儲程序指令和數(shù)據(jù),這些程序指令和數(shù)據(jù)可由處理器242存取用于執(zhí)行本發(fā)明的功能和方法步驟以便執(zhí)行和管理本文所描述的存儲設(shè)備230。在一種實施例中,系統(tǒng)存儲器243包括用于執(zhí)行本文所描述的方法和操作的操作軟件250,或者與其關(guān)聯(lián)或通信。如圖2所示,系統(tǒng)存儲器243還可以包括存儲設(shè)備230的用于緩沖“寫入數(shù)據(jù)”和“讀出數(shù)據(jù)”的高速緩存245 (在此也稱為“緩沖存儲器”)或者與其通信,該“寫入數(shù)據(jù)”和“讀出數(shù)據(jù)”分別指的是寫/讀請求以及它們的關(guān)聯(lián)數(shù)據(jù)。在一種實施例中,高速緩存245位于系統(tǒng)存儲器243外部的設(shè)備內(nèi),然而仍保持為可由微處理器242訪問,并且除了執(zhí)行本文所描述的操作外,還可以用來提供防止數(shù)據(jù)丟失的附加安全性。
[0036]在某些實施例中,高速緩存245以易失性存儲器和非易失性存儲器來實現(xiàn),并且為了數(shù)據(jù)存儲系統(tǒng)200的增強性能而經(jīng)由本地總線(在圖2中未示出)耦接至微處理器242。包含于數(shù)據(jù)存儲控制器內(nèi)的NVS216可由微處理器242訪問并且用來為其他圖形所描述的本發(fā)明的操作及執(zhí)行提供附加的支持。NVS216也可以稱為“永久”高速緩存或者“高速緩沖存儲器”,并且以可以使用或不使用外部電源來保持存儲于其內(nèi)的數(shù)據(jù)的非易失性存儲來實現(xiàn)。NVS可以存儲于高速緩存245內(nèi)并與其一起用于適合于實現(xiàn)本發(fā)明的目的的任何用途。在某些實施例中,備用電源(在圖2中未示出)(例如,電池)給NVS216供應(yīng)足夠的電能以在數(shù)據(jù)存儲系統(tǒng)200失去電源的情況下保持存儲于其內(nèi)的數(shù)據(jù)。在某些實施例中,NVS216的容量小于或等于高速緩存245的總?cè)萘俊?br>
[0037]存儲設(shè)備230可以在物理上包括一個或多個存儲設(shè)備,例如,存儲陣列。存儲陣列是個體存儲設(shè)備(例如,硬盤)的邏輯分組。在某些實施例中,存儲設(shè)備230包括JBOD (簡單磁盤捆綁)陣列或RAID (獨立磁盤冗余陣列)陣列。一組物理存儲陣列可以被進一步結(jié)合以形成盤組(rank),該盤組使物理存儲器與邏輯配置分離開。在盤組內(nèi)的存儲器空間可以分配于邏輯卷內(nèi),該邏輯卷定義了在寫/讀請求中指定的存儲位置。
[0038]在一種實施例中,以實例的方式(僅作示例),圖2所示的存儲系統(tǒng)可以包括邏輯卷,或者簡稱為“卷”,可以具有不同種類的分配。存儲設(shè)備230a、230b和230η在數(shù)據(jù)存儲系統(tǒng)200中被示為盤組,并且在此稱為盤組230a、230b和230η。盤組可以是數(shù)據(jù)存儲系統(tǒng)200本地的,或者可以位于物理上遠程的位置。換言之,本地存儲控制器可以與遠程存儲控制器連接并且管理在遠程位置處的存儲設(shè)備。盤組230a被示出為配置有兩個整卷234和236,以及一個分卷232a。盤組230b被示出為具有另一個分卷232b。該卷232被分配為跨越盤組230a和230b。盤組230η被示出為完全分配給卷238——也就是,盤組230η指的是用于卷238的整個物理存儲器。根據(jù)上述實例,應(yīng)當意識到,盤組可以被配置為包括一個或多個分卷和/或整卷。卷和盤組還可以被劃分成代表固定的存儲塊的所謂的“軌道”。因此,軌道與給定的卷關(guān)聯(lián)并且可以被賦予給定的盤組。
[0039]存儲控制器240可以包括快照模塊255、時間戳模塊256、主文件系統(tǒng)表模塊257以及選擇性元組版本化模塊259。主文件系統(tǒng)表模塊257包含在快照之下的節(jié)點??煺漳K255、時間戳模塊256、主文件系統(tǒng)表模塊257及選擇性兀組版本化模塊259可以結(jié)合存儲控制器240、主機210、220、225及存儲器件230的每個及全部構(gòu)件來工作??煺漳K255、時間戳模塊256、主文件系統(tǒng)表模塊257及選擇性兀組版本化模塊259在結(jié)構(gòu)上可以是一個完整的模塊,或者可以與其他個體模塊關(guān)聯(lián)和/或包含于其他個體模塊中??煺漳K255、時間戳模塊256、主文件系統(tǒng)表模塊257及選擇性元組版本化模塊259還可以位于高速緩存245或其他構(gòu)件內(nèi)。[0040]存儲控制器240包括:用于控制到主計算機210、220、225的光纖通道協(xié)議的控制開關(guān)241 ;用于控制整個存儲控制器240的微處理器242 ;用于存儲用于控制存儲控制器240的操作的微程序(操作軟件)250、用于控制的數(shù)據(jù)及后面描述的每個表的非易失性控制存儲器243 ;用于臨時存儲(緩沖)數(shù)據(jù)的高速緩存245 ;以及用于輔助高速緩存245來讀取和寫入數(shù)據(jù)的緩沖器244,控制開關(guān)241用于控制對與存儲器件230、快照模塊255、時間戳模塊256、主文件系統(tǒng)表模塊257以及選擇性元組版本化模塊259之間的數(shù)據(jù)傳輸?shù)倪M行控制的協(xié)議,在該存儲控制器240中可以設(shè)定信息。多個緩沖器244可以以本發(fā)明來實現(xiàn)以幫助本文所描述的操作。在一種實施例中,集群主機/節(jié)點210、220、225及存儲控制器240通過作為接口的網(wǎng)絡(luò)適配器(該網(wǎng)絡(luò)適配器可以是光纖通道)260,即經(jīng)由至少一個稱為“架構(gòu)(fabric)”的開關(guān)來連接。
[0041]在一種實施例中,主計算機或者一個或多個物理或虛擬設(shè)備210、220、225及存儲控制器240通過作為接口的網(wǎng)絡(luò)適配器(該網(wǎng)絡(luò)適配器可以是光纖通道)260,即經(jīng)由至少一個稱為“架構(gòu)(fabric)”的開關(guān)來連接。在一種實施例中,將對圖2所示的系統(tǒng)的操作進行描述。微處理器242可以控制用于存儲來自主機設(shè)備(物理的或虛擬的)210的命令信息以及用于識別主機設(shè)備(物理的或虛擬的)210的信息的存儲器243。控制開關(guān)241、緩沖器244、高速緩存245、操作軟件250、微處理器242、存儲器243、NVS216、快照模塊255、時間戳模塊256、主文件系統(tǒng)表模塊257與選擇性元組版本化模塊259彼此通信并且可以是分離的或一個個體構(gòu)件。此外,幾個(若非全部)構(gòu)件(例如,操作軟件250)可以包含于存儲器243內(nèi)。為了適合于本發(fā)明的用途,在所示出的器件內(nèi)的每個構(gòu)件都可以鏈接到一起,并且可以彼此通信。
[0042]如上所述,快照模塊255、時間戳模塊256、主文件系統(tǒng)表模塊257及選擇性元組版本化模塊259還可以位于高速緩存245或其他構(gòu)件內(nèi)。應(yīng)當注意,RAM模塊259可以好比是短期存儲器,而硬盤好比是長期存儲器。換言之,RAM模塊259是隨機存取存儲器。RAM(隨機存取存儲器)是計算機內(nèi)用于保持當前使用的操作系統(tǒng)、應(yīng)用程序及數(shù)據(jù)(使得它們能夠被計算機的處理器242快速地獲得)的地方。RAM的讀寫比計算機內(nèi)的其他類型的存儲設(shè)備(硬盤、軟盤及⑶-ROM)快得多。正因如此,一個或多個快照模塊255、時間戳模塊256、主文件系統(tǒng)表模塊257及選擇性元組版本化模塊259可以根據(jù)需要來使用,基于存儲體系結(jié)構(gòu)及用戶偏好。
[0043]現(xiàn)在轉(zhuǎn)到圖3,圖中示出了用于示出提供使用選擇性元組版本化的文件系統(tǒng)快照的一種示例性方法300的流程圖。方法300開始(步驟302)于通過添加快照表來使用對文件系統(tǒng)的選擇性元組版本化,以與文件系統(tǒng)表關(guān)聯(lián),用于存儲含有用于每個快照的單個條目(具有快照時間戳)的快照(例如,每個快照都具有快照ID及各自的快照時間戳)(步驟304)。在快照下的節(jié)點包含于主文件系統(tǒng)表內(nèi)。方法300結(jié)束(步驟306)。存儲快照(每個快照都具有ID和各自的快照時間戳)。
[0044]要幫助提供使用選擇性元組版本化的用于保持文件系統(tǒng)的狀態(tài)的文件系統(tǒng)快照,生成由文件系統(tǒng)(例如,節(jié)點的容器)使用的各種時間戳(例如,起始時間戳、結(jié)束時間戳及快照時間戳)。時間戳通過使用隨時間嚴格遞增的(單調(diào))函數(shù)來生成。在此類函數(shù)(f)中,如果時間大于時間“T2”(例如,T1XT2),則函數(shù)f (T1)大于或等于f(T2)(例如,f(I\)<f (T2)),其中f是函數(shù),T1是第一時間,而T2是第二時間段)。因此,所生成的時間戳是唯一的,并且永遠不會隨時間減小,而相反會隨時間增加。無窮大(m)的時間值可以通過使用“空(null)”和/或時間計數(shù)器可以保存的最大值來定義。
[0045]用于提供使用選擇性元組版本化的用于保持文件系統(tǒng)的狀態(tài)的文件系統(tǒng)快照的過程使用各種文件系統(tǒng)操作并且將在下文描述。用于使用各種文件系統(tǒng)操作來提供使用選擇性元組版本化的用于維持單個節(jié)點的狀態(tài)的位圖的過程同樣如下進行描述。圖4A是示出用于創(chuàng)建節(jié)點的一種示例性方法400的流程圖。方法400開始(步驟402)于連同節(jié)點屬性一起接收創(chuàng)建新節(jié)點的請求(步驟404)。節(jié)點被創(chuàng)建于文件系統(tǒng)表內(nèi)(步驟406)。標記為時間“1\”的新的時間戳值被生成(步驟408)。含有新創(chuàng)建的文件系統(tǒng)的屬性的新行被添加至文件系統(tǒng)表,起始時間等于時間(例如,起始時間=T1)并且結(jié)束時間等于無窮大(例如,結(jié)束時間=m)(步驟410)。方法400結(jié)束(步驟412)。
[0046]圖4B是示出用于創(chuàng)建快照的一種示例性方法401的流程圖。方法401開始(步驟403)。創(chuàng)建快照的請求連同快照ID—起被接收(步驟405)。方法401可以創(chuàng)建快照(步驟407)。時間“T2”的新快照的時間戳值被生成(步驟409)。新的行被添加至快照表,時間戳被設(shè)定為等于“Τ2” (例如,時間=Τ2)(步驟411)。方法401結(jié)束(步驟413)。
[0047]圖4C是示出用于請求保留節(jié)點的一種示例性方法405的流程圖。方法405開始(步驟414)。方法405可以接收保留具體節(jié)點的請求,連同節(jié)點ID和請求應(yīng)用位一起(步驟416)。保留具體節(jié)點的請求僅與位圖相關(guān)。應(yīng)當注意,使用快照的保留在快照被創(chuàng)建時被執(zhí)行。位被設(shè)定于節(jié)點位圖內(nèi)(步驟418)。節(jié)點起始時間被返回給用戶,以使用戶能夠在以后的時間訪問所保留的節(jié)點(步驟420)。方法405結(jié)束(步驟421)。
[0048]圖4D是示出用于更新節(jié)點的一種示例性方法425的流程圖。方法425開始(步驟417)并且可以接收更新節(jié)點的請求,連同節(jié)點ID以及應(yīng)當要改變的節(jié)點屬性一起(步驟422)。時間“Τ3”的新的時間戳值被生成(步驟424)。然后,方法425確定節(jié)點位圖是否具有位集合,或者是否存在快照時間“Τ3”大于在文件系統(tǒng)表內(nèi)的節(jié)點的起始時間且小于在文件系統(tǒng)表內(nèi)的節(jié)點的結(jié)束時間的快照(步驟426)。若是,則節(jié)點信息被復(fù)制到新行內(nèi),該節(jié)點的舊行的結(jié)束時間被設(shè)定為等于“Τ3”(例如,結(jié)束時間=T3)(步驟428)。與該節(jié)點相關(guān)的新行根據(jù)更新請求來更新,并且所更新的行的起始時間被設(shè)定為等于時間“Τ3”,并且所更新的行的位圖可以被清除(步驟430)。若否,方法425結(jié)束(步驟431)。
[0049]圖4Ε是示出用于從快照中檢索節(jié)點的屬性的一種示例性方法435的流程圖。方法435開始(步驟432),可以接收從快照中檢索節(jié)點的屬性的請求,連同節(jié)點ID和快照ID一起(步驟433)。通過使用快照ID從快照表中檢索出快照時間戳(步驟436)。方法435使用節(jié)點ID來從文件系統(tǒng)表中檢索具有小于快照時間戳的起始時間且大于快照時間戳的結(jié)束時間的節(jié)點(例如,屬性)(步驟438)。方法435結(jié)束(步驟439)。
[0050]圖4F是示出用于去除保留具體節(jié)點的請求的一種示例性方法445的流程圖。方法445開始(步驟440)并且可以接收停止保留節(jié)點的請求,該請求包括節(jié)點ID、請求應(yīng)用位及節(jié)點起始時間(步驟441)。方法445去除保留具體節(jié)點的請求(步驟442)。在文件系統(tǒng)表內(nèi)的位圖可以不設(shè)定位。如果節(jié)點的位圖被清除并且節(jié)點的結(jié)束時間不同于無窮大,則如果節(jié)點的結(jié)束時間小于快照表中的最早的快照時間戳,或者如果節(jié)點的起始時間大于快照表中的最近的快照時間戳,就刪除節(jié)點的行(步驟444)。方法445結(jié)束(步驟446)。
[0051]圖4G是示出用于刪除快照的一種示例性方法455的流程圖。方法455開始(步驟447)并且可以接收刪除快照的請求,連同快照ID—起(步驟448)。方法455可以刪除快照(步驟450)。方法455可以通過使用快照ID從快照表中檢索快照時間戳“T”(步驟452)。方法455檢查以查看是否還有在要刪除的快照之前的快照(步驟454)。若是,則方法455將"Tprev"設(shè)定為先前快照的時間(步驟456)。若不存在先前快照,則將Tpmv設(shè)定為零值“O”(步驟458)。方法455檢查以查看是否還有在要刪除的快照之后的快照(步驟460)。若是,則將“Tnrart”設(shè)定為后續(xù)快照的時間(步驟461 )。若不存在后續(xù)快照,則將Tmxt設(shè)定為無窮大“m”(步驟462)。方法455可以刪除在節(jié)點表內(nèi)具有被清除的位圖的并且它們的起始時間大于Tpmv且它們的結(jié)束時間小于Tnext的每個節(jié)點(步驟463)??煺招斜粡目煺毡碇袆h除(步驟464)。方法455結(jié)束(步驟467)。
[0052]圖4H是示出用于刪除節(jié)點的一種示例性方法465的流程圖。方法465開始(步驟466)并且可以接收刪除節(jié)點的請求,連同節(jié)點ID—起(步驟468)。方法465檢查以查看節(jié)點位圖是否具有位集合,和/或,是否存在快照時間戳大于節(jié)點的起始時間且小于節(jié)點的結(jié)束時間的快照(步驟469)。若是,則生成新的時間戳值“T”并且將節(jié)點的行的結(jié)束時間設(shè)定為“T”(步驟470)。若否,則從節(jié)點表中刪除該節(jié)點的行(步驟472)。方法465結(jié)束(步驟 474)。
[0053]圖5是示出一種示例性的文件系統(tǒng)表以及使用選擇性元組版本化的用于保留文件系統(tǒng)的狀態(tài)的快照表的框圖500。在圖5中,示出并標記了文件系統(tǒng)表和快照表,包括“更新前”和“更新后”。在“更新前”的文件系統(tǒng)表中,示出了節(jié)點標識(ID)(例如,文件系統(tǒng)ID)、起始時間、結(jié)束時間、位圖、尺寸及其他各種條目(在圖表中示為“等”)的列。舉例來說,圖5示出了“更新前”的文件系統(tǒng)表,節(jié)點1、2和3被添加至文件系統(tǒng)表。節(jié)點I具有起始時間T1、被設(shè)定為無窮大(⑴)的結(jié)束時間、位圖中被設(shè)定為等于0000的位,并且節(jié)點的尺寸被示為任意值100 (在此僅作為示例而示出)。節(jié)點2具有起始時間T2、被設(shè)定為無窮大(⑴)的結(jié)束時間、位圖中被設(shè)定為等于0001的位,并且尺寸被示為任意值100 (在此僅作為示例而示出)。節(jié)點3具有起始時間T3、被設(shè)定為無窮大(Co)的結(jié)束時間、位圖中被設(shè)定為等于0000的位,并且節(jié)點的尺寸被示為任意值100 (在此僅作為示例而示出)??煺毡戆擞洖榭煺誌D以及用于快照時間戳的快照時間的至少兩列??煺誌D指示被設(shè)定為等于I(“I”)的任意值,而快照時間被設(shè)定為等于T2。沒有兩個快照時間戳是相同的。在時間戳之間的順序可以是T1小于T2以及T2小于T3 (例如,WT3),并且快照時間戳能夠被標記為“Ts”,并且Ts大于T1且小于T2 (例如,VT1且<τ2)。
[0054]舉例來說,圖5還示出了“更新后”的文件系統(tǒng)表,節(jié)點1、2和3被更新。在節(jié)點I中,狀態(tài)被保留,因為節(jié)點I在快照(例如,快照時間戳)之下。節(jié)點2的狀態(tài)被保留,因為節(jié)點2具有通過使用位圖來設(shè)定為“開啟(on)”的位(例如,設(shè)定為0001的位)。但是,節(jié)點3的狀態(tài)未保留,因為它既不在快照(例如,快照時間戳)之下也沒有通過使用具有開啟的位(例如,設(shè)定為0001)的位圖來保留。
[0055]對于節(jié)點1,節(jié)點I的復(fù)制行被創(chuàng)建,并且所復(fù)制的節(jié)點I的值具有起始時間!\、被設(shè)定為T5的結(jié)束時間、位圖中被設(shè)定為等于0000的位,并且節(jié)點的尺寸被示為任意值100 (在此僅作為示例而示出)?,F(xiàn)在,在更新之后,所保留的節(jié)點I具有起始時間T5、被設(shè)定為的結(jié)束時間,位圖中被設(shè)定為等于0000的位,并且節(jié)點的尺寸被示為任意值200(在此僅作為示例而示出)。[0056]對于節(jié)點2,節(jié)點2的復(fù)制行被創(chuàng)建,并且所復(fù)制的節(jié)點2的值具有起始時間T2、被設(shè)定為T6的結(jié)束時間、位圖中被設(shè)定為等于0001的位,并且節(jié)點的尺寸被示為任意值100(在此僅作為示例而示出)。現(xiàn)在,在更新之后,所保留的節(jié)點2具有起始時間T6、被設(shè)定為m的結(jié)束時間、位圖中被清除的且設(shè)定為等于0000的位,并且節(jié)點的尺寸被示為任意值200(在此僅作為示例而示出)。
[0057]節(jié)點3的狀態(tài)未保留,因為節(jié)點3既不在快照(例如,快照時間戳)之下,也沒有通過使用具有開啟的位(例如,設(shè)定為0001)的位圖來保留。對節(jié)點3不進行復(fù)制,并且在更新之后,節(jié)點3具有起始時間T7,以及被設(shè)定為c?的結(jié)束時間,位圖中被設(shè)定為等于0000的位,并且節(jié)點的尺寸被示為任意值200 (在此僅作為示例而示出)。
[0058]如圖5所示,通過添加快照表來將選擇性元組版本化用于文件系統(tǒng)表上,以與文件系統(tǒng)表關(guān)聯(lián),用于將與節(jié)點相關(guān)的行存儲于文件系統(tǒng)表內(nèi)。節(jié)點行僅存儲于文件系統(tǒng)表內(nèi),而快照表被用來存儲快照請求并且保存快照獲取的時間。文件系統(tǒng)表包含具有以快照相關(guān)的時間戳標識的條目的行,被創(chuàng)建用于保留文件系統(tǒng)的以往狀態(tài)。與快照關(guān)聯(lián)的快照標識(ID)被添加至快照表,以便訪問具體的快照。文件系統(tǒng)表僅包含有關(guān)包含于文件系統(tǒng)內(nèi)的節(jié)點的數(shù)據(jù)。起始時間和結(jié)束時間被添加至與文件系統(tǒng)表內(nèi)的新節(jié)點關(guān)聯(lián)的行。起始時間被設(shè)定為等于新行被添加至文件系統(tǒng)表的時間。結(jié)束時間被設(shè)定為等于無窮大。換言之,在文件系統(tǒng)表內(nèi)的每個行都包含起始時間和結(jié)束時間。當用于節(jié)點的行被添加至文件系統(tǒng)表(在時間“T”)時,則節(jié)點的起始時間被設(shè)定為“T”,而結(jié)束時間被設(shè)定為無窮大。
[0059]快照時間戳被添加至在快照被獲取時創(chuàng)建于快照表內(nèi)的新行的條目之一。快照保留在文件系統(tǒng)表中的在快照創(chuàng)建之前創(chuàng)建的全部節(jié)點。位圖被用來保留單個節(jié)點,而不是整個文件系統(tǒng)(例如,節(jié)點的容器)。文件系統(tǒng)表可以被更新和/或請求可以被接收,用于去除保留文件系統(tǒng)的狀態(tài)和/或具體節(jié)點的請求。新的字段被添加至文件系統(tǒng)表內(nèi)的節(jié)點的每個行,用于指示節(jié)點是否應(yīng)當保留。作為保留的一部分,在字段內(nèi)的位可以被設(shè)定用于響應(yīng)于接收到保留節(jié)點的請求而保留節(jié)點。位指示使用節(jié)點的應(yīng)用程序。作為用于保留節(jié)點的請求的一部分,保留節(jié)點的請求連同節(jié)點標識(ID)以及用于請求保留節(jié)點的位一起被接收??煺諛俗R(ID)被返回 給用戶,以便訪問被保留的節(jié)點。當使用位圖的節(jié)點被保留時,返回給用戶的值是保留的當前時間,以允許用戶訪問所保留的行。快照ID在快照創(chuàng)建期間被分配,并且允許用戶訪問由快照保留的所有行。
[0060]請求還可以被接收,用于連同節(jié)點ID以及需要更新的節(jié)點的相關(guān)屬性一起來更新節(jié)點。請求一次只能夠更新一個節(jié)點。換言之,一次不更新多個行,而是,一次(每個請求)只更新一個行。指示更新時間的新的時間戳被生成。結(jié)合更新,與要更新的節(jié)點關(guān)聯(lián)的行被復(fù)制到新行內(nèi),結(jié)束時間被設(shè)定為等于所生成的新的時間戳。僅在存在具有大于節(jié)點的起始時間且小于節(jié)點的結(jié)束時間的快照時間戳的快照的情況下,執(zhí)行復(fù)制。節(jié)點的起始時間被設(shè)定為等于新的時間戳。
[0061]在任意時間點,可以接收用于請求刪除快照的請求。在接收到刪除快照的請求時,快照及快照標識(ID)被刪除。此外,查詢被執(zhí)行,用于去除由所刪除的快照保留的并且不與快照表中的任何其他快照關(guān)聯(lián)的節(jié)點。
[0062]此外,作為接收刪除快照及快照標識(ID)的請求的一部分,通過使用快照ID來從快照表中檢索出快照時間戳。先前快照(例如,在待刪除的快照之前的且標記為“TPMV”的快照)的時間戳以及后續(xù)快照(例如,在待刪除的快照之后的且標記為“TMxt”的快照)的時間戳被檢索。如果在快照表中沒有找到要刪除的快照的先前快照,則將標記為“TPMV”(和/或“先前”)的時間戳設(shè)定為零值。如果在快照表中沒有找到要刪除的快照的后續(xù)快照,則將標記為“TMxt”(和/或“后續(xù)”)的時間戳設(shè)定為無窮大值。具有大于先前快照的時間戳的起始時間以及小于后續(xù)快照的時間戳的結(jié)束時間戳的快照及其關(guān)聯(lián)的與文件系統(tǒng)相關(guān)的行被刪除。
[0063]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明的各個方面可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本發(fā)明的各個方面可以具體實現(xiàn)為以下形式,即:完全的硬件實施方式、完全的軟件實施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結(jié)合的實施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明的各個方面還可以實現(xiàn)為在一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)中包含計算機可讀的程序代碼。
[0064]可以采用一個或多個計算機可讀介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、光纖、便攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0065]計算機可讀介質(zhì)上包含的程序代碼可以用任何適當?shù)慕橘|(zhì)傳輸,包括一但不限于一一無線、有線、光纜、RF等等,或者上述的任意合適的組合。可以以一種或多種程序設(shè)計語言的任意組合來編寫用于執(zhí)行本發(fā)明操作的計算機程序代碼,所述程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語目一諸如Java、Smalltalk、C++等,還包括常規(guī)的過程式程序設(shè)計語言一諸如“C”語言或類似的程序設(shè)計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務(wù)器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN) —連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
[0066]上面已經(jīng)參照根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應(yīng)當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,使得這些計算機程序指令在通過計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。
[0067]也可以把這些計算機程序指令存儲在計算機可讀介質(zhì)中,這些指令使得計算機、其它可編程數(shù)據(jù)處理裝置、或其他設(shè)備以特定方式工作,從而,存儲在計算機可讀介質(zhì)中的指令就產(chǎn)生出包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的指令的制造品(article of manufacture)。也可以把計算機程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。
[0068]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
[0069]雖然已經(jīng)詳細地說明了本發(fā)明的一個或多個實施例,但是本領(lǐng)域技術(shù)人員應(yīng)當意識到,在不脫離后面的權(quán)利要求書所闡明的本發(fā)明的范圍的情況下可以對上述實施例進行修改和適應(yīng)。
【權(quán)利要求】
1.一種用于在使用處理器件的計算環(huán)境中提供使用選擇性元組版本化的文件系統(tǒng)快照的方法,包括: 通過添加快照表來對文件系統(tǒng)表使用所述選擇性元組版本化,以與所述文件系統(tǒng)表關(guān)聯(lián),并且將多個行存儲于所述快照表內(nèi),每個行都含有與為保留文件系統(tǒng)中的多個節(jié)點的以往狀態(tài)而創(chuàng)建的快照相關(guān)的快照時間戳,其中在所述快照下的所述多個節(jié)點的行被維持于所述文件系統(tǒng)表內(nèi)。
2.根據(jù)權(quán)利要求1所述的方法,還包括使用快照標識(ID)來檢索所述快照時間戳,以便訪問在所述快照下的所述多個節(jié)點的所述行。
3.根據(jù)權(quán)利要求1所述的方法,還包括結(jié)合使用所述選擇性元組版本化來執(zhí)行下列操作之一: 創(chuàng)建具有至少節(jié)點標識(ID)及關(guān)聯(lián)屬性的所述多個節(jié)點,其中所述節(jié)點標識及所述關(guān)聯(lián)屬性包含于所述多個節(jié)點在所述文件系統(tǒng)表內(nèi)的所述行中, 將起始時間和結(jié)束時間添加至所述文件系統(tǒng)表內(nèi)的多個行中的一個新行內(nèi),其中所述起始時間被設(shè)定為等于所述多個行中的那個新行被添加到所述文件系統(tǒng)表的時間,并且所述結(jié)束時間被設(shè)定為等于無窮大,以及 在創(chuàng)建所述快照時將所述多個行中的一個新行添加到含有所述快照ID及所述快照時間戳的所述快照表。
4.根據(jù)權(quán)利要求1所述的方法,還包括使所述快照與具有小于所述快照時間戳的起始時間以及大于所述快照時間戳的結(jié)束時間的所述多個節(jié)點關(guān)聯(lián)。
5.根據(jù)權(quán)利要求1所述的 方法,還包括執(zhí)行下列操作中的至少一個: 將至少一個字段添加至所述文件系統(tǒng)表內(nèi)的多個行中的每個行,用于指出是否應(yīng)當保留所述文件系統(tǒng)中的所述多個節(jié)點, 請求通過創(chuàng)建所述快照來保留所述多個節(jié)點, 以所述快照來更新所述文件系統(tǒng),以及 去除保留所述文件系統(tǒng)的請求。
6.根據(jù)權(quán)利要求1所述的方法,還包括在創(chuàng)建所述快照時生成所述快照時間戳。
7.根據(jù)權(quán)利要求1所述的方法,還包括結(jié)合更新所述文件系統(tǒng)來執(zhí)行下列操作之一: 接收更新所述多個節(jié)點中的至少一個節(jié)點以及至少一個節(jié)點標識(ID)及所述多個節(jié)點的關(guān)聯(lián)屬性的請求, 生成指示更新的時間的新快照時間戳, 如果所述快照具有大于所述多個節(jié)點的起始時間且小于所述多個節(jié)點的結(jié)束時間的所述快照時間戳,則將所述多個節(jié)點在所述文件系統(tǒng)表內(nèi)的所述行之一復(fù)制到所述多個節(jié)點在所述文件系統(tǒng)表內(nèi)的所述行中的一個新行內(nèi),所述新行具有被設(shè)定為等于新快照時間戳的結(jié)束時間,以及 根據(jù)所述更新請求來更新所述多個節(jié)點在所述文件系統(tǒng)表內(nèi)的所述行,其中所述多個節(jié)點的所述起始時間被設(shè)定為等于所述新快照時間戳。
8.根據(jù)權(quán)利要求1所述的方法,還包括執(zhí)行下列操作中的至少一個: 在接收到刪除請求時刪除所述快照和快照標識(ID),以及 在接收到刪除請求時刪除與所述快照相關(guān)的所述多個節(jié)點以及所述多個節(jié)點在所述文件系統(tǒng)表內(nèi)的多個行,其中查詢被執(zhí)行以從所述文件系統(tǒng)表中去除不與任何其他快照關(guān)聯(lián)的所述多個節(jié)點。
9.根據(jù)權(quán)利要求8所述的方法,還包括結(jié)合刪除所述快照及所述快照標識來執(zhí)行下列操作中的至少一個: 接收刪除所述快照及所述快照ID的請求, 從所述快照表中檢索先前快照時間戳、后續(xù)快照時間戳及所述快照時間戳中的至少一個, 如果在所述快照表中沒有找到要刪除的所述快照的先前快照,則將所述先前快照時間戳設(shè)定為零值, 如果在所述快照表中沒有找到要刪除的所述快照的后續(xù)快照,則將所述后續(xù)快照時間戳設(shè)定為無窮大值,以及 刪除所述快照以及與涉及具有大于所述先前快照時間戳的起始時間以及小于所述后續(xù)快照時間戳的結(jié)束時間的所述多個節(jié)點的所述快照關(guān)聯(lián)的所述多個節(jié)點在所述文件系統(tǒng)表內(nèi)的多個行。
10.一種用于在計算環(huán)境中提供使用選擇性元組版本化的文件系統(tǒng)快照的系統(tǒng),包括:可在所述計算環(huán)境中操作的至少一個處理器件,其中所述至少一個處理器件適用于:通過添加快照表來對文件系統(tǒng)表使用所述選擇性元組版本化,以與所述文件系統(tǒng)表關(guān)聯(lián),并且將多個行存儲于所述快 照表內(nèi),每個行都含有與為保留文件系統(tǒng)中的多個節(jié)點的以往狀態(tài)而創(chuàng)建的快照相關(guān)的快照時間戳,其中在所述快照下的所述多個節(jié)點的行被維持于所述文件系統(tǒng)表內(nèi)。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述至少一個處理器件還適用于使用快照標識(ID)來檢索所述快照時間戳,以便訪問在所述快照下的所述多個節(jié)點的所述行。
12.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述至少一個處理器件還適用于結(jié)合使用所述選擇性元組版本化來執(zhí)行下列操作之一: 創(chuàng)建具有至少節(jié)點標識(ID)及關(guān)聯(lián)屬性的所述多個節(jié)點,其中所述節(jié)點標識及所述關(guān)聯(lián)屬性包含于所述多個節(jié)點在所述文件系統(tǒng)表內(nèi)的所述行中, 將起始時間和結(jié)束時間添加至所述文件系統(tǒng)表內(nèi)的多個行中的一個新行內(nèi),其中所述起始時間被設(shè)定為等于所述多個行中的那個新行被添加到所述文件系統(tǒng)表的時間,并且所述結(jié)束時間被設(shè)定為等于無窮大,并且 在創(chuàng)建所述快照時將所述多個行中的一個新行添加到含有所述快照ID及所述快照時間戳的所述快照表。
13.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述至少一個處理器件還適用于使所述快照與具有小于所述快照時間戳的起始時間以及大于所述快照時間戳的結(jié)束時間的所述多個節(jié)點關(guān)聯(lián)。
14.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述至少一個處理器件還適用于執(zhí)行下列操作中的至少一個: 將至少一個字段添加至所述文件系統(tǒng)表內(nèi)的多個行中的每個行,用于指出是否應(yīng)當保留所述文件系統(tǒng)中的所述多個節(jié)點,請求通過創(chuàng)建所述快照來保留所述多個節(jié)點, 在所述快照的壽命期間更新所述文件系統(tǒng),以及 去除保留所述文件系統(tǒng)的請求。
15.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述至少一個處理器件還適用于在創(chuàng)建所述快照時生成所述快照時間戳。
16.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述至少一個處理器件還適用于結(jié)合更新所述文件系統(tǒng)的所述至少一個來執(zhí)行下列操作之一: 接收更新所述多個節(jié)點中的至少一個節(jié)點以及至少一個節(jié)點標識(ID)及所述多個節(jié)點的關(guān)聯(lián)屬性的請求, 生成指示所述更新的時間的新快照時間戳, 如果所述快照具有大于所述多個節(jié)點的起始時間且小于所述多個節(jié)點的結(jié)束時間的所述快照時間戳,則將所述多個節(jié)點在所述文件系統(tǒng)表內(nèi)的所述行之一復(fù)制到所述多個節(jié)點在所述文件系統(tǒng)表內(nèi)的所述行中的一個新行內(nèi),所述新行具有被設(shè)定為等于新快照時間戳的結(jié)束時間,以及 根據(jù)所述更新請求來更新所述多個節(jié)點在所述文件系統(tǒng)表內(nèi)的所述行,其中所述多個節(jié)點的所述起始時間被設(shè)定為等于所述新快照時間戳。
17.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述至少一個處理器件還適用于執(zhí)行下列操作中的至少一個: 在接收到刪除請求時刪除所述快照和快照標識(ID),并且 在接收到刪除請求時刪除與所述快照相關(guān)的所述至少一個文件系統(tǒng)以及與所述至少一個文件系統(tǒng)關(guān)聯(lián)的所述多個行,其中查詢被執(zhí)行用于從所述文件系統(tǒng)表中去除不與任何其他快照關(guān)聯(lián)的所述至少一個文件系統(tǒng)。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其中所述至少一個處理器件還適用于結(jié)合刪除所述快照及所述快照標識來執(zhí)行下列操作中的至少一個: 接收刪除所述快照及所述快照ID的請求, 從所述快照表中檢索先前快照時間戳、后續(xù)快照時間戳及快照時間戳中的至少一個,其中所述快照時間戳使用所述快照ID, 如果在所述快照表中沒有找到要刪除的所述快照的先前快照,則將標記為“先前”的時間戳設(shè)定為零值, 如果在所述快照表中沒有找到要刪除的所述快照的后續(xù)快照,則將標記為“后續(xù)”的時間戳設(shè)定為無窮大值,并且 刪除所述快照以及與涉及具有大于所述先前快照時間戳的起始時間以及小于所述后續(xù)快照時間戳的結(jié)束時間的至少一個文件系統(tǒng)的所述快照關(guān)聯(lián)的所述多個行。
【文檔編號】G06F17/30GK103473251SQ201310219415
【公開日】2013年12月25日 申請日期:2013年6月5日 優(yōu)先權(quán)日:2012年6月5日
【發(fā)明者】Y·巴查, A·庫溫特, A·勒維 申請人:國際商業(yè)機器公司