一種文件存儲的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲的技術(shù)領(lǐng)域,特別涉及一種文件存儲的方法及裝置。
【背景技術(shù)】
[0002]現(xiàn)有的文件存儲方案中,文件通常是以目錄樹結(jié)構(gòu)來組織的,當(dāng)文件數(shù)量很多時,目錄內(nèi)的文件數(shù)會很多、目錄層次也會較深。尤其是從幾K?幾百K不等,數(shù)量巨大的小文件,處理時磁盤輸入輸出接口過高。小文件的文件數(shù)據(jù)較小,而小文件備份或修復(fù)過程中的磁盤尋址會耗費較多的計算資源和時間,導(dǎo)致小文件的備份與修復(fù)存在效率較低的問題。
【發(fā)明內(nèi)容】
[0003]本發(fā)明實施例提出了一種文件存儲的方法及裝置,用以提高小文件備份與修復(fù)的效率。
[0004]本發(fā)明實施例提供了一種文件存儲的方法,包括如下步驟:
[0005]獲取文件的數(shù)據(jù)量大小;
[0006]判斷所述文件的數(shù)據(jù)量是否小于閾值;
[0007]若所述文件的數(shù)據(jù)量小于閾值,將所述文件存儲至特定存儲空間,所述特定存儲空間是在多個小文件聚合存儲的存儲空間中為所述文件分配的存儲空間。
[0008]本發(fā)明實施例提供了一種文件存儲的裝置,包括:
[0009]獲取單元,用于獲取文件的數(shù)據(jù)量大小;
[0010]判斷單元,用于判斷所述文件的數(shù)據(jù)量是否小于閾值;
[0011]存儲單元,用于若所述文件的數(shù)據(jù)量小于閾值,將所述文件存儲至特定存儲空間,所述特定存儲空間是在多個小文件聚合存儲的存儲空間中為所述文件分配的存儲空間。
[0012]本發(fā)明有益效果如下:
[0013]本發(fā)明實施例提供了一種文件存儲的方法及裝置,通過獲取的文件數(shù)據(jù)量,并將判斷數(shù)據(jù)量小于閾值的小文件聚合存儲至特定存儲空間,所述特定存儲空間是在多個小文件聚合存儲的存儲空間中為所述文件分配的存儲空間,可以有效減少小文件存儲的數(shù)據(jù)對象的數(shù)量,采用此種文件存儲的方案,在對文件進行備份或修復(fù)時,可大大降低磁盤尋址所耗費的計算資源和時間,也即提高文件備份或存儲時的效率。
【附圖說明】
[0014]下面將參照附圖描述本發(fā)明的具體實施例,
[0015]圖1為本發(fā)明實施例中文件存儲的方法的流程示意圖;
[0016]圖2為本發(fā)明實施例中文件存儲映射關(guān)系示意圖;
[0017]圖3為本發(fā)明實施例中文件存儲的方法的實施例示意圖;
[0018]圖4為本發(fā)明實施例中文件存儲的裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0019]為了使本發(fā)明的技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖對本發(fā)明的示例性實施例進行進一步詳細(xì)的說明,顯然,所描述的實施例僅是本發(fā)明的一部分實施例,而不是所有實施例的窮舉。并且在不沖突的情況下,本說明書中的實施例及實施例中的特征可以互相結(jié)合。
[0020]圖1為本發(fā)明實施例中文件存儲的方法的流程示意圖,如圖1所示,文件存儲的方法可以包括如下步驟:
[0021]步驟101:獲取文件的數(shù)據(jù)量大?。?br>[0022]步驟102:判斷所述文件的數(shù)據(jù)量是否小于閾值;
[0023]步驟103:若所述文件的數(shù)據(jù)量小于閾值,將所述文件存儲至特定存儲空間,所述特定存儲空間是在多個小文件聚合存儲的存儲空間中為所述文件分配的存儲空間。
[0024]具體實施中,在存儲文件過程中,請求文件存儲操作的用戶態(tài)程序需要將文件所在地址、寫入位置、寫入長度傳遞給內(nèi)核空間,由此,可以獲取待存儲文件的數(shù)據(jù)量大小(即,對應(yīng)寫入長度)。
[0025]閾值為預(yù)先設(shè)定的,閾值可以為10KB、500KB、1MB等,具體的取值可以由本領(lǐng)域技術(shù)人員根據(jù)實際應(yīng)用場景而定,這里不做具體限定。
[0026]當(dāng)確定所述文件的數(shù)據(jù)量小于閾值時,將其與其他小于閾值的文件聚合存儲形成一個聚合文件,在聚合文件覆蓋的存儲空間中,每個文件都有其對應(yīng)的存儲空間,所述文件對應(yīng)的存儲空間即為特定存儲空間。這樣多個文件為多個數(shù)據(jù)對象,聚合存儲形成一個聚合文件后就變成一個數(shù)據(jù)對象。在進行數(shù)據(jù)備份或修復(fù)等處理時,可以有效減少小文件存儲的數(shù)據(jù)對象的數(shù)量,大大降低文件備份或存儲時的磁盤尋址所耗費的計算資源和時間,有效提高文件備份或存儲時的效率。
[0027]本發(fā)明實施例提供的種文件存儲的方法,通過獲取的文件數(shù)據(jù)量,并將判斷數(shù)據(jù)量小于閾值的小文件聚合存儲至特定存儲空間,所述特定存儲空間是在多個小文件聚合存儲的存儲空間中為所述文件分配的存儲空間,可以有效減少小文件存儲的數(shù)據(jù)對象的數(shù)量,采用此種文件存儲的方案,在對文件進行備份或修復(fù)時,可大大降低磁盤尋址所耗費的計算資源和時間,也即提高文件備份或存儲時的效率。
[0028]具體實施中,還可以將是否支持文件聚合將作為文件目錄的一個可設(shè)置的屬性,通過設(shè)置文件目錄的該屬性來確定位于該文件目錄下的文件的存儲是否可以應(yīng)用本發(fā)明人實施例提供的文件存儲的方法。即,若一個文件目錄的是否支持文件聚合的屬性為支持文件聚合,則在該文件目錄下創(chuàng)建的文件均可以聚合存儲。其中,可以在文件目錄的索引節(jié)點inode中設(shè)置存儲模式Storemode標(biāo)志,所述存儲模式標(biāo)志包括支持聚合存儲的聚合文件目錄和不支持聚合存儲的普通文件目錄。
[0029]實施中,獲取文件的數(shù)據(jù)量大小,可以具體包括:
[0030]獲取所述文件首次回寫的數(shù)據(jù)量大??;
[0031]判斷所述文件的數(shù)據(jù)量是否小于閾值,具體包括:
[0032]將所述文件首次回寫的數(shù)據(jù)量與所述閾值進行比較;
[0033]若所述文件首次回寫的數(shù)據(jù)量小于所述閾值,則所述文件的數(shù)據(jù)量小于所述閾值;
[0034]若所述文件首次回寫的數(shù)據(jù)量大于或等于所述閾值,則所述文件的數(shù)據(jù)量不小于所述閾值。
[0035]具體實施中,對于數(shù)據(jù)量較小的小文件讀寫的特性是常常打開,寫入小數(shù)據(jù),然后關(guān)閉,因此根據(jù)文件的第一次回寫數(shù)據(jù)量的大小,就基本可以確定該文件是否需要以本發(fā)明實施例中提供的文件存儲的方法進行存儲。即,如果第一次回寫的大小超過閾值,則按照普通文件存儲,和以前的讀寫保持一致,否則采用本發(fā)明實施例中提供的文件存儲的方法進行存儲。
[0036]實施中,將所述文件存儲至特定存儲空間,可以具體包括:
[0037]確定容器文件中是否為所述文件分配所述特定存儲空間,所述特定存儲空間位于所述容器文件中;
[0038]若所述容器文件中為所述文件分配了所述特定存儲空間,則將所述文件存儲至所述特定存儲空間;
[0039]所述容器文件中沒有為所述文件分配存儲空間,則請求在所述容器文件中分配存儲空間;
[0040]將所述文件存儲至在所述容器文件中為所述文件的分配的存儲空間。
[0041]具體實施中,確定容器文件中是否為所述文件分配所述特定存儲空間之前,可以為所述容器文件分配存儲空間,具體地,所述容器文件包括初創(chuàng)容器文件和非初創(chuàng)容器文件,若所述容器文件為初創(chuàng)容器文件,則為所述容器文件分配存儲空間,對于初創(chuàng)容器文件可以根據(jù)經(jīng)驗等為其分配固定大小的存儲空間;若所述容器文件為非初創(chuàng)容器文件,當(dāng)所述非初創(chuàng)容器文件存儲空間不足時,根據(jù)聚合存儲所述文件所需的空間為所述非初創(chuàng)容器文件分配存儲空間。對于非初創(chuàng)容器文件存儲空間不足時,可以根據(jù)當(dāng)前待寫入該非初創(chuàng)容器文件的文件大小的情況,為該非初創(chuàng)容器文件請求分配相應(yīng)的存儲空間。