欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于機(jī)群文件系統(tǒng)的元數(shù)據(jù)存儲(chǔ)系統(tǒng)和管理方法

文檔序號(hào):6438704閱讀:177來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):用于機(jī)群文件系統(tǒng)的元數(shù)據(jù)存儲(chǔ)系統(tǒng)和管理方法
技術(shù)領(lǐng)域
本發(fā)明涉及機(jī)群文件系統(tǒng)體系結(jié)構(gòu),尤其涉及機(jī)群文件系統(tǒng)中的元數(shù)據(jù)存儲(chǔ)及相關(guān)的數(shù)據(jù)遷移機(jī)制。
背景技術(shù)
隨著信息技術(shù)的發(fā)展,人類(lèi)產(chǎn)生、保存和處理的數(shù)據(jù)越來(lái)越多。文件的數(shù)量隨著數(shù)據(jù)量的增加而明顯增加,這給基于傳統(tǒng)的動(dòng)態(tài)隨機(jī)存儲(chǔ)器(Dynamic Random Access Memory,DRAM) +硬盤(pán)驅(qū)動(dòng)(Hard Disk Drive,HDD)存儲(chǔ)架構(gòu)的機(jī)群文件系統(tǒng)的元數(shù)據(jù)存儲(chǔ)系統(tǒng)提出了嚴(yán)峻的挑戰(zhàn)在存儲(chǔ)規(guī)模方面,元數(shù)據(jù)的存儲(chǔ)總量越來(lái)越大。機(jī)群文件系統(tǒng)中要保存的文件數(shù)量越來(lái)越多,特別是隨著互聯(lián)網(wǎng)應(yīng)用的高速發(fā)展,文件以多種形式存在,如郵件、照片、視頻、報(bào)表等。伴隨著數(shù)據(jù)總量的增多,文件總量也以每年近兩倍的速度增長(zhǎng),這使得機(jī)群文件系統(tǒng)的元數(shù)據(jù)總量迅速膨脹。在元數(shù)據(jù)操作性能方面,性能的需求也逐漸提高。高性能計(jì)算逐漸由CPU密集型向I/O密集型轉(zhuǎn)變,系統(tǒng)的I/O效率對(duì)性能有著重要的影響,這也就要求存儲(chǔ)系統(tǒng)有很高的元數(shù)據(jù)操作性能。此外互聯(lián)網(wǎng)的高速發(fā)展也對(duì)海量存儲(chǔ)系統(tǒng)的元數(shù)據(jù)操作性能有更高的要求。這些挑戰(zhàn)使基于傳統(tǒng)DRAM+HDD存儲(chǔ)架構(gòu)的元數(shù)據(jù)存儲(chǔ)系統(tǒng)無(wú)法滿足需求。這是因?yàn)橛捎谠獢?shù)據(jù)總量較大,DRAM無(wú)法滿足所有元數(shù)據(jù)請(qǐng)求,一部分元數(shù)據(jù)I/O請(qǐng)求將發(fā)往 HDD,而HDD巨大的I/O時(shí)延將成為系統(tǒng)的性能瓶頸。相對(duì)于HDD,固態(tài)硬盤(pán)SSD (Solid-state Drive)具有高帶寬、低時(shí)延的優(yōu)勢(shì),但使用SSD存儲(chǔ)元數(shù)據(jù)也面臨很多問(wèn)題。對(duì)于基于傳統(tǒng)DRAM+HDD存儲(chǔ)架構(gòu)的機(jī)群文件系統(tǒng)的元數(shù)據(jù)存儲(chǔ)組織方式,一般采用基于目錄樹(shù)存儲(chǔ)或者將元數(shù)據(jù)保存在數(shù)據(jù)庫(kù)中,這會(huì)造成元數(shù)據(jù)I/O模式以小粒度隨機(jī)I/O為主,這種I/O也并不適合于SSD。因?yàn)椋琒SD的性能受到 I/O模式的影響,SSD的順序I/O性能好于隨機(jī)I/O性能。其次,小粒度隨機(jī)寫(xiě)會(huì)減少SSD 的使用壽命,且會(huì)造成SSD的碎片化,對(duì)后續(xù)I/O操作造成不利影響。此外,SSD的價(jià)格比較昂貴,且單盤(pán)存儲(chǔ)容量較小,這些都會(huì)影響SSD的使用。而對(duì)那些基于NVRAM(Non-VolatiIe Radom Access Memory,非易失性隨機(jī)訪問(wèn)存儲(chǔ)器)、PRAM (Phase-change RAM,相變存儲(chǔ)器材)之類(lèi)新型存儲(chǔ)介質(zhì)的元數(shù)據(jù)存儲(chǔ)組織結(jié)構(gòu),如將元數(shù)據(jù)單獨(dú)存儲(chǔ)、壓縮存儲(chǔ)或者與小文件一起聯(lián)合存儲(chǔ),由于上層是按字節(jié)尋址,所以訪問(wèn)模式還是以小粒度隨機(jī)I/O為主,這也并不適合SSD?,F(xiàn)有的針對(duì)特定負(fù)載所設(shè)計(jì)的SSD存儲(chǔ)系統(tǒng),根據(jù)SSD的I/O特性做針對(duì)性的優(yōu)化,例如通過(guò)寫(xiě)緩沖區(qū)將小粒度隨機(jī)寫(xiě)轉(zhuǎn)化成大粒度順序?qū)?,充分發(fā)揮SSD的性能并保證其使用壽命。但這類(lèi)系統(tǒng)在設(shè)計(jì)實(shí)現(xiàn)上依賴(lài)于負(fù)載特征,并根據(jù)這些特征做了很多簡(jiǎn)化。由于機(jī)群文件系統(tǒng)的元數(shù)據(jù)存儲(chǔ)系統(tǒng)有自己的性能需求和I/O負(fù)載特征,所以這些系統(tǒng)也不能直接應(yīng)用到元數(shù)據(jù)存儲(chǔ)中。現(xiàn)有的采用DRAM+SSD+HDD三層存儲(chǔ)的存儲(chǔ)系統(tǒng),一般有三種設(shè)計(jì)策略SSD做HDD的緩沖、HDD作SSD的寫(xiě)緩沖和數(shù)據(jù)分別放置在SSD和HDD上。對(duì)于第一和第三種策略,由于SSD會(huì)接受大量小粒度隨機(jī)I/O而造成快速磨損,所以SSD的使用壽命得不到保證。第二種將HDD作為SSD寫(xiě)緩沖的策略,對(duì)于機(jī)群文件系統(tǒng)的元數(shù)據(jù)存儲(chǔ)應(yīng)用來(lái)說(shuō),主要有兩個(gè)問(wèn)題一是數(shù)據(jù)最終放到SSD上,當(dāng)數(shù)據(jù)規(guī)模很大時(shí),需要大量SSD,這樣增加了系統(tǒng)造價(jià); 二是HDD作為寫(xiě)緩沖,有可能有部分元數(shù)據(jù)讀請(qǐng)求會(huì)發(fā)往HDD,這樣就大大提高元數(shù)據(jù)讀請(qǐng)求時(shí)延,讀操作是個(gè)同步操作,讀請(qǐng)求時(shí)延過(guò)大會(huì)影響這個(gè)系統(tǒng)的性能,因此,該第二種策略也不能滿足機(jī)群文件系統(tǒng)的元數(shù)據(jù)存儲(chǔ)系統(tǒng)的需求。

發(fā)明內(nèi)容
因此,本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)的缺陷,提供用于機(jī)群文件系統(tǒng)中元數(shù)據(jù)存儲(chǔ)系統(tǒng)和管理方法,在解決HDD引起的性能瓶頸的同時(shí),既充分發(fā)揮SSD的性能優(yōu)勢(shì),又保證了 SSD的使用壽命。本發(fā)明的目的是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的一方面,本發(fā)明提供了一種用于機(jī)群文件系統(tǒng)中的元數(shù)據(jù)存儲(chǔ)系統(tǒng),該系統(tǒng)包括 DRAM 禾口 SDD ;所述DRAM包括多個(gè)元數(shù)據(jù)緩沖區(qū)和元數(shù)據(jù)索引單元;每個(gè)元數(shù)據(jù)緩沖區(qū)中的元數(shù)據(jù)是按照寫(xiě)入的時(shí)間依次順序?qū)懭氲?,每個(gè)元數(shù)據(jù)緩存區(qū)對(duì)應(yīng)一個(gè)用于存儲(chǔ)該緩沖區(qū)的元數(shù)據(jù)索引信息的頭結(jié)構(gòu);每次將元數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)寫(xiě)回到SSD上時(shí)形成一個(gè)新的元數(shù)據(jù)索引單元,用于保存該元數(shù)據(jù)緩沖區(qū)的頭結(jié)構(gòu)所包含的元數(shù)據(jù)索引信息;所述SSD上包括元數(shù)據(jù)文件,所述元數(shù)據(jù)文件包含按照寫(xiě)回時(shí)間的順序組織的多個(gè)元數(shù)據(jù)存儲(chǔ)單元;每次將一個(gè)元數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)寫(xiě)回到SSD上時(shí)形成一個(gè)新的元數(shù)據(jù)存儲(chǔ)單元,用于保存從該元數(shù)據(jù)緩沖區(qū)寫(xiě)入的元數(shù)據(jù);每個(gè)元數(shù)據(jù)存儲(chǔ)單元對(duì)應(yīng)于DRAM 中的一個(gè)元數(shù)據(jù)索引單元。上述的元數(shù)據(jù)存儲(chǔ)系統(tǒng)中,還包括用于保存來(lái)自SSD的元數(shù)據(jù)的HDD。上述的元數(shù)據(jù)存儲(chǔ)系統(tǒng)中,所述頭結(jié)構(gòu)包括一個(gè)Bloom Filter和一個(gè)哈希表,所述Bloom Filter用來(lái)記錄該元數(shù)據(jù)緩沖區(qū)中保存了哪些元數(shù)據(jù)項(xiàng),所述哈希表用于維護(hù)元數(shù)據(jù)項(xiàng)的標(biāo)識(shí)符以及該元數(shù)據(jù)項(xiàng)在元數(shù)據(jù)緩沖區(qū)中偏移量的映射。上述的元數(shù)據(jù)存儲(chǔ)系統(tǒng)中,SDD上還包括用于存儲(chǔ)元數(shù)據(jù)索引信息的元數(shù)據(jù)索引文件;DRAM中還包括讀緩存模塊,用于緩存從SSD讀取的元數(shù)據(jù)。又一方面,本發(fā)明提供了一種用于上述的元數(shù)據(jù)存儲(chǔ)系統(tǒng)的元數(shù)據(jù)管理方法,所述方法包括步驟1)將元數(shù)據(jù)按照寫(xiě)入的時(shí)間依次順序?qū)懭隓RAM中的元數(shù)據(jù)緩沖區(qū)中;步驟幻當(dāng)一個(gè)元數(shù)據(jù)緩沖區(qū)被寫(xiě)滿后,將其順序?qū)懟氐絊SD上以形成一個(gè)新的元數(shù)據(jù)存儲(chǔ)單元,同時(shí)將其頭結(jié)構(gòu)中對(duì)應(yīng)的元數(shù)據(jù)索引信息以元數(shù)據(jù)索引單元的形式保存在 DRAM中,所述元數(shù)據(jù)存儲(chǔ)單元按照寫(xiě)回時(shí)間的順序組織到一個(gè)元數(shù)據(jù)文件中。上述方法中,所述頭結(jié)構(gòu)包括一個(gè)Bloom Filter和一個(gè)哈希表,所述Bloom Filter用來(lái)記錄該元數(shù)據(jù)緩沖區(qū)中保存了哪些元數(shù)據(jù)項(xiàng),所述哈希表用于維護(hù)元數(shù)據(jù)項(xiàng)的標(biāo)識(shí)符以及該元數(shù)據(jù)項(xiàng)在元數(shù)據(jù)緩沖區(qū)中偏移量的映射。上述方法中,步驟2)還可以包括在將一個(gè)元數(shù)據(jù)緩沖區(qū)順序?qū)懟氐絊SD的同時(shí),將其對(duì)應(yīng)的元數(shù)據(jù)索引信息也順序?qū)懟氐絊SD上的元數(shù)據(jù)索引文件中。
上述方法中,步驟幻還可以包括在將一個(gè)元數(shù)據(jù)緩沖區(qū)寫(xiě)回到SSD時(shí),根據(jù)其頭結(jié)構(gòu)中的元數(shù)據(jù)項(xiàng)的標(biāo)識(shí)符來(lái)判斷SSD上哪些數(shù)據(jù)項(xiàng)已經(jīng)無(wú)效的步驟;以及在已經(jīng)無(wú)效的元數(shù)據(jù)項(xiàng)所在的元數(shù)據(jù)存儲(chǔ)單元對(duì)應(yīng)的元數(shù)據(jù)索引單元中對(duì)該元數(shù)據(jù)項(xiàng)做無(wú)效標(biāo)記的步
馬聚ο上述方法中,可以以64叉樹(shù)和鏈接結(jié)合的方式來(lái)組織的Bloom Filter,每顆64叉樹(shù)的深度不超過(guò)2層,多個(gè)64叉樹(shù)組成一個(gè)鏈表,其中每個(gè)64叉樹(shù)的非葉子節(jié)點(diǎn)的對(duì)應(yīng)的 Bloom Filter是其孩子節(jié)點(diǎn)的Bloom Filter的異或結(jié)果。上述方法中,還可以包括將元數(shù)據(jù)存儲(chǔ)單元從SSD遷移到HDD的步驟,該步驟包括比較元數(shù)據(jù)存儲(chǔ)單元的訪問(wèn)熱度與預(yù)定閾值以判斷該元數(shù)據(jù)存儲(chǔ)單元是否需要被遷移;當(dāng)元數(shù)據(jù)存儲(chǔ)單元的訪問(wèn)熱度小于預(yù)定閾值,則將其從SSD中遷移到HDD上,反之將該元數(shù)據(jù)存儲(chǔ)單元中有效的元數(shù)據(jù)項(xiàng)寫(xiě)入DRAM中的元數(shù)據(jù)緩沖區(qū)中;其中所述元數(shù)據(jù)存儲(chǔ)單元的訪問(wèn)熱度以如下公式進(jìn)行計(jì)算HEATm =ux —+ (1 -μ)χHEAT1 ;(O <Μ < 1)
NlJM其中,HEATi+1表示該元數(shù)據(jù)存儲(chǔ)單元的當(dāng)前訪問(wèn)熱度,HEATi表示該元數(shù)據(jù)存儲(chǔ)單元上次的訪問(wèn)熱度,u是(0,1)上的值,用于控制上次訪問(wèn)熱度對(duì)當(dāng)前訪問(wèn)熱度的影響,K表示該元數(shù)據(jù)存儲(chǔ)單元在該時(shí)間段內(nèi)被訪問(wèn)的次數(shù),NUM表示在該時(shí)間段內(nèi)所接收的從SSD 上讀取元數(shù)據(jù)的請(qǐng)求個(gè)數(shù);所述閾值根據(jù)元數(shù)據(jù)訪問(wèn)的特征來(lái)設(shè)定。上述方法中,還可以包括對(duì)于那些無(wú)效元數(shù)據(jù)項(xiàng)比例超過(guò)50%的元數(shù)據(jù)存儲(chǔ)單元,不需要判定其訪問(wèn)熱度,直接將其從SSD上遷移到HDD上的步驟。上述方法中,當(dāng)SSD上可用空間與SSD總空間的比例小于一定空間閾值時(shí),執(zhí)行所述將元數(shù)據(jù)存儲(chǔ)單元從SSD遷移到HDD的步驟,所述空間閥值在15%到20%之間。上述方法中,每個(gè)固定的時(shí)間間隔執(zhí)行所述將元數(shù)據(jù)存儲(chǔ)單元從SSD遷移到HDD 的步驟,對(duì)于元數(shù)據(jù)寫(xiě)負(fù)載較重的應(yīng)用,所述時(shí)間間隔不能小于30分鐘。又一方面,本發(fā)明提供了一種機(jī)群文件系統(tǒng),所述機(jī)群文件系統(tǒng)包括上述的元數(shù)據(jù)存儲(chǔ)系統(tǒng)。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于用DRAM+SSD+HDD三層架構(gòu)來(lái)存儲(chǔ)機(jī)群文件系統(tǒng)的元數(shù)據(jù),采用基于追加寫(xiě)方式保存元數(shù)據(jù),可以有效提高機(jī)群文件系統(tǒng)元數(shù)據(jù)操作的性能。而基于訪問(wèn)熱度的數(shù)據(jù)遷移方法可以將更多經(jīng)常訪問(wèn)的元數(shù)據(jù)留在SSD上,提高了元數(shù)據(jù)讀操作的性能。


以下參照附圖對(duì)本發(fā)明實(shí)施例作進(jìn)一步說(shuō)明,其中圖1為根據(jù)本發(fā)明實(shí)施例的元數(shù)據(jù)管理系統(tǒng)架構(gòu)示意圖;圖2為根據(jù)本發(fā)明一個(gè)實(shí)施例的元數(shù)據(jù)緩沖區(qū)頭結(jié)構(gòu)示意3為根據(jù)本發(fā)明實(shí)施例的Bloom filter組織結(jié)構(gòu)示意圖;圖4為根據(jù)本發(fā)明實(shí)施例的基于訪問(wèn)熱度的數(shù)據(jù)遷移方法流程圖;圖5為采用和未采用本發(fā)明的元數(shù)據(jù)管理方法的機(jī)群文件系統(tǒng)中元數(shù)據(jù)的創(chuàng)建操作性能比較示意圖6為采用和未采用本發(fā)明的元數(shù)據(jù)管理方法的機(jī)群文件系統(tǒng)中元數(shù)據(jù)的查詢操作性能比較示意圖。
具體實(shí)施例方式為了使本發(fā)明的目的,技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖通過(guò)具體實(shí)施例對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明, 并不用于限定本發(fā)明。在本發(fā)明的一個(gè)實(shí)施例中,提供了用于機(jī)群文件系統(tǒng)的元數(shù)據(jù)存儲(chǔ)系統(tǒng),該系統(tǒng)包括用作系統(tǒng)內(nèi)存的易失性隨機(jī)存儲(chǔ)器(例如DRAM或SRAM)、固態(tài)硬盤(pán)SDD和/或傳統(tǒng)的硬盤(pán)驅(qū)動(dòng)HDD。其中,采用DRAM來(lái)保存元數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的一些輔助信息,并緩存部分元數(shù)據(jù),以提高性能;而元數(shù)據(jù)被持久化地存儲(chǔ)在SSD上,或者SSD和HDD上。圖1給出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于機(jī)群文件系統(tǒng)的元數(shù)據(jù)存儲(chǔ)系統(tǒng)。該系統(tǒng)包括三層存儲(chǔ)架構(gòu),即DRAM+SDD+HDD。DRAM中包括多個(gè)元數(shù)據(jù)緩沖區(qū),每個(gè)元數(shù)據(jù)緩沖區(qū)可以保存寫(xiě)入的多個(gè)文件或目錄的元數(shù)據(jù)信息(也可以稱(chēng)為元數(shù)據(jù)項(xiàng))。由于每個(gè)元數(shù)據(jù)項(xiàng)的大小不同,為了能夠在元數(shù)據(jù)緩沖區(qū)中快速定位元數(shù)據(jù),每個(gè)元數(shù)據(jù)緩沖區(qū)還對(duì)應(yīng)一個(gè)頭結(jié)構(gòu),頭結(jié)構(gòu)中包含一個(gè)哈希表和一個(gè)Bloom fiIter (布隆過(guò)濾器,BF)結(jié)構(gòu)。BF結(jié)構(gòu)利用位數(shù)組表示一個(gè)集合,能夠高效判定一個(gè)元素是否屬于某個(gè)集合。而哈希表則可以保存該元數(shù)據(jù)在集合中的信息,例如保存元素在集合中的位置信息。圖2給出了根據(jù)本發(fā)明一個(gè)實(shí)施例的頭結(jié)構(gòu)示意圖,其中,該哈希表用于維護(hù)元數(shù)據(jù)項(xiàng)的標(biāo)識(shí)符以及該元數(shù)據(jù)項(xiàng)在元數(shù)據(jù)緩沖區(qū)中偏移量的映射,而B(niǎo)F結(jié)構(gòu)用來(lái)記錄該元數(shù)據(jù)緩沖區(qū)中保存了哪些元數(shù)據(jù)項(xiàng)。如圖2所示,頭結(jié)構(gòu)中包含兩個(gè)數(shù)據(jù)結(jié)構(gòu)=Bloom Filter和哈希表,其中bloom filter是一個(gè)有0,1組成的位數(shù)組,每個(gè)1對(duì)應(yīng)于元數(shù)據(jù)緩沖區(qū)中的一個(gè)元數(shù)據(jù)項(xiàng)。而哈希表則維護(hù)了元數(shù)據(jù)緩沖區(qū)中每個(gè)元數(shù)據(jù)項(xiàng)到該元數(shù)據(jù)項(xiàng)在元數(shù)據(jù)緩沖區(qū)中偏移的映射關(guān)系。通過(guò)Bloom Filter,系統(tǒng)可以快速確定某個(gè)元數(shù)據(jù)項(xiàng)是否在某個(gè)元數(shù)據(jù)存儲(chǔ)單元中,如果在,則再通過(guò)哈希表查找到該元數(shù)據(jù)項(xiàng)的偏移,進(jìn)而讀出該元數(shù)據(jù)項(xiàng)。因此可以通過(guò)這個(gè)頭結(jié)構(gòu),迅速在元數(shù)據(jù)緩沖區(qū)中定位一個(gè)元數(shù)據(jù)項(xiàng)。此外,為了提高元數(shù)據(jù)讀操作的性能,DRAM中還包含一個(gè)讀緩存模塊,它將讀出的元數(shù)據(jù)以 LRU (Least Recently Used,最近最少使用)鏈表的方式組織起來(lái)。DRAM中還包括元數(shù)據(jù)索引單元,所述元數(shù)據(jù)索引單元主要記錄已經(jīng)存儲(chǔ)到SSD上的元數(shù)據(jù)的索引信息,當(dāng)將元數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)寫(xiě)回到SSD上時(shí),該緩沖區(qū)的頭結(jié)構(gòu)所包含的bloom filter和哈希表以元數(shù)據(jù)索引單元的形式保存在DRAM中。這樣,通過(guò)元數(shù)據(jù)索引單元可以快速定位SSD上的元數(shù)據(jù)。下面結(jié)合元數(shù)據(jù)的寫(xiě)操作以及將元數(shù)據(jù)保存到 SSD上的過(guò)程來(lái)介紹元數(shù)據(jù)索引單元的形成過(guò)程及其內(nèi)容。對(duì)于元數(shù)據(jù)的寫(xiě)操作,寫(xiě)入的元數(shù)據(jù)先保存在元數(shù)據(jù)緩沖區(qū)中,以追加寫(xiě)的方式將元數(shù)據(jù)寫(xiě)入元數(shù)據(jù)緩沖區(qū)中,也就是采用類(lèi)似寫(xiě)日志的方式,將元數(shù)據(jù)按照寫(xiě)入的時(shí)間依次順序?qū)懭朐獢?shù)據(jù)緩沖區(qū)中,每次寫(xiě)操作都是從上一次寫(xiě)操作結(jié)束的位置開(kāi)始。當(dāng)一個(gè)元數(shù)據(jù)緩沖區(qū)寫(xiě)滿后,則需要將其寫(xiě)回到SSD上。在寫(xiě)回某個(gè)元數(shù)據(jù)緩沖區(qū)的過(guò)程中,該元數(shù)據(jù)緩沖區(qū)不能響應(yīng)新的元數(shù)據(jù)項(xiàng)寫(xiě)請(qǐng)求,新來(lái)的元數(shù)據(jù)項(xiàng)將會(huì)寫(xiě)到其它沒(méi)有滿的元數(shù)據(jù)緩沖區(qū)中。
在SSD上,元數(shù)據(jù)是以元數(shù)據(jù)存儲(chǔ)單元的形式保存,當(dāng)DRAM中一個(gè)元數(shù)據(jù)緩沖區(qū)被寫(xiě)滿后將其順序?qū)懟氐絊SD上,形成一個(gè)新的元數(shù)據(jù)存儲(chǔ)單元。元數(shù)據(jù)存儲(chǔ)單元按照寫(xiě)回時(shí)間的順序組織到一個(gè)元數(shù)據(jù)文件中,即每次寫(xiě)回元數(shù)據(jù)緩沖區(qū)的操作也都是追加寫(xiě)。 當(dāng)元數(shù)據(jù)寫(xiě)入SSD后,元數(shù)據(jù)緩沖區(qū)中的元數(shù)據(jù)要被釋放,但是該緩沖區(qū)對(duì)應(yīng)的頭結(jié)構(gòu)中的元數(shù)據(jù)索引信息(即,該頭結(jié)構(gòu)中所包含的bloom filter和哈希表)將會(huì)以元數(shù)據(jù)索引單元的形式保存在DRAM中。這樣,SSD上每個(gè)元數(shù)據(jù)存儲(chǔ)單元對(duì)應(yīng)DRAM中的一個(gè)元數(shù)據(jù)索引單元此外元數(shù)據(jù)索引單元中還有一些其它信息,例如該元數(shù)據(jù)存儲(chǔ)單元中無(wú)效的元數(shù)據(jù)項(xiàng)的標(biāo)記等。這是因?yàn)樵獢?shù)據(jù)都是以追加寫(xiě)的方式寫(xiě)入到元數(shù)據(jù)緩沖區(qū)的,沒(méi)有區(qū)分是寫(xiě)入新的元數(shù)據(jù)還是對(duì)已有元數(shù)據(jù)的更新。因此在將一個(gè)元數(shù)據(jù)緩沖區(qū)寫(xiě)回到SSD時(shí),可以根據(jù)其頭結(jié)構(gòu)中的元數(shù)據(jù)項(xiàng)的標(biāo)識(shí)符來(lái)判斷是新創(chuàng)建的元數(shù)據(jù)還是更新的元數(shù)據(jù)。如果要寫(xiě)回到SSD的元數(shù)據(jù)項(xiàng)的標(biāo)識(shí)符出現(xiàn)在已有的元數(shù)據(jù)索引單元中,則說(shuō)明是對(duì)已有元數(shù)據(jù)的更新,以前的在SSD上與該標(biāo)識(shí)符相同的其他元數(shù)據(jù)項(xiàng)都已經(jīng)無(wú)效了,這需要在已經(jīng)無(wú)效的元數(shù)據(jù)項(xiàng)所在的元數(shù)據(jù)存儲(chǔ)單元對(duì)應(yīng)的元數(shù)據(jù)索引單元中對(duì)該元數(shù)據(jù)項(xiàng)做無(wú)效標(biāo)記,關(guān)于無(wú)效標(biāo)記的信息也保存在元數(shù)據(jù)索引單元中。當(dāng)SSD的空間不足時(shí),釋放那些無(wú)效的元數(shù)據(jù)項(xiàng)或者將那些不經(jīng)常被訪問(wèn)的元數(shù)據(jù)項(xiàng)遷移到HDD上來(lái)進(jìn)行保存。與現(xiàn)有技術(shù)相比,在本實(shí)施例中,對(duì)于元數(shù)據(jù)的寫(xiě)操作,只要將元數(shù)據(jù)項(xiàng)寫(xiě)入內(nèi)存的元數(shù)據(jù)緩沖區(qū)中就可以返回,采用構(gòu)建元數(shù)據(jù)緩沖池的方式來(lái)減少元數(shù)據(jù)緩沖區(qū)寫(xiě)回操作對(duì)性能的影響。當(dāng)元數(shù)據(jù)緩沖區(qū)滿的時(shí)候,則將這些元數(shù)據(jù)一次性順序?qū)懙絊SD上,形成新的元數(shù)據(jù)存儲(chǔ)單元,這樣就將多次小粒度的元數(shù)據(jù)項(xiàng)寫(xiě)操作轉(zhuǎn)換成了一次大粒度的元數(shù)據(jù)存儲(chǔ)單元順序?qū)懖僮鳌6鴮?duì)于元數(shù)據(jù)的更新操作,如果直接對(duì)SSD上的舊元數(shù)據(jù)項(xiàng)進(jìn)行更新,由于上層選擇元數(shù)據(jù)項(xiàng)進(jìn)行更新時(shí)具有隨機(jī)性且元數(shù)據(jù)項(xiàng)一般很小,則會(huì)引入大量小粒度的隨機(jī)寫(xiě),這會(huì)對(duì)SSD的性能和使用壽命造成不利影響。因?yàn)樵谏鲜鰧?shí)施例中將更新的元數(shù)據(jù)項(xiàng)當(dāng)作新寫(xiě)入的元數(shù)據(jù)來(lái)處理,將其直接寫(xiě)入DRAM的元數(shù)據(jù)緩沖區(qū)中,待元數(shù)據(jù)緩沖區(qū)滿后順序?qū)懟氐絊SD上,并對(duì)已經(jīng)無(wú)效的元數(shù)據(jù)項(xiàng)所在的元數(shù)據(jù)存儲(chǔ)單元的索引單元上做標(biāo)記。通過(guò)這種方式,可以將元數(shù)據(jù)更新操作帶來(lái)的小粒度隨機(jī)寫(xiě)轉(zhuǎn)換成了與元數(shù)據(jù)寫(xiě)操作相同的大粒度順序?qū)懖僮?。采用這種寫(xiě)操作模式可以避免SSD碎片化,充分發(fā)揮SSD的性能并保證了 SSD的使用壽命。在本發(fā)明的又一個(gè)實(shí)施例中,為了提高可靠性,當(dāng)元數(shù)據(jù)緩沖區(qū)被寫(xiě)回時(shí),可以將其對(duì)應(yīng)的頭結(jié)構(gòu)中元數(shù)據(jù)索引信息也順序?qū)懟氐絊SD上,保存到SSD上的元數(shù)據(jù)索引文件 (meta index file)中。每個(gè)SSD上的元數(shù)據(jù)存儲(chǔ)單元對(duì)應(yīng)DRAM中的一個(gè)元數(shù)據(jù)索引單元。為保證元數(shù)據(jù)索引信息的可靠性,內(nèi)存中元數(shù)據(jù)索引單元在SSD上也可以有一份拷貝, 保存在元數(shù)據(jù)索引文件中,用以在系統(tǒng)出現(xiàn)故障或者重啟時(shí)重建DRAM中的元數(shù)據(jù)索引信肩、ο在本發(fā)明的又一個(gè)實(shí)施中,提供了用于上述元數(shù)據(jù)存儲(chǔ)系統(tǒng)的元數(shù)據(jù)管理方法。 該方法主要包括寫(xiě)入元數(shù)據(jù)的步驟、讀出元數(shù)據(jù)的步驟以及在上述的三層架構(gòu)中遷移元數(shù)據(jù)的步驟。更具體地,對(duì)于元數(shù)據(jù)的寫(xiě)操作已經(jīng)在上文作了介紹,不論是寫(xiě)入新的元數(shù)據(jù),還是更新已有的元數(shù)據(jù),都是將元數(shù)據(jù)按照寫(xiě)入的時(shí)間依次順序?qū)懭朐獢?shù)據(jù)緩沖區(qū)中,每次寫(xiě)操作都是從上一次寫(xiě)操作結(jié)束的位置開(kāi)始。對(duì)于元數(shù)據(jù)的讀操作,關(guān)鍵步驟是實(shí)際上對(duì)元數(shù)據(jù)項(xiàng)的查詢操作,也就是通過(guò)檢索DRAM中的元數(shù)據(jù)索引單元來(lái)定位要讀取的元數(shù)據(jù)項(xiàng)在SSD上具體位置。通過(guò)元數(shù)據(jù)索引單元中的BF結(jié)構(gòu)確定所需元數(shù)據(jù)項(xiàng)在SSD上的哪個(gè)元數(shù)據(jù)存儲(chǔ)單元中,再通過(guò)哈希表確定元數(shù)據(jù)項(xiàng)在該元數(shù)據(jù)存儲(chǔ)單元的內(nèi)部偏移。當(dāng)系統(tǒng)中元數(shù)據(jù)總量較大時(shí),BF的個(gè)數(shù)也會(huì)變多,采用線性查找效率較低。為提高BF的查詢效率,在一個(gè)實(shí)施例中,可以采用鏈表+64叉樹(shù)的方式組織BF結(jié)構(gòu)。圖3根據(jù)本發(fā)明一個(gè)實(shí)施例的Bloom Filter的組織架構(gòu)示意圖。如圖3所示。將多個(gè)BF分組,每64個(gè)BF組織成一個(gè)BF組(Bloom Filter Group),每個(gè)BF組構(gòu)成1顆64叉樹(shù),每顆64叉樹(shù)的深度不超過(guò)2層,含有其64個(gè)葉子節(jié)點(diǎn)上BF的信息。當(dāng)有64個(gè)BF組時(shí),再將這64個(gè)BF組組織成一棵BF組樹(shù)(Bloom Filter Group tree),每棵BF組樹(shù)中的 BF組組織成一個(gè)鏈表。這樣每個(gè)BF組樹(shù)就含有4096個(gè)BF,當(dāng)BF數(shù)目進(jìn)一步增加時(shí),不增加樹(shù)的深度,而是重新組織一棵BF組樹(shù),其中的各個(gè)BF組樹(shù)也組織成一個(gè)鏈表。在查找時(shí),首先訪問(wèn)BF組樹(shù)鏈表,確定元數(shù)據(jù)項(xiàng)在哪棵樹(shù)上,然后再在BF組樹(shù)中確定在某個(gè)BF上。對(duì)于BF組織成的樹(shù),非葉子節(jié)點(diǎn)的BF是其孩子節(jié)點(diǎn)的BF的異或結(jié)果, 這樣非葉子節(jié)點(diǎn)就含有了其孩子節(jié)點(diǎn)的所有信息。在查詢時(shí),如果發(fā)現(xiàn)要查詢的元數(shù)據(jù)項(xiàng)沒(méi)有在非葉子節(jié)點(diǎn)的BF中命中,則不需要再查詢其孩子節(jié)點(diǎn)的BF,如果表明含有BF,再依次查詢其孩子結(jié)點(diǎn)。與線性查找相比,采用樹(shù)來(lái)組織BF可以將查找的時(shí)間復(fù)雜度從O(n) 降到O(IogN)。采用這種64叉樹(shù)與鏈表相結(jié)合的方法,一方面可以加快BF的查找效率,另外也可以控制BF樹(shù)的深度。對(duì)于元數(shù)據(jù)的遷移操作,即在上述的三層架構(gòu)中遷移元數(shù)據(jù)的步驟如下當(dāng)DRAM 中一個(gè)元數(shù)據(jù)緩沖區(qū)被寫(xiě)滿后將其順序?qū)懟氐絊SD上,形成一個(gè)新的元數(shù)據(jù)存儲(chǔ)單元,同時(shí)將該緩沖區(qū)對(duì)應(yīng)的頭結(jié)構(gòu)中的元數(shù)據(jù)索引信息將會(huì)以元數(shù)據(jù)索引單元的形式保存在 DRAM中。SSD上每個(gè)元數(shù)據(jù)存儲(chǔ)單元對(duì)應(yīng)DRAM中的一個(gè)元數(shù)據(jù)索引單元。其中,元數(shù)據(jù)存儲(chǔ)單元按照寫(xiě)回時(shí)間的順序組織到一個(gè)元數(shù)據(jù)文件中,即每次寫(xiě)回元數(shù)據(jù)緩沖區(qū)的操作也都是追加寫(xiě)。由于SSD存儲(chǔ)空間有限,所以可以周期性地或者在SSD空間不足時(shí)將部分元數(shù)據(jù)從SSD上遷移到HDD上,即釋放那些無(wú)效的元數(shù)據(jù)項(xiàng)或者將那些不經(jīng)常被訪問(wèn)的元數(shù)據(jù)項(xiàng)遷移到HDD上。與SSD上的元數(shù)據(jù)文件類(lèi)似,從SSD遷移出的元數(shù)據(jù)也是以日志文件的形式保存到HDD上,遷移的粒度是元數(shù)據(jù)存儲(chǔ)單元。當(dāng)刪除一個(gè)元數(shù)據(jù)存儲(chǔ)單元時(shí),還需要對(duì)應(yīng)回收其元數(shù)據(jù)索引單元占用的DRAM和SSD上元數(shù)據(jù)索引文件對(duì)應(yīng)項(xiàng)的空間。與現(xiàn)有技術(shù)相比,對(duì)元數(shù)據(jù)采用追加寫(xiě)方式,可以消除SSD上的小粒度隨機(jī)寫(xiě)操作,并通過(guò)Bloom Filter+哈希表的兩級(jí)元數(shù)據(jù)索引機(jī)制加速元數(shù)據(jù)的查詢操作,使SSD上的1/0操作滿足“大粒度 順序?qū)懀l(fā)隨機(jī)讀”的特征,既充分發(fā)揮了 SSD的性能優(yōu)勢(shì),又保證了 SSD的使用壽命。同時(shí)與使用數(shù)據(jù)庫(kù)或者多級(jí)間接索引的方式組織元數(shù)據(jù)相比,基于追加寫(xiě)的元數(shù)據(jù)組織結(jié)構(gòu)更加節(jié)約SSD的存儲(chǔ)空間。在本發(fā)明的又一個(gè)實(shí)施例中,為了更充分利用SSD的存儲(chǔ)空間以提高系統(tǒng)的性價(jià)比,采用了基于訪問(wèn)熱度的遷移操作來(lái)進(jìn)行元數(shù)據(jù)的遷移,即利用文件系統(tǒng)元數(shù)據(jù)訪問(wèn)具有熱度的特點(diǎn),將那些經(jīng)常 訪問(wèn)(訪問(wèn)熱度較高)的元數(shù)據(jù)保存在SSD上,而那些不經(jīng)常訪問(wèn)的(訪問(wèn)熱度較低)的元數(shù)據(jù)則被遷移出SSD。圖4給出了根據(jù)本發(fā)明一個(gè)實(shí)施例的從SSD向HDD進(jìn)行數(shù)據(jù)遷移的流程示意圖。 其中,采用類(lèi)似FIFO的方式進(jìn)行數(shù)據(jù)遷移,通過(guò)將元數(shù)據(jù)存儲(chǔ)單元的訪問(wèn)熱度與設(shè)定的閾值進(jìn)行比較來(lái)判定該元數(shù)據(jù)存儲(chǔ)單元是否需要被遷移。當(dāng)元數(shù)據(jù)存儲(chǔ)單元的訪問(wèn)熱度大于閾值,則不需要進(jìn)行遷移,反之則將其從SSD中遷移到HDD上。其中,對(duì)每個(gè)元數(shù)據(jù)存儲(chǔ)單元的訪問(wèn)熱度按如下公式進(jìn)行計(jì)算HEATm = μ χ + (1 -Μ) χ HEAT1 ; (0 < Μ < 1)其中,HEATi+1表示該元數(shù)據(jù)存儲(chǔ)單元的當(dāng)前訪問(wèn)熱度,HEATi表示該元數(shù)據(jù)存儲(chǔ)單元上次的訪問(wèn)熱度,u是一個(gè)(0,1)上的值,用于控制上次訪問(wèn)熱度對(duì)當(dāng)前訪問(wèn)熱度的影響。K表示該元數(shù)據(jù)存儲(chǔ)單元在該時(shí)間段內(nèi)被訪問(wèn)的次數(shù),NUM表示在該時(shí)間段內(nèi)上層總共
發(fā)出的元數(shù)據(jù)讀請(qǐng)求個(gè)數(shù)。因此,^7表示在某時(shí)間段內(nèi)該元數(shù)據(jù)存儲(chǔ)單元的訪問(wèn)次數(shù)占
總體訪問(wèn)的比例。訪問(wèn)比例越高,表明在該時(shí)間段內(nèi)該元數(shù)據(jù)存儲(chǔ)單元的訪問(wèn)越頻繁,該元數(shù)據(jù)存儲(chǔ)單元的訪問(wèn)熱度就越大。通過(guò)使用最近一段時(shí)間內(nèi)的訪問(wèn)比例來(lái)計(jì)算元數(shù)據(jù)單元的訪問(wèn)熱度,能夠準(zhǔn)確反映數(shù)據(jù)的最近一段時(shí)間的訪問(wèn)頻度,避免很久之前的訪問(wèn)操作對(duì)當(dāng)前訪問(wèn)熱度的影響。而且加入了之前訪問(wèn)熱度對(duì)當(dāng)前訪問(wèn)熱度的影響,防止了某些元數(shù)據(jù)存儲(chǔ)單元短期內(nèi)訪問(wèn)頻度的劇烈變化所造成訪問(wèn)熱度的波動(dòng)。系統(tǒng)會(huì)周期性迭代計(jì)算每個(gè)元數(shù)據(jù)存儲(chǔ)單元的訪問(wèn)熱度,使訪問(wèn)熱度能夠反映當(dāng)前元數(shù)據(jù)存儲(chǔ)單元的訪問(wèn)情況。例如,可以每隔固定的時(shí)間間隔來(lái)計(jì)算訪問(wèn)熱度,該時(shí)間間隔可以自行設(shè)置,經(jīng)過(guò)測(cè)試在系統(tǒng)比較繁忙的時(shí)候,可以設(shè)置為30s或者更短。為保證實(shí)現(xiàn)簡(jiǎn)單、高效,一般將參數(shù)K取定值,參數(shù)u可以根據(jù)負(fù)載的特征進(jìn)行調(diào)整。上層發(fā)出的元數(shù)據(jù)讀請(qǐng)求都有一個(gè)序列號(hào),且這些序列號(hào)是連續(xù)的。對(duì)于某個(gè)元數(shù)據(jù)存儲(chǔ)單元,系統(tǒng)記錄其最近K次訪問(wèn)的請(qǐng)求序列號(hào),那么在該元數(shù)據(jù)被訪問(wèn)K次的這段時(shí)間內(nèi)上層發(fā)出元數(shù)據(jù)讀請(qǐng)求的個(gè)數(shù)NUM則可以用第K次訪問(wèn)和第1次訪問(wèn)的序列號(hào)之差獲得。通過(guò)這種方法計(jì)算每個(gè)元數(shù)據(jù)存儲(chǔ)單元的訪問(wèn)熱度,系統(tǒng)只需要記錄很少的數(shù)據(jù),而且計(jì)算也比較高效。在了解了系統(tǒng)中每個(gè)元數(shù)據(jù)存儲(chǔ)單元的訪問(wèn)熱度后,采用類(lèi)似于先進(jìn)先出(Fisrt In First Out,FIFO)的方式(將那些訪問(wèn)熱度較低的元數(shù)據(jù)存儲(chǔ)單元遷移出SSD。遷移操作可以由后臺(tái)的遷移線程完成。其中,遷移閾值的設(shè)定主要基于元數(shù)據(jù)訪問(wèn)的特征,對(duì)于元數(shù)據(jù)訪問(wèn)空間局部性較強(qiáng)的應(yīng)用,可以將閾值設(shè)定的大一些。每次遷移操作都是從SSD上元數(shù)據(jù)文件的文件頭開(kāi)始,遷移完成后,調(diào)整元數(shù)據(jù)文件的文件頭的位置。當(dāng)遷移到某個(gè)元數(shù)據(jù)存儲(chǔ)單元時(shí),采用閾值判定的方式,如果其熱度低于閾值,就需要將該元數(shù)據(jù)存儲(chǔ)單元遷移出SSD,保存到 HDD的元數(shù)據(jù)日志文件中。如果元數(shù)據(jù)存儲(chǔ)單元的熱度超過(guò)閾值,則說(shuō)明該元數(shù)據(jù)存儲(chǔ)單元保存的元數(shù)據(jù)經(jīng)常被訪問(wèn),需要繼續(xù)保存在SSD上,所以將該元數(shù)據(jù)存儲(chǔ)單元讀入內(nèi)存, 將其中有效的元數(shù)據(jù)項(xiàng)寫(xiě)入元數(shù)據(jù)緩沖區(qū)中,而該元數(shù)據(jù)存儲(chǔ)單元在SSD上的空間就可以重新使用。隨著元數(shù)據(jù)緩沖區(qū)被寫(xiě)回,該元數(shù)據(jù)存儲(chǔ)單元中經(jīng)常被訪問(wèn)的元數(shù)據(jù)又回到了SSD上。這樣,可以保證每次遷移操作得到的SSD可用空間都是連續(xù)的,從而使系統(tǒng)在寫(xiě)回元數(shù)據(jù)緩沖區(qū)時(shí),都是大粒度的順序?qū)懖僮?。上述的遷移步驟也可以由專(zhuān)用的遷移線程來(lái)負(fù)責(zé)執(zhí)行。在又一個(gè)實(shí) 施例中,在上述遷移操作中還包括周期性回收無(wú)效元數(shù)據(jù)項(xiàng)占用的 SSD空間的操作。由于對(duì)于元數(shù)據(jù)的更新操作采用異地更新的策略,所以元數(shù)據(jù)存儲(chǔ)單元中可能含有無(wú)效的元數(shù)據(jù)項(xiàng),這些無(wú)效的元數(shù)據(jù)項(xiàng)被記錄在該元數(shù)據(jù)存儲(chǔ)單元對(duì)應(yīng)的索引單元上,通過(guò)元數(shù)據(jù)存儲(chǔ)單元對(duì)應(yīng)的元數(shù)據(jù)索引單元可以計(jì)算出該元數(shù)據(jù)存儲(chǔ)單元中含有的無(wú)效元數(shù)據(jù)的比例。遷移線程會(huì)周期性回收那些無(wú)效元數(shù)據(jù)項(xiàng)比例超過(guò)50 %的元數(shù)據(jù)存儲(chǔ)單元?;厥諘r(shí)將整個(gè)元數(shù)據(jù)存儲(chǔ)單元讀到內(nèi)存,將有效的元數(shù)據(jù)項(xiàng)放到元數(shù)據(jù)緩沖區(qū)中,然后對(duì)該元數(shù)據(jù)存儲(chǔ)單元做上相應(yīng)標(biāo)志。為防止元數(shù)據(jù)文件出現(xiàn)空洞,所以此時(shí)這部分空間還不能用,當(dāng)遷移線程遷移到該元數(shù)據(jù)存儲(chǔ)單元時(shí),遷移線程不需要判定其訪問(wèn)熱度,直接回收該元數(shù)據(jù)存儲(chǔ)單元占用的空間。在又一個(gè)實(shí)施例中,遷移操作采用周期性啟動(dòng)和閾值啟動(dòng)相結(jié)合的方式。為保證元數(shù)據(jù)寫(xiě)操作的性能,SSD上應(yīng)時(shí)刻保證有一定量的空間,所以遷移線程會(huì)周期性啟動(dòng)。遷移線程的啟動(dòng)周期應(yīng)該基于系統(tǒng)的元數(shù)據(jù)寫(xiě)操作的負(fù)載,對(duì)于元數(shù)據(jù)寫(xiě)負(fù)載較重的應(yīng)用, 啟動(dòng)周期不能小于30分鐘。此外,當(dāng)SSD上可用空間小于一定閾值(該閾值是一個(gè)經(jīng)驗(yàn)值, 一般來(lái)說(shuō)該閾值應(yīng)該在15%到20%之間)時(shí),也需要開(kāi)始進(jìn)行遷移操作,這個(gè)閾值的設(shè)定要結(jié)合上層寫(xiě)請(qǐng)求的壓力和SSD數(shù)據(jù)遷移的效率。當(dāng)遷移線程得到了一定的空間后,遷移線程就會(huì)停止,這樣做主要是為了防止遷移操作對(duì)元數(shù)據(jù)I/O操作造成負(fù)面影響。與現(xiàn)有技術(shù)相比,基于訪問(wèn)熱度的數(shù)據(jù)遷移操作可以將經(jīng)常訪問(wèn)的元數(shù)據(jù)留在 SSD,提高SSD的空間使用效率。上述實(shí)施例中的訪問(wèn)熱度判定算法綜合了數(shù)據(jù)訪問(wèn)的頻率和最近訪問(wèn)時(shí)間,判定準(zhǔn)確且算法的時(shí)間和空間開(kāi)銷(xiāo)較小。通過(guò)基于訪問(wèn)熱度的SSD數(shù)據(jù)遷移操作可以充分利用SSD的存儲(chǔ)空間,提高系統(tǒng)性價(jià)比。而現(xiàn)有的基于SSD+HDD這類(lèi)架構(gòu)中的數(shù)據(jù)遷移機(jī)制,例如BtrFS,通過(guò)對(duì)每次I/O操作信息的統(tǒng)計(jì)來(lái)判定訪問(wèn)熱度,將熱度較高的數(shù)據(jù)放在SSD上,熱度較低的放在HDD上。這種熱度判定雖然比較準(zhǔn)確,但它要記錄每次I/O操作的相關(guān)信息,時(shí)間和空間開(kāi)銷(xiāo)較大,并不適合元數(shù)據(jù)量很大的機(jī)群文件系統(tǒng)的元數(shù)據(jù)存儲(chǔ)系統(tǒng)。在又一個(gè)實(shí)施例中,還提供了一種機(jī)群文件系統(tǒng),在該系統(tǒng)中采用上述的元數(shù)據(jù)存儲(chǔ)系統(tǒng)和元數(shù)據(jù)管理方法來(lái)對(duì)元數(shù)據(jù)進(jìn)行存儲(chǔ)和管理。為了更好地分析其性能,發(fā)明人進(jìn)行了如下的測(cè)試發(fā)明人在曙光6000的機(jī)群文件系統(tǒng)HVFS的基礎(chǔ)上實(shí)現(xiàn)了上述元數(shù)據(jù)存儲(chǔ)系統(tǒng)和管理方法,以改進(jìn)HVFS的性能,將改進(jìn)后的HVFS為Hybrid HVFS0將Hybrid HVFS與采用同樣的元數(shù)據(jù)存儲(chǔ)架構(gòu)(即采用現(xiàn)有DRAM+SSD+HDD的架構(gòu)來(lái)存儲(chǔ)元數(shù)據(jù))的HVFS進(jìn)行比較以元數(shù)據(jù)的創(chuàng)建(create系統(tǒng)調(diào)用)和查找(lookup系統(tǒng)調(diào)用)為例,來(lái)比較每秒完成的I/O操作次數(shù)(I0PS,Input/Output Per Second)圖5和圖6分別為原有HVFS和改進(jìn)后的Hybrid HVFS中元數(shù)據(jù)的創(chuàng)建操作和查詢操作性能比較示意圖。從圖5和圖6可以看出,由于Hybrid HVFS采用了上述實(shí)施例中的管理元數(shù)據(jù)的方法,其能夠明顯提高機(jī)群文件系統(tǒng)的元數(shù)據(jù)操作性能。
通過(guò)測(cè)試結(jié)果表明,采用本發(fā)明的元數(shù)據(jù)管理方法可以有效提高機(jī)群文件系統(tǒng)元數(shù)據(jù)操作的性能。而且基于訪問(wèn)熱度的數(shù)據(jù)遷移策略可以將更多經(jīng)常被訪問(wèn)的元數(shù)據(jù)留在 SSD上,提高了元數(shù)據(jù)讀操作的性能。 雖然本發(fā)明已經(jīng)通過(guò)優(yōu)選實(shí)施例進(jìn)行了描述,然而本發(fā)明并非局限于這里所描述的實(shí)施例,在不脫離本發(fā)明范圍的情況下還包括所作出的各種改變以及變化。
權(quán)利要求
1.一種機(jī)群文件系統(tǒng)中的元數(shù)據(jù)存儲(chǔ)系統(tǒng),該系統(tǒng)包括DRAM和SDD ;所述DRAM包括多個(gè)元數(shù)據(jù)緩沖區(qū)和元數(shù)據(jù)索引單元;每個(gè)元數(shù)據(jù)緩沖區(qū)中的元數(shù)據(jù)是按照寫(xiě)入的時(shí)間依次順序?qū)懭氲?,每個(gè)元數(shù)據(jù)緩存區(qū)對(duì)應(yīng)一個(gè)用于存儲(chǔ)該緩沖區(qū)的元數(shù)據(jù)索引信息的頭結(jié)構(gòu);每次將元數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)寫(xiě)回到SSD上時(shí)形成一個(gè)新的元數(shù)據(jù)索引單元,用于保存該元數(shù)據(jù)緩沖區(qū)的頭結(jié)構(gòu)所包含的元數(shù)據(jù)索引信息;所述SSD上包括元數(shù)據(jù)文件,所述元數(shù)據(jù)文件包含按照寫(xiě)回時(shí)間的順序組織的多個(gè)元數(shù)據(jù)存儲(chǔ)單元;每次將一個(gè)元數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)寫(xiě)回到SSD上時(shí)形成一個(gè)新的元數(shù)據(jù)存儲(chǔ)單元,用于保存從該元數(shù)據(jù)緩沖區(qū)寫(xiě)入的元數(shù)據(jù);每個(gè)元數(shù)據(jù)存儲(chǔ)單元對(duì)應(yīng)于DRAM中的一個(gè)元數(shù)據(jù)索引單元。
2.根據(jù)權(quán)利要求1所述的元數(shù)據(jù)存儲(chǔ)系統(tǒng),該系統(tǒng)還包括用于保存來(lái)自SSD的元數(shù)據(jù)的 HDD。
3.根據(jù)權(quán)利要求1或2所述的元數(shù)據(jù)存儲(chǔ)系統(tǒng),其中,所述頭結(jié)構(gòu)包括一個(gè)Bloom Filter和一個(gè)哈希表,所述Bloom Filter用來(lái)記錄該元數(shù)據(jù)緩沖區(qū)中保存了哪些元數(shù)據(jù)項(xiàng),所述哈希表用于維護(hù)元數(shù)據(jù)項(xiàng)的標(biāo)識(shí)符以及該元數(shù)據(jù)項(xiàng)在元數(shù)據(jù)緩沖區(qū)中偏移量的映射。
4.根據(jù)權(quán)利要求1或2所述的元數(shù)據(jù)存儲(chǔ)系統(tǒng),其中SDD上還包括用于存儲(chǔ)元數(shù)據(jù)索引信息的元數(shù)據(jù)索引文件。
5.根據(jù)權(quán)利要求1或2所述的元數(shù)據(jù)存儲(chǔ)系統(tǒng),其中DRAM中還包括讀緩存模塊,用于緩存從SSD讀取的元數(shù)據(jù)。
6.一種用于如上述權(quán)利要求1或2所述的元數(shù)據(jù)存儲(chǔ)系統(tǒng)的元數(shù)據(jù)管理方法,所述方法包括步驟1)將元數(shù)據(jù)按照寫(xiě)入的時(shí)間依次順序?qū)懭隓RAM中的元數(shù)據(jù)緩沖區(qū)中;步驟2)當(dāng)一個(gè)元數(shù)據(jù)緩沖區(qū)被寫(xiě)滿后,將其順序?qū)懟氐絊SD上以形成一個(gè)新的元數(shù)據(jù)存儲(chǔ)單元,同時(shí)將其頭結(jié)構(gòu)中對(duì)應(yīng)的元數(shù)據(jù)索引信息以元數(shù)據(jù)索引單元的形式保存在DRAM 中,所述元數(shù)據(jù)存儲(chǔ)單元按照寫(xiě)回時(shí)間的順序組織到一個(gè)元數(shù)據(jù)文件中。
7.根據(jù)權(quán)利要求6所述的方法,其中所述頭結(jié)構(gòu)包括一個(gè)BloomFilter和一個(gè)哈希表,所述Bloom Filter用來(lái)記錄該元數(shù)據(jù)緩沖區(qū)中保存了哪些元數(shù)據(jù)項(xiàng),所述哈希表用于維護(hù)元數(shù)據(jù)項(xiàng)的標(biāo)識(shí)符以及該元數(shù)據(jù)項(xiàng)在元數(shù)據(jù)緩沖區(qū)中偏移量的映射。
8.根據(jù)權(quán)利要求6所述的方法,其中步驟幻還包括在將一個(gè)元數(shù)據(jù)緩沖區(qū)順序?qū)懟氐?SSD的同時(shí),將其對(duì)應(yīng)的元數(shù)據(jù)索引信息也順序?qū)懟氐絊SD上的元數(shù)據(jù)索引文件中。
9.根據(jù)權(quán)利要求7所述的方法,其中步驟幻還包括在將一個(gè)元數(shù)據(jù)緩沖區(qū)寫(xiě)回到SSD 時(shí),根據(jù)其頭結(jié)構(gòu)中的元數(shù)據(jù)項(xiàng)的標(biāo)識(shí)符來(lái)判斷SSD上哪些數(shù)據(jù)項(xiàng)已經(jīng)無(wú)效的步驟;以及在已經(jīng)無(wú)效的元數(shù)據(jù)項(xiàng)所在的元數(shù)據(jù)存儲(chǔ)單元對(duì)應(yīng)的元數(shù)據(jù)索引單元中對(duì)該元數(shù)據(jù)項(xiàng)做無(wú)效標(biāo)記的步驟。
10.根據(jù)權(quán)利要求7所述的方法,其中以64叉樹(shù)和鏈接結(jié)合的方式來(lái)組織的Bloom Filter,每顆64叉樹(shù)的深度不超過(guò)2層,多個(gè)64叉樹(shù)組成一個(gè)鏈表,其中每個(gè)64叉樹(shù)的非葉子節(jié)點(diǎn)的對(duì)應(yīng)的Bloom Filter是其孩子節(jié)點(diǎn)的Bloom Filter的異或結(jié)果。
11.根據(jù)權(quán)利要求9所述的方法,還包括將元數(shù)據(jù)存儲(chǔ)單元從SSD遷移到HDD的步驟, 該步驟包括比較元數(shù)據(jù)存儲(chǔ)單元的訪問(wèn)熱度與預(yù)定閾值以判斷該元數(shù)據(jù)存儲(chǔ)單元是否需要被遷移;當(dāng)元數(shù)據(jù)存儲(chǔ)單元的訪問(wèn)熱度小于預(yù)定閾值,則將其從SSD中遷移到HDD上,反之將該元數(shù)據(jù)存儲(chǔ)單元中有效的元數(shù)據(jù)項(xiàng)寫(xiě)入DRAM中的元數(shù)據(jù)緩沖區(qū)中; 其中所述元數(shù)據(jù)存儲(chǔ)單元的訪問(wèn)熱度以如下公式進(jìn)行計(jì)算HEATm =MX K +(I-U)XHEAT1-AQ <U<\)!+1 NUM1其中,HEATi+1表示該元數(shù)據(jù)存儲(chǔ)單元的當(dāng)前訪問(wèn)熱度,HEATi表示該元數(shù)據(jù)存儲(chǔ)單元上次的訪問(wèn)熱度,u是(0,1)上的值,用于控制上次訪問(wèn)熱度對(duì)當(dāng)前訪問(wèn)熱度的影響,K表示該元數(shù)據(jù)存儲(chǔ)單元在該時(shí)間段內(nèi)被訪問(wèn)的次數(shù),NUM表示在該時(shí)間段內(nèi)所接收的從SSD上讀取元數(shù)據(jù)的請(qǐng)求個(gè)數(shù);所述閾值根據(jù)元數(shù)據(jù)訪問(wèn)的特征來(lái)設(shè)定。
12.根據(jù)權(quán)利要求11所述的方法,還包括對(duì)于那些無(wú)效元數(shù)據(jù)項(xiàng)比例超過(guò)50%的元數(shù)據(jù)存儲(chǔ)單元,不需要判定其訪問(wèn)熱度,直接將其從SSD上遷移到HDD上的步驟。
13.根據(jù)權(quán)利要求11所述的方法,其中,當(dāng)SSD上可用空間與SSD總空間的比例小于一定空間閾值時(shí),執(zhí)行所述將元數(shù)據(jù)存儲(chǔ)單元從SSD遷移到HDD的步驟。
14.根據(jù)權(quán)利要求13所述的方法,所述空間閥值在15%到20%之間。
15.根據(jù)權(quán)利要求11所述的方法,其中,每個(gè)固定的時(shí)間間隔執(zhí)行所述將元數(shù)據(jù)存儲(chǔ)單元從SSD遷移到HDD的步驟。
16.根據(jù)權(quán)利要求15所述的方法,其中對(duì)于元數(shù)據(jù)寫(xiě)負(fù)載較重的應(yīng)用,所述時(shí)間間隔不能小于30分鐘。
17.一種機(jī)群文件系統(tǒng),所述機(jī)群文件系統(tǒng)包括如權(quán)利要求1、2、3或4所述的元數(shù)據(jù)存儲(chǔ)系統(tǒng)。
全文摘要
本發(fā)明提供用于機(jī)群文件系統(tǒng)中的元數(shù)據(jù)存儲(chǔ)系統(tǒng)和管理方法。其中,用DRAM+SSD+HDD三層架構(gòu)來(lái)存儲(chǔ)機(jī)群文件系統(tǒng)的元數(shù)據(jù),將元數(shù)據(jù)按照寫(xiě)入的時(shí)間依次順序?qū)懭隓RAM中的元數(shù)據(jù)緩沖區(qū)中。當(dāng)一個(gè)元數(shù)據(jù)緩沖區(qū)被寫(xiě)滿后,將其順序?qū)懟氐絊SD上以形成一個(gè)新的元數(shù)據(jù)存儲(chǔ)單元,同時(shí)將其頭結(jié)構(gòu)中對(duì)應(yīng)的元數(shù)據(jù)索引信息以元數(shù)據(jù)索引單元的形式保存在DRAM中。采用基于追加寫(xiě)方式保存元數(shù)據(jù)后,可以有效提高機(jī)群文件系統(tǒng)元數(shù)據(jù)操作的性能。另外,還提供了基于訪問(wèn)熱度的數(shù)據(jù)遷移策略,將更多經(jīng)常訪問(wèn)的元數(shù)據(jù)留在SSD上,提高了元數(shù)據(jù)讀操作的性能。
文檔編號(hào)G06F17/30GK102364474SQ201110366559
公開(kāi)日2012年2月29日 申請(qǐng)日期2011年11月17日 優(yōu)先權(quán)日2011年11月17日
發(fā)明者熊勁, 陳卓 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
阜宁县| 朝阳区| 鹿邑县| 毕节市| 迁安市| 凤山县| 阜新| 尤溪县| 抚顺市| 灵石县| 丹凤县| 葫芦岛市| 深圳市| 留坝县| 开阳县| 百色市| 夏邑县| 垦利县| 杭锦后旗| 扎兰屯市| 洪江市| 尉犁县| 望城县| 金门县| 台北县| 鄂州市| 改则县| 通道| 保靖县| 海安县| 西充县| 贡觉县| 宜君县| 新巴尔虎左旗| 永清县| 银川市| 闽清县| 紫云| 宣化县| 金坛市| 厦门市|