的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。以下對至少一個(gè)示例性實(shí)施例的描述實(shí)際上僅僅是說明性的,決不作為對本發(fā)明及其應(yīng)用或使用的任何限制?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0054]除非另外具體說明,否則在這些實(shí)施例中闡述的部件和步驟的相對布置、數(shù)字表達(dá)式和數(shù)值不限制本發(fā)明的范圍。
[0055]同時(shí),應(yīng)當(dāng)明白,為了便于描述,附圖中所示出的各個(gè)部分的尺寸并不是按照實(shí)際的比例關(guān)系繪制的。
[0056]對于相關(guān)領(lǐng)域普通技術(shù)人員已知的技術(shù)、方法和設(shè)備可能不作詳細(xì)討論,但在適當(dāng)情況下,所述技術(shù)、方法和設(shè)備應(yīng)當(dāng)被視為授權(quán)說明書的一部分。
[0057]在這里示出和討論的所有示例中,任何具體值應(yīng)被解釋為僅僅是示例性的,而不是作為限制。因此,示例性實(shí)施例的其它示例可以具有不同的值。
[0058]應(yīng)注意到:相似的標(biāo)號和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對其進(jìn)行進(jìn)一步討論。
[0059]圖3為本發(fā)明文件管理方法一個(gè)實(shí)施例的示意圖。如圖3所示,本實(shí)施例的方法步驟如下:
[0060]步驟301,文件管理裝置以預(yù)定的時(shí)間間隔,統(tǒng)計(jì)在指定時(shí)間范圍內(nèi)針對存儲在元數(shù)據(jù)節(jié)點(diǎn)和存儲節(jié)點(diǎn)中的文件的讀寫次數(shù)。
[0061]步驟302,文件管理裝置選擇出前N個(gè)讀寫次數(shù)最大的文件。
[0062]優(yōu)選的,N與元數(shù)據(jù)節(jié)點(diǎn)數(shù)據(jù)區(qū)的容量相關(guān)。
[0063]步驟303,在前N個(gè)讀寫次數(shù)最大的文件中,文件管理裝置判斷是否存在第一遷移文件,其中第一遷移文件屬于前N個(gè)讀寫次數(shù)最大的文件,且存儲在存儲節(jié)點(diǎn)中。
[0064]步驟304,若存在第一遷移文件,則文件管理裝置向元數(shù)據(jù)節(jié)點(diǎn)發(fā)送第一遷移請求。
[0065]步驟305,元數(shù)據(jù)節(jié)點(diǎn)接收到第一遷移請求后,從相應(yīng)的存儲節(jié)點(diǎn)獲取第一遷移文件以進(jìn)行本地存儲。
[0066]基于本發(fā)明上述實(shí)施例提供的文件管理方法,通過統(tǒng)計(jì)文件的讀寫次數(shù),將頻繁讀寫的文件從存儲節(jié)點(diǎn)遷移到元數(shù)據(jù)節(jié)點(diǎn)中,從而提升了文件讀寫速度。
[0067]圖4為本發(fā)明文件管理方法另一實(shí)施例的示意圖。如圖4所示,本實(shí)施例的方法步驟如下:
[0068]步驟401,文件管理裝置以預(yù)定的時(shí)間間隔,統(tǒng)計(jì)在指定時(shí)間范圍內(nèi)針對存儲在元數(shù)據(jù)節(jié)點(diǎn)和存儲節(jié)點(diǎn)中的文件的讀寫次數(shù)。
[0069]步驟402,文件管理裝置選擇出前Μ個(gè)讀寫次數(shù)最小的文件。
[0070]步驟403,在前Μ個(gè)讀寫次數(shù)最小的文件中,文件管理裝置判斷是否存在第二遷移文件,其中第二遷移文件屬于前Μ個(gè)讀寫次數(shù)最小的文件,且存儲在元數(shù)據(jù)節(jié)點(diǎn)中。
[0071]步驟404,若存在第二遷移文件,則文件管理裝置向元數(shù)據(jù)節(jié)點(diǎn)發(fā)送第二遷移請求。
[0072]步驟405,元數(shù)據(jù)節(jié)點(diǎn)接收到第二遷移請求后,將第二遷移文件從元數(shù)據(jù)節(jié)點(diǎn)遷移到相應(yīng)的存儲節(jié)點(diǎn)以進(jìn)行存儲。
[0073]對于存儲在元數(shù)據(jù)節(jié)點(diǎn)中的文件而言,若其讀寫頻率過低,則可將其從元數(shù)據(jù)節(jié)點(diǎn)遷移到存儲節(jié)點(diǎn)中,從而可提高元數(shù)據(jù)節(jié)點(diǎn)的資源利用率。
[0074]在本發(fā)明中,通過設(shè)置索引對存儲的文件進(jìn)行管理。如圖5所示,元數(shù)據(jù)節(jié)點(diǎn)包括本地索引和一級索引,其中本地索引用于本地存儲,一級索引與相應(yīng)存儲節(jié)點(diǎn)的二級索引相關(guān)聯(lián)。當(dāng)在元數(shù)據(jù)節(jié)點(diǎn)中存儲文件時(shí),在本地索弓I中建立數(shù)據(jù)區(qū)映射,進(jìn)而將文件存儲在元數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)區(qū)。當(dāng)在存儲節(jié)點(diǎn)中存儲文件時(shí),在一級索弓I中建立一級映射,在相應(yīng)的存儲節(jié)點(diǎn)中建立二級映射,進(jìn)而分布式地存儲相應(yīng)文件。例如,在元數(shù)據(jù)節(jié)點(diǎn)中,將元數(shù)據(jù)索引的地址OxNOOO后的部分視為一級索引,將元數(shù)據(jù)索引的地址OxMOOO后的部分視為本地索引。索引的數(shù)據(jù)結(jié)構(gòu)如圖6所示。其中FilelD為文件唯一標(biāo)識,Datanode (本地)為當(dāng)前元數(shù)據(jù)節(jié)點(diǎn)編號,Datanode (number)為文件所在存儲節(jié)點(diǎn)的編號,Offset為偏移量,Length為文件長度。
[0075]在一個(gè)實(shí)施例中,上述元數(shù)據(jù)節(jié)點(diǎn)接收到第一遷移請求后,從相應(yīng)的存儲節(jié)點(diǎn)獲取第一遷移文件以進(jìn)行本地存儲的步驟包括:
[0076]元數(shù)據(jù)節(jié)點(diǎn)接收到第一遷移請求后,從相應(yīng)的存儲節(jié)點(diǎn)獲取第一遷移文件。元數(shù)據(jù)節(jié)點(diǎn)在本地索引中建立索引數(shù)據(jù)區(qū)映射,將第一遷移文件存儲在元數(shù)據(jù)節(jié)點(diǎn)中相應(yīng)的數(shù)據(jù)區(qū)。元數(shù)據(jù)節(jié)點(diǎn)更新第一索引,并指示相應(yīng)的存儲節(jié)點(diǎn)更新第二索引,以便刪除與第一遷移文件相關(guān)聯(lián)的映射信息,其中第一索引和第二索引中包括存儲在存儲節(jié)點(diǎn)中文件的映射信息。
[0077]通過更新索引,從而完成文件從存儲節(jié)點(diǎn)到元數(shù)據(jù)節(jié)點(diǎn)的遷移。
[0078]在另一實(shí)施例中,上述元數(shù)據(jù)節(jié)點(diǎn)接收到第二遷移請求后,將第二遷移文件從元數(shù)據(jù)節(jié)點(diǎn)遷移到相應(yīng)的存儲節(jié)點(diǎn)以進(jìn)行存儲的步驟包括:
[0079]元數(shù)據(jù)節(jié)點(diǎn)接收到第二遷移請求后,在一級索引中建立與第二遷移文件相關(guān)聯(lián)的一級映射,指示相應(yīng)的存儲節(jié)點(diǎn)在二級索引中建立與第二遷移文件相關(guān)聯(lián)的二級映射,將第二遷移文件分布式存儲到相應(yīng)的存儲節(jié)點(diǎn)中;元數(shù)據(jù)節(jié)點(diǎn)更新本地索引,以便刪除與第二遷移文件相關(guān)聯(lián)的映射信息。
[0080]通過更新索引,從而完成文件從元數(shù)據(jù)節(jié)點(diǎn)到存儲節(jié)點(diǎn)的遷移。
[0081]圖7為本發(fā)明文件存儲一個(gè)實(shí)施例的示意圖。如圖7所示,本實(shí)施例的方法步驟如下:
[0082]步驟701,元數(shù)據(jù)節(jié)點(diǎn)在存儲新文件時(shí),識別新文件的大小。
[0083]步驟702,元數(shù)據(jù)節(jié)點(diǎn)判斷新文件的大小是否小于預(yù)定閾值。若新文件的大小小于預(yù)定閾值,則執(zhí)行步驟703 ;若新文件的大小不小于預(yù)定閾值,則執(zhí)行步驟704。
[0084]步驟703,元數(shù)據(jù)節(jié)點(diǎn)在本地索引中建立索引數(shù)據(jù)區(qū)映射,將新文件存儲在元數(shù)據(jù)節(jié)點(diǎn)中相應(yīng)的數(shù)據(jù)區(qū)。之后,不再執(zhí)行本實(shí)施例的其它步驟。
[0085]步驟704,元數(shù)據(jù)節(jié)點(diǎn)在一級索引中建立一級映射,指示相應(yīng)的存儲節(jié)點(diǎn)在二級索引中建立二級映射,將新文件分布式存儲到相應(yīng)的存儲節(jié)點(diǎn)中。
[0086]需要說明的是,由于在存儲節(jié)點(diǎn)中建立二級索引,因此元數(shù)據(jù)節(jié)點(diǎn)大部分條目在存儲節(jié)點(diǎn)中都有副本,從而對元數(shù)據(jù)節(jié)點(diǎn)而言,只需要備份本地?cái)?shù)據(jù)區(qū)的索引條目即可,從而減少了內(nèi)存數(shù)據(jù)拷貝。
[0087]圖8為本發(fā)明文件管理系統(tǒng)一個(gè)實(shí)施例的示意圖。如圖8所示,文件管理系統(tǒng)包括文件管理裝置801、元數(shù)據(jù)節(jié)點(diǎn)802和存儲節(jié)點(diǎn)803。其中:
[0088]文件管理裝置801,用于以預(yù)定的時(shí)間間隔,統(tǒng)計(jì)在指定時(shí)間范圍內(nèi)針對存儲在元數(shù)據(jù)節(jié)點(diǎn)和存儲節(jié)點(diǎn)中的文件的讀寫次數(shù);選擇出前N個(gè)讀寫次數(shù)最大的文件,在前N個(gè)讀寫次數(shù)最大的文件中,判斷是否存在第一遷移文件,其中第一遷移文件屬于前Ν個(gè)讀寫次數(shù)最大的文件,且存儲在存儲節(jié)點(diǎn)中;若存在第一遷移文件,則向元數(shù)據(jù)節(jié)點(diǎn)802發(fā)送第一遷移請求。
[0089]元數(shù)據(jù)節(jié)點(diǎn)802,用于在接收到第一遷移請求后,從相應(yīng)的存儲節(jié)點(diǎn)獲取第一遷移文件以進(jìn)行本地存儲。
[0090]存儲節(jié)點(diǎn)803,用于分布式存儲文件。
[0091]基于本發(fā)明上述實(shí)施例提供的文件管理系統(tǒng),通過統(tǒng)計(jì)文件的讀寫次數(shù),將頻繁讀寫的文件從存儲節(jié)點(diǎn)遷移到元數(shù)據(jù)節(jié)點(diǎn)中,從而提升了文件讀寫速度。
[0092]在一個(gè)實(shí)施例中,元數(shù)據(jù)節(jié)點(diǎn)802具體在接收到第一遷移請求后,從相應(yīng)的存儲節(jié)點(diǎn)獲取第一遷移文件;在本地索引中建立索引數(shù)據(jù)區(qū)映射,將第一遷移文件存儲在元數(shù)據(jù)節(jié)點(diǎn)中相應(yīng)的數(shù)據(jù)區(qū);更新第一索引,并指示相應(yīng)的存儲節(jié)點(diǎn)803更新第二索引,以便刪除與第一遷移文件相關(guān)聯(lián)的映射信息,其中第一索引和第二索引中包括存儲在存儲節(jié)點(diǎn)中文件的映射信息。
[0093]通過更新索引信息,以完成將文件從存儲節(jié)點(diǎn)遷移至元數(shù)據(jù)節(jié)點(diǎn)。
[0094]在一個(gè)實(shí)施例中,文件管理裝置801還用于在以預(yù)定的時(shí)間間隔,統(tǒng)計(jì)在指定時(shí)間范圍內(nèi)針對存儲在元數(shù)據(jù)節(jié)點(diǎn)和存儲節(jié)點(diǎn)中的文件的讀寫次數(shù)之后,選擇出前Μ個(gè)讀寫次數(shù)最小的文件;在前Μ個(gè)讀寫次數(shù)最小的文件中,判斷是否存在第二遷移文件,其中第二遷移文件屬于前Μ個(gè)讀寫次數(shù)最小的文件,且存儲在元數(shù)據(jù)節(jié)點(diǎn)中;若存在第二遷移文件,則向元數(shù)據(jù)節(jié)點(diǎn)802發(fā)送第二遷移請求。
[0095]元數(shù)據(jù)節(jié)點(diǎn)802還用于在接收到第二遷移請求后,將第二遷移文件從元數(shù)據(jù)節(jié)點(diǎn)遷移到相應(yīng)的存儲節(jié)點(diǎn)803以進(jìn)行存儲。
[0096]在一個(gè)實(shí)施例中,元數(shù)據(jù)節(jié)點(diǎn)802具體在接收到第二遷移請求后,在一級索引中建立與第二遷移文件相關(guān)聯(lián)的一級映射,指示相應(yīng)的存儲節(jié)