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