專利名稱:分布式文件系統(tǒng)中的文件處理方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理技術(shù),尤其涉及一種分布式文件系統(tǒng)(Distributed FileSystem,簡稱為DFS)中的文件處理方法及裝置。
背景技術(shù):
分布式文件系統(tǒng)的存儲系統(tǒng)可以有效滿足對互聯(lián)網(wǎng)業(yè)務(wù)的海量數(shù)據(jù)內(nèi)容的存儲。以谷歌(Google)公司的分布式文件系統(tǒng)(Google File System,簡稱為GFS)為例,GFS集群由一個(gè)元數(shù)據(jù)服務(wù)器(master節(jié)點(diǎn))和多個(gè)塊服務(wù)器(chunk server)組成,元數(shù)據(jù)服務(wù)器與塊服務(wù)器之間有定期的心跳線進(jìn)行通訊,并且心跳線會傳遞信息以及塊服務(wù)器的狀態(tài)。元數(shù)據(jù)服務(wù)器負(fù)責(zé)管理所有文件的文件系統(tǒng)的元數(shù)據(jù),元數(shù)據(jù)可以包括命名空間(namespace)、訪問控制信息、文件到塊的映射關(guān)系、當(dāng)前塊的位置等信息。元數(shù)據(jù)服務(wù)器也同樣控制系統(tǒng)級別的活動(dòng),比如塊的分配管理、孤點(diǎn)塊的垃圾回收機(jī)制、塊服務(wù)器之間的塊 鏡像管理等等。在GFS中,每一個(gè)文件都會被拆分成固定大小的塊(chunk),每一個(gè)塊都由元數(shù)據(jù)服務(wù)器根據(jù)該塊創(chuàng)建的時(shí)間產(chǎn)生一個(gè)全局唯一的、以后也不會改變的64位的塊標(biāo)志(chunk handle)。塊服務(wù)器在本地磁盤上用本地文件系統(tǒng)保存這些塊,并且根據(jù)塊標(biāo)志和字節(jié)區(qū)間固定大小,通過本地文件系統(tǒng)讀寫這些塊的數(shù)據(jù)。出于可靠性的考慮,每一個(gè)塊都會在不同的塊服務(wù)器上保存?zhèn)浞荩笔∏闆r下,GFS保存3個(gè)備份(一主二備)。在分布式文件系統(tǒng)中,文件的存儲與讀取是最主要的兩種文件處理方式。仍然以GFS為例進(jìn)行說明。無論是文件的存儲還是讀取,都是需要與元數(shù)據(jù)服務(wù)器進(jìn)行信息交互,而元數(shù)據(jù)服務(wù)器為集中式的管理模式,可存儲或讀取的元數(shù)據(jù)的容量就是有限的,這就導(dǎo)致了元數(shù)據(jù)服務(wù)器成為分布式文件系統(tǒng)的容量瓶頸,無法支持更大的擴(kuò)容。因此,現(xiàn)有的分布式文件系統(tǒng)依賴集中式的元數(shù)據(jù)服務(wù)器來確定數(shù)據(jù)的存儲節(jié)點(diǎn)的路由,限制了分布式文件系統(tǒng)更大的擴(kuò)容。
發(fā)明內(nèi)容
為了解決分布式文件系統(tǒng)支持更大的擴(kuò)容和存儲,本發(fā)明提供一種分布式文件系統(tǒng)中的文件處理方法,包括接收用戶的文件操作請求,所述文件操作請求中至少攜帶文件描述信息及操作類型;根據(jù)所述文件描述信息在元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)中確定用于存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn),所述元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)形成分布式哈希表網(wǎng)絡(luò);根據(jù)所述文件描述信息在數(shù)據(jù)塊服務(wù)器的全部節(jié)點(diǎn)中確定用于存儲文件數(shù)據(jù)塊的塊主節(jié)點(diǎn),所述數(shù)據(jù)塊服務(wù)器的全部節(jié)點(diǎn)形成分布式哈希表網(wǎng)絡(luò);根據(jù)所述操作類型完成與所述元主節(jié)點(diǎn)以及所述塊主節(jié)點(diǎn)之間的操作。本發(fā)明還提供一種分布式文件系統(tǒng)中的文件處理裝置,包括
接收模塊,用于接收用戶的文件操作請求,所述文件操作請求中至少攜帶文件描述信息及操作類型;路由確定模塊,用于根據(jù)所述文件描述信息在元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)中確定用于存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn),所述元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)形成分布式哈希表網(wǎng)絡(luò);根據(jù)所述文件描述信息在數(shù)據(jù)塊服務(wù)器的全部節(jié)點(diǎn)中確定用于存儲文件數(shù)據(jù)塊的塊主節(jié)點(diǎn),所述數(shù)據(jù)塊服務(wù)器的全部節(jié)點(diǎn)形成分布式哈希表網(wǎng)絡(luò);處理模塊,用于根據(jù)所述操作類型完成與所述元主節(jié)點(diǎn)以及所述塊主節(jié)點(diǎn)之間的操作。本發(fā)明的技術(shù)效果是接收到用戶的文件操作請求時(shí),根據(jù)文件操作請求所攜帶的文件描述信息在元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)中確定用于存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn),再根據(jù)文件操作請求所攜帶的操作類型完成與元主節(jié)點(diǎn)之間的操作。由于元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)形成分布式哈希表網(wǎng)絡(luò),使得元數(shù)據(jù)服務(wù)器不再是集中式管理的一個(gè)節(jié)點(diǎn),根據(jù)不同 文件描述信息可以將文件的元數(shù)據(jù)分配給元數(shù)據(jù)服務(wù)器中的不同節(jié)點(diǎn),有效實(shí)現(xiàn)了元數(shù)據(jù)服務(wù)器的擴(kuò)容;同時(shí),文件數(shù)據(jù)塊服務(wù)器組成分布式哈希表網(wǎng)絡(luò),有效地實(shí)現(xiàn)了數(shù)據(jù)塊內(nèi)容的擴(kuò)容。通過客戶端將這兩個(gè)分離的分布式哈希表存儲網(wǎng)絡(luò)組合起來,為上層應(yīng)用提供服務(wù)。通過這種方式有效地解決了海量的文件數(shù)據(jù)存儲和擴(kuò)容的問題。
圖I為本發(fā)明實(shí)施例一提供的分布式文件系統(tǒng)中的文件處理方法流程圖;圖2為本發(fā)明實(shí)施例二提供的步驟102的具體實(shí)現(xiàn)流程圖;圖3為本發(fā)明實(shí)施例二提供的邏輯DHT標(biāo)識符圓環(huán)的示意圖;圖4為本發(fā)明實(shí)施例四提供的分布式文件系統(tǒng)中的文件處理裝置結(jié)構(gòu)示意圖。
具體實(shí)施例方式圖I為本發(fā)明實(shí)施例一提供的分布式文件系統(tǒng)中的文件處理方法流程圖,如圖I所示,該方法包括步驟101、分布式文件系統(tǒng)中的客戶端接收用戶的文件操作請求,該文件操作請求中至少攜帶文件描述信息及操作類型。該分布式文件系統(tǒng)中的客戶端不同于傳統(tǒng)意義上的客戶端,該分布式文件系統(tǒng)中的客戶端可以理解為分布式文件系統(tǒng)與用戶之間的接口層,該接口層位于基礎(chǔ)管理層(包括元數(shù)據(jù)服務(wù)器和數(shù)據(jù)塊服務(wù)器)以及存儲設(shè)施層(存儲設(shè)備如本地磁盤等),為應(yīng)用(如用戶生成內(nèi)容(User Generated Content,簡稱為UGC)、社會性網(wǎng)絡(luò)服務(wù)(SocialNetworking Services,簡稱為SNS)、網(wǎng)絡(luò)硬盤系統(tǒng)(Netdisk)等)提供公共的API接口。本發(fā)明實(shí)施例提供的元數(shù)據(jù)服務(wù)器和數(shù)據(jù)塊服務(wù)器是兩個(gè)彼此分離、相互獨(dú)立的系統(tǒng),分別用于存儲元數(shù)據(jù)信息和數(shù)據(jù)塊信息。由該分布式文件系統(tǒng)中的客戶端將這兩個(gè)分離的服務(wù)器組合起來,向應(yīng)用提供對象存儲或者讀取等分布式文件系統(tǒng)服務(wù)。這里還需要說明的是,文件描述信息可以但不限于包括文件名(file name)等,操作類型可以但不限于為存儲文件或讀取文件。步驟102、客戶端根據(jù)文件描述信息在元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)中確定用于存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn),該元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)形成分布式哈希表網(wǎng)絡(luò);根據(jù)文件描述信息在數(shù)據(jù)塊服務(wù)器的全部節(jié)點(diǎn)中確定用于存儲文件數(shù)據(jù)塊的塊主節(jié)點(diǎn),該數(shù)據(jù)塊服務(wù)器的全部節(jié)點(diǎn)形成分布式哈希表網(wǎng)絡(luò)。對于元數(shù)據(jù)服務(wù)器以及數(shù)據(jù)塊服務(wù) 器而言,均由多個(gè)節(jié)點(diǎn)組成,且全部節(jié)點(diǎn)形成分布式哈希表網(wǎng)絡(luò)。每個(gè)節(jié)點(diǎn)上都會保存一部分的文件索引。全部節(jié)點(diǎn)所保存的文件索引可以組成一個(gè)完整的文件索引哈希表。這種元數(shù)據(jù)服務(wù)器的實(shí)現(xiàn)方式可以在節(jié)點(diǎn)失效、遭受攻擊以及突發(fā)性高負(fù)載面前都能夠表現(xiàn)出很好的健壯性,而且具有良好的可擴(kuò)展性,能夠通過較低的系統(tǒng)開銷獲得較大的系統(tǒng)規(guī)模,新節(jié)點(diǎn)在加入時(shí)可以進(jìn)行自我配置,不需要手動(dòng)干預(yù)即可以自動(dòng)合并到系統(tǒng)中。步驟103、根據(jù)操作類型完成客戶端與元主節(jié)點(diǎn)以及塊主節(jié)點(diǎn)之間的操作。當(dāng)操作類型為存儲文件時(shí),將待存儲文件的元數(shù)據(jù)發(fā)送給元主節(jié)點(diǎn),以使該元主節(jié)點(diǎn)對待存儲文件的元數(shù)據(jù)進(jìn)行保存;將待存儲文件切片后發(fā)送給塊主節(jié)點(diǎn),以使該塊主節(jié)點(diǎn)對待存儲文件的切片數(shù)據(jù)進(jìn)行保存。當(dāng)操作類型為讀取文件時(shí),從元主節(jié)點(diǎn)上讀取文件描述信息對應(yīng)的文件元數(shù)據(jù),從塊主節(jié)點(diǎn)上讀取文件描述信息對應(yīng)的文件塊數(shù)據(jù)。進(jìn)一步需要說明的是,如果在存儲文件數(shù)據(jù)時(shí),數(shù)據(jù)過長過大,還可以將待存儲文件進(jìn)行切片后存儲到相應(yīng)的塊主節(jié)點(diǎn)上。本發(fā)明實(shí)施例提供的分布式文件中的文件處理方法,接收到用戶的文件操作請求時(shí),根據(jù)文件操作請求所攜帶的文件描述信息在元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)中確定用于存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn),再根據(jù)文件操作請求所攜帶的操作類型完成與元主節(jié)點(diǎn)之間的操作。由于元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)形成分布式哈希表網(wǎng)絡(luò),使得元數(shù)據(jù)服務(wù)器不再是集中式管理的一個(gè)節(jié)點(diǎn),根據(jù)不同文件描述信息可以將文件的元數(shù)據(jù)分配給元數(shù)據(jù)服務(wù)器中的不同節(jié)點(diǎn),有效實(shí)現(xiàn)了元數(shù)據(jù)服務(wù)器的擴(kuò)容;同時(shí),文件數(shù)據(jù)塊服務(wù)器組成分布式哈希表網(wǎng)絡(luò),有效地實(shí)現(xiàn)了數(shù)據(jù)塊內(nèi)容的擴(kuò)容通過客戶端將這兩個(gè)分離的分布式哈希表存儲網(wǎng)絡(luò)組合起來,為上層應(yīng)用提供服務(wù)。通過這種方式有效地解決了海量的文件數(shù)據(jù)存儲和擴(kuò)容的問題。在上述實(shí)施方式的基礎(chǔ)上,本發(fā)明實(shí)施例二提供的步驟102的具體實(shí)現(xiàn)流程圖可以如圖2所示,包括步驟102a、根據(jù)文件描述信息的哈希值,獲得文件關(guān)鍵字的標(biāo)識符;步驟102b、在已知的元數(shù)據(jù)服務(wù)器的節(jié)點(diǎn)標(biāo)識符中,如果存在節(jié)點(diǎn)標(biāo)識符等于文件關(guān)鍵字的標(biāo)識符的節(jié)點(diǎn),則該節(jié)點(diǎn)為用于存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn);如果不存在節(jié)點(diǎn)標(biāo)識符等于文件關(guān)鍵字的標(biāo)識符的節(jié)點(diǎn),則獲得節(jié)點(diǎn)標(biāo)識符最接近文件關(guān)鍵字的標(biāo)識符的節(jié)點(diǎn)作為存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn)。這里需要說明的是,文件關(guān)鍵字的標(biāo)識符可以但不限于是數(shù)字、字符串、或者其他可能形式,為了便于描述,通常情況下優(yōu)選使用數(shù)字。根據(jù)文件關(guān)鍵字得到,文件關(guān)鍵字可以但不限于為文件描述信息(如文件名)的哈希值。已知的元數(shù)據(jù)服務(wù)器的節(jié)點(diǎn)標(biāo)識符可以通過節(jié)點(diǎn)的IP地址得到。假設(shè)文件關(guān)鍵字的標(biāo)識符和節(jié)點(diǎn)標(biāo)識符均為m比特,元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識符在取模2m后,按照從小到大的順序,沿著順時(shí)針方向,可以排列在一個(gè)邏輯的DHT標(biāo)識圓環(huán)上。那么文件關(guān)鍵字的標(biāo)識符和節(jié)點(diǎn)標(biāo)識符之間的映射關(guān)系即可以為文件關(guān)鍵字為K的文件索引(K,V)存儲在這樣的節(jié)點(diǎn)上該節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識符等于或者在DHT環(huán)上緊跟在K之后,這個(gè)節(jié)點(diǎn)被稱為K的后續(xù)節(jié)點(diǎn),表示為successor (K)。由于關(guān)鍵字標(biāo)識符和節(jié)點(diǎn)標(biāo)識符都采用m位二進(jìn)制數(shù)標(biāo)識,并且從O到2m_l排列成一個(gè)圓圈,所以successor (K)就是從K開始順時(shí)針方向距離K最近的節(jié)點(diǎn)。這里還需要補(bǔ)充說明的是,通常情況下,如果使用數(shù)字作為文件關(guān)鍵字的標(biāo)識符,且不存在節(jié)點(diǎn)標(biāo)示符等于文件關(guān)鍵字的標(biāo)識符的節(jié)點(diǎn),那么獲得的元主節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識符優(yōu)選大于文件關(guān)鍵字的標(biāo)識符。下面結(jié)合具體實(shí)例對上述步驟102進(jìn)行具體的說明。如圖3所示的邏輯DHT標(biāo)識符圓環(huán)的示意圖,該圓環(huán)的m = 6,換種分布了 10個(gè)節(jié)點(diǎn),存儲了 5個(gè)關(guān)鍵字。在圖3中,節(jié)點(diǎn)標(biāo)識符前加N,而關(guān)鍵字的標(biāo)識符前加K,用以區(qū)別兩種標(biāo)識符。最接近KlO且大于KlO的節(jié)點(diǎn)為N14,所以關(guān)鍵字10存儲在節(jié)點(diǎn)14上。同樣道理,K24和K30存儲在N32上,K38存儲在N38上,K54存儲在N56上。當(dāng)網(wǎng)絡(luò)中的參與節(jié)點(diǎn)發(fā)生變動(dòng)時(shí),如某節(jié)點(diǎn)η加入網(wǎng)絡(luò),某些原來分配給η的后續(xù)節(jié)點(diǎn)的關(guān)鍵字將分配給η,如某節(jié)點(diǎn)η離開網(wǎng)絡(luò),某些原來分配給 η的關(guān)鍵字將分配給η的后續(xù)節(jié)點(diǎn)。以網(wǎng)盤系統(tǒng)為例,當(dāng)用戶上傳文件時(shí),用戶可以通過Portal提供的上傳界面發(fā)起上傳請求,portal調(diào)用網(wǎng)盤業(yè)務(wù)平臺(即本發(fā)明各實(shí)施例中提供的分布式文件系統(tǒng)中的客戶端)請求對文件進(jìn)行存儲和處理,網(wǎng)盤業(yè)務(wù)平臺接收文件和文件元數(shù)據(jù)后,根據(jù)文件名計(jì)算出存儲元數(shù)據(jù)的主節(jié)點(diǎn),請求元數(shù)據(jù)服務(wù)器的主節(jié)點(diǎn)進(jìn)行元數(shù)據(jù)的存儲,然后對文件進(jìn)行分片處理,計(jì)算存儲數(shù)據(jù)的主節(jié)點(diǎn),并請求數(shù)據(jù)服務(wù)器的主節(jié)點(diǎn)對數(shù)據(jù)進(jìn)行保存。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲介質(zhì)包括R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。圖4為本發(fā)明實(shí)施例四提供的分布式文件系統(tǒng)中的文件處理裝置結(jié)構(gòu)示意圖,如圖4所示,該裝置為執(zhí)行上述方法實(shí)施例的主體,具體方法不做贅述,該裝置包括接收模塊401、路由確定模塊402以及處理模塊403。其中,接收模塊401用于接收用戶的文件操作請求,文件操作請求中至少攜帶文件描述信息及操作類型;路由確定模塊402用于根據(jù)文件描述信息在元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)中確定用于存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn),元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)形成分布式哈希表網(wǎng)絡(luò);路由確定模塊402同時(shí)根據(jù)文件描述信息在在數(shù)據(jù)塊服務(wù)器的全部節(jié)點(diǎn)中確定用于存儲文件數(shù)據(jù)塊的塊主節(jié)點(diǎn),數(shù)據(jù)塊服務(wù)器的全部節(jié)點(diǎn)形成分布式哈希表網(wǎng)絡(luò);處理模塊403用于根據(jù)操作類型完成與元主節(jié)點(diǎn)以及塊主節(jié)點(diǎn)之間的操作。其中,路由確定模塊402包括哈希計(jì)算單元,用于根據(jù)文件描述信息的哈希值,獲得文件關(guān)鍵字的標(biāo)識符;路由確定單元,用于在已知的元數(shù)據(jù)服務(wù)器的節(jié)點(diǎn)標(biāo)識符中,如果存在節(jié)點(diǎn)標(biāo)識符等于文件關(guān)鍵字的標(biāo)識符的節(jié)點(diǎn),則節(jié)點(diǎn)為用于存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn);如果不存在節(jié)點(diǎn)標(biāo)識符等于文件關(guān)鍵字的標(biāo)識符的節(jié)點(diǎn),則獲得節(jié)點(diǎn)標(biāo)識符最接近文件關(guān)鍵字的標(biāo)識符的節(jié)點(diǎn)作為存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn)。在上述實(shí)施方式的基礎(chǔ)上,路由確定單元還用于如果不存在節(jié)點(diǎn)標(biāo)識符等于文件關(guān)鍵字的標(biāo)識符的節(jié)點(diǎn),獲得的元主節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識符大于文件關(guān)鍵字的標(biāo)識符。進(jìn)一步的,該路由確定單元還維護(hù)了一張?jiān)獢?shù)據(jù)網(wǎng)路由表和一張數(shù)據(jù)塊網(wǎng)路由表,分別負(fù)責(zé)元數(shù)據(jù)DHT和數(shù)據(jù)塊DHT網(wǎng)的路由確定,即根據(jù)匹配的節(jié)點(diǎn)標(biāo)示符獲取目標(biāo)主節(jié)點(diǎn)的IP地址和端口。在上述實(shí)施方式的基礎(chǔ)上,路由確定模塊402還要負(fù)責(zé)路由表的更新,路由表剛開始會有幾個(gè)種子節(jié)點(diǎn)的信息,客戶端會連接到種子節(jié)點(diǎn)上,當(dāng)需要查詢數(shù)據(jù)時(shí),客戶端會按標(biāo)識符匹配的路由方法確定目標(biāo)主節(jié)點(diǎn),并把查詢請求發(fā)送給主節(jié)點(diǎn)。當(dāng)主節(jié)點(diǎn)收到客戶端發(fā)過來的請求后,如果發(fā)現(xiàn)數(shù)據(jù)不在本節(jié)點(diǎn)上時(shí),會根據(jù)分布式哈希表網(wǎng)絡(luò)內(nèi)的路由機(jī)制查詢到新的節(jié)點(diǎn)并返回,客戶端路由模塊根據(jù)返回結(jié)果刷新自己的路由表,這樣下次查詢就會直接定位到新的節(jié)點(diǎn)。具體的操作類型為存儲文件或讀取文件;則處理模塊403可以包括發(fā)送單元,用于當(dāng)操作類型為存儲文件時(shí),將待存儲文件的元數(shù)據(jù)發(fā)送給主節(jié)點(diǎn),以使主節(jié)點(diǎn)對待存儲文件的元數(shù)據(jù)進(jìn)行保存;讀取單元,用于當(dāng)操作類型為讀取文件時(shí),從主節(jié)點(diǎn)上讀取文件描述信息對應(yīng)的文件元數(shù)據(jù)。連接池單元,負(fù)責(zé)客戶端到分布式哈希表網(wǎng)絡(luò)中節(jié)點(diǎn)的連接管
理。 最后應(yīng)說明的是以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
權(quán)利要求
1.一種分布式文件系統(tǒng)中的文件處理方法,其特征在于,包括 接收用戶的文件操作請求,所述文件操作請求中至少攜帶文件描述信息及操作類型; 根據(jù)所述文件描述信息在元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)中確定用于存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn),所述元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)形成分布式哈希表網(wǎng)絡(luò); 根據(jù)所述文件描述信息在數(shù)據(jù)塊服務(wù)器的全部節(jié)點(diǎn)中確定用于存儲文件數(shù)據(jù)塊的塊主節(jié)點(diǎn),所述數(shù)據(jù)塊服務(wù)器的全部節(jié)點(diǎn)形成分布式哈希表網(wǎng)絡(luò); 根據(jù)所述操作類型完成與所述元主節(jié)點(diǎn)以及所述塊主節(jié)點(diǎn)之間的操作。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,根據(jù)所述文件描述信息在元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)中確定用于存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn),包括 根據(jù)所述文件描述信息的哈希值,獲得文件關(guān)鍵字的標(biāo)識符; 在已知的元數(shù)據(jù)服務(wù)器的節(jié)點(diǎn)標(biāo)識符中,如果存在節(jié)點(diǎn)標(biāo)識符等于所述文件關(guān)鍵字的標(biāo)識符的節(jié)點(diǎn),則所述節(jié)點(diǎn)為用于存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn);如果不存在節(jié)點(diǎn)標(biāo)識符等于所述文件關(guān)鍵字的標(biāo)識符的節(jié)點(diǎn),則獲得節(jié)點(diǎn)標(biāo)識符最接近所述文件關(guān)鍵字的標(biāo)識符的節(jié)點(diǎn)作為存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,如果不存在節(jié)點(diǎn)標(biāo)識符等于所述文件關(guān)鍵字的標(biāo)識符的節(jié)點(diǎn),所述獲得的元主節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識符大于所述文件關(guān)鍵字的標(biāo)識符。
4.根據(jù)權(quán)利要求I至3中任一項(xiàng)所述的方法,其特征在于,所述操作類型為存儲文件或讀取文件;所述根據(jù)所述操作類型完成與所述元主節(jié)點(diǎn)以及所述塊主節(jié)點(diǎn)之間的操作包括 當(dāng)所述操作類型為存儲文件時(shí),將待存儲文件的元數(shù)據(jù)發(fā)送給所述元主節(jié)點(diǎn),以使所述元主節(jié)點(diǎn)對所述待存儲文件的元數(shù)據(jù)進(jìn)行保存;將待存儲文件發(fā)送給所述塊主節(jié)點(diǎn),以使所述塊主節(jié)點(diǎn)對所述待存儲文件進(jìn)行保存; 當(dāng)所述操作類型為讀取文件時(shí),從所述元主節(jié)點(diǎn)上讀取所述文件描述信息對應(yīng)的文件元數(shù)據(jù),從所述塊主節(jié)點(diǎn)上讀取所述文件描述信息對應(yīng)的文件塊數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述將待存儲文件發(fā)送給所述塊主節(jié)點(diǎn)之前,所述方法還包括 對所述待存儲文件進(jìn)行切片; 相應(yīng)的,所述將待存儲文件發(fā)送給所述塊主節(jié)點(diǎn),以使所述塊主節(jié)點(diǎn)對所述待存儲文件進(jìn)行保存包括 將切片后的數(shù)據(jù)發(fā)送給所述塊主節(jié)點(diǎn),以使所述塊主節(jié)點(diǎn)對所述切片后的數(shù)據(jù)進(jìn)行保存。
6.一種分布式文件系統(tǒng)中的文件裝置,其特征在于,包括 接收模塊,用于接收用戶的文件操作請求,所述文件操作請求中至少攜帶文件描述信息及操作類型; 路由確定模塊,用于根據(jù)所述文件描述信息在元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)中確定用于存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn),所述元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)形成分布式哈希表網(wǎng)絡(luò);根據(jù)所述文件描述信息在數(shù)據(jù)塊服務(wù)器的全部節(jié)點(diǎn)中確定用于存儲文件數(shù)據(jù)塊的塊主節(jié)點(diǎn),所述數(shù)據(jù)塊服務(wù)器的全部節(jié)點(diǎn)形成分布式哈希表網(wǎng)絡(luò); 處理模塊,用于根據(jù)所述操作類型完成與所述元主節(jié)點(diǎn)以及所述塊主節(jié)點(diǎn)之間的操作。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述路由確定模塊包括 哈希計(jì)算單元,用于根據(jù)所述文件描述信息的哈希值,獲得文件關(guān)鍵字的標(biāo)識符; 路由確定單元,用于在已知的元數(shù)據(jù)服務(wù)器的節(jié)點(diǎn)標(biāo)識符中,如果存在節(jié)點(diǎn)標(biāo)識符等于所述文件關(guān)鍵字的標(biāo)識符的節(jié)點(diǎn),則所述節(jié)點(diǎn)為用于存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn);如果不存在節(jié)點(diǎn)標(biāo)識符等于所述文件關(guān)鍵字的標(biāo)識符的節(jié)點(diǎn),則獲得節(jié)點(diǎn)標(biāo)識符最接近所述文件關(guān)鍵字的標(biāo)識符的節(jié)點(diǎn)作為存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn)。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述路由確定單元還用于如果不存在節(jié)點(diǎn)標(biāo)識符等于所述文件關(guān)鍵字的標(biāo)識符的節(jié)點(diǎn),所述獲得的元主節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識符大于所述文件關(guān)鍵字的標(biāo)識符。
9.根據(jù)權(quán)利要求6至8中任一項(xiàng)所述的裝置,其特征在于,所述操作類型為存儲文件或讀取文件;所述處理模塊包括 發(fā)送單元,用于當(dāng)所述操作類型為存儲文件時(shí),將待存儲文件的元數(shù)據(jù)發(fā)送給所述元主節(jié)點(diǎn),以使所述元主節(jié)點(diǎn)對所述待存儲文件的元數(shù)據(jù)進(jìn)行保存;將待存儲文件發(fā)送給所述塊主節(jié)點(diǎn),以使所述塊主節(jié)點(diǎn)對所述待存儲文件進(jìn)行保存; 讀取單元,用于當(dāng)所述操作類型為讀取文件時(shí),從所述元主節(jié)點(diǎn)上讀取所述文件描述信息對應(yīng)的文件元數(shù)據(jù),從所述塊主節(jié)點(diǎn)上讀取所述文件描述信息對應(yīng)的文件塊數(shù)據(jù)。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述處理模塊還包括 切片單元,用于對所述待存儲文件進(jìn)行切片; 相應(yīng)的,所述發(fā)送單元包括將切片后的數(shù)據(jù)發(fā)送給所述塊主節(jié)點(diǎn),以使所述塊主節(jié)點(diǎn)對所述切片后的數(shù)據(jù)進(jìn)行保存。
全文摘要
本發(fā)明提供一種分布式文件系統(tǒng)中的文件處理方法及裝置。方法包括接收用戶的文件操作請求,所述文件操作請求中至少攜帶文件描述信息及操作類型;根據(jù)所述文件描述信息在元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)中確定用于存儲文件元數(shù)據(jù)的元主節(jié)點(diǎn),所述元數(shù)據(jù)服務(wù)器的全部節(jié)點(diǎn)形成分布式哈希表網(wǎng)絡(luò);根據(jù)所述文件描述信息在數(shù)據(jù)塊服務(wù)器的全部節(jié)點(diǎn)中確定用于存儲文件數(shù)據(jù)塊的塊主節(jié)點(diǎn),所述數(shù)據(jù)塊服務(wù)器的全部節(jié)點(diǎn)形成分布式哈希表網(wǎng)絡(luò);根據(jù)所述操作類型完成與所述元主節(jié)點(diǎn)以及所述塊主節(jié)點(diǎn)之間的操作。裝置包括接收模塊、路由確定模塊和處理模塊。本發(fā)明提供的方案能夠有效實(shí)現(xiàn)分布式文件系統(tǒng)的擴(kuò)容和海量的文件內(nèi)容存儲。
文檔編號G06F17/30GK102708165SQ201210127060
公開日2012年10月3日 申請日期2012年4月26日 優(yōu)先權(quán)日2012年4月26日
發(fā)明者唐金根, 袁洪錦 申請人:華為軟件技術(shù)有限公司