本發(fā)明涉及元數(shù)據(jù)讀取技術(shù)領(lǐng)域,特別涉及一種分布式文件系統(tǒng)元數(shù)據(jù)信息讀取方法及系統(tǒng)。
背景技術(shù):
分布式文件系統(tǒng)元數(shù)據(jù)信息存儲(chǔ)了文件的所有屬性信息以及數(shù)據(jù)存儲(chǔ)位置,這些元數(shù)據(jù)信息都存儲(chǔ)到inode,即索引節(jié)點(diǎn)中,每個(gè)文件都有唯一的inode存儲(chǔ)元數(shù)據(jù)信息,inode會(huì)有唯一的inode號(hào)作為inode的標(biāo)識(shí)。
眾所周知,分布式文件系統(tǒng)有元數(shù)據(jù)服務(wù)、數(shù)據(jù)服務(wù)和客戶(hù)端三大組成部分。對(duì)于分布式文件系統(tǒng)的文件IO操作,首先要獲取文件元數(shù)據(jù)信息,然后再去操作數(shù)據(jù)。元數(shù)據(jù)信息存儲(chǔ)了文件的所有屬性信息以及數(shù)據(jù)存儲(chǔ)位置,這些元數(shù)據(jù)信息都存儲(chǔ)到inode中,每個(gè)文件都有唯一的inode存儲(chǔ)元數(shù)據(jù)信息。當(dāng)然,目錄作為一種具有目錄信息的特殊文件,也是如此。inode會(huì)有唯一的inode號(hào)作為inode的標(biāo)識(shí)。文件系統(tǒng)中一個(gè)文件元數(shù)據(jù)信息讀取,一般有兩種方式:一種是依據(jù)inode存儲(chǔ)位置獲取inode信息;第二種是通過(guò)父目錄元數(shù)據(jù)信息去讀取子文件元數(shù)據(jù)信息。前者主要用于本地文件系統(tǒng),后者主要用于分布式文件系統(tǒng)。而后者最大的弊端是無(wú)法直接依據(jù)文件inode號(hào)直接獲取元數(shù)據(jù)信息。這就導(dǎo)致文件系統(tǒng)無(wú)法充分使用inode號(hào)去優(yōu)化元數(shù)據(jù)機(jī)制,從而導(dǎo)致元數(shù)據(jù)信息讀取速度較低。
綜上所述,如何提高分布式文件系統(tǒng)元數(shù)據(jù)信息讀取速度是本領(lǐng)域技術(shù)人員目前需要解決的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種分布式文件系統(tǒng)元數(shù)據(jù)信息讀取方法及系統(tǒng),可以顯著提高分布式文件系統(tǒng)元數(shù)據(jù)信息讀取速度。其具體方案如下:
一種分布式文件系統(tǒng)元數(shù)據(jù)信息讀取方法,包括:
獲取待讀取元數(shù)據(jù)的inode號(hào)的路徑信息;
根據(jù)所述路徑信息,在數(shù)據(jù)庫(kù)中查找相應(yīng)的inode信息;
根據(jù)所述inode信息,讀取所述待讀取元數(shù)據(jù);
其中,所述路徑信息為預(yù)先存儲(chǔ)的所述待讀取元數(shù)據(jù)相應(yīng)的inode路徑。
優(yōu)選的,所述inode號(hào)均存儲(chǔ)在所述數(shù)據(jù)庫(kù)中。
優(yōu)選的,所述數(shù)據(jù)庫(kù)為鍵值存儲(chǔ)數(shù)據(jù)庫(kù)。
優(yōu)選的,獲取待讀取元數(shù)據(jù)的inode號(hào)的路徑信息包括:
在所述鍵值存儲(chǔ)數(shù)據(jù)庫(kù)中,根據(jù)key=待讀取元數(shù)據(jù)的inode號(hào)的值,得到所述路徑信息。
優(yōu)選的,所述路徑信息包括所述待讀取元數(shù)據(jù)inode號(hào)的父目錄inode號(hào)和祖先目錄inode號(hào)。
優(yōu)選的,根據(jù)所述路徑信息,在數(shù)據(jù)庫(kù)中查找相應(yīng)的inode信息包括:
判斷系統(tǒng)緩存中是否存在所述父目錄inode號(hào)對(duì)應(yīng)的所述inode信息,若是,則獲取所述inode信息,若否,則判斷所述系統(tǒng)緩存中是否存在所述祖先目錄inode號(hào)對(duì)應(yīng)的所述inode信息。
本發(fā)明還公開(kāi)了一種分布式文件系統(tǒng)元數(shù)據(jù)信息讀取系統(tǒng),包括:
路徑信息獲取模塊,用于獲取待讀取元數(shù)據(jù)的inode號(hào)的路徑信息;
Inode信息查找模塊,用于根據(jù)所述路徑信息,在數(shù)據(jù)庫(kù)中查找相應(yīng)的inode信息;
元數(shù)據(jù)讀取模塊,用于根據(jù)所述inode信息,讀取所述待讀取元數(shù)據(jù);
其中,所述路徑信息為預(yù)先存儲(chǔ)的所述待讀取元數(shù)據(jù)相應(yīng)的inode路徑。
本發(fā)明公開(kāi)了一種分布式文件系統(tǒng)元數(shù)據(jù)信息讀取方法,包括:獲取待讀取元數(shù)據(jù)的inode號(hào)的路徑信息;根據(jù)所述路徑信息,在數(shù)據(jù)庫(kù)中查找相應(yīng)的inode信息;根據(jù)所述inode信息,讀取所述待讀取元數(shù)據(jù);其中,所述路徑信息為預(yù)先存儲(chǔ)的所述待讀取元數(shù)據(jù)相應(yīng)的inode路徑??梢?jiàn),本發(fā)明通過(guò)預(yù)先記錄元數(shù)據(jù)inode號(hào)的路徑信息,在需要讀取元數(shù)據(jù)時(shí),根據(jù)該路徑信息在系統(tǒng)緩存中查找父目錄和祖先目錄的inode號(hào),從而讀取相應(yīng)的元數(shù)據(jù),從而顯著提高了分布式文件系統(tǒng)元數(shù)據(jù)信息讀取速度。
本發(fā)明還公開(kāi)了一種分布式文件系統(tǒng)元數(shù)據(jù)信息讀取系統(tǒng),具有與上述方法相同的技術(shù)效果,在此不再贅述。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例公開(kāi)的一種分布式文件系統(tǒng)元數(shù)據(jù)信息讀取方法的流程示意圖;
圖2為本發(fā)明實(shí)施例公開(kāi)的一種分布式文件系統(tǒng)元數(shù)據(jù)信息讀取系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施例公開(kāi)了一種分布式文件系統(tǒng)元數(shù)據(jù)信息讀取方法,參見(jiàn)圖1所示,包括步驟S1至S3,其中:
步驟S1:獲取待讀取元數(shù)據(jù)的inode號(hào)的路徑信息。其中,上述路徑信息為預(yù)先存儲(chǔ)的上述待讀取元數(shù)據(jù)相應(yīng)的inode路徑。
每個(gè)文件inode號(hào),會(huì)存儲(chǔ)到指定位置,可以是64K個(gè)inode的路徑信息存儲(chǔ)到一個(gè)指定位置,依次類(lèi)推。
上述inode號(hào)可以均存儲(chǔ)在數(shù)據(jù)庫(kù)中,或存儲(chǔ)在指定inode位置。
為了提高查找效率,本發(fā)明可使用k-v數(shù)據(jù)庫(kù)形式,即采用鍵值存儲(chǔ)數(shù)據(jù)庫(kù),存儲(chǔ)路徑信息。當(dāng)然,也可以使用其他數(shù)據(jù)庫(kù)儲(chǔ)存路徑信息
在一種具體的將路徑信息以k-v數(shù)據(jù)庫(kù)形式儲(chǔ)存的實(shí)施例中,獲取待讀取元數(shù)據(jù)的inode號(hào)的路徑信息包括:
根據(jù)inode號(hào),在鍵值存儲(chǔ)數(shù)據(jù)庫(kù)中,利用鍵值檢索指令key=inode,此處指令inode號(hào)為待讀取元數(shù)據(jù)的inode號(hào),即key=待讀取元數(shù)據(jù)的inode號(hào)的值,得到相應(yīng)的值,該值即為上述路徑信息。
分布式系統(tǒng)大多通過(guò)父目錄元數(shù)據(jù)信息去讀取子文件元數(shù)據(jù)信息,因此子文件元數(shù)據(jù)信息相應(yīng)的inode號(hào)不一定能夠直接獲得相應(yīng)的inode值,因此上述路徑信息包括上述待讀取元數(shù)據(jù)inode號(hào)的父目錄inode號(hào)和祖先目錄inode號(hào)。
步驟S2:根據(jù)上述路徑信息,在數(shù)據(jù)庫(kù)中查找相應(yīng)的inode信息。
在上述將路徑信息以k-v數(shù)據(jù)庫(kù)形式儲(chǔ)存的實(shí)施例中,根據(jù)路徑信息,在數(shù)據(jù)庫(kù)中查找相應(yīng)的inode信息包括:
由于在系統(tǒng)緩存中查找數(shù)據(jù)速度比根據(jù)父目錄讀取子目錄數(shù)據(jù)更快,因此通過(guò)查找系統(tǒng)系統(tǒng)緩存中是否存在相應(yīng)的與inode信息對(duì)應(yīng)inode號(hào),即判斷系統(tǒng)緩存中是否存在上述父目錄inode號(hào)對(duì)應(yīng)的上述inode信息,若是,則獲取上述inode信息,若否,則判斷上述系統(tǒng)緩存中是否存在上述祖先目錄inode號(hào)對(duì)應(yīng)的上述inode信息。
由于數(shù)據(jù)庫(kù)操作延時(shí)很低,獲取父目錄的inode號(hào)后去緩存中檢查是否有父目錄inode信息,有的話(huà)直接從父目錄獲取本inode信息;沒(méi)有的話(huà)再去復(fù)現(xiàn)目錄找,直到找到緩存中有的祖先inode信息去獲取子以及子孫的inode信息。
步驟S3:根據(jù)上述inode信息,讀取上述待讀取元數(shù)據(jù)。
本發(fā)明的提供的思路為:在文件元數(shù)據(jù)存儲(chǔ)的時(shí)候,記錄文件路徑信息到指定存儲(chǔ)位置(可以是指定inode),路徑信息保存了父目錄以及祖先目錄的inode號(hào),每個(gè)信息已kv數(shù)據(jù)庫(kù)形式存儲(chǔ)。當(dāng)需要依據(jù)inode號(hào)去獲取inode信息時(shí),直接到存儲(chǔ)位置以key=inode號(hào)獲取對(duì)應(yīng)value值,即路徑信息,由于數(shù)據(jù)庫(kù)操作延時(shí)很低,獲取父目錄的inode號(hào)后去緩存中檢查是否有父目錄inode信息,有的話(huà)直接從父目錄獲取本inode信息;沒(méi)有的話(huà)再去祖先目錄找,直到找到緩存中有的祖先inode信息去獲取子以及子孫的inode信息。
可以理解的是,使用SSD固態(tài)硬盤(pán)可以進(jìn)一步提高查找速度,即進(jìn)一步顯著提高分布式文件系統(tǒng)元數(shù)據(jù)信息讀取速度。
在一種具體的實(shí)施方案中,讀取元數(shù)據(jù)的全部過(guò)程如下:
1)元數(shù)據(jù)服務(wù)進(jìn)程需要依據(jù)inode號(hào)獲取inode信息。
2)依據(jù)inode號(hào)去存儲(chǔ)inode號(hào)路徑信息的位置,獲取key=inode號(hào)的value信息,value值即存儲(chǔ)路徑。
3)查找緩存中是否有value中父目錄inode號(hào)對(duì)應(yīng)inode信息;否,繼續(xù)查找祖先inode號(hào)是否在緩存中有對(duì)應(yīng)inode信息。
4)直到找到inode信息去獲取路徑上目錄inode號(hào)的元數(shù)據(jù)信息。
本發(fā)明還公開(kāi)了一種分布式文件系統(tǒng)元數(shù)據(jù)信息讀取系統(tǒng),參見(jiàn)圖2所示,包括路徑信息獲取模塊11、Inode信息查找模塊12和元數(shù)據(jù)讀取模塊13,其中:
路徑信息獲取模塊11,用于獲取待讀取元數(shù)據(jù)的inode號(hào)的路徑信息。其中,上述路徑信息為預(yù)先存儲(chǔ)的上述待讀取元數(shù)據(jù)相應(yīng)的inode路徑。
每個(gè)文件inode號(hào),會(huì)存儲(chǔ)到指定位置,可以是64K個(gè)inode的路徑信息存儲(chǔ)到一個(gè)指定位置,依次類(lèi)推。
上述inode號(hào)可以均存儲(chǔ)在數(shù)據(jù)庫(kù)中,或存儲(chǔ)在指定inode位置。
為了提高查找效率,本發(fā)明可使用k-v數(shù)據(jù)庫(kù)形式,即采用鍵值存儲(chǔ)數(shù)據(jù)庫(kù),存儲(chǔ)路徑信息。當(dāng)然,也可以使用其他數(shù)據(jù)庫(kù)儲(chǔ)存路徑信息
在一種具體的將路徑信息以k-v數(shù)據(jù)庫(kù)形式儲(chǔ)存的實(shí)施例中,獲取待讀取元數(shù)據(jù)的inode號(hào)的路徑信息包括:
根據(jù)inode號(hào),在鍵值存儲(chǔ)數(shù)據(jù)庫(kù)中,利用鍵值檢索指令key=inode,此處指令inode號(hào)為待讀取元數(shù)據(jù)的inode號(hào),即key=待讀取元數(shù)據(jù)的inode號(hào)的值,得到相應(yīng)的值,該值即為上述路徑信息。
分布式系統(tǒng)大多通過(guò)父目錄元數(shù)據(jù)信息去讀取子文件元數(shù)據(jù)信息,因此子文件元數(shù)據(jù)信息相應(yīng)的inode號(hào)不一定能夠直接獲得相應(yīng)的inode值,因此上述路徑信息包括上述待讀取元數(shù)據(jù)inode號(hào)的父目錄inode號(hào)和祖先目錄inode號(hào)。
Inode信息查找模塊12,用于根據(jù)上述路徑信息,在數(shù)據(jù)庫(kù)中查找相應(yīng)的inode信息。
在上述將路徑信息以k-v數(shù)據(jù)庫(kù)形式儲(chǔ)存的實(shí)施例中,根據(jù)路徑信息,在數(shù)據(jù)庫(kù)中查找相應(yīng)的inode信息包括:
由于在系統(tǒng)緩存中查找數(shù)據(jù)速度比根據(jù)父目錄讀取子目錄數(shù)據(jù)更快,因此通過(guò)查找系統(tǒng)系統(tǒng)緩存中是否存在相應(yīng)的與inode信息對(duì)應(yīng)inode號(hào),即判斷系統(tǒng)緩存中是否存在上述父目錄inode號(hào)對(duì)應(yīng)的上述inode信息,若是,則獲取上述inode信息,若否,則判斷上述系統(tǒng)緩存中是否存在上述祖先目錄inode號(hào)對(duì)應(yīng)的上述inode信息。
由于數(shù)據(jù)庫(kù)操作延時(shí)很低,獲取父目錄的inode號(hào)后去緩存中檢查是否有父目錄inode信息,有的話(huà)直接從父目錄獲取本inode信息;沒(méi)有的話(huà)再去復(fù)現(xiàn)目錄找,直到找到緩存中有的祖先inode信息去獲取子以及子孫的inode信息。
元數(shù)據(jù)讀取模塊13,用于根據(jù)上述inode信息,讀取上述待讀取元數(shù)據(jù)。
可以理解的是,使用SSD固態(tài)硬盤(pán)可以進(jìn)一步提高查找速度,即進(jìn)一步顯著提高分布式文件系統(tǒng)元數(shù)據(jù)信息讀取速度。
最后,還需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上對(duì)本發(fā)明所提供的一種分布式文件系統(tǒng)元數(shù)據(jù)信息讀取方法及系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。