一種存儲數據的保護方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種存儲數據的保護方法及裝置,屬于網絡連接存儲領域。所述方法包括:接收屬性設置指令,所述屬性設置指令請求設置文件系統(tǒng)中文件的文件快照級別屬性;根據所述屬性設置指令設置所述文件的文件快照級別屬性;接收快照創(chuàng)建指令,所述快照創(chuàng)建指令中攜帶需要保護的文件的文件快照級別屬性參數;根據所述快照創(chuàng)建指令為所述文件系統(tǒng)創(chuàng)建采用寫時重定向ROW技術的ROW只讀快照,所述ROW只讀快照的只讀快照級別屬性根據所述文件快照級別屬性參數設置。本發(fā)明對該文件快照級別屬性進行設置,并在對系統(tǒng)文件創(chuàng)建只讀快照時指定該只讀快照需要保護的文件的快照級別,根據應用場景決定該為文件系統(tǒng)的哪些文件創(chuàng)建快照,控制快照的使用空間,降低只讀快照占用的文件系統(tǒng)的空間。
【專利說明】一種存儲數據的保護方法及裝置
【技術領域】
[0001]本發(fā)明涉及網絡連接存儲領域,特別涉及一種存儲數據的保護方法及裝置。
【背景技術】
[0002]在NAS (Network Attached Storage,網絡連接存儲)領域,對 FS (File System,文件系統(tǒng))整體創(chuàng)建采用ROW (Redirect-on-write,寫時重定向)技術的ROW只讀快照是實現存儲數據保護的主流技術。FS的ROW只讀快照直接保護FS的寫前數據塊,即ROW只讀快照將占用分配給FS的可用空間。目前對FS創(chuàng)建ROW只讀快照的技術都是針對FS整體,當對FS頻繁修改后,ROW只讀快照會占據FS大量空間。例如一個總可用空間為100MB的FS,寫入一個17.94MB的文件1,創(chuàng)建一個ROW只讀快照,然后覆蓋寫入前面的文件1,如此反復4次,ROW只讀快照累積獨占空間將達到53.89MB,而原FS的可用空間降到28.1MB。當再向該FS寫入一個37MB的文件時,就會出現FS空間不足、不能寫入的錯誤。因此需要一種存儲數據的保護方法,以解決ROW只讀快照占用源文件系統(tǒng)過多空間的缺陷。
[0003]現有技術提出了幾種降低只讀快照占用空間的存儲數據的保護方法:方法一、配置FS ROW只讀快照預留,但ROW只讀快照空間可超這個預留;方法二、配置FS自動擴容;方法三、配置FS自動刪除ROW只讀快照。
[0004]現有技術至少存在以下問題:
[0005]ROff只讀快照占用大量FS可用空間,導致FS不可用,直接影響位于關鍵路徑的FS的重要業(yè)務;針對上述問題的措施,不能從根本上解決ROW只讀快照大量占用FS可用空間的問題。
【發(fā)明內容】
[0006]本發(fā)明提供了 一種存儲數據的保護方法及裝置,技術方案如下。
[0007]第一方面,提供了存儲數據的保護方法,所述方法包括:接收屬性設置指令,所述屬性設置指令請求設置文件系統(tǒng)中文件的文件快照級別屬性;根據所述屬性設置指令設置所述文件的文件快照級別屬性;接收快照創(chuàng)建指令,所述快照創(chuàng)建指令中攜帶需要保護的文件的文件快照級別屬性參數;根據所述快照創(chuàng)建指令為所述文件系統(tǒng)創(chuàng)建ROW只讀快照,所述ROW只讀快照的只讀快照級別屬性根據所述文件快照級別屬性參數設置;在對指定文件進行修改時,判斷所述指定文件的文件快照級別屬性與已創(chuàng)建的ROW只讀快照的只讀快照級別屬性是否匹配,并在匹配時根據所述已創(chuàng)建的ROW只讀快照對所述指定文件進行寫前保護。
[0008]結合第一方面,在第一方面的第一種可能的實現方式中,根據所述快照創(chuàng)建指令為所述文件系統(tǒng)創(chuàng)建只讀快照,包括:通過與所述文件系統(tǒng)共享根的方式創(chuàng)建所述ROW只讀快照;根據所述文件快照級別屬性設置所述ROW只讀快照的只讀快照級別屬性;根據所述只讀快照級別屬性設置所述文件系統(tǒng)的系統(tǒng)快照級別屬性。
[0009]結合第一方面或第一方面的第一種可能的實現方式,在第一方面的第二種可能的實現方式中,所述系統(tǒng)快照級別屬性包括快照級別-邏輯時間點對的集合,其中所述快照級別表示所述ROW只讀快照保護的文件的快照級別,所述邏輯時間點表示創(chuàng)建所述ROW只讀快照的邏輯時間點;所述只讀快照級別屬性包括快照級別-邏輯時間點對的集合,其中所述快照級別表示需要保護的文件的快照級別,所述邏輯時間點表示創(chuàng)建所述ROW只讀快照的邏輯時間點。
[0010]結合第一方面,在第一方面的第三種可能的實現方式中,所述快照創(chuàng)建指令還攜帶快照名稱;所述根據所述快照創(chuàng)建指令為所述文件系統(tǒng)創(chuàng)建只讀快照之后,還包括:根據所述快照名稱命名所述ROW只讀快照。
[0011]結合第一方面的第二種可能的實現方式,在第一方面的第四種可能的實現方式中,所述根據所述快照創(chuàng)建指令為所述文件系統(tǒng)創(chuàng)建只讀快照之后,還包括:接收訪問所述ROff只讀快照的請求;輸出文件快照級別屬性的值與所述ROW只讀快照的只讀快照級別屬性的快照級別的值相等的文件。
[0012]結合第一方面的第二種可能的實現方式,在第一方面的第五種可能的實現方式中,所述在對指定文件進行修改時,判斷所述指定文件的文件快照級別屬性與已創(chuàng)建的ROW只讀快照的只讀快照級別屬性是否匹配,并在匹配時根據所述已創(chuàng)建的ROW只讀快照對所述指定文件進行寫前保護,包括:接收所述指定文件的修改數據;根據所述修改數據修改所述指定文件的數據,并將修改后的所述指定文件的新數據保存到新的磁盤位置;判斷已創(chuàng)建的所述文件系統(tǒng)的只讀快照中,是否存在只讀快照級別屬性的快照級別的值與所述指定文件的文件快照級別屬性的值相等的只讀快照;若存在,保留所述指定文件修改前的舊數據,并將所述ROW只讀快照的根指向所述指定文件的舊數據;否則,刪除所述指定文件修改前的舊數據。
[0013]第二方面,提供了一種存儲數據的保護裝置,所述裝置包括:接收單元,用于接收屬性設置指令,所述屬性設置指令請求設置文件系統(tǒng)中文件的文件快照級別屬性,,以及用于接收快照創(chuàng)建指令,所述快照創(chuàng)建指令中攜帶需要保護的文件的文件快照級別屬性參數;設置單元,用于根據所述接收單元接收的屬性設置指令設置所述文件的文件快照級別屬性;快照創(chuàng)建單元,用于根據所述接收單元接收的快照創(chuàng)建指令為所述文件系統(tǒng)創(chuàng)建只讀快照,根據所述文件快照級別屬性參數設置所述ROW只讀快照的只讀快照級別屬性;文件保護單元,用于在對指定文件進行修改時,判斷所述指定文件的文件快照級別屬性與已創(chuàng)建的ROW只讀快照的只讀快照級別屬性是否匹配,并在匹配時根據所述已創(chuàng)建的ROW只讀快照對所述指定文件進行寫前保護。
[0014]結合第二方面,在第二方面的第一種可能的實現方式中,所述快照創(chuàng)建單元包括:創(chuàng)建模塊,用于通過與所述文件系統(tǒng)共享根的方式創(chuàng)建所述ROW只讀快照;設置模塊,用于在所述創(chuàng)建模塊創(chuàng)建所述ROW只讀快照之后,根據所述文件快照級別屬性設置所述ROW只讀快照的只讀快照級別屬性,以及根據所述只讀快照級別屬性設置所述文件系統(tǒng)的系統(tǒng)快照級別屬性。
[0015]結合第二方面的第一種可能的實現方式,在第二方面的第二種可能的實現方式中,所述記錄模塊,還用于將所述系統(tǒng)快照級別屬性記錄為包括快照級別-邏輯時間點對的集合,其中所述快照級別表示所述ROW只讀快照保護的文件的快照級別,所述邏輯時間點表示創(chuàng)建所述ROW只讀快照的邏輯時間點;將所述只讀快照級別屬性記錄為包括快照級別-邏輯時間點對的集合,其中所述快照級別表示需要保護的文件的快照級別,所述邏輯時間點表示創(chuàng)建所述ROW只讀快照的邏輯時間點。
[0016]結合第二方面,在第二方面的第三種可能的實現方式中,所述接收單元,還用于接收攜帶快照名稱的快照創(chuàng)建指令;所述創(chuàng)建模塊,還用于根據所述接收單元接收的快照創(chuàng)建指令中攜帶的快照名稱命名所述ROW只讀快照。
[0017]結合第二方面的第二種可能的實現方式,在第二方面的第四種可能的實現方式中,所述接收單元,還用于在所述快照創(chuàng)建單元創(chuàng)建所述ROW只讀快照之后,接收所述用戶訪問所述ROW只讀快照的請求;所述裝置還包括:輸出單元,用于根據所述接收單元接收的請求輸出文件快照級別屬性的值與所述ROW只讀快照的只讀快照級別屬性中的快照級別的值相等的文件。
[0018]結合第二方面、第二方面的第一種、第二種、第三種或第四種可能的實現方式,在第二方面第五種可能的實現方式中,所述接收單元,還用于接收所述文件系統(tǒng)中指定文件的修改數據;所述裝置還包括:修改模塊,用于根據所述接收單元接收的修改數據修改所述指定文件的數據,并將修改后的所述指定文件的新數據保存到新的磁盤位置;判斷模塊,用于在所述修改模塊將修改后的所述指定文件的新數據保存到新的磁盤位置之后,判斷已創(chuàng)建的所述文件系統(tǒng)的只讀快照中,是否存在只讀快照級別屬性的快照級別的值與所述指定文件的文件快照級別屬性的值相等的只讀快照;根模塊,用于在所述判斷模塊判斷存只讀快照級別屬性與所述指定文件的文件快照級別屬性相匹配的ROW只讀快照時,將所述ROW只讀快照的根指向所述指定文件的舊數據;刪除模塊,用于在所述判斷模塊判斷不存只讀快照級別屬性與所述指定文件的文件快照級別屬性相匹配的只讀快照時,刪除所述指定文件修改前的舊數據。
[0019]本發(fā)明實施例提供的技術方案可以通過增加文件的文件快照級別屬性,對該文件快照級別屬性進行設置,可以將不同的文件設置成不同的快照級別,同時在對系統(tǒng)文件創(chuàng)建ROW只讀快照時指定該ROW只讀快照需要保護的文件的快照級別,讓ROW只讀快照只保護那些需要保護的重要文件,能夠有效降低ROW只讀快照對FS空間的占用。
【專利附圖】
【附圖說明】
[0020]為了更清楚地說明本發(fā)明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,還可以根據這些附圖獲得其他的附圖。
[0021]圖1是本發(fā)明實施例一提供的存儲數據的保護方法流程圖;
[0022]圖2是本發(fā)明實施例二提供的存儲數據的保護方法流程圖;
[0023]圖3是本發(fā)明實施例二的fsl的文件的快照級別屬性示意圖;
[0024]圖4是本發(fā)明實施例二為fsl創(chuàng)建指定快照級別的ROW只讀快照示意圖;
[0025]圖5是本發(fā)明實施例二中修改不被快照保護的filel的示意圖;
[0026]圖6是本發(fā)明實施例二中修改被快照保護的file2的示意圖;
[0027]圖7是本發(fā)明實施例三提供的存儲數據的保護方法流程圖;
[0028]圖8是本發(fā)明實施例三中創(chuàng)建多個只讀快照的示意圖;
[0029]圖9是本發(fā)明實施例四提供的一種存儲數據的保護裝置的結構示意圖;[0030]圖10是本發(fā)明實施例五提供的一種存儲數據的保護裝置的結構示意圖。
【具體實施方式】
[0031]本發(fā)明的發(fā)明人在降低只讀快照占用FS過多空間的研究過程中發(fā)現,在FS中并不是所有文件都值得用其只讀快照保護起來,因此如果控制FS的只讀快照選擇性的保護FS中的重要文件,便可以解決只讀快照大量占用FS可用空間的問題,進而讓位于關鍵路徑的FS業(yè)務盡量可用。
[0032]為了實現對只讀快照的保護對象進行控制,本發(fā)明對FS的所有文件(包括目錄)增加一個屬性:文件快照級別屬性,該屬性也可以由用戶設置;為創(chuàng)建FS只讀快照的指令增加一個選項:文件快照級別屬性參數,創(chuàng)建的這個FS只讀快照將只保護FS中設置了與該文件快照級別屬性參數匹配的文件快照級別屬性的文件,即該文件快照級別屬性的值與該文件快照級別屬性參數的值相同 '為FS新增系統(tǒng)快照級別屬性;為只讀快照新增只讀快照級別屬性。
[0033]為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明實施方式作進一步地詳細描述。
[0034]實施例一
[0035]本實施例提供一種存儲數據的保護方法,請參閱圖1,方法流程包括:
[0036]101、接收屬性設置指令,所述屬性設置指令請求設置文件系統(tǒng)中文件的文件快照級別屬性;
[0037]102、根據所述屬性設置指令設置所述文件的文件快照級別屬性;
[0038]103、接收快照創(chuàng)建指令,所述快照創(chuàng)建指令中攜帶需要保護的文件的文件快照級別屬性參數;
[0039]104、根據所述快照創(chuàng)建指令為所述文件系統(tǒng)創(chuàng)建只讀快照,所述ROW只讀快照的只讀快照級別屬性根據所述文件快照級別屬性參數設置;
[0040]105、在對指定文件進行修改時,判斷所述指定文件的文件快照級別屬性與已創(chuàng)建的ROW只讀快照的只讀快照級別屬性是否匹配,并在匹配時根據所述已創(chuàng)建的ROW只讀快照對所述指定文件進行寫前保護。
[0041]具體的,所述的寫前保護是指對所述指定文件修改前的數據進行映像或保留。
[0042]進一步的,所述根據所述快照創(chuàng)建指令為所述文件系統(tǒng)創(chuàng)建只讀快照,包括:
[0043]通過與所述文件系統(tǒng)共享根的方式創(chuàng)建所述ROW只讀快照;
[0044]根據所述文件快照級別屬性設置所述ROW只讀快照的只讀快照級別屬性;
[0045]根據所述只讀快照級別屬性設置所述文件系統(tǒng)的系統(tǒng)快照級別屬性。
[0046]具體的,文件系統(tǒng)或只讀快照的根是一個磁盤地址,通過這個地址,可以訪問到文件系統(tǒng)或ROW只讀快照的所有目錄、文件數據;由于文件系統(tǒng)或只讀快照的目錄、文件都被抽象成一個個的Objects(對象),所有這些Objects組成文件系統(tǒng)或只讀快照的Objset(對象集),0bjset以樹的形式組織,樹有一個ObjsetRoot (樹根)地址,通過這個Objset Root可以訪問到文件系統(tǒng)/只讀快照的所有Objects,所以文件系統(tǒng)或只讀快照根又叫ObjsetRoot。
[0047]通過與所述文件系統(tǒng)共享根的方式創(chuàng)建所述ROW只讀快照,是指創(chuàng)建ROW只讀快照時,將ROW只讀快照的根指向文件系統(tǒng)的根。在ROW只讀快照創(chuàng)建時,由于尚未對文件系統(tǒng)中的文件進行修改,而ROW只讀快照直接保護FS的寫前數據(即修改前的數據),因此,此時ROW只讀快照的根指向文件系統(tǒng)的根。
[0048]進一步的,所述系統(tǒng)快照級別屬性及所述只讀快照級別屬性包括[快照級別-邏輯時間點]對的集合,其中所述快照級別表示所述ROW只讀快照保護的文件的快照級別,邏輯時間點表示創(chuàng)建所述ROW只讀快照的邏輯時間點;
[0049]所述只讀快照級別屬性包括[快照級別-邏輯時間點]對的集合,其中所述快照級別表示需要保護的文件的快照級別,所述邏輯時間點表示創(chuàng)建所述ROW只讀快照的邏輯時間點。
[0050]進一步的,所述快照創(chuàng)建指令還攜帶快照名稱;
[0051]所述根據所述快照創(chuàng)建指令為所述文件系統(tǒng)創(chuàng)建只讀快照之后,還包括:
[0052]根據所述快照名稱命名所述ROW只讀快照。
[0053]進一步的,所述根據所述快照創(chuàng)建指令為所述文件系統(tǒng)創(chuàng)建只讀快照之后,還包括:
[0054]接收訪問所述ROW只讀快照的請求;
[0055]輸出文件快照級別屬性的值與所述ROW只讀快照的只讀快照級別屬性的快照級別的值相等的文件。
[0056]進一步的,所述在對指定文件進行修改時,判斷所述指定文件的文件快照級別屬性與已創(chuàng)建的ROW只讀快照的只讀快照級別屬性是否匹配,并在匹配時根據所述已創(chuàng)建的ROff只讀快照對所述指定文件進行寫前保護,包括:
[0057]接收所述文件系統(tǒng)中指定文件的修改數據;
[0058]判斷已創(chuàng)建的所述文件系統(tǒng)的只讀快照中,是否存在只讀快照級別屬性的快照級別的值與所述指定文件的文件快照級別屬性的值相等的只讀快照;
[0059]若存在,保留所述指定文件修改前的舊數據,并將所述ROW只讀快照的根指向所述指定文件的舊數據;否則,刪除所述指定文件修改前的舊數據。
[0060]本實施例提供的存儲數據的保護方法,通過增加文件的文件快照級別屬性,對該文件快照級別屬性進行設置,可以將不同的文件設置成不同的快照級別,同時在對系統(tǒng)文件創(chuàng)建ROW只讀快照時指定該ROW只讀快照需要保護的文件的快照級別,從而讓ROW只讀快照只保護那些需要保護的重要文件,也可讓用戶參與到ROW只讀快照的控制,由用戶根據應用場景去決定該為FS的哪些文件創(chuàng)建快照,盡可能控制快照的使用空間,降低ROW只讀快照占用的FS的空間,使位于關鍵路徑的FS盡可能可用,提升產品的競爭力。
[0061]實施例二
[0062]本實施例提供一種存儲數據的保護方法,該方法以ROW只讀快照為例進行說明。請參閱圖2,方法流程包括:
[0063]201、接收用戶輸入的請求將fsl中的文件2 (file2)的文件快照級別屬性的值設置為I的屬性設置指令。
[0064]具體的,fsl中的文件I (filel)、file2均設有文件快照級別屬性:sanpLevel。
[0065]sanpLevel:文件的快照級別,默認為未設置(none)。
[0066]202、根據該屬性設置指令將file2的文件快照級別屬性的值設置為I。[0067]具體的,根據該屬性設置指令完成對file2的文件快照級別屬性的設置之后,fsl的文件的快照級別屬性示意圖,請參閱圖3。
[0068]文件系統(tǒng)fsl設有四個與ROW只讀快照相關的屬性:
[0069]prevSnap (前一快照):指向FS的前一個ROW只讀快照;
[0070]nextSnap (下一快照):指向FS的下一個ROW只讀快照;
[0071]snapLevels系統(tǒng)快照級別:包含一個[key-value]對即[快照級別-邏輯時間點]對的集合,key為只讀快照要保護的文件的快照級別,value為創(chuàng)建只讀快照的邏輯時間點,未創(chuàng)建ROW只讀快照時默認為[none];
[0072]FS Root (FS的根):指向fsl所有文件數據的根。
[0073]由于用戶選擇將file2的文件快照級別屬性的值設置為1,因此本步驟完成用戶的屬性設置指令之后 file2 的 sanpLevel=l, filel 的 sanpLevel=none。
[0074]203、接收用戶輸入的為fsl創(chuàng)建名稱為snapl的只保護sanpLevel的值設置為I的文件的快照創(chuàng)建指令。
[0075]具體的,該快照創(chuàng)建指令可采用如下格式:
[0076]Snapshot create fslsnaplsnapLevel=l
[0077]具體的,Snapshot create:表示創(chuàng)建快照;
[0078]fsl:表示給文件系統(tǒng)fsl創(chuàng)建快照;
[0079]snapl:表示快照的名字是snapl ;
[0080]SnapLevel=1:表示只給文件系統(tǒng)中設置了級別為I的文件創(chuàng)建快照,即只保護文件快照級別屬性值為I的文件。
[0081 ] 204、根據該快照創(chuàng)建指令創(chuàng)建名為snapl的ROW只讀快照。
[0082]具體的,本步驟創(chuàng)建名為snapl的ROW只讀快照,并使該快照共享文件系統(tǒng)的根。為fsl創(chuàng)建指定快照級別的ROW只讀快照示意圖,請參閱圖4。
[0083]創(chuàng)建完成后,fsl及snapl的相關屬性設置如下:
[0084]fsl的snapLevels設置了一個key-value對:“ 1-10”,表示文件系統(tǒng)fsl在邏輯時間點為10的時候創(chuàng)建了一個只保護文件快照級別屬性值為I的文件(即表示創(chuàng)建了一個快照級別為I的ROW只讀快照);
[0085]snapl 的 snapLevels 設置了一個 key-value 對:“ 1-10”,表示創(chuàng)建該 snapl 的邏輯時間點為10,其只保護邏輯時間點10之前的,文件快照級別屬性值為I的文件。
[0086]fsl 的 prevSnap 指向快照 snapl ;sanpl 的 nextSnap 指向 fsl ;
[0087]sanpl的Snap Root快照的根直接共享文件系統(tǒng)fsl的根:FS Root。
[0088]具體的,如果此時收到用戶訪問snapl的請求,將過濾掉與sanpl的snapLevels的不匹配的文件,而輸出與所述ROW只讀快照的快照級別匹配的文件,即ROW只讀快照只輸出snapLevel的值與自身的snapLevels的快照級別key的取值相同的文件。
[0089]205、接收對filel進行修改的修改數據;
[0090]206、根據該修改數據修改filel的數據,將修改后的filel的新數據保存到新的
磁盤位置;
[0091]207、判斷 snapl 的 snapLevels 與 filel 的 snapLevel 與不匹配,刪除 filel 的舊數據。[0092]具體的,判斷snapl的snapLevels與filel的snapLevel是否匹配,主要根據snapLevel的值與snapLevels的key的值是否相等,若相等則判斷兩者匹配,否則判斷兩者不匹配。本實施例中filel的snapLevel值為none, snapl的snapLevels的key值為I,兩者不匹配。
[0093]具體的,修改不被快照保護的filel的示意圖,請參閱圖5,圖中“X”表示數據被刪除。修改filel之后,遵循ROW原則,filel的新數據總是寫到新的磁盤位置;而filel的舊數據因為filel的snapLevel=none而不被snapl保護,將被直接刪除;此時fsl的根指向filel的新數據及file2的數據,而snapl的根則指向file2的數據。本步驟中,filel的舊數據被刪除,將不再占用文件系統(tǒng)fsl的可用空間,從而降低了 ROW只讀快照對源FS可用空間的占用。
[0094]208、接收對file2進行修改的修改數據;
[0095]209、根據該修改數據修改file2的數據,將修改后的file2的新數據保存到新的磁盤位置;
[0096]210、判斷 snapl 的 snapLevelsl 與 file2 的 snapLeve 匹配,保留 file2 的舊數據。
[0097]具體的,修改被快照保護的f ile2的示意圖,請參閱圖6。遵循ROW原則,f ile2的新數據總是寫到新的磁盤位置;而file2的舊數據因為file2的SnapLevel=I而被snapl保護,不會被刪除。此時,fsl的根指向filel的新數據與file2的新數據,而snapl的根則指向file2的舊數據。
[0098]具體的,本實施例的執(zhí)行主體可以是存儲管理系統(tǒng)。
[0099]本實施例提供的存儲數據的保護方法,為文件系統(tǒng)中的文件增加了文件快照級別屬性,由用戶通過對文件快照級別屬性進行設置,將不同的文件設置成不同的快照級別,同時用戶可以在對系統(tǒng)文件創(chuàng)建ROW只讀快照時指定需要保護的文件的快照級別,當對文件進行修改后,根據是否存在只讀快照級`別屬性與被修改的文件的文件快照級別屬性匹配的ROW只讀快照確定是否對該文件進行快照保護,如果存在則保留該文件修改前的舊數據,否則刪除該文件修改前的舊數據,從而讓用戶參與到ROW只讀快照的控制,由用戶根據應用場景去決定該為FS的哪些文件創(chuàng)建快照,盡可能控制快照的使用空間,降低只讀快照占用的FS的空間,使位于關鍵路徑的FS盡可能可用,提升產品的競爭力。
[0100]實施例三
[0101]本實施例提供了一種存儲數據的保護方法。本實施例中文件系統(tǒng)fsl包含多個文件,文件名依次為filel、file2…file6,該多個文件的文件快照級別屬性默認為snapLevel=none。請參閱圖7,方法流程包括:
[0102]701、接收用戶輸入的將文件系統(tǒng)fsl中的文件file2、file5的文件快照級別屬性的值設置為I的屬性設置指令。
[0103]702、根據該屬性設置指令將file2、file5的文件快照級別屬性設置為SnapLvel=I。
[0104]703、接收用戶輸入的攜帶SnapLevel=I的快照創(chuàng)建指令,該快照創(chuàng)建指令要求創(chuàng)建一個快照級別為1,名稱為sanpl的ROW只讀快照。
[0105]704、在邏輯時間點為10時,創(chuàng)建名為snapl的快照級別為I的ROW只讀快照。
[0106]705、接收用戶輸入的將文件系統(tǒng)fsl中的文件file3、file4的文件快照級別屬性的值設置為2的屬性設置指令。
[0107]706、根據該屬性設置指令將file3、file4的文件快照級別屬性設置為snapLevel=2。
[0108]707、接收用戶輸入的攜帶snapLevel=2的快照創(chuàng)建指令,該快照創(chuàng)建指令要求創(chuàng)建一個快照級別為2,名稱為sanp2的快照。
[0109]708、在邏輯時間點為20時,創(chuàng)建名為snap2的快照級別為2的ROW只讀快照。
[0110]具體的,請參閱圖7,創(chuàng)建完成后,fsl的系統(tǒng)快照級別屬性snapLevels記錄為:[1-10,2-20],表示在邏輯時間點為10的時候創(chuàng)建了一個快照級別為I的Row只讀快照,在邏輯時間點為20的時候創(chuàng)建了一個快照級別為2的Row只讀快照;snapl的只讀快照級別屬性snaLevels記錄為:[1_10],表示該只讀快照的只保護快照級別為I的文件,其保護邏輯時間點10之前的數據;snap2的只讀快照級別屬性snapLevels記錄為:[2_20],表示該只讀快照的只保護快照級別為2的文件,其保護邏輯時間點20之前的數據。sanpl、sanp2與fsl共享根。而,文件系統(tǒng)fsl的文件filel、file6由于其文件快照級別為none,將不被任何ROW只讀快照保護。
[0111]具體的,對snapl、snap2的訪問及修改fsl的文件時,對各文件的處理方法與前述實施例相同此處不再贅述。
[0112]本實施例提供的存儲數據的保護方法,為文件系統(tǒng)中的文件增加了文件快照級別屬性,由用戶通過對文件快照級別屬性進行設置,將不同的文件設置成不同的快照級別,同時用戶可以在對系統(tǒng)文件創(chuàng)建只讀快照時指定需要保護的文件的快照級別,因此在對文件系統(tǒng)的文件進行修改時,ROW只讀快照只保護用戶指定的文件,對于未指定的文件將不進行ROff只讀快照保護,能夠有效地節(jié)省文件系統(tǒng)的空間。
[0113]實施例四
[0114]參見圖9,本實施例提供了一種存儲數據的保護裝置,該裝置包括:
[0115]接收單元901,用于屬性設置指令,所述屬性設置指令請求設置文件系統(tǒng)中文件的文件快照級別屬性;
[0116]設置單元902,用于根據所述接收單元901接收的屬性設置指令設置所述文件的文件快照級別屬性;
[0117]所述接收單元901,還用于接收快照創(chuàng)建指令,所述快照創(chuàng)建指令中攜帶需要保護的文件的文件快照級別屬性參數;
[0118]快照創(chuàng)建單元903,用于根據所述接收單元901接收的快照創(chuàng)建指令為所述文件系統(tǒng)創(chuàng)建指定快照級別的ROW只讀快照,根據所述文件快照級別屬性參數設置所述ROW只讀快照的只讀快照級別屬性;
[0119]文件保護單元904,用于在對指定文件進行修改時,判斷所述指定文件的文件快照級別屬性與已創(chuàng)建的ROW只讀快照的只讀快照級別屬性是否匹配,并在匹配時根據所述已創(chuàng)建的ROW只讀快照對所述指定文件進行寫前保護。
[0120]進一步的,所述快照創(chuàng)建單元903包括:
[0121]創(chuàng)建模塊,用于通過與所述文件系統(tǒng)共享根的方式創(chuàng)建所述ROW只讀快照;
[0122]設置模塊,用于在所述創(chuàng)建模塊創(chuàng)建所述ROW只讀快照之后,根據所述文件快照級別屬性設置所述ROW只讀快照的只讀快照級別屬性,以及根據所述只讀快照級別屬性設置所述文件系統(tǒng)的系統(tǒng)快照級別屬性。
[0123]進一步的,所述記錄模塊,還用于將所述系統(tǒng)快照級別屬性記錄為包括[快照級別-邏輯時間點]對的集合,其中所述快照級別表示創(chuàng)建的所述ROW只讀快照保護的文件的快照級別的快照級別,邏輯時間點表示創(chuàng)建所述ROW只讀快照的邏輯時間點;將所述只讀快照級別屬性記錄為包括[快照級別-邏輯時間點]對的集合,其中所述快照級別表示需要保護的文件的快照級別,所述邏輯時間點表示創(chuàng)建所述ROW只讀快照的邏輯時間點。
[0124]進一步的,所述接收單元901,還用于接收攜帶快照名稱的快照創(chuàng)建指令;
[0125]所述創(chuàng)建模塊,還用于根據所述接收單元901接收的快照創(chuàng)建指令中攜帶的快照名稱命名所述ROW只讀快照。
[0126]進一步的,所述接收單元901,還用于在所述快照創(chuàng)建單元創(chuàng)建所述ROW只讀快照之后,接收訪問所述ROW只讀快照的請求;
[0127]所述裝置還包括:
[0128]輸出單元,用于輸出文件快照級別屬性的值與所述ROW只讀快照的只讀快照級別屬性中的快照級別的值相等的文件。
[0129]進一步的,所述接收單元901,還用于接收所述文件系統(tǒng)中指定文件的修改數據;
[0130]所述裝置還包括:
[0131]修改模塊,用于根據所述接收單元901接收的修改數據修改所述指定文件的數據,并將修改后的所述指定文件的新數據保存到新的磁盤位置;
[0132]判斷模塊,用于在所述修改模塊將修改后的所述指定文件的新數據保存到新的磁盤位置之后,判斷已創(chuàng)建的所述文件系統(tǒng)的ROW只讀快照中,是否存在只讀快照級別屬性的快照級別的值與所述指定文件的文件快照級別屬性的值相等的ROW只讀快照;
[0133]根模塊,用于在所述判斷模塊判斷存只讀快照級別屬性與所述指定文件的文件快照級別屬性相匹配的ROW只讀快照時,將所述ROW只讀快照的根指向所述指定文件的舊數據;
[0134]刪除模塊,用于在所述判斷模塊判斷不存只讀快照級別屬性與所述指定文件的文件快照級別屬性相匹配的ROW只讀快照時,刪除所述指定文件修改前的舊數據。
[0135]本實施例存儲數據的保護裝置,通過增加文件的文件快照級別屬性,對該文件快照級別屬性進行設置,可以將不同的文件設置成不同的快照級別,同時在對系統(tǒng)文件創(chuàng)建ROff只讀快照時指定該ROW只讀快照需要保護的文件的快照級別,從而讓ROW只讀快照只保護那些需要保護的重要文件。在此基礎上也可讓用戶參與到ROW只讀快照的控制,由用戶根據應用場景去決定該為FS的哪些文件創(chuàng)建快照,盡可能控制快照的使用空間,降低ROW只讀快照占用的FS的空間,使位于關鍵路徑的FS盡可能可用,提升產品的競爭力。
[0136]實施例五
[0137]請參閱圖10,本實施例提供了一種存儲數據的保護裝置,該裝置包括:
[0138]接收機1001,用于接收屬性設置指令,所述屬性設置指令請求設置文件系統(tǒng)中文件的文件快照級別屬性;
[0139]處理器1002,用于根據所述接收機接收的屬性設置指令設置所述文件的文件快照級別屬性;
[0140]所述接收機1001,還用于接收快照創(chuàng)建指令,所述快照創(chuàng)建指令中攜帶需要保護的文件的文件快照級別屬性參數;
[0141]所述處理器1002,還用于根據所述接收機1001接收的快照創(chuàng)建指令為所述文件系統(tǒng)創(chuàng)建ROW只讀快照,根據所述文件快照級別屬性參數設置所述ROW只讀快照的只讀快照級別屬性;以及用于在對指定文件進行修改時,判斷所述指定文件的文件快照級別屬性與已創(chuàng)建的ROW只讀快照的只讀快照級別屬性是否匹配,并在匹配時根據所述已創(chuàng)建的ROff只讀快照對所述指定文件進行寫前保護。
[0142]進一步的,所述處理器1002,還用于通過與所述文件系統(tǒng)共享根的方式創(chuàng)建所述ROff只讀快照;根據所述文件快照級別屬性設置所述ROW只讀快照的只讀快照級別屬性,以及根據所述只讀快照級別屬性設置所述文件系統(tǒng)的系統(tǒng)快照級別屬性。
[0143]進一步的,所述處理器1002,還用于將所述系統(tǒng)快照級別屬性記錄為包括[快照級別-邏輯時間點]對的集合,其中所述快照級別表示創(chuàng)建的所述ROW只讀快照的快照級另O,邏輯時間點表示創(chuàng)建所述ROW只讀快照的邏輯時間點;將所述只讀快照級別屬性記錄為包括[快照級別-邏輯時間點]對的集合,其中所述快照級別表示需要保護的文件的快照級別,所述邏輯時間點表示創(chuàng)建所述ROW只讀快照的邏輯時間點。
[0144]進一步的,所述接收機,還用于接收攜帶快照名稱的快照創(chuàng)建指令;
[0145]所述處理器,還用于根據所述接收機接收的快照創(chuàng)建指令中攜帶的快照名稱命名所述ROW只讀快照。
[0146]進一步的,所述接收機1001,還用于在所述處理器1002創(chuàng)建所述ROW只讀快照之后,接收訪問所述ROW只讀快照的請求;
[0147]所述裝置還包括:
[0148]發(fā)送機,用于根據所述接收機1002接收的請求輸出文件快照級別屬性的值與所述ROW只讀快照的只讀快照級別屬性中的快照級別的值相等的文件。
[0149]進一步的,所述接收機1001,還用于接收對所述文件系統(tǒng)中指定文件的進行修改的修改數據;
[0150]所述處理器1002,還用于根據所述接收機接收的修改數據修改所述指定文件的數據,并將修改后的所述指定文件的新數據保存到新的磁盤位置;判斷已創(chuàng)建的所述文件系統(tǒng)的ROW只讀快照中,是否存在只讀快照級別屬性的快照級別的值與所述指定文件的文件快照級別屬性的值相等的ROW只讀快照,若存在,則保留所述指定文件修改前的舊數據,并將所述ROW只讀快照的根指向所述指定文件的舊數據,若不存在,則刪除所述指定文件修改前的舊數據。
[0151]本實施例提供的存儲數據的保護裝置,通過增加文件的文件快照級別屬性,對該文件快照級別屬性進行設置,可以將不同的文件設置成不同的快照級別,同時在對系統(tǒng)文件創(chuàng)建ROW只讀快照時指定該ROW只讀快照需要保護的文件的快照級別,從而讓ROW只讀快照只保護那些需要保護的重要文件,可有效降低ROW只讀快照占用的FS的空間,使位于關鍵路徑的FS盡可能可用,提升產品的競爭力。
[0152]綜上所述,本發(fā)明實施例提供的存儲數據的保護方法及裝置,為文件系統(tǒng)中的文件增加了文件快照級別屬性,通過對文件快照級別屬性進行設置,將不同的文件設置成不同的快照級別,并且可以在對系統(tǒng)文件創(chuàng)建ROW只讀快照時指定需要保護的文件的快照級另O,當對文件進行修改時,根據被修改的文件的文件快照級別屬性是否與創(chuàng)建的ROW只讀快照的只讀快照級別屬性是否匹配確定是否對該文件進行快照保護,如果匹配則保留該文件修改前的舊數據,否則刪除該文件修改前的舊數據,從而能夠讓用戶參與到ROW只讀快照的控制,由用戶根據應用場景去決定該為FS的哪些文件創(chuàng)建快照,盡可能控制快照的使用空間,降低ROW只讀快照占用的FS的空間,使位于關鍵路徑的FS盡可能可用,提升產品的競爭力。
[0153]需要說明的是:上述實施例提供的存儲數據的保護裝置,在實現對存儲數據的保護時,僅以上述各功能模塊的劃分進行舉例說明,實際應用中,可以根據需要而將上述功能分配由不同的功能模塊完成,即將裝置的內部結構劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例提供的存儲數據的保護裝置與存儲數據的保護方法實施屬于同一構思,其具體實現過程詳見方法實施例,這里不再贅述。
[0154]上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
[0155]本領域普通技術人員可以理解實現上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質中,上述提到的存儲介質可以是只讀存儲器,磁盤或光盤等。
[0156]以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
【權利要求】
1.一種存儲數據的保護方法,其特征在于,所述方法包括: 接收屬性設置指令,所述屬性設置指令請求設置文件系統(tǒng)中文件的文件快照級別屬性; 根據所述屬性設置指令設置所述文件的文件快照級別屬性; 接收快照創(chuàng)建指令,所述快照創(chuàng)建指令中攜帶文件快照級別屬性參數,用以指示創(chuàng)建的只讀快照需要保護的文件; 根據所述快照創(chuàng)建指令為所述文件系統(tǒng)創(chuàng)建采用寫時重定向ROW技術的ROW只讀快照,所述ROW只讀快照的只讀快照級別屬性根據所述文件快照級別屬性參數設置; 在對指定文件進行修改時,判斷所述指定文件的文件快照級別屬性與已創(chuàng)建的ROW只讀快照的只讀快照級別屬性是否匹配,并在匹配時根據所述已創(chuàng)建的ROW只讀快照對所述指定文件進行寫前保護。
2.根據權利要求1所述的方法,其特征在于,所述根據所述快照創(chuàng)建指令為所述文件系統(tǒng)創(chuàng)建ROW只讀快照,包括: 通過與所述文件系統(tǒng)共享根的方式創(chuàng)建所述ROW只讀快照; 根據所述文件快照級別屬性參數設置所述ROW只讀快照的只讀快照級別屬性; 根據所述只讀快照級別屬性設置所述文件系統(tǒng)的系統(tǒng)快照級別屬性。
3.根據權利要求2所述的方法,其特征在于, 所述系統(tǒng)快照級別屬性包括快照級別-邏輯時間點對的集合,其中所述快照級別表示所述ROW只讀快照保護的文件的快照級別,所述邏輯時間點表示創(chuàng)建所述ROW只讀快照的邏輯時間點; 所述只讀快照級別屬性包括快照級別-邏輯時間點對的集合,其中所述快照級別表示需要保護的文件的快照級別,所述邏輯時間點表示創(chuàng)建所述ROW只讀快照的邏輯時間點。
4.根據權利要求1所述的方法,其特征在于,所述快照創(chuàng)建指令還攜帶快照名稱; 所述根據所述快照創(chuàng)建指令為所述文件系統(tǒng)創(chuàng)建ROW只讀快照之后,還包括: 根據所述快照名稱命名所述ROW只讀快照。
5.根據權利要求3所述的方法,其特征在于,所述根據所述快照創(chuàng)建指令為所述文件系統(tǒng)創(chuàng)建ROW只讀快照之后,還包括: 接收訪問所述ROW只讀快照的請求; 輸出文件快照級別屬性的值與所述ROW只讀快照的只讀快照級別屬性的快照級別的值相等的文件。
6.根據權利要求3所述的方法,其特征在于,所述在對指定文件進行修改時,判斷所述指定文件的文件快照級別屬性與已創(chuàng)建的ROW只讀快照的只讀快照級別屬性是否匹配,并在匹配時根據所述已創(chuàng)建的ROW只讀快照對所述指定文件進行寫前保護,包括: 接收所述指定文件的修改數據; 根據所述修改數據修改所述指定文件的數據,并將修改后的所述指定文件的新數據保存到新的磁盤位置; 判斷已創(chuàng)建的所述文件系統(tǒng)的ROW只讀快照中,是否存在只讀快照級別屬性的快照級別的值與所述指定 文件的文件快照級別屬性的值相等的ROW只讀快照; 若存在,保留所述指定文件修改前的舊數據,并將所述ROW只讀快照的根指向所述指定文件的舊數據;否則,刪除所述指定文件修改前的舊數據。
7.一種存儲數據的保護裝置,其特征在于,包括: 接收單元,用于接收屬性設置指令,所述屬性設置指令請求設置文件系統(tǒng)中文件的文件快照級別屬性,以及用于接收快照創(chuàng)建指令,所述快照創(chuàng)建指令中攜帶需要保護的文件的文件快照級別屬性參數; 設置單元,用于根據所述接收單元接收的屬性設置指令設置所述文件的文件快照級別屬性;快照創(chuàng)建單元,用于根據所述接收單元接收的快照創(chuàng)建指令為所述文件系統(tǒng)創(chuàng)建ROW只讀快照,根據所述文件快照級別屬性參數設置所述ROW只讀快照的只讀快照級別屬性;文件保護單元,用于在對指定文件進行修改時,判斷所述指定文件的文件快照級別屬性與已創(chuàng)建的ROW只讀快照的只讀快照級別屬性是否匹配,并在匹配時根據所述已創(chuàng)建的ROff只讀快照對所述指定文件進行寫前保護。
8.根據權利要求7所述的裝置,其特征在于,所述快照創(chuàng)建單元包括: 創(chuàng)建模塊,用于通過與所述文件系統(tǒng)共享根的方式創(chuàng)建所述ROW只讀快照; 設置模塊,用于在所述創(chuàng)建模塊創(chuàng)建所述ROW只讀快照之后,根據所述文件快照級別屬性設置所述ROW只讀快照的只讀快照級別屬性,以及根據所述只讀快照級別屬性設置所述文件系統(tǒng)的系統(tǒng)快照級別屬性。
9.根據權利要求8所述的裝置,其特征在于,所述記錄模塊,還用于將所述系統(tǒng)快照級別屬性記錄為包括快照級別-邏輯時間點對的集合,其中所述快照級別表示創(chuàng)建的所述ROff只讀快照保護的文件的快照級別的快照級別,所述邏輯時間點表示創(chuàng)建所述ROW只讀快照的邏輯時間點;將所述只讀快照級別屬性記錄為包括快照級別-邏輯時間點對的集合,其中所述快照級別表示需要保護的文件的快照級別,所述邏輯時間點表示創(chuàng)建所述ROW只讀快照的邏輯時間點。
10.根據權利要求7所述的裝置,其特征在于, 所述接收單元,還用于接收攜帶快照名稱的快照創(chuàng)建指令; 所述創(chuàng)建模塊,還用于根據所述接收單元接收的快照創(chuàng)建指令中攜帶的快照名稱命名所述ROW只讀快照。
11.根據權利要求9所述的裝置,其特征在于, 所述接收單元,還用于在所述快照創(chuàng)建單元創(chuàng)建所述ROW只讀快照之后,接收訪問所述ROW只讀快照的請求; 所述裝置還包括: 輸出單元,用于根據所述接收單元接收的請求輸出文件快照級別屬性的值與所述ROW只讀快照的只讀快照級別屬性中的快照級別的值相等的文件。
12.根據權利要求7至11任一項所述的裝置,其特征在于, 所述接收單元,還用于接收所述文件系統(tǒng)中指定文件的修改數據; 所述文件保護單元還包括: 修改模塊,用于根據所述接收單元接收的修改數據修改所述指定文件的數據,并將修改后的所述指定文件的新數據保存到新的磁盤位置; 判斷模塊,用于在所述修改模塊將修改后的所述指定文件的新數據保存到新的磁盤位置之后,判斷已創(chuàng)建的所述文件系統(tǒng)的ROW只讀快照中,是否存在只讀快照級別屬性的快照級別的值與所述指定文件的文件快照級別屬性的值相等的ROW只讀快照; 根模塊,用于在所述判斷模塊判斷存只讀快照級別屬性與所述指定文件的文件快照級別屬性相匹配的ROW只讀快照時,將所述ROW只讀快照的根指向所述指定文件的舊數據;刪除模塊,用于在所述判斷模塊判斷不存只讀快照級別屬性與所述指定文件的文件快照級別屬性相匹配 的ROW只讀快照時,刪除所述指定文件修改前的舊數據。
【文檔編號】G06F11/14GK103729265SQ201310744238
【公開日】2014年4月16日 申請日期:2013年12月30日 優(yōu)先權日:2013年12月30日
【發(fā)明者】龐洪福 申請人:華為技術有限公司