01、Fast DFS 基本簡介

 

 

Fast DFS是一個開源的分佈式文件系,它文件行管理,功能包括:文件存、文件同步、文件訪問(文件上、文件下)等,解決了大容量存負載均衡的問題。特適合中小文件(建:4KB < file size <500MB),以文件爲載體的在線服務,如相冊網站、視頻網站等等

Fast DFS爲互聯網量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用Fast DFS很容易搭建一套高性能的文件服器集羣提供文件上、下等服

1、Fast DFS簡介

Fast DFS端有兩個角色:跟蹤器(tracker)和存節點storage)。跟蹤器主要做調度工作,在訪問上起負載均衡的作用。

儲節點存文件,完成文件管理的所有功能:就是這樣的存、同步和提供存取接口,Fast DFS時對文件的metadata進行管理。所謂文件的metadata就是文件的相關屬性,以鍵值對key value pair)方式表示,如:width=1024,其中的keywidthvalue1024。文件metadata文件屬性列表,可以包含多個鍵值對

跟蹤器和存儲節點都可以由一臺或多臺服器構成。跟蹤器和存儲節點中的服器均可以隨增加或下而不會影響上服。其中跟蹤器中的所有服器都是等的,可以根據服器的力情況隨增加或減少。

爲了支持大容量,存儲節點(服器)採用了分卷(或分)的組織方式。由一個或多個卷成,卷與卷之的文件是相互獨立的,所有卷的文件容量累加就是整個存中的文件容量。一個卷可以由一臺或多臺組成,一個卷下的存儲服務器中的文件都是相同的,卷中的多臺存儲服務器起到了冗餘負載均衡的作用。

在卷中增加服,同步已有的文件由系完成,同步完成後,系將新增服器切上提供服

當存不足或即將耗盡,可以動態添加捲。只需要增加一臺或多臺服器,並將它配置一個新的卷,這樣大了的容量。

Fast DFS中的文件標識兩個部分:卷名和文件名,二者缺一不可。

 

2、Fast DFS 架構介紹

FastDFS由客端,跟蹤服器和存器構成,基本架構如下所示

 

 

2.1、Storage Server

    Storage server(後簡稱storage)以組(卷,group或volume)爲單位組織,一個group內包含多臺storage機器,數據互爲備份,存儲空間以group內容量最小的storage爲準,所以建議group內的多個storage儘量配置相同,以免造成存儲空間的浪費

    以group爲單位組織存儲能方便的進行應用隔離、負載均衡、副本數定製(group內storage server數量即爲該group的副本數),比如將不同應用數據存到不同的group就能隔離應用數據,同時還可根據應用的訪問特性來將應用分配到不同的group來做負載均衡;缺點是group的容量受單機存儲容量的限制,同時當group內有機器壞掉時,數據恢復只能依賴group內地其他機器,使得恢復時間會很長

    group內每個storage的存儲依賴於本地文件系統,storage可配置多個數據存儲目錄,比如有10塊磁盤,分別掛載在/data/disk1-/data/disk10,則可將這10個目錄都配置爲storage的數據存儲目錄

    storage接受到寫文件請求時,會根據配置好的規則(後面會介紹),選擇其中一個存儲目錄來存儲文件。爲了避免單個目錄下的文件數太多,在storage第一次啓動時,會在每個數據存儲目錄裏創建2級子目錄,每級256個,總共65536個文件,新寫的文件會以hash的方式被路由到其中某個子目錄下,然後將文件數據直接作爲一個本地文件存儲到該目錄中

2.2Tracker Server

    Tracker是Fast DFS的協調者(跟蹤者),負責管理所有的storage server和group,每個storage在啓動後會連接Tracker,告知自己所屬的group等信息,並保持週期性的心跳,tracker根據storage的心跳信息,建立group==>[storage server list]的映射表

    Tracker需要管理的元信息很少,會全部存儲在內存中;另外tracker上的元信息都是由storage彙報的信息生成的,本身不需要持久化任何數據,這樣使得tracker非常容易擴展,直接增加tracker機器即可擴展爲tracker cluster來服務,cluster裏每個tracker之間是完全對等的,所有的tracker都接受stroage的心跳信息,生成元數據信息來提供讀寫服務

2.3、Client 

    客戶端,作爲業務請求的發起方,通過專有接口,使用TCP/IP協議與跟蹤器服務器或存儲節點進行數據交互

3、Fast DFS 存儲策略

爲了支持大容量,存儲節點(服務器)採用了分卷(或分組)的組織方式。存儲系統由一個或多個卷組成,卷與卷之間的文件是相互獨立的,所有卷的文件容量累加就是整個存儲系統中的文件容量。一個卷可以由一臺或多臺存儲服務器組成,一個卷下的存儲服務器中的文件都是相同的,卷中的多臺存儲服務器起到了冗餘備份和負載均衡的作用

在卷中增加服務器時,同步已有的文件由系統自動完成,同步完成後,系統自動將新增服務器切換到線上提供服務

當存儲空間不足或即將耗盡時,可以動態添加捲。只需要增加一臺或多臺服務器,並將它們配置爲一個新的卷,這樣就擴大了存儲系統的容量

參考資料

 

Fast DFS Google Code http://code.google.com/p/fastdfs/ 

 

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章