一種釋放數(shù)據(jù)塊的方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種釋放數(shù)據(jù)塊的方法及裝置,用于解決現(xiàn)有技術(shù)中缺乏空間回收率與效率均較高的文件克隆方式的技術(shù)問題。該方法包括:在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)所述第一文件的第一元數(shù)據(jù)確定出第一文件集合,所述第一文件集合包括所述第一文件的父文件及子文件中引用過所述第一數(shù)據(jù)塊的文件;在所述第一數(shù)據(jù)塊的共享位圖中將與所述第一文件、所述第一文件集合中的文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1;在所述第一數(shù)據(jù)塊的釋放位圖中將與所述第一文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1;在所述共享位圖與所述釋放位圖相等且不等于0時,刪除所述第一數(shù)據(jù)塊,控制所述第一數(shù)據(jù)塊占用的存儲空間處于可用狀態(tài)。
【專利說明】一種釋放數(shù)據(jù)塊的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機領(lǐng)域,特別涉及一種釋放數(shù)據(jù)塊的方法及裝置。
【背景技術(shù)】
[0002]虛擬機克隆能夠極大減少存儲空間的占用,而且速度很快,已經(jīng)成為虛擬機中不可或缺的基本功能。
[0003]文件克隆是虛擬機克隆的基本技術(shù),文件克隆指的是快速將一個文件拷貝到另一個文件,在拷貝過程中使克隆文件與其父文件(即,克隆文件的來源文件)共享存儲空間,因此,文件克隆技術(shù)具有占用空間小,拷貝時間短的特點。
[0004]文件克隆技術(shù)的核心是如何確定共享文件被哪些文件所引用,當某個共享文件未被任何文件引用時,就可以將其釋放,收回對應(yīng)的存儲空間。
[0005]目前,文件克隆包括如下兩種實現(xiàn)方式:
[0006]方式一,鏈接克隆。采用鏈接克隆技術(shù)時,在創(chuàng)建克隆文件時,先生成父文件的文件快照,克隆文件中只記錄克隆文件創(chuàng)建之后新寫入的數(shù)據(jù),如果要讀取克隆文件生成時的數(shù)據(jù),則可以從文件快照中讀取。
[0007]方式二、數(shù)據(jù)塊克隆。采用數(shù)據(jù)塊克隆時,在創(chuàng)建克隆文件時,在克隆文件的元數(shù)據(jù)中保存父文件的所有數(shù)據(jù)塊的信息。而對于每一個共享數(shù)據(jù)塊而言,保存有一個共享位圖,共享位圖中保存有該數(shù)據(jù)塊被哪些文件所引用的信息。因此,在該數(shù)據(jù)塊被某一個克隆文件引用以及釋放時,均要對它的共享位圖進行更新。
[0008]其中,鏈接克隆技術(shù)的算法簡單,性能較高,但是,只有在所有克隆文件(包括文件快照)全部刪除時,才能將共享文件占用的空間收回,空間回收率很低。而采用數(shù)據(jù)塊克隆技術(shù)時,只要某個數(shù)據(jù)塊沒有被任何文件所引用,即可將該數(shù)據(jù)塊所占用的空間收回,空間回收率很高,但是需要在創(chuàng)建和刪除克隆文件時遍歷克隆文件引用的所有數(shù)據(jù)塊,然后將每個數(shù)據(jù)塊的位圖進行更新,算法復(fù)雜,效率較低。
[0009]綜上所述,現(xiàn)有技術(shù)中缺乏空間回收率與效率均較高的文件克隆方式。
【發(fā)明內(nèi)容】
[0010]本申請實施例提供一種釋放數(shù)據(jù)塊的方法及裝置,用于解決現(xiàn)有技術(shù)中缺乏空間回收率與效率均較高的文件克隆方式的技術(shù)問題。
[0011]第一方面,本申請實施例提供了一種釋放數(shù)據(jù)塊的方法,包括:在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)所述第一文件的第一元數(shù)據(jù)確定出第一文件集合,所述第一文件集合包括所述第一文件的父文件及子文件中引用過所述第一數(shù)據(jù)塊的文件;在所述第一數(shù)據(jù)塊的共享位圖中將與所述第一文件、所述第一文件集合中的文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1,其中,所述共享位圖用于記錄引用過所述第一數(shù)據(jù)塊的文件的信息,所述共享位圖的初始值為O ;在所述第一數(shù)據(jù)塊的釋放位圖中將與所述第一文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1,其中,所述釋放位圖用于記錄釋放了所述第一數(shù)據(jù)塊的文件的信息,所述釋放位圖的初始值為O ;在所述共享位圖與所述釋放位圖相等且不等于O時,刪除所述第一數(shù)據(jù)塊,控制所述第一數(shù)據(jù)塊占用的存儲空間處于可用狀態(tài)。
[0012]結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)所述第一文件的第一元數(shù)據(jù)確定出第一文件集合,包括:在所述第一文件釋放所述第一數(shù)據(jù)塊時,根據(jù)所述第一元數(shù)據(jù)確定所述第一文件集合包括所述第一文件的子文件中創(chuàng)建時間晚于所述第一數(shù)據(jù)塊的第一創(chuàng)建時間的子文件。
[0013]結(jié)合第一方面,在第一方面的第二種可能的實現(xiàn)方式中,在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)所述第一文件的第一元數(shù)據(jù)確定出第一文件集合,包括:在所述第一元數(shù)據(jù)表明所述第一創(chuàng)建時間早于所述第一文件的第二創(chuàng)建時間時,確定所述第一文件集合包括所述第一文件的父文件。
[0014]結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第三種可能的實現(xiàn)方式中,在所述在所述第一文件釋放所述第一數(shù)據(jù)塊時,根據(jù)所述第一元數(shù)據(jù)確定所述第一文件集合包括所述第一文件的子文件中創(chuàng)建時間晚于所述第一數(shù)據(jù)塊的第一創(chuàng)建時間的子文件之前,所述方法還包括:在根據(jù)所述第一文件創(chuàng)建所述第一文件的子文件時,在所述第一元數(shù)據(jù)中保存所述第一文件的子文件的創(chuàng)建時間以及所述第一文件的子文件的標識信肩、O
[0015]結(jié)合第一方面的第二種可能的實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式中,在所述在所述第一元數(shù)據(jù)表明所述第一創(chuàng)建時間早于所述第一文件的第二創(chuàng)建時間時,確定所述第一文件集合包括所述第一文件的父文件之前,所述方法還包括:在根據(jù)所述第一文件的父文件創(chuàng)建所述第一文件時,在所述第一元數(shù)據(jù)中保存所述第一創(chuàng)建時間以及所述第一文件的父文件的標識信息。
[0016]結(jié)合第一方面的第一種可能的實現(xiàn)方式至第一方面的第四種可能的實現(xiàn)方式中的任意一種,在所述在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)所述第一文件的第一元數(shù)據(jù)確定出第一文件集合之前,所述方法還包括:在創(chuàng)建所述第一數(shù)據(jù)塊時,在所述第一數(shù)據(jù)塊的第二元數(shù)據(jù)中保存所述第一創(chuàng)建時間。
[0017]第二方面,本申請實施例提供了一種裝置,包括:確定模塊,用于在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)所述第一文件的第一元數(shù)據(jù)確定出第一文件集合,所述第一文件集合包括所述第一文件的父文件及子文件中引用過所述第一數(shù)據(jù)塊的文件;共享位圖更新模塊,用于在所述第一數(shù)據(jù)塊的共享位圖中將與所述第一文件、所述第一文件集合中的文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1,其中,所述共享位圖用于記錄引用過所述第一數(shù)據(jù)塊的文件的信息,所述共享位圖的初始值為O ;釋放位圖更新模塊,用于在所述第一數(shù)據(jù)塊的釋放位圖中將與所述第一文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1,其中,所述釋放位圖用于記錄釋放了所述第一數(shù)據(jù)塊的文件的信息,所述釋放位圖的初始值為O ;空間回收模塊,用于在所述共享位圖與所述釋放位圖相等且不等于O時,刪除所述第一數(shù)據(jù)塊,控制所述第一數(shù)據(jù)塊占用的存儲空間處于可用狀態(tài)。
[0018]結(jié)合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,所述確定模塊具體用于:在所述第一文件釋放所述第一數(shù)據(jù)塊時,根據(jù)所述第一元數(shù)據(jù)確定所述第一文件集合包括所述第一文件的子文件中創(chuàng)建時間晚于所述第一數(shù)據(jù)塊的第一創(chuàng)建時間的子文件。
[0019]結(jié)合第二方面,在第二方面的第二種可能的實現(xiàn)方式中,所述確定模塊具體用于:在所述第一元數(shù)據(jù)表明所述第一創(chuàng)建時間早于所述第一文件的第二創(chuàng)建時間時,確定所述第一文件集合包括所述第一文件的父文件。
[0020]結(jié)合第二方面的第一種可能的實現(xiàn)方式,在第二方面的第三種可能的實現(xiàn)方式中,所述裝置還包括:第一保持存模塊,用于在根據(jù)所述第一文件創(chuàng)建所述第一文件的子文件時,在所述第一元數(shù)據(jù)中保存所述第一文件的子文件的創(chuàng)建時間以及所述第一文件的子文件的標識信息。
[0021]結(jié)合第二方面的第二種可能的實現(xiàn)方式,在第二方面的第四種可能的實現(xiàn)方式中,所述裝置還包括:第二保存模塊,用于在根據(jù)所述第一文件的父文件創(chuàng)建所述第一文件時,在所述第一元數(shù)據(jù)中保存所述第一創(chuàng)建時間以及所述第一文件的父文件的標識信息。
[0022]結(jié)合第二方面的第一種可能的實現(xiàn)方式至第二方面的第四種可能的實現(xiàn)方式中的任意一種,所述裝置還包括:第三保存模塊,用于在創(chuàng)建所述第一數(shù)據(jù)塊時,在所述第一數(shù)據(jù)塊的第二元數(shù)據(jù)中保存所述第一創(chuàng)建時間。
[0023]本申請實施例中提供的一個或多個技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點:
[0024]本申請實施例中,針對每一個共享數(shù)據(jù)塊保存有一個共享位圖,用于記錄引用過該數(shù)據(jù)塊的文件的信息,還保存有一個釋放位圖,用于記錄釋放了該數(shù)據(jù)塊的信息。在有克隆文件釋放了該數(shù)據(jù)塊時,對共享位圖和釋放位圖進行更新,具體更新該克隆文件與該數(shù)據(jù)塊的引用關(guān)系和釋放關(guān)系,以及更新克隆文件的父文件和子文件中引用過該數(shù)據(jù)塊的文件與該數(shù)據(jù)塊的引用關(guān)系。當共享位圖與釋放位圖相等且不等于零時,可以確定引用了該數(shù)據(jù)塊的文件均已經(jīng)釋放了該數(shù)據(jù)塊,可以刪除該數(shù)據(jù)塊,回收其所占空間,控制其占用的存儲空間處于可用狀態(tài)。采用上述技術(shù)方案能夠在數(shù)據(jù)塊沒有被任何文件所引用時收回其所占用的空間,空間回收率很高,而且只是在克隆文件釋放數(shù)據(jù)塊時需要對該數(shù)據(jù)塊的位圖進行更新,加之每次更新只針對克隆文件自身以及其父文件和子文件中引用過該數(shù)據(jù)塊的文件,數(shù)據(jù)量很小,運算壓力小,運行性能很高。綜上,采用本申請實施例中的技術(shù)方案能夠同時達到聞的空間回收率和聞的運行效率。
【專利附圖】
【附圖說明】
[0025]為了更清楚地說明本申請實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0026]圖1為本申請實施例提供的釋放數(shù)據(jù)塊的方法的流程示意圖;
[0027]圖2為釋放數(shù)據(jù)塊的方法的進一步細化流程的示意圖;
[0028]圖3為本申請實施例提供的裝置的結(jié)構(gòu)示意框圖;
[0029]圖4為本申請實施例提供的裝置的細化結(jié)構(gòu)的示意框圖;
[0030]圖5為本申請實施例提供的電子設(shè)備的結(jié)構(gòu)示意框圖。
【具體實施方式】
[0031 ] 針對現(xiàn)有技術(shù)中缺乏空間回收率與效率均較高的文件克隆方式的技術(shù)問題,本申請實施例提供一種克隆文件的方法,包括:在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)所述第一文件的第一元數(shù)據(jù)確定出所述第一文件的父文件及子文件中引用過所述第一數(shù)據(jù)塊的至少一個文件;在所述第一數(shù)據(jù)塊的共享位圖中將與所述第一文件及所述至少一個文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1,其中,所述共享位圖用于記錄引用過所述第一數(shù)據(jù)塊的文件的信息,所述共享位圖的初始值為O ;在所述第一數(shù)據(jù)塊的釋放位圖中將與所述第一文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1,其中,所述釋放位圖用于記錄釋放了所述第一數(shù)據(jù)塊的文件的信息,所述釋放位圖的初始值為O ;在所述共享位圖與所述釋放位圖相等且不等于O時,刪除所述第一數(shù)據(jù)塊,控制所述第一數(shù)據(jù)塊占用的存儲空間處于可用狀態(tài)。
[0032]本申請實施例上述技術(shù)方案中,針對每一個共享數(shù)據(jù)塊保存有一個共享位圖,用于記錄引用過該數(shù)據(jù)塊的文件的信息,還保存有一個釋放位圖,用于記錄釋放了該數(shù)據(jù)塊的信息。在有克隆文件釋放了該數(shù)據(jù)塊時,對共享位圖和釋放位圖進行更新,具體更新該克隆文件與該數(shù)據(jù)塊的引用關(guān)系和釋放關(guān)系,以及更新克隆文件的父文件和子文件中引用過該數(shù)據(jù)塊的文件與該數(shù)據(jù)塊的引用關(guān)系。當共享位圖與釋放位圖相等且不等于零時,可以確定引用了該數(shù)據(jù)塊的文件均已經(jīng)釋放了該數(shù)據(jù)塊,可以刪除該數(shù)據(jù)塊,回收其所占空間,控制其占用的存儲空間處于可用狀態(tài)。采用上述技術(shù)方案能夠在數(shù)據(jù)塊沒有被任何文件所引用時收回其所占用的空間,空間回收率很高,而且只是在克隆文件釋放數(shù)據(jù)塊時需要對該數(shù)據(jù)塊的位圖進行更新,加之每次更新只針對克隆文件自身以及其父文件和子文件中引用過該數(shù)據(jù)塊的文件,數(shù)據(jù)量很小,運算壓力小,運行性能很高。綜上,采用本申請實施例中的技術(shù)方案能夠同時達到聞的空間回收率和聞的運行效率。
[0033]下面通過附圖以及具體實施例對本申請技術(shù)方案做詳細的說明,應(yīng)當理解本申請實施例以及實施例中的具體特征是對本申請技術(shù)方案的詳細的說明,而不是對本申請技術(shù)方案的限定,在不沖突的情況下,本申請實施例以及實施例中的技術(shù)特征可以相互組合。
[0034]參見圖1,為本申請實施例提供的一種克隆文件的方法的流程示意圖,該流程包括如下步驟:
[0035]步驟101:在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)第一文件的第一元數(shù)據(jù)確定出第一文件集合,第一文件集合包括第一文件的父文件及子文件中引用過第一數(shù)據(jù)塊的文件。
[0036]具體的,第一文件的父文件指的是創(chuàng)建第一文件時的源文件,同理,第一文件的子文件指的是以第一文件為源文件創(chuàng)建的文件。在第一文件的元數(shù)據(jù)(本申請實施例以下內(nèi)容簡稱為第一元數(shù)據(jù))中保存有第一文件的父文件與子文件的信息。在第一文件釋放第一數(shù)據(jù)塊時,通過第一元數(shù)據(jù)可以確定出第一文件的父文件及子文件中引用過第一數(shù)據(jù)塊的文件,本申請實施例中,將確定出的文件的集合稱為第一文件集合。實際情況中,根據(jù)第一元數(shù)據(jù)可能確定出第一文件的父文件及子文件都沒有引用過第一數(shù)據(jù)塊,這種情況下第一文件集合為空集合,不包含文件。
[0037]步驟102:在第一數(shù)據(jù)塊的共享位圖中將與第一文件、第一文件集合中的文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1,其中,共享位圖用于記錄引用過第一數(shù)據(jù)塊的文件的信息,共享位圖的初始值為O。
[0038]具體的,第一數(shù)據(jù)塊的共享位圖為記錄引用過第一數(shù)據(jù)塊的文件的信息的位圖,具體實施時,第一數(shù)據(jù)塊的共享位圖可以由O和I組成的數(shù)字序列組成,每一個數(shù)據(jù)位對應(yīng)一個文件與第一數(shù)據(jù)塊的引用關(guān)系,其中,該數(shù)值I代表該數(shù)據(jù)位對應(yīng)的文件引用過第一數(shù)據(jù)塊,數(shù)值O代表尚未確定出該數(shù)據(jù)位對應(yīng)的文件引用過第一數(shù)據(jù)塊。由于本申請實施例中,在文件釋放第一數(shù)據(jù)塊時對第一數(shù)據(jù)塊的位圖進行更新,因此,在釋放之前,尚不能確定文件是否引用過第一數(shù)據(jù)塊。
[0039]另外,共享位圖中數(shù)據(jù)位與克隆文件的對應(yīng)關(guān)系可以保存在第一數(shù)據(jù)塊的元數(shù)據(jù)(本申請實施例以下內(nèi)容簡稱為第二元數(shù)據(jù)),通過第二元數(shù)據(jù)即可獲知克隆文件與共享位圖中數(shù)據(jù)位的對應(yīng)關(guān)系,或者,共享位圖中數(shù)據(jù)位與克隆文件的對應(yīng)關(guān)系為約定規(guī)則,通過約定規(guī)則可以確定出共享位圖中數(shù)據(jù)位與克隆文件的對應(yīng)關(guān)系。
[0040]步驟102中,由于第一文件釋放了第一數(shù)據(jù)塊,所以可以毫無疑義地確定出第一文件引用過第一數(shù)據(jù)塊,對共享位圖中與第一文件對應(yīng)的數(shù)據(jù)位的數(shù)值進行更新,將數(shù)值設(shè)置為I。另外,針對步驟101中確定出的第一文件集合中的文件,同樣將其對應(yīng)的數(shù)據(jù)位的數(shù)值設(shè)置為I,完成對共享位圖的更新。
[0041]步驟103:在第一數(shù)據(jù)塊的釋放位圖中將與第一文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1,其中,釋放位圖用于記錄釋放了第一數(shù)據(jù)塊的文件的信息,釋放位圖的初始值為O ;
[0042]具體的,第一文件的釋放位圖為記錄釋放了第一數(shù)據(jù)塊的文件的信息的位圖,具體實施時,第一數(shù)據(jù)塊的釋放位圖可以由O和I組成的數(shù)字序列組成,每一個數(shù)據(jù)位對應(yīng)一個文件與第一數(shù)據(jù)塊的釋放關(guān)系,其中,該數(shù)值I代表該數(shù)據(jù)位對應(yīng)的文件釋放了第一數(shù)據(jù)塊,數(shù)值O代表該數(shù)據(jù)位對應(yīng)的文件沒有釋放過第一數(shù)據(jù)塊。本申請實施例中,釋放位圖中數(shù)據(jù)位與克隆文件的對應(yīng)關(guān)系與共享位圖中數(shù)據(jù)位與克隆文件的對應(yīng)關(guān)系一致。
[0043]步驟103中,在第一文件釋放第一數(shù)據(jù)塊時,對第一數(shù)據(jù)塊的釋放位圖進行更新,將第一數(shù)據(jù)塊的釋放位圖中與第一文件對應(yīng)的數(shù)據(jù)位的數(shù)值設(shè)置為1,完成對釋放位圖的更新。
[0044]步驟104:在共享位圖與釋放位圖相等且不等于O時,刪除第一數(shù)據(jù)塊,控制第一數(shù)據(jù)塊占用的存儲空間處于可用狀態(tài)。
[0045]具體的,在文件A弓I用第一數(shù)據(jù)塊時,根據(jù)文件A克隆文件B和文件C,而又在文件B釋放第一數(shù)據(jù)塊之前根據(jù)文件B克隆文件D和文件E,因此,引用過第一數(shù)據(jù)塊的所有文件組成一個拓撲關(guān)系網(wǎng),任意兩個文件都能通過多層的父子關(guān)系聯(lián)系到一起。
[0046]因此,在引用過第一數(shù)據(jù)塊的文件個數(shù)為2個或以上時,在有一個文件釋放了第一數(shù)據(jù)塊時,通過步驟101均能確定出至少一個引用過第一數(shù)據(jù)塊的其它文件,在步驟102?步驟103對共享位圖和釋放位圖進行更新時,共享位圖中更新的數(shù)據(jù)位要多于釋放位圖中更新的數(shù)據(jù)位,只有在所有文件均釋放了第一數(shù)據(jù)塊時,釋放位圖才能與共享位圖相等,因此,可以在共享位圖與釋放位圖相等且不等于O時,確定所有引用過第一數(shù)據(jù)塊的文件均已經(jīng)釋放了第一數(shù)據(jù)塊,可以刪除第一數(shù)據(jù)塊,收回其占用的空間,控制其所占用的空間處于可用狀態(tài)。
[0047]而在引用過第一數(shù)據(jù)塊的文件只有一個文件時,步驟101中確定出第一文件集合為空集合,執(zhí)行步驟102?103之后,共享位圖與釋放位圖均只包含一個數(shù)據(jù)1,且該數(shù)據(jù)I的數(shù)據(jù)位相同,共享位圖與釋放位圖相等,可以確定引用過第一數(shù)據(jù)塊的所有文件均釋放了第一數(shù)據(jù)塊,同樣可以刪除第一數(shù)據(jù)塊,收回其占用的空間,控制器所占用的空間處于可用狀態(tài)。
[0048]本申請實施例中,步驟102與步驟103可以同時執(zhí)行,或者步驟102早于步驟103執(zhí)行,或者步驟103早于步驟102執(zhí)行。
[0049]本申請實施例上述技術(shù)方案中,針對每一個共享數(shù)據(jù)塊保存有一個共享位圖,用于記錄引用過該數(shù)據(jù)塊的文件的信息,還保存有一個釋放位圖,用于記錄釋放了該數(shù)據(jù)塊的信息。在有克隆文件釋放了該數(shù)據(jù)塊時,對共享位圖和釋放位圖進行更新,具體更新該克隆文件與該數(shù)據(jù)塊的引用關(guān)系和釋放關(guān)系,以及更新克隆文件的父文件和子文件中引用過該數(shù)據(jù)塊的文件與該數(shù)據(jù)塊的引用關(guān)系。當共享位圖與釋放位圖相等且不等于零時,可以確定引用了該數(shù)據(jù)塊的文件均已經(jīng)釋放了該數(shù)據(jù)塊,可以刪除該數(shù)據(jù)塊,回收其所占空間,控制其占用的存儲空間處于可用狀態(tài)。采用上述技術(shù)方案能夠在數(shù)據(jù)塊沒有被任何文件所引用時收回其所占用的空間,空間回收率很高,而且只是在克隆文件釋放數(shù)據(jù)塊時需要對該數(shù)據(jù)塊的位圖進行更新,加之每次更新只針對克隆文件自身以及其父文件和子文件中引用過該數(shù)據(jù)塊的文件,數(shù)據(jù)量很小,運算壓力小,運行性能很高。綜上,采用本申請實施例中的技術(shù)方案能夠同時達到聞的空間回收率和聞的運行效率。
[0050]可選的,參見圖2,本申請實施例中,步驟101:在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)第一文件的第一元數(shù)據(jù)確定出第一文件集合,具體包括:
[0051]步驟105:在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)第一元數(shù)據(jù)確定第一文件集合包括第一文件的子文件中創(chuàng)建時間晚于第一數(shù)據(jù)塊的第一創(chuàng)建時間的子文件。
[0052]具體的,可以通過比較第一文件的子文件的創(chuàng)建時間和第一數(shù)據(jù)塊的創(chuàng)建時間(本申請實施例以下內(nèi)容簡稱為第一創(chuàng)建時間)的先后關(guān)系確定出第一文件的子文件中引用過第一數(shù)據(jù)塊的文件,如果第一文件的子文件的創(chuàng)建時間早于第一創(chuàng)建時間,表明創(chuàng)建該子文件時,第一文件尚未引用第一數(shù)據(jù)塊,因此,該子文件沒有引用過第一數(shù)據(jù)塊,而如果改子文件的創(chuàng)建時間晚于第一創(chuàng)建時間,則表明在根據(jù)第一文件創(chuàng)建該子文件時,第一文件已經(jīng)引用且尚在引用(因為當前才釋放第一數(shù)據(jù)塊)第一數(shù)據(jù)塊,因此可以確定該子文件被創(chuàng)建時引用了第一數(shù)據(jù)塊,確定其屬于第一文件集合。
[0053]上述技術(shù)方案中,通過比較第一文件的子文件的創(chuàng)建時間和第一創(chuàng)建時間的先后順序,能夠快速、準確地確定出第一文件的子文件中引用過第一數(shù)據(jù)塊的文件,運算量小,效率很高。
[0054]可選的,繼續(xù)參見圖2,本申請實施例中,步驟101:在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)第一文件的第一元數(shù)據(jù)確定出第一文件集合,還包括:
[0055]步驟106:在第一元數(shù)據(jù)表明第一創(chuàng)建時間早于第一文件的第二創(chuàng)建時間時,確定第一文件集合包括第一文件的父文件。
[0056]具體的,可以通過比較第一文件的創(chuàng)建時間(本申請實施例以下內(nèi)容簡稱為第二創(chuàng)建時間)和第一創(chuàng)建時間的先后關(guān)系確定第一文件的父文件是否引用過第一數(shù)據(jù)塊,具體的,如果第一創(chuàng)建時間晚于第二創(chuàng)建時間時,可以確定根據(jù)第一文件的父文件克隆第一文件時,第一數(shù)據(jù)塊尚未創(chuàng)建,第一文件的父文件沒有引用第一數(shù)據(jù)塊,而如果第一創(chuàng)建時間早于第二創(chuàng)建時間時,可以確定在第一文件創(chuàng)建時,第一文件已經(jīng)引用了第一數(shù)據(jù)塊,因此,可以確定第一文件的父文件引用過第一數(shù)據(jù)塊,屬于第一文件集合。
[0057]上述技術(shù)方案中,通過比較第一文件的第二創(chuàng)建時間和第一數(shù)據(jù)塊的第一創(chuàng)建時間的先后順序,能夠快速、準確地確定第一文件的父文件是否引用過第一數(shù)據(jù)塊,運算量小,效率很高。
[0058]可選的,在步驟105:在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)第一元數(shù)據(jù)確定第一文件集合包括第一文件的子文件中創(chuàng)建時間晚于第一數(shù)據(jù)塊的第一創(chuàng)建時間的子文件之前,還可以包括:
[0059]步驟107:在根據(jù)第一文件創(chuàng)建第一文件的子文件時,在第一元數(shù)據(jù)中保存第一文件的子文件的創(chuàng)建時間以及第一文件的子文件的標識信息。
[0060]通過在創(chuàng)建第一文件的子文件時記錄該子文件的創(chuàng)建時間和標識信息,便于根據(jù)記錄的的創(chuàng)建時間和標識信息確定出第一文件的子文件中引用過第一數(shù)據(jù)塊的文件。
[0061]可選的,在步驟106:在第一元數(shù)據(jù)表明第一創(chuàng)建時間早于第一文件的第二創(chuàng)建時間時,確定第一文件集合包括第一文件的父文件之前,方法還包括:
[0062]步驟108:在根據(jù)第一文件的父文件創(chuàng)建第一文件時,在第一元數(shù)據(jù)中保存第一創(chuàng)建時間以及第一文件的父文件的標識信息。
[0063]通過在創(chuàng)建第一文件時記錄第一文件的第二創(chuàng)建時間以及第一文件的父文件的標識信息,便于根據(jù)記錄的的第二創(chuàng)建時間確定第一文件的父文件是否引用過第一數(shù)據(jù)塊,以及在確定出第一文件的父文件引用過第一數(shù)據(jù)塊時,能夠獲知父文件的標識信息,便于在共享位圖中將該父文件對應(yīng)的數(shù)據(jù)位處的數(shù)據(jù)設(shè)置為I。
[0064]在上述技術(shù)方案中,文件管理系統(tǒng)不用維護克隆文件拓撲關(guān)系網(wǎng)的全部分支圖,只需要每個克隆文件記錄自己的父文件信息和子文件信息,不僅元數(shù)據(jù)信息量小,而且維護方便、管理靈活,效率很高。
[0065]可選的,本申請實施例在在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)第一文件的第一元數(shù)據(jù)確定出第一文件集合之前,還包括:
[0066]步驟109:在創(chuàng)建第一數(shù)據(jù)塊時,在第一數(shù)據(jù)塊的第二元數(shù)據(jù)中保存第一創(chuàng)建時間。
[0067]通過在創(chuàng)建第一數(shù)據(jù)塊時記錄第一數(shù)據(jù)塊的創(chuàng)建時間,便于在有克隆文件釋放第一數(shù)據(jù)塊時確定出該克隆文件的父文件及子文件中引用過第一數(shù)據(jù)塊的文件,進而對第一數(shù)據(jù)塊的共享位圖進行更新。
[0068]為了更清楚的理解本發(fā)明,下面以具體應(yīng)用實例對本申請實施例提供的上述克隆文件的流程進行詳細描述。
[0069]在根據(jù)文件A創(chuàng)建了克隆文件B時,在文件B的元數(shù)據(jù)中保存文件B的創(chuàng)建時間Tb,以及父文件的標識信息標識A。在文件A的元數(shù)據(jù)中增加子文件B的創(chuàng)建時間Tb和標識B。
[0070]在Tb之后的時刻T。,又根據(jù)文件B創(chuàng)建了克隆文件C,在文件B的元數(shù)據(jù)中記錄中添加其子文件C的標識信息標識C以及創(chuàng)建時間T。。
[0071]在T。之后的時刻Td,對文件B中數(shù)據(jù)進行了蟹蓋,增加了數(shù)據(jù)塊D,在數(shù)據(jù)塊D的元數(shù)據(jù)中添加數(shù)據(jù)塊D的創(chuàng)建時間Td,并針對數(shù)據(jù)塊D生成共享位圖和釋放位圖,共享位圖和釋放位圖的初始值均為O。
[0072]然后,在Td之后的時刻?;,又根據(jù)文件B創(chuàng)建了克隆文件E,在文件B的元數(shù)據(jù)中添加子文件T6的創(chuàng)建時間T6以及標識E,在文件E的元數(shù)據(jù)中添加文件E的創(chuàng)建時間以及父文件的標識B。
[0073]然后,在Te之后的時刻Tl,文件B釋放了數(shù)據(jù)塊D,從文件B的元數(shù)據(jù)中保存的信息確定出文件B的父文件和子文件中引用過數(shù)據(jù)塊D的文件。
[0074]具體的,比較文件B的創(chuàng)建時間Tb和數(shù)據(jù)塊D的創(chuàng)建時間Td的先后順序,確定Tb早于Td,因此確定文件塊B的父文件沒有引用過數(shù)據(jù)塊D。分別比較文件B的兩個子文件的創(chuàng)建時間與Td的先后順序,確定T。早于TB,Te晚于Td,因此確定文件E引用過數(shù)據(jù)塊D,文件C沒有引用過數(shù)據(jù)塊D。因此,確定文件B的父文件和子文件中只有子文件E引用過數(shù)據(jù)塊D。
[0075]然后,更新數(shù)據(jù)塊D的共享位圖,將文件B和文件E對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為I,例如,更新后的共享位圖為“ 01001”,其中,第I位數(shù)據(jù)對應(yīng)文件B的引用關(guān)系,第2位數(shù)據(jù)對應(yīng)文件E的引用關(guān)系。
[0076]在更新共享位圖之后,可以更新數(shù)據(jù)塊D的釋放位圖,將釋放位圖中與文件B對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1,例如,更新后的共享位圖為“01000”。
[0077]在Tl時刻之后的時刻T2,文件E釋放數(shù)據(jù)塊D,由于文件E沒有子文件,所以從文件E的元數(shù)據(jù)中獲取文件E的創(chuàng)建時間?。?,與數(shù)據(jù)塊的創(chuàng)建時間Td比較可知,Te晚于Td,確定文件E的父文件B引用過數(shù)據(jù)塊D。
[0078]然后,更新數(shù)據(jù)塊D的共享位圖和釋放位圖,更新后的共享位圖還是為“01001”,更新后的釋放位圖為從“01000”變成“01001”,此時共享位圖與釋放位圖相同且不等于0,可以確定引用過數(shù)據(jù)塊D的所有文件均釋放了數(shù)據(jù)塊D,此時,可以刪除數(shù)據(jù)塊D,收回其所占用的空間,使所占空間轉(zhuǎn)變?yōu)榭捎每臻g。
[0079]基于相同的技術(shù)構(gòu)思,本發(fā)明實施例還提供了一種裝置,參見圖3,為該裝置的結(jié)構(gòu)示意框圖,裝置包括確定模塊201、共享位圖更新模塊202、釋放位圖更新模塊203以及空間回收模塊204。
[0080]其中,確定模塊201用于:在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)第一文件的第一元數(shù)據(jù)確定出第一文件集合,第一文件集合包括第一文件的父文件及子文件中引用過第一數(shù)據(jù)塊的文件;
[0081]共享位圖更新模塊202用于:在第一數(shù)據(jù)塊的共享位圖中將與第一文件、第一文件集合中的文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1,其中,共享位圖用于記錄引用過第一數(shù)據(jù)塊的文件的信息,共享位圖的初始值為O ;
[0082]釋放位圖更新模塊203用于:在第一數(shù)據(jù)塊的釋放位圖中將與第一文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1,其中,釋放位圖用于記錄釋放了第一數(shù)據(jù)塊的文件的信息,釋放位圖的初始值為O;
[0083]空間回收模塊204用于:在共享位圖與釋放位圖相等且不等于O時,刪除第一數(shù)據(jù)塊,控制第一數(shù)據(jù)塊占用的存儲空間處于可用狀態(tài)。
[0084]可選的,確定模塊201具體用于:在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)第一元數(shù)據(jù)確定第一文件集合包括第一文件的子文件中創(chuàng)建時間晚于第一數(shù)據(jù)塊的第一創(chuàng)建時間的子文件。
[0085]可選的,確定模塊201具體用于:在第一元數(shù)據(jù)表明第一創(chuàng)建時間早于第一文件的第二創(chuàng)建時間時,確定第一文件集合包括第一文件的父文件。
[0086]可選的,參見圖4,裝置還包括:
[0087]第一保持存模塊205,用于在根據(jù)第一文件創(chuàng)建第一文件的子文件時,在第一元數(shù)據(jù)中保存第一文件的子文件的創(chuàng)建時間以及第一文件的子文件的標識信息。
[0088]可選的,參見圖4,裝置還包括:
[0089]第二保存模塊206,用于在根據(jù)第一文件的父文件創(chuàng)建第一文件時,在第一兀數(shù)據(jù)中保存第一創(chuàng)建時間以及第一文件的父文件的標識信息。
[0090]可選的,參見圖4,裝置還包括:
[0091]第三保存模塊207,用于在創(chuàng)建第一數(shù)據(jù)塊時,在第一數(shù)據(jù)塊的第二元數(shù)據(jù)中保存第一創(chuàng)建時間。
[0092]本實施例中的裝置與前述釋放數(shù)據(jù)塊的方法是基于同一發(fā)明構(gòu)思下的兩個方面,在前面已經(jīng)對方法的實施過程作了詳細的描述,所以本領(lǐng)域技術(shù)人員可根據(jù)前述描述清楚地了解本實施例中的裝置的結(jié)構(gòu)及實施過程,為了說明書的簡潔,在此就不再贅述了。
[0093]基于相同的技術(shù)構(gòu)思,本發(fā)明實施例還提供了一種電子設(shè)備,參見圖5,為電子設(shè)備的結(jié)構(gòu)示意圖,包括:總線300,以及連接到總線300的處理器301、存儲單元302。其中,存儲單元302用于存儲指令,處理器301用于執(zhí)行存儲單元302中的指令,在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)第一文件的第一元數(shù)據(jù)確定出第一文件集合,第一文件集合包括第一文件的父文件及子文件中引用過第一數(shù)據(jù)塊的文件;在第一數(shù)據(jù)塊的共享位圖中將與第一文件、第一文件集合中的文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1,其中,共享位圖用于記錄引用過第一數(shù)據(jù)塊的文件的信息,共享位圖的初始值為O ;在第一數(shù)據(jù)塊的釋放位圖中將與第一文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1,其中,釋放位圖用于記錄釋放了第一數(shù)據(jù)塊的文件的信息,釋放位圖的初始值為O ;在共享位圖與釋放位圖相等且不等于O時,刪除第一數(shù)據(jù)塊,控制第一數(shù)據(jù)塊占用的存儲空間處于可用狀態(tài)。
[0094]可選的,處理器301用于在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)第一文件的第一元數(shù)據(jù)確定出第一文件集合,具體為:在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)第一元數(shù)據(jù)確定第一文件集合包括第一文件的子文件中創(chuàng)建時間晚于第一數(shù)據(jù)塊的第一創(chuàng)建時間的子文件。
[0095]可選的,處理器301用于在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)第一文件的第一元數(shù)據(jù)確定出第一文件集合,具體為:在第一元數(shù)據(jù)表明第一創(chuàng)建時間早于第一文件的第二創(chuàng)建時間時,確定第一文件集合包括第一文件的父文件。
[0096]可選的,處理器301在執(zhí)行指令時,還用于:在根據(jù)第一文件創(chuàng)建第一文件的子文件時,在第一元數(shù)據(jù)中保存第一文件的子文件的創(chuàng)建時間以及第一文件的子文件的標識信肩、O
[0097]可選的,處理器301在執(zhí)行指令時,還用于:在根據(jù)第一文件的父文件創(chuàng)建第一文件時,在第一元數(shù)據(jù)中保存第一創(chuàng)建時間以及第一文件的父文件的標識信息。
[0098]可選的,處理器301在執(zhí)行指令時,還用于:在創(chuàng)建第一數(shù)據(jù)塊時,在第一數(shù)據(jù)塊的第二元數(shù)據(jù)中保存第一創(chuàng)建時間。
[0099]可選的,電子設(shè)備還包括:接口,用于從計算機集群系統(tǒng)中的節(jié)點處獲取該節(jié)點上的第一文件釋放第一數(shù)據(jù)塊的消息。
[0100]本實施例中的電子設(shè)備與前述釋放數(shù)據(jù)塊的方法是基于同一發(fā)明構(gòu)思下的兩個方面,在前面已經(jīng)對方法的實施過程作了詳細的描述,所以本領(lǐng)域技術(shù)人員可根據(jù)前述描述清楚地了解本實施例中的電子設(shè)備的結(jié)構(gòu)及實施過程,為了說明書的簡潔,在此就不再贅述了。
[0101]本申請實施例中提供的一個或多個技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點:
[0102]本申請實施例中,針對每一個共享數(shù)據(jù)塊保存有一個共享位圖,用于記錄引用過該數(shù)據(jù)塊的文件的信息,還保存有一個釋放位圖,用于記錄釋放了該數(shù)據(jù)塊的信息。在有克隆文件釋放了該數(shù)據(jù)塊時,對共享位圖和釋放位圖進行更新,具體更新該克隆文件與該數(shù)據(jù)塊的引用關(guān)系和釋放關(guān)系,以及更新克隆文件的父文件和子文件中引用過該數(shù)據(jù)塊的文件與該數(shù)據(jù)塊的引用關(guān)系。當共享位圖與釋放位圖相等且不等于零時,可以確定引用了該數(shù)據(jù)塊的文件均已經(jīng)釋放了該數(shù)據(jù)塊,可以刪除該數(shù)據(jù)塊,回收其所占空間,控制其占用的存儲空間處于可用狀態(tài)。采用上述技術(shù)方案能夠在數(shù)據(jù)塊沒有被任何文件所引用時收回其所占用的空間,空間回收率很高,而且只是在克隆文件釋放數(shù)據(jù)塊時需要對該數(shù)據(jù)塊的位圖進行更新,加之每次更新只針對克隆文件自身以及其父文件和子文件中引用過該數(shù)據(jù)塊的文件,數(shù)據(jù)量很小,運算壓力小,運行性能很高。綜上,采用本申請實施例中的技術(shù)方案能夠同時達到聞的空間回收率和聞的運行效率。
[0103]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0104]本申請是參照根據(jù)本申請實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0105]這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0106]盡管已描述了本申請的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本申請范圍的所有變更和修改。
[0107]顯然,本領(lǐng)域的技術(shù)人員可以對本申請進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。
【權(quán)利要求】
1.一種釋放數(shù)據(jù)塊的方法,其特征在于,包括: 在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)所述第一文件的第一元數(shù)據(jù)確定出第一文件集合,所述第一文件集合包括所述第一文件的父文件及子文件中引用過所述第一數(shù)據(jù)塊的文件; 在所述第一數(shù)據(jù)塊的共享位圖中將與所述第一文件、所述第一文件集合中的文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1,其中,所述共享位圖用于記錄引用過所述第一數(shù)據(jù)塊的文件的信息,所述共享位圖的初始值為O ; 在所述第一數(shù)據(jù)塊的釋放位圖中將與所述第一文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1,其中,所述釋放位圖用于記錄釋放了所述第一數(shù)據(jù)塊的文件的信息,所述釋放位圖的初始值為O ; 在所述共享位圖與所述釋放位圖相等且不等于O時,刪除所述第一數(shù)據(jù)塊,控制所述第一數(shù)據(jù)塊占用的存儲空間處于可用狀態(tài)。
2.如權(quán)利要求1所述的方法,其特征在于,在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)所述第一文件的第一元數(shù)據(jù)確定出第一文件集合,包括: 在所述第一文件釋放所述第一數(shù)據(jù)塊時,根據(jù)所述第一元數(shù)據(jù)確定所述第一文件集合包括所述第一文件的子文件中創(chuàng)建時間晚于所述第一數(shù)據(jù)塊的第一創(chuàng)建時間的子文件。
3.如權(quán)利要求1所述的方法,其特征在于,在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)所述第一文件的第一元數(shù)據(jù)確定出第一文件集合,包括: 在所述第一元數(shù)據(jù)表明所述第一創(chuàng)建時間早于所述第一文件的第二創(chuàng)建時間時,確定所述第一文件集合包括所述第一文件的父文件。
4.如權(quán)利要求2所述的方法,其特征在于,在所述在所述第一文件釋放所述第一數(shù)據(jù)塊時,根據(jù)所述第一元數(shù)據(jù)確定所述第一文件集合包括所述第一文件的子文件中創(chuàng)建時間晚于所述第一數(shù)據(jù)塊的第一創(chuàng)建時間的子文件之前,所述方法還包括: 在根據(jù)所述第一文件創(chuàng)建所述第一文件的子文件時,在所述第一元數(shù)據(jù)中保存所述第一文件的子文件的創(chuàng)建時間以及所述第一文件的子文件的標識信息。
5.如權(quán)利要求3所述的方法,其特征在于,在所述在所述第一元數(shù)據(jù)表明所述第一創(chuàng)建時間早于所述第一文件的第二創(chuàng)建時間時,確定所述第一文件集合包括所述第一文件的父文件之前,所述方法還包括: 在根據(jù)所述第一文件的父文件創(chuàng)建所述第一文件時,在所述第一元數(shù)據(jù)中保存所述第一創(chuàng)建時間以及所述第一文件的父文件的標識信息。
6.如權(quán)利要求2-5中任一權(quán)利要求所述的方法,其特征在于,在所述在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)所述第一文件的第一元數(shù)據(jù)確定出第一文件集合之前,所述方法還包括: 在創(chuàng)建所述第一數(shù)據(jù)塊時,在所述第一數(shù)據(jù)塊的第二元數(shù)據(jù)中保存所述第一創(chuàng)建時間。
7.一種裝置,其特征在于,包括: 確定模塊,用于在第一文件釋放第一數(shù)據(jù)塊時,根據(jù)所述第一文件的第一元數(shù)據(jù)確定出第一文件集合,所述第一文件集合包括所述第一文件的父文件及子文件中引用過所述第一數(shù)據(jù)塊的文件; 共享位圖更新模塊,用于在所述第一數(shù)據(jù)塊的共享位圖中將與所述第一文件、所述第一文件集合中的文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1,其中,所述共享位圖用于記錄引用過所述第一數(shù)據(jù)塊的文件的信息,所述共享位圖的初始值為O ; 釋放位圖更新模塊,用于在所述第一數(shù)據(jù)塊的釋放位圖中將與所述第一文件對應(yīng)的數(shù)據(jù)位的數(shù)據(jù)設(shè)置為1,其中,所述釋放位圖用于記錄釋放了所述第一數(shù)據(jù)塊的文件的信息,所述釋放位圖的初始值為O ; 空間回收模塊,用于在所述共享位圖與所述釋放位圖相等且不等于O時,刪除所述第一數(shù)據(jù)塊,控制所述第一數(shù)據(jù)塊占用的存儲空間處于可用狀態(tài)。
8.如權(quán)利要求7所述的裝置,其特征在于,所述確定模塊具體用于:在所述第一文件釋放所述第一數(shù)據(jù)塊時,根據(jù)所述第一元數(shù)據(jù)確定所述第一文件集合包括所述第一文件的子文件中創(chuàng)建時間晚于所述第一數(shù)據(jù)塊的第一創(chuàng)建時間的子文件。
9.如權(quán)利要求7所述的裝置,其特征在于,所述確定模塊具體用于:在所述第一元數(shù)據(jù)表明所述第一創(chuàng)建時間早于所述第一文件的第二創(chuàng)建時間時,確定所述第一文件集合包括所述第一文件的父文件。
10.如權(quán)利要求8所述的裝置,其特征在于,還包括: 第一保持存模塊,用于在根據(jù)所述第一文件創(chuàng)建所述第一文件的子文件時,在所述第一元數(shù)據(jù)中保存所述第一文件的子文件的創(chuàng)建時間以及所述第一文件的子文件的標識信肩、O
11.如權(quán)利要求9所述的裝置,其特征在于,還包括: 第二保存模塊,用于在根據(jù)所述第一文件的父文件創(chuàng)建所述第一文件時,在所述第一元數(shù)據(jù)中保存所述第一創(chuàng)建時間以及所述第一文件的父文件的標識信息。
12.如權(quán)利要求8-11中任一權(quán)利要求所述的裝置,其特征在于,還包括: 第三保存模塊,用于在創(chuàng)建所述第一數(shù)據(jù)塊時,在所述第一數(shù)據(jù)塊的第二元數(shù)據(jù)中保存所述第一創(chuàng)建時間。
【文檔編號】G06F11/14GK104461780SQ201410713393
【公開日】2015年3月25日 申請日期:2014年11月28日 優(yōu)先權(quán)日:2014年11月28日
【發(fā)明者】楊小鋒 申請人:華為技術(shù)有限公司