FastDFS分布式檔案系統

2021-10-02 07:39:01 字數 3372 閱讀 7883

fastdfs服務有三個角色:跟蹤伺服器(tracker server)、儲存伺服器(storage server)和客戶端(client)

總結:1.高可靠性:無單點故障 2.高吞吐性:只要group足夠多,資料流量是足夠分散的

group 中 storage 儲存依賴本地檔案系統,storage 可配置多個資料儲存目錄,磁碟不做 raid, 直接分別掛載到多個目錄,將這些目錄配置為 storage 的資料目錄即可

storage 接受寫請求時,會根據配置好的規則,選擇其中乙個儲存目錄來儲存檔案;為避免單 個目錄下的檔案過多,storage 第一次啟時,會在每個資料儲存目錄裡建立 2 級子目錄,每級 256 個,總共 65536 個,新寫的檔案會以 hash 的方式被路由到其中某個子目錄下,然後將檔案資料直 接作為乙個本地檔案儲存到該目錄中

fastdfs集群中的tracker server可以有多台,trackerserver之間是相互平等關係同時提供服務,trackerserver不存在單點故障。客戶端請求trackerserver採用輪詢方式,如果請求的tracker無法提供服務則換另乙個tracker

storage集群採用了分組儲存方式。storage集群由乙個或多個組構成,集群儲存總容量為集群中所有組的儲存容量之和。乙個組由一台或多台儲存伺服器組成,組內的storage server之間是平等關係,不同組的storageserver之間不會相互通訊,同組內的storageserver之間會相互連線進行檔案同步,從而保證同組內每個storage上的檔案完全一致的。乙個組的儲存容量為該組內儲存伺服器容量最小的那個,由此可見組內儲存伺服器的軟硬體配置最好是一致的,當系統容量不足時,可以增加組來擴充儲存容量(橫向擴容)

返回的file_id為檔案在伺服器上的索引資訊,包括:組名,虛擬磁碟路徑,資料兩級目錄,檔名(伺服器生成的),業務系統儲存到資料庫。

集群中 tracker 之間是對等關係,客戶端在上傳檔案時可用任意選擇乙個 tracker

當tracker接收到upload file的請求時,會為該檔案分配乙個可以儲存檔案的group,目前支援選擇 group 的規則為:

1. round robin,所有 group 輪詢使用

2. specified group,指定某個確定的 group

3. load balance,剩餘儲存空間較多的 group 優先

當選定group後,tracker會在group內選擇乙個storage server給客戶端,目前支援選擇server 的規則為:

1. round robin,所有 server 輪詢使用(預設)

2. 根據ip位址進行排序選擇第乙個伺服器(ip位址最小者)

3. 根據優先順序進行排序(上傳優先順序由storage server來設定,引數為upload_priority)

當分配好storage server後,客戶端將向storage傳送寫檔案請求,storage會將檔案分配乙個資料儲存目錄,目前支援選擇儲存路徑的規則為:

1. round robin,輪詢(預設)

2. load balance,選擇使用剩餘空間最大的儲存路徑

生成 file_id

選擇儲存目錄後,storage 會生成乙個 file_id,採用 base64 編碼,包含字段包括:storage server ip、檔案建立時間、檔案大小、檔案 crc32 校驗碼和隨機數;每個儲存目錄下有兩個 256*256 個子目錄,storage 會按檔案 file_id 進行兩次 hash,路由到其中乙個子目錄,,然後將檔案以 file_id 為檔名儲存到該子目錄下,最後生成檔案路徑:group 名稱、虛擬磁碟路徑、資料兩級目錄、file_id

其中,組名:檔案上傳後所在的儲存組的名稱,在檔案上傳成功後由儲存伺服器返回,需要客戶端自行儲存

虛擬磁碟路徑:儲存伺服器配置的虛擬路徑,與磁碟選項 store_path*引數對應 

資料兩級目錄:儲存伺服器在每個虛擬磁碟路徑下建立的兩級目錄,用於儲存資料檔案

1. 新增tracker伺服器資料同步問題

由於 storage server 上配置了所有的 tracker server. storage server 和 trackerserver 之間的通訊是由 storage server 主動發起的,storage server 為每個 tracker server 啟動乙個執行緒進行通訊;在通訊過程中,若發現該 tracker server 返回的本組 storage server列表比本機記錄少,就會將該tracker server上沒有的storage server 同步給該 tracker,這樣的機制使得 tracker 之間是對等關係,資料保持一致

2. 新增storage伺服器資料同步問題

若新增storage server或者其狀態發生變化,tracker server都會將storage server列表同步給該組內所有 storage server;以新增 storage server 為例,因為新加入的 storage server 會主動連線 tracker server,tracker server 發現有新的 storage server 加入,就會將該組內所有的 storage server 返回給新加入的 storage server,並重新將該組的storage server列表返回給該組內的其他storage server;

3. 組內storage資料同步問題

組內storage server之間是對等的,檔案上傳、刪除等操作可以在組內任意一台storageserver 上進行。檔案同步只能在同組內的 storage server 之間進行,採用 push 方式, 即源伺服器同步到目標伺服器

a. 只在同組內的storage server之間進行同步

b. 源資料才需要同步,備份資料不再同步

c. 特例:新增storage server時,由其中一台將已有所有資料(包括源資料和備份資料)同步到新增伺服器

通過命令 fdfs_monitor /etc/fdfs/client.conf 可以檢視 ip_addr 選項顯示 storage server 當前狀態

init : 初始化,尚未得到同步已有資料的源伺服器 

wait_sync : 等待同步,已得到同步已有資料的源伺服器 

上傳:

其他**:

FastDFS分布式檔案系統

服務端兩個角色 tracker 管理集群,tracker 也可以實現集群。每個 tracker 節點地位平等。收集 storage 集群的狀態。storage 實際儲存檔案,storage 分為多個組,每個組之間儲存的檔案是不同的。每 個組內部可以有多個成員,組成員內部儲存的內容是一樣的,組成員的地...

FastDFS分布式檔案系統

fastdfs簡介 fastdfs是乙個輕量級的開源分布式檔案系統 fastdfs主要解決了大容量的檔案儲存和高併發訪問的問題,檔案訪問時實現了負載均衡 fastdfs實現了軟體方式的raid,可以使用廉價的ide硬碟進行儲存 支援相同內容的檔案只儲存乙份,節約磁碟空間 fastdfs只能通過cli...

分布式檔案系統FastDFS

分布式檔案系統fastdfs 檔案上傳流程 client 客戶端,發起上傳請求 tracker 相當於路由 tracker 獲取檔案上傳的所在位置!storage 真正的儲存檔案的!會自動生產乙個檔案id,並且將檔案寫入磁碟!返回檔案上傳的位置!使用步驟 實現 1.配置檔案tracker.conf ...