一種數(shù)據(jù)存儲方法及裝置制造方法
【專利摘要】本發(fā)明實施例公開了一種數(shù)據(jù)存儲方法及裝置。本發(fā)明實施例方法包括:按照數(shù)據(jù)的更新頻率,將所述數(shù)據(jù)進(jìn)行類型劃分,將存儲空間劃分為多個類型的簇,多個類型的簇劃分為至少與所述數(shù)據(jù)的類型數(shù)量相同數(shù)量的類型,根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將同類型的數(shù)據(jù)分別存儲到同類型的簇中,在每個簇中,每更新一次數(shù)據(jù)都會使得原數(shù)據(jù)成為垃圾數(shù)據(jù),在數(shù)據(jù)的更新頻率快的簇中,在較短的時間形成大塊的垃圾數(shù)據(jù)的幾率較高,而相對的有效數(shù)據(jù)所占的比例較少,所以系統(tǒng)回收垃圾數(shù)據(jù)時,讀、寫的有效數(shù)據(jù)量較少,同時存儲空間中形成大塊空閑空間的幾率較高,進(jìn)而能夠降低垃圾回收的開銷,也能夠提高形成大塊空閑空間的幾率。
【專利說明】一種數(shù)據(jù)存儲方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,尤其涉及一種數(shù)據(jù)存儲方法及裝置。
【背景技術(shù)】
[0002]存儲系統(tǒng)的空間管理方法中存在兩種技術(shù),一種是寫時復(fù)制(C0W,copy-on-write )技術(shù)的基本思想是當(dāng)多個訪問者使用同一數(shù)據(jù)時,只需維護(hù)指向數(shù)據(jù)的指針,當(dāng)一個訪問者要修改數(shù)據(jù)時,需要對數(shù)據(jù)進(jìn)行拷貝,在拷貝的數(shù)據(jù)上進(jìn)行操作,這種操作對于其他訪問者透明。另一種是日志結(jié)構(gòu)(log-structured)的基本思想是將存儲空間作為日志(log)使用,數(shù)據(jù)以追加寫的形式寫入存儲空間。log-structured聚合小粒度寫為大粒度與,并順序地與入存儲空間。
[0003]現(xiàn)有技術(shù)中,在使用C0W技術(shù)的存儲系統(tǒng)中,在更新數(shù)據(jù)時將根目錄到需要更新數(shù)據(jù)的文件這一整條路徑進(jìn)行拷貝和重新放置。在使用log-structured技術(shù)的存儲系統(tǒng)中,在更新文件數(shù)據(jù)時,將新數(shù)據(jù),文件的元數(shù)據(jù)和索引節(jié)點(diǎn)表(inode map)進(jìn)行更新并重新放置。
[0004]在上述現(xiàn)有技術(shù)中,在使用C0W技術(shù)的存儲系統(tǒng)中,由于需要更新數(shù)據(jù)的節(jié)點(diǎn)有多個,并且不同節(jié)點(diǎn)更新數(shù)據(jù)的頻率不同,如,樹根節(jié)點(diǎn)和葉子節(jié)點(diǎn)的更新頻率節(jié)點(diǎn)的原始數(shù)據(jù)成為垃圾數(shù)據(jù)的頻率不同,有效數(shù)據(jù)和垃圾數(shù)據(jù)混雜存儲,空間碎片化嚴(yán)重。當(dāng)進(jìn)行大粒度輸入/輸出(10,Input/Output)操作時,需要將大粒度10拆分成多個小粒度10,嚴(yán)重降低存儲系統(tǒng)的性能。在使用log-structured技術(shù)的存儲系統(tǒng)中,隨著存儲空間不斷使用,大粒度空間逐漸減少,為了維持一定數(shù)量的大粒度空閑空間,需要進(jìn)行空間整理,即垃圾回收,由于進(jìn)行垃圾回收,需要將有效數(shù)據(jù)讀出,然后再聚合寫入,除了正常的應(yīng)用10操作外,額外地增加了進(jìn)行垃圾回收的10操作,并且,垃圾回收和正常應(yīng)用10操作產(chǎn)生競爭,爭奪帶寬,增大操作響應(yīng)時間。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供了一種數(shù)據(jù)存儲方法及裝置,能夠降低垃圾回收的開銷,提高存儲空間中形成大塊的空閑空間的幾率。
[0006]本發(fā)明實施例的第一方面提供了數(shù)據(jù)存儲方法,包括:按照數(shù)據(jù)的更新頻率,將所述數(shù)據(jù)進(jìn)行類型劃分;
[0007]將存儲空間劃分為多個類型的簇,所述多個類型的簇劃分為至少與所述數(shù)據(jù)的類型數(shù)量相同數(shù)量的類型;
[0008]根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將同類型的數(shù)據(jù)分別存儲到同類型的簇中。
[0009]結(jié)合本發(fā)明實施例的第一方面,在本發(fā)明實施例的第一方面的第一種實施方式中,所述按照數(shù)據(jù)的更新頻率,將所述數(shù)據(jù)進(jìn)行類型劃分具體包括:
[0010]按照數(shù)據(jù)所屬節(jié)點(diǎn)在節(jié)點(diǎn)樹中的位置將所述數(shù)據(jù)進(jìn)行類型劃分,或者,按照數(shù)據(jù)的記錄類型將所述數(shù)據(jù)進(jìn)行類型劃分。[0011 ] 結(jié)合本發(fā)明實施例的第一方面的第一種實施方式,在本發(fā)明實施例的第一方面的第二種實施方式中,所述根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將同類型的數(shù)據(jù)分別存儲到同類型的簇中包括:
[0012]將在節(jié)點(diǎn)樹中位于同一層的節(jié)點(diǎn)的數(shù)據(jù)存儲到存儲空間的同一類型簇中。
[0013]結(jié)合本發(fā)明實施例的第一方面的第一種實施方式,在本發(fā)明實施例的第一方面的第三種實施方式中,所述根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將同類型的數(shù)據(jù)分別存儲到同類型的簇中包括:
[0014]將索引節(jié)點(diǎn)表、文件的元數(shù)據(jù)及目錄的數(shù)據(jù)、文件的有效數(shù)據(jù)分別存儲到對應(yīng)類型的簇中,其中,所述索引節(jié)點(diǎn)表存儲到同類型的簇中,所述文件的元數(shù)據(jù)和所述目錄的數(shù)據(jù)存儲到同類型的簇中,所述文件存儲到同類型的簇中,其中所述目錄的數(shù)據(jù)包括目錄的元數(shù)據(jù)和目錄的有效數(shù)據(jù)。
[0015]本發(fā)明實施例的第二方面提供了一種數(shù)據(jù)存儲裝置,所述數(shù)據(jù)存儲裝置包括:劃分單元,用于按照數(shù)據(jù)的更新頻率,將所述數(shù)據(jù)進(jìn)行類型劃分;
[0016]所述劃分單元,還用于將存儲空間劃分為多個簇,所述多個簇劃分為與所述數(shù)據(jù)的類型數(shù)量相同數(shù)量的類型;
[0017]存儲單元,用于根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將同類型的數(shù)據(jù)分別存儲到同類型的簇中。
[0018]結(jié)合本發(fā)明實施例的第二方面,在本發(fā)明實施例的第二方面的第一種實施方式中,包括:所述劃分單元,具體用于按照數(shù)據(jù)所屬節(jié)點(diǎn)在節(jié)點(diǎn)樹中的位置將所述數(shù)據(jù)進(jìn)行類型劃分,或者,按照數(shù)據(jù)的記錄類型將所述數(shù)據(jù)進(jìn)行類型劃分。
[0019]結(jié)合本發(fā)明實施例的第二方面的第一種實施方式,在本發(fā)明實施例的第二方面的第二種實施方式中,包括:所述存儲單元,還用于將在節(jié)點(diǎn)樹中位于同一層的節(jié)點(diǎn)的數(shù)據(jù)存儲到存儲空間的同一類型簇中。
[0020]結(jié)合本發(fā)明實施例的第二方面的第一種實施方式,在本發(fā)明實施例的第二方面的第三種實施方式中,包括:所述存儲單元,還用于將索引節(jié)點(diǎn)表、文件的元數(shù)據(jù)及目錄的數(shù)據(jù)、文件的有效數(shù)據(jù)分別存儲到對應(yīng)類型的簇中,其中,所述索引節(jié)點(diǎn)表存儲到同類型的簇中,所述文件的元數(shù)據(jù)及所述目錄的數(shù)據(jù)存儲到同類型的簇中,所述文件的有效數(shù)據(jù)存儲到同類型的簇中,其中所述目錄的數(shù)據(jù)包括目錄的元數(shù)據(jù)和目錄的有效數(shù)據(jù)。
[0021]從以上技術(shù)方案可以看出,本發(fā)明實施例具有以下優(yōu)點(diǎn):按照數(shù)據(jù)的更新頻率,將所述數(shù)據(jù)進(jìn)行類型劃分,將存儲空間劃分為多個類型的簇,多個類型的簇劃分為至少與所述數(shù)據(jù)的類型數(shù)量相同數(shù)量的類型,根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將同類型的數(shù)據(jù)分別存儲到同類型的簇中,在每個簇中,每更新一次數(shù)據(jù)都會使得原數(shù)據(jù)成為垃圾數(shù)據(jù),在數(shù)據(jù)的更新頻率快的簇中,在較短的時間形成大塊的垃圾數(shù)據(jù)的幾率較高,而相對的有效數(shù)據(jù)所占的比例較少,所以系統(tǒng)回收垃圾數(shù)據(jù)時,讀、寫的數(shù)據(jù)量較少,同時在存儲空間中形成大塊空閑空間的幾率也較高,進(jìn)而能夠降低垃圾回收的開銷,也能夠提高形成大塊空閑空間的幾率。
【專利附圖】
【附圖說明】
[0022]圖1為本發(fā)明實施例中的數(shù)據(jù)存儲方法的一個實施例示意圖;
[0023]圖2為本發(fā)明實施例中的數(shù)據(jù)存儲方法的另一個實施例示意圖;
[0024]圖3a為現(xiàn)有cow技術(shù)中B_樹的節(jié)點(diǎn)位置示意圖;
[0025]圖3b為圖3a中各節(jié)點(diǎn)的存儲位置示意圖;
[0026]圖4為圖3a中節(jié)點(diǎn)更新數(shù)據(jù)后的各類數(shù)據(jù)存儲位置示意圖;
[0027]圖5為本發(fā)明實施例中節(jié)點(diǎn)更新數(shù)據(jù)后的新數(shù)據(jù)及垃圾數(shù)據(jù)存儲位置示意圖;
[0028]圖6為現(xiàn)有WAFL技術(shù)中文件及目錄存儲數(shù)據(jù)位置示意圖;
[0029]圖7為本發(fā)明實施例中文件及目錄存儲數(shù)據(jù)位置示意圖;
[0030]圖8為現(xiàn)有WAFL技術(shù)中文件更新數(shù)據(jù)后各類數(shù)據(jù)存儲位置示意圖;
[0031]圖9為本發(fā)明實施例中文件更新數(shù)據(jù)后各類數(shù)據(jù)存儲位置示意圖;
[0032]圖10為本發(fā)明實施例中的數(shù)據(jù)存儲裝置的一個實施例示意圖;
[0033]圖11為本發(fā)明實施例中的數(shù)據(jù)存儲裝置的另一個實施例示意圖。
【具體實施方式】
[0034]本發(fā)明實施例提供了一種數(shù)據(jù)存儲方法及裝置,用于降低垃圾回收的開銷,提高存儲空間中形成大塊的空閑空間的幾率。
[0035]本發(fā)明實施例中提供的數(shù)據(jù)存儲方法,以在寫時復(fù)制和日志結(jié)構(gòu)兩種存儲技術(shù)中的實施為例進(jìn)行說明,其中日志結(jié)構(gòu)存儲技術(shù)以寫入任何文件布局(WAFL,write-anywhere-f ile-layout)為例。
[0036]請參閱圖1,本發(fā)明實施例中的數(shù)據(jù)存儲方法的一個實施例包括:
[0037]101、按照數(shù)據(jù)的更新頻率,將數(shù)據(jù)進(jìn)行類型劃分;
[0038]在存儲系統(tǒng)中,不同數(shù)據(jù)的更新頻率會因為讀寫操作次數(shù)及內(nèi)容的不同而不同,按照數(shù)據(jù)的更新頻率,將所述數(shù)據(jù)進(jìn)行分類,將更新頻率相同或相近的數(shù)據(jù)劃分為同一類型。如,可將更新頻率最快的數(shù)據(jù)劃分為第一類,將更新頻率最慢的數(shù)據(jù)劃分為二類,將更新頻率介于前兩類更新頻率之間的數(shù)據(jù)劃分為第三類。當(dāng)然,也可以根據(jù)系統(tǒng)中對數(shù)據(jù)的讀寫情況劃分為更多或更少的類別,此處不作具體限定。
[0039]更新頻率相近的數(shù)據(jù)的界定,可通過預(yù)先在系統(tǒng)中進(jìn)行設(shè)置的方式具體界定,如可設(shè)置相近的更新頻率的范圍,數(shù)據(jù)的更新頻率在此范圍內(nèi),則認(rèn)為數(shù)據(jù)的更新頻率相近,可將這些數(shù)據(jù)劃為同一類型的數(shù)據(jù)。
[0040]102、將存儲空間劃分為多個類型的簇,多個類型的簇劃分為至少與數(shù)據(jù)的類型數(shù)量相同數(shù)量的類型;
[0041]將存儲空間劃分為多個類型的簇,多個類型的簇劃分為至少與數(shù)據(jù)的類型數(shù)量相同數(shù)量的類型,即,簇的類型數(shù)量可以多于數(shù)據(jù)類型的數(shù)量,也可以等于數(shù)據(jù)類型的數(shù)量。
[0042]本發(fā)明實施例中的簇是存儲空間中的子存儲空間,可在系統(tǒng)的存儲空間中任意劃定,各簇大小可以不等,并且同一類型的簇可以不止一個,而是多個簇的大小可根據(jù)系統(tǒng)的實際應(yīng)用情況自定義設(shè)定,可大可小,設(shè)定方式靈活。
[0043]103、根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將同類型的數(shù)據(jù)分別存儲到同類型的簇中。
[0044]將數(shù)據(jù)按照更新頻率分類后,根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將分類后的數(shù)據(jù)分別存儲到存儲空間同類型的簇中,如步驟101中的例子,第一類數(shù)據(jù)存儲到第一類簇中,將第二類數(shù)據(jù)存儲到第二類簇中,將第三類數(shù)據(jù)存儲到第三類簇中,以此類推。同一類型的數(shù)據(jù)存儲到同一類型的簇中。
[0045]在現(xiàn)有的存儲系統(tǒng)中,當(dāng)存儲的數(shù)據(jù)需要更新時,存儲系統(tǒng)根據(jù)策略在空閑空間的預(yù)置位置寫入更新后的新數(shù)據(jù),則已經(jīng)被更新的原數(shù)據(jù)成為垃圾數(shù)據(jù),例如,策略為在靠近原數(shù)據(jù)的地方寫入,則新數(shù)據(jù)的位置(即預(yù)置位置)靠近原數(shù)據(jù)的位置。在本實施例中,當(dāng)存儲的數(shù)據(jù)需要更新時,存儲系統(tǒng)根據(jù)策略只能在需要更新的數(shù)據(jù)所在的同類型的簇中的預(yù)置位置寫入更新后的新數(shù)據(jù),在該簇中已經(jīng)被更新的原數(shù)據(jù)成為垃圾數(shù)據(jù)。當(dāng)?shù)竭_(dá)系統(tǒng)預(yù)置的回收垃圾數(shù)據(jù)的時間,或,一個簇中的垃圾數(shù)據(jù)所占用的空間達(dá)到系統(tǒng)預(yù)置的閥值時,系統(tǒng)回收垃圾數(shù)據(jù)所占用的空間。如上例,由于存儲在第一類簇中的第一類數(shù)據(jù)更新頻率最快,容易在較短的時間形成大塊的垃圾數(shù)據(jù),這樣,當(dāng)系統(tǒng)回收垃圾數(shù)據(jù)時,在第一類簇中容易形成對應(yīng)的大塊的空閑空間。
[0046]本發(fā)明實施例中,按照數(shù)據(jù)的更新頻率,將數(shù)據(jù)進(jìn)行類型劃分,將存儲空間劃分為多個類型的簇,所述多個類型的簇劃分為至少與所述數(shù)據(jù)的類型數(shù)量相同數(shù)量的類型,根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將同類型的數(shù)據(jù)分別存儲到同類型的簇中,在每個簇中,每更新一次數(shù)據(jù)都會使得原數(shù)據(jù)成為垃圾數(shù)據(jù),在數(shù)據(jù)的更新頻率快的簇中,在較短的時間形成大塊的垃圾數(shù)據(jù)的幾率較高,而相對的有效數(shù)據(jù)所占的比例較少,所以系統(tǒng)回收垃圾數(shù)據(jù)時,讀、寫的有效數(shù)據(jù)量較少,同時存儲空間中形成大塊空閑空間的幾率較高,因此,按照數(shù)據(jù)的更新頻率將所述數(shù)據(jù)進(jìn)行分類,并將同一類型的數(shù)據(jù)存儲到同一類型簇中,能夠降低垃圾回收的開銷,也能夠提高形成大塊空閑空間的幾率。下面以另一實施例詳細(xì)說明本發(fā)明實施例中的數(shù)據(jù)存儲方法,請參閱圖2,本發(fā)明實施例中的數(shù)據(jù)存儲方法的另一個實施例包括:
[0047]201、按照數(shù)據(jù)所屬節(jié)點(diǎn)在節(jié)點(diǎn)樹中的層次位置將數(shù)據(jù)進(jìn)行分類,或者,按照數(shù)據(jù)的記錄類型將數(shù)據(jù)進(jìn)行分類;
[0048]本實施例中,在cow技術(shù)中的存儲方式,按照數(shù)據(jù)所屬節(jié)點(diǎn)在節(jié)點(diǎn)樹中的位置將數(shù)據(jù)進(jìn)行類型劃分與數(shù)據(jù)的更新頻率相關(guān),可以按照數(shù)據(jù)所屬節(jié)點(diǎn)在節(jié)點(diǎn)樹中的位置將數(shù)據(jù)進(jìn)行分類,將在節(jié)點(diǎn)樹中位于同一層次的節(jié)點(diǎn)的數(shù)據(jù)劃分為同一類型。在log-structured技術(shù)中的存儲方式,按照數(shù)據(jù)的記錄類型將所述數(shù)據(jù)進(jìn)行類型劃分與數(shù)據(jù)的更新頻率相關(guān),按照數(shù)據(jù)的記錄類型將數(shù)據(jù)進(jìn)行分類,可以將數(shù)據(jù)分為索引節(jié)點(diǎn)表、文件的元數(shù)據(jù)和目錄的數(shù)據(jù)、一般文件的有效數(shù)據(jù)。
[0049]202、將存儲空間劃分為多個類型的簇,多個類型的簇劃分為至少與數(shù)據(jù)的類型數(shù)量相同數(shù)量的類型;
[0050]將存儲空間劃分為多個類型的簇,所述多個類型的簇劃分為至少與所述數(shù)據(jù)的類型數(shù)量相同數(shù)量的類型,即,簇的類型數(shù)量可以多于數(shù)據(jù)類型的數(shù)量,也可以等于數(shù)據(jù)類型的數(shù)量。
[0051]本發(fā)明實施例中的簇是存儲空間中的子存儲空間,可在系統(tǒng)的存儲空間中任意劃定,各簇大小可以不等,并且同一類型的簇可以不止一個,而是多個簇的大小可根據(jù)系統(tǒng)的實際應(yīng)用情況自定義設(shè)定,可大可小,設(shè)定方式靈活。
[0052]203、根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將同類型的數(shù)據(jù)分別存儲到同類型的簇中。
[0053]下面舉例說明本發(fā)明實施例中的數(shù)據(jù)存儲方法,根據(jù)存儲技術(shù)的不同分為以下兩種方式。
[0054]一、以cow技術(shù)中的B-樹為例,請參閱圖3a,在B-樹中存在節(jié)點(diǎn)A、B、C、D、E、F,則各節(jié)點(diǎn)的存儲位置為圖3b,需要說明的是,各節(jié)點(diǎn)的位置不限于圖3b中所示具體存儲位置,圖3b中節(jié)點(diǎn)所在存儲位置只是一個例子。那么,當(dāng)節(jié)點(diǎn)A、B、C中存儲的數(shù)據(jù)發(fā)生更新時,系統(tǒng)將更新后的新數(shù)據(jù)寫入空閑空間的預(yù)置位置之后形成節(jié)點(diǎn)A’、B’、C’,則被更新的原數(shù)據(jù)已經(jīng)成為垃圾數(shù)據(jù),即節(jié)點(diǎn)A、B、C的存儲空間被垃圾數(shù)據(jù)占用而成為不可用空間。其中,更新后的新數(shù)據(jù)寫入的空閑空間的預(yù)置位置為依據(jù)策略寫入的,此處為現(xiàn)有技術(shù)不做限定,例如,策略為在靠近原數(shù)據(jù)的地方寫入,則新數(shù)據(jù)的位置(即預(yù)置位置)靠近原數(shù)據(jù)的位置。如圖4所示,圖中做了陰影的節(jié)點(diǎn)中存儲的是垃圾數(shù)據(jù)。
[0055]進(jìn)一步地,由圖3a和圖3b可知,節(jié)點(diǎn)A為根節(jié)點(diǎn),在節(jié)點(diǎn)樹中單獨(dú)為一個層次,節(jié)點(diǎn)B、C在節(jié)點(diǎn)樹中位于同一層次,節(jié)點(diǎn)D、E、F在節(jié)點(diǎn)樹中位于同一層次。那么,根據(jù)各節(jié)點(diǎn)在節(jié)點(diǎn)樹中的層次位置,將節(jié)點(diǎn)A中存儲的數(shù)據(jù)單獨(dú)劃分為一類,將節(jié)點(diǎn)B、C中存儲的數(shù)據(jù)劃分為同一類,將節(jié)點(diǎn)D、E、F中存儲的數(shù)據(jù)劃分為同一類。為便于描述,以每一類簇中只有一個簇為例,請參閱圖5,將節(jié)點(diǎn)A中的數(shù)據(jù)單獨(dú)存儲于一個簇中,將節(jié)點(diǎn)B、C中的數(shù)據(jù)存儲于同一個簇中,將節(jié)點(diǎn)D、E、F中的數(shù)據(jù)存儲于同一個簇中。那么,當(dāng)節(jié)點(diǎn)A、B、C中存儲的數(shù)據(jù)發(fā)生更新時,系統(tǒng)在將更新后的新數(shù)據(jù)寫入預(yù)先劃分的各簇中,則被更新的原數(shù)據(jù)已經(jīng)成為垃圾數(shù)據(jù),即節(jié)點(diǎn)A、B、C的存儲空間被垃圾數(shù)據(jù)占用而成為不可用空間,圖5中做了陰影的節(jié)點(diǎn)中存儲的是垃圾數(shù)據(jù),其余節(jié)點(diǎn)中存儲的是有效數(shù)據(jù)。由于節(jié)點(diǎn)A為根節(jié)點(diǎn),節(jié)點(diǎn)樹任何一條分支的節(jié)點(diǎn)數(shù)據(jù)更新,根節(jié)點(diǎn)都會一同更新,貝1J節(jié)點(diǎn)A中存儲的數(shù)據(jù)更新的次數(shù)最多,更新頻率最快,每更新一次都會使得原數(shù)據(jù)成為垃圾數(shù)據(jù),那么,節(jié)點(diǎn)A所在簇在較短的時間形成大塊的垃圾數(shù)據(jù)的幾率較高,這樣,當(dāng)系統(tǒng)回收垃圾數(shù)據(jù)時,節(jié)點(diǎn)A所在簇中形成對應(yīng)的大塊的空閑空間幾率也較高。相反的,由于節(jié)點(diǎn)樹的葉子節(jié)點(diǎn)更新的可能性相對較小,更新頻率最慢,每更新一次都會使得原數(shù)據(jù)成為垃圾數(shù)據(jù),那么,節(jié)點(diǎn)D、E、F所在簇在較短的時間形成大塊的垃圾數(shù)據(jù)的幾率較低,這樣,當(dāng)系統(tǒng)回收垃圾數(shù)據(jù)時,節(jié)點(diǎn)D、E、F所在簇中形成對應(yīng)的大塊的空閑空間幾率也較低。
[0056]二、以log-structured技術(shù)中的WAFL技術(shù)為例,在系統(tǒng)中創(chuàng)建目錄dirl和dir2,在目錄dirl下創(chuàng)建文件filel,在目錄dir2下創(chuàng)建文件file2,以上創(chuàng)建的目錄dirl、目錄dir2、文件filel、文件file2都以文件的形式進(jìn)行存儲。文件包括元數(shù)據(jù)和一般數(shù)據(jù)兩部分,其中,元數(shù)據(jù)用于記錄目錄dirl、目錄dir2、文件filel、文件file2的屬性、數(shù)據(jù)大小、數(shù)據(jù)存儲位置等,一般數(shù)據(jù)為目錄dirl、目錄dir2、文件filel、文件file2的實際內(nèi)容。元數(shù)據(jù)一般用索引節(jié)點(diǎn)記錄來表示,目錄下的有效數(shù)據(jù)記錄目錄項和子目錄和文件之間的映射關(guān)系。
[0057]本實施例中,索引節(jié)點(diǎn)表(inode map)為元數(shù)據(jù),用于記錄索引節(jié)點(diǎn)的存儲位置的信息;
[0058]目錄索引節(jié)點(diǎn)(inode),用于存儲目錄的元數(shù)據(jù);
[0059]文件索引節(jié)點(diǎn)(inode),用于存儲文件的元數(shù)據(jù),文件的元數(shù)據(jù)用于記錄文件大小、數(shù)據(jù)塊位置信息等表示文件性質(zhì)的數(shù)據(jù)。
[0060]具體請參閱圖6,在文件filel、文件file2、目錄dirl及目錄dir2的數(shù)據(jù)中均包括有效數(shù)據(jù)和元數(shù)據(jù)。
[0061]inode map為元數(shù)據(jù),反映全局目錄索引節(jié)點(diǎn)和文件索引節(jié)點(diǎn)存儲位置的信息,更新頻率最快,單獨(dú)劃分為一類;文件的元數(shù)據(jù)和目錄的數(shù)據(jù)的更新較為頻繁,更新頻率接近,因此,將文件的元數(shù)據(jù)和目錄的數(shù)據(jù)劃分為一類,文件的有效數(shù)據(jù)更新頻率最慢,單獨(dú)劃分為一類,其中目錄的數(shù)據(jù)包括目錄的元數(shù)據(jù)和目錄的有效數(shù)據(jù)。在存儲空間中劃分出與數(shù)據(jù)類型對應(yīng)的多個類型的簇,每個類型的簇可以為一個,也可以為多個,存儲空間還可以全部按照數(shù)據(jù)類型的數(shù)量,劃分為對應(yīng)數(shù)量的多個類型的簇,將上述三類數(shù)據(jù)分別存儲于預(yù)先劃分的各簇中,則圖6中各目錄的數(shù)據(jù)及各文件的數(shù)據(jù)的存儲位置如圖7所示。
[0062]當(dāng)在目錄dirl下的文件filel中發(fā)生數(shù)據(jù)更新時,寫入新數(shù)據(jù),同時,filel中的元數(shù)據(jù)相應(yīng)更新,inode map也相應(yīng)更新,那么,filel中被更新的原有效數(shù)據(jù)產(chǎn)生垃圾數(shù)據(jù),該垃圾數(shù)據(jù)的存儲位置及更新后的filel中元數(shù)據(jù)、inode map元數(shù)據(jù)的位置如圖8所
/j、Ο
[0063]本實施例中,當(dāng)在目錄dirl下的文件filel發(fā)生數(shù)據(jù)更新時,存儲的filel元數(shù)據(jù)也相應(yīng)更新,則被更新的filel的原數(shù)據(jù)成為垃圾數(shù)據(jù),該垃圾數(shù)據(jù)的存儲位置及更新后的元數(shù)據(jù)位置如圖9所示。為便于描述,以每一類簇中只有一個簇為例,文件的有效數(shù)據(jù)存儲于第一類簇中,即filel的有效數(shù)據(jù)和file2的有效數(shù)據(jù)存儲在第一類簇中,元數(shù)據(jù)和目錄的有效數(shù)據(jù)存儲于第二類簇中,即filel下的元數(shù)據(jù)和file2下的元數(shù)據(jù),dirl下的元數(shù)據(jù)和dir2下的元數(shù)據(jù)和dirl下的有效數(shù)據(jù)和dir2下的有效數(shù)據(jù)存儲于第二類簇中,inode map存儲于第三類簇中。在每個簇中,每更新一次數(shù)據(jù)都會使得原數(shù)據(jù)成為垃圾數(shù)據(jù),在數(shù)據(jù)的更新頻率快的簇中,在較短的時間形成大塊的垃圾數(shù)據(jù)的幾率較高,而相對的有效數(shù)據(jù)所占的比例較少,所以系統(tǒng)回收垃圾數(shù)據(jù)時,讀、寫的有效數(shù)據(jù)量較少,同時存儲空間中形成大塊空閑空間的幾率較高,因此,按照數(shù)據(jù)的更新頻率將所述數(shù)據(jù)進(jìn)行分類,并將同一類型的數(shù)據(jù)存儲到同一類型簇中,能夠降低垃圾回收的開銷,也能夠提高形成大塊空閑空間的幾率。
[0064]下面介紹本發(fā)明實施例中的數(shù)據(jù)存儲裝置,請參閱圖10,本發(fā)明實施例中的數(shù)據(jù)存儲裝置的一個實施例包括:
[0065]劃分單元301,用于按照數(shù)據(jù)的更新頻率,將所述數(shù)據(jù)進(jìn)行類型劃分;
[0066]所述劃分單元301,還用于將存儲空間劃分為多個簇,所述多個簇劃分為與所述數(shù)據(jù)的類型數(shù)量相同數(shù)量的類型;
[0067]存儲單元302,用于根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將同類型的數(shù)據(jù)分別存儲到同類型的簇中。
[0068]本實施例中各功能單元實現(xiàn)各自功能的過程,與前述圖1所示實施例描述的數(shù)據(jù)存儲方法相同,此處不再贅述。
[0069]本發(fā)明實施例中,劃分單元301按照數(shù)據(jù)的更新頻率,將所述數(shù)據(jù)進(jìn)行類型劃分,劃分單元301將存儲空間劃分為多個類型的簇,所述多個類型的簇劃分為至少與所述數(shù)據(jù)的類型數(shù)量相同數(shù)量的類型,存儲單元302根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將同類型的數(shù)據(jù)分別存儲到同類型的簇中,在每個簇中,每更新一次數(shù)據(jù)都會使得原數(shù)據(jù)成為垃圾數(shù)據(jù),在數(shù)據(jù)的更新頻率快的簇中,在較短的時間形成大塊的垃圾數(shù)據(jù)的幾率較高,而相對的有效數(shù)據(jù)所占的比例較少,所以系統(tǒng)回收垃圾數(shù)據(jù)時,讀、寫的有效數(shù)據(jù)量較少,同時存儲空間中形成大塊空閑空間的幾率較高,因此,按照數(shù)據(jù)的更新頻率將所述數(shù)據(jù)進(jìn)行分類,并將同一類型的數(shù)據(jù)存儲到同一類型簇中,能夠降低垃圾回收的開銷,也能夠提高形成大塊空閑空間的幾率。
[0070]下面以另一實施例詳細(xì)描述本發(fā)明實施例中的數(shù)據(jù)存儲裝置,請參閱圖11,本發(fā)明實施例中的數(shù)據(jù)存儲裝置的另一個實施例包括:
[0071]劃分單元401,用于按照數(shù)據(jù)的更新頻率,將所述數(shù)據(jù)進(jìn)行類型劃分;
[0072]所述劃分單元401,還用于將存儲空間劃分為多個簇,所述多個簇劃分為與所述數(shù)據(jù)的類型數(shù)量相同數(shù)量的類型;
[0073]存儲單元402,用于根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將同類型的數(shù)據(jù)分別存儲到同類型的簇中。
[0074]所述劃分單元401,具體用于按照數(shù)據(jù)所屬節(jié)點(diǎn)在節(jié)點(diǎn)樹中的位置將數(shù)據(jù)進(jìn)行類型劃分,或者,按照數(shù)據(jù)的記錄類型將所述數(shù)據(jù)進(jìn)行類型劃分;
[0075]進(jìn)一步地,所述存儲單元402,還用于將在節(jié)點(diǎn)樹中位于同一層的節(jié)點(diǎn)的數(shù)據(jù)存儲到存儲空間的同一類型簇中;
[0076]更進(jìn)一步地,所述存儲單元402,還用于將索引節(jié)點(diǎn)表、文件的元數(shù)據(jù)及目錄的數(shù)據(jù)、文件的有效數(shù)據(jù)分別存儲到對應(yīng)類型的簇中,其中,索引節(jié)點(diǎn)表存儲到同類型的簇中,文件的元數(shù)據(jù)及目錄的數(shù)據(jù)存儲到同類型的簇中,文件的有效數(shù)據(jù)存儲到同類型的簇中,目錄的數(shù)據(jù)包括目錄的元數(shù)據(jù)和目錄的有效數(shù)據(jù),索引節(jié)點(diǎn)表為元數(shù)據(jù)。
[0077]本實施例中各功能單元實現(xiàn)各自功能的過程,與前述圖1、圖2所示實施例描述的數(shù)據(jù)存儲方法相同,此處不再贅述。
[0078]本發(fā)明實施例中,劃分單元401按照數(shù)據(jù)的更新頻率,將所述數(shù)據(jù)進(jìn)行類型劃分,劃分單元401將存儲空間劃分為多個類型的簇,所述多個類型的簇劃分為至少與所述數(shù)據(jù)的類型數(shù)量相同數(shù)量的類型,具體按照數(shù)據(jù)所屬節(jié)點(diǎn)在節(jié)點(diǎn)樹中的位置將數(shù)據(jù)進(jìn)行類型劃分,或者,按照數(shù)據(jù)的記錄類型將所述數(shù)據(jù)進(jìn)行類型劃分,存儲單元402根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將同類型的數(shù)據(jù)分別存儲到同類型的簇中,存儲單元402將在節(jié)點(diǎn)樹中位于同一層的節(jié)點(diǎn)的數(shù)據(jù)存儲到存儲空間的同一類型簇中,存儲單元402也可以將索引節(jié)點(diǎn)表、文件的元數(shù)據(jù)及目錄的數(shù)據(jù)、文件的有效數(shù)據(jù)分別存儲到對應(yīng)類型的簇中,其中,索引節(jié)點(diǎn)表存儲到同類型的簇中,文件的元數(shù)據(jù)及目錄的數(shù)據(jù)存儲到同類型的簇中,文件的有效數(shù)據(jù)存儲到同類型的簇中,在每個簇中,每更新一次數(shù)據(jù)都會使得原數(shù)據(jù)成為垃圾數(shù)據(jù),在數(shù)據(jù)的更新頻率快的簇中,在較短的時間形成大塊的垃圾數(shù)據(jù)的幾率較高,而相對的有效數(shù)據(jù)所占的比例較少,所以系統(tǒng)回收垃圾數(shù)據(jù)時,讀、寫的有效數(shù)據(jù)量較少,同時存儲空間中形成大塊空閑空間的幾率較高,進(jìn)而能夠降低垃圾回收的開銷,也能夠提高形成大塊空閑空間的幾率。
[0079]本領(lǐng)域技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
[0080]以上對本發(fā)明所提供的一種數(shù)據(jù)存儲方法及裝置進(jìn)行了詳細(xì)介紹,對于本領(lǐng)域的技術(shù)人員,依據(jù)本發(fā)明實施例的思想,在【具體實施方式】及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
【權(quán)利要求】
1.一種數(shù)據(jù)存儲方法,其特征在于,包括: 按照數(shù)據(jù)的更新頻率,將所述數(shù)據(jù)進(jìn)行類型劃分; 將存儲空間劃分為多個類型的簇,所述多個類型的簇劃分為至少與所述數(shù)據(jù)的類型數(shù)量相同數(shù)量的類型; 根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將同類型的數(shù)據(jù)分別存儲到同類型的簇中。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述按照數(shù)據(jù)的更新頻率,將所述數(shù)據(jù)進(jìn)行類型劃分具體包括: 按照數(shù)據(jù)所屬節(jié)點(diǎn)在節(jié)點(diǎn)樹中的位置將所述數(shù)據(jù)進(jìn)行類型劃分,或者,按照數(shù)據(jù)的記錄類型將所述數(shù)據(jù)進(jìn)行類型劃分。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將同類型的數(shù)據(jù)分別存儲到同類型的簇中包括: 將在節(jié)點(diǎn)樹中位于同一層的節(jié)點(diǎn)的數(shù)據(jù)存儲到存儲空間的同一類型簇中。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將同類型的數(shù)據(jù)分別存儲到同類型的簇中包括: 將索引節(jié)點(diǎn)表、文件的元數(shù)據(jù)及目錄的數(shù)據(jù)、文件的有效數(shù)據(jù)分別存儲到對應(yīng)類型的簇中,其中,所述索引節(jié)點(diǎn)表存儲到同類型的簇中,所述文件的元數(shù)據(jù)和所述目錄的數(shù)據(jù)存儲到同類型的簇中,所述文件存儲到同類型的簇中,其中所述目錄的數(shù)據(jù)包括目錄的元數(shù)據(jù)和目錄的有效數(shù)據(jù)。
5.一種數(shù)據(jù)存儲裝置,其特征在于,包括: 劃分單元,用于按照數(shù)據(jù)的更新頻率,將所述數(shù)據(jù)進(jìn)行類型劃分; 所述劃分單元,還用于將存儲空間劃分為多個簇,所述多個簇劃分為與所述數(shù)據(jù)的類型數(shù)量相同數(shù)量的類型; 存儲單元,用于根據(jù)預(yù)置存儲對應(yīng)關(guān)系,將同類型的數(shù)據(jù)分別存儲到同類型的簇中。
6.根據(jù)權(quán)利要求5所述的裝置,其特征在于, 所述劃分單元,具體用于按照數(shù)據(jù)所屬節(jié)點(diǎn)在節(jié)點(diǎn)樹中的位置將所述數(shù)據(jù)進(jìn)行類型劃分,或者,按照數(shù)據(jù)的記錄類型將所述數(shù)據(jù)進(jìn)行類型劃分。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于, 所述存儲單元,還用于將在節(jié)點(diǎn)樹中位于同一層的節(jié)點(diǎn)的數(shù)據(jù)存儲到存儲空間的同一類型簇中。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于, 所述存儲單元,還用于將索引節(jié)點(diǎn)表、文件的元數(shù)據(jù)及目錄的數(shù)據(jù)、文件的有效數(shù)據(jù)分別存儲到對應(yīng)類型的簇中,其中,所述索引節(jié)點(diǎn)表存儲到同類型的簇中,所述文件的元數(shù)據(jù)及所述目錄的數(shù)據(jù)存儲到同類型的簇中,所述文件的有效數(shù)據(jù)存儲到同類型的簇中,其中所述目錄的數(shù)據(jù)包括目錄的元數(shù)據(jù)和目錄的有效數(shù)據(jù)。
【文檔編號】G06F17/30GK104298681SQ201310302791
【公開日】2015年1月21日 申請日期:2013年7月18日 優(yōu)先權(quán)日:2013年7月18日
【發(fā)明者】張子剛, 熊勁, 劉揚(yáng)寬, 岳銀亮 申請人:華為技術(shù)有限公司, 中國科學(xué)院計算技術(shù)研究所