fastdfs分佈式文件系統之Storage server介紹

在上一篇文章的fastdfs結構圖中,我們可以看出FastDFS服務端有兩個角色:跟蹤器(tracker)和存儲節點(storage)。跟蹤器(tracker)主要做

調度工作,就像公交車站裏面的調務員一樣,它負責通過負載均衡選出最優的存儲節點(storage)。存儲節點(storage)顧名思義就是負責存儲、

數據同步、數據的操作的一個服務。今天我們將會重點對Storage server進行介紹。


概述

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

Storage server(簡稱storage)以組group爲單位,如圖一個group內包含多臺storage機器,數據互爲備份,存儲空間以group內容量最小的

storage爲準,建議group內的多個storage儘量配置相同,以免造成存儲空間的浪費。以group爲單位組織存儲能方便的進行應用隔離、負載均衡

、副本數定製(group內storage server數量即爲該group的副本數),比如將不同應用數據存到不同的group就能隔離應用數據,比如group1爲內

網訪問數據,group2爲外網訪問數據。同時還可根據應用的訪問情況來將應用分配到不同的group來做負載均衡;缺點是group的容量受單機存儲

容量的限制比如gourp1中有3個storage,storage1爲100G、storage2爲120G、storage爲110G,那麼對於group1來說存儲空間大小就是100G。

當group中有機器壞掉時,數據的恢復只能依賴group中的其他機器,所以恢復時間會特別的長。


storage存儲


在group中每個storage的存儲依賴於本地文件系統,所以storage可以動態增加存儲空間大小,比如fastdfs系統使用一段時間之後group1的空間使

用完了,那我們可以動態爲group1下面的所有storage主機掛載更多的磁盤。而且可以指定那些盤爲storage的存儲目錄比如有5塊磁盤,分別掛載

在/data/disk1-/data/disk5,那麼可將這5個存儲目錄都配置爲storage的數據存儲目錄。


當storage接受到客戶端或其它storage同步的寫文件請求時,將會根據配置好的規則,選擇其中一個存儲目錄來存儲文件。

爲了防止單個目錄下的文件數太多,在storage第一次啓動時,會在每個數據存儲目錄裏創建2級子目錄,每級256個,總共65536個文件,新寫的文

件會以hash的方式被路由到其中某個子目錄下,然後將文件數據直接作爲一個本地文件存儲到該目錄中。



storage的同步策略

文件同步是由獨立的線程負責的,每個Storage都有到同組中其他Storage的同步線程,如一組三個Storage,那麼每個Storage都有兩個線程負責到其他
兩個Storage的同步。同步線程由Tracker通訊線程啓動,因爲只有Tracker才知道一組中有哪些Storage。
      
同步線程的執行過程主要由源同步與Binlog同步兩部分組成,具體的同步過程我將會在另一篇文章中進行詳細的介紹。

注:本文部分資料參考chinaunix和其它網站

發佈了80 篇原創文章 · 獲贊 690 · 訪問量 67萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章