FastDFS分散式檔案系統

happywawa發表於2018-01-08

摘要: FastDFS簡介 •FastDFS是一個輕量級的開源分散式檔案系統

•FastDFS主要解決了大容量的檔案儲存和高併發訪問的問題,檔案存取時實現了負載均衡

•FastDFS實現了軟體方式的RAID,可以使用廉價的IDE硬碟進行儲存 •支援儲存伺服器線上擴容

•支援相同內容的檔案只儲存一份,節約磁碟空間 •FastDFS只能通過ClientAPI訪問,不支援POSIX訪問方式

•FastDFS特別適合大中型網站使用,用來儲存資原始檔(如:圖片、文件、音訊、視訊等等)

FastDFS簡介

•FastDFS是一個輕量級的開源分散式檔案系統

•FastDFS主要解決了大容量的檔案儲存和高併發訪問的問題,檔案存取時實現了負載均衡

•FastDFS實現了軟體方式的RAID,可以使用廉價的IDE硬碟進行儲存

•支援儲存伺服器線上擴容

•支援相同內容的檔案只儲存一份,節約磁碟空間

•FastDFS只能通過ClientAPI訪問,不支援POSIX訪問方式

•FastDFS特別適合大中型網站使用,用來儲存資原始檔(如:圖片、文件、音訊、視訊等等)

系統架構-架構圖

系統架構-上傳檔案流程圖

• 1. client詢問tracker上傳到的storage,不需要附加引數;

• 2. tracker返回一臺可用的storage;

• 3. client直接和storage通訊完成檔案上傳。

系統架構-下載檔案流程圖

• 1. client詢問tracker下載檔案的storage,引數為檔案標識(組名和檔名);

• 2. tracker返回一臺可用的storage;

• 3. client直接和storage通訊完成檔案下載。

相關術語

• Tracker Server:跟蹤伺服器,主要做排程工作,在訪問上起負載均衡的作用。記錄storage server的狀態,是連線Client和Storageserver的樞紐。

• Storage Server:儲存伺服器,檔案和meta data都儲存到儲存伺服器上

• group:組,也可稱為卷。同組內伺服器上的檔案是完全相同的

• 檔案標識:包括兩部分:組名和檔名(包含路徑)

• meta data:檔案相關屬性,鍵值對(Key Value Pair)方式,如:width=1024,heigth=768

同步機制

•同一組內的storageserver之間是對等的,檔案上傳、刪除等操作可以在任意一臺storage server上進行;

•檔案同步只在同組內的storage server之間進行,採用push方式,即源伺服器同步給目標伺服器;

•源頭資料才需要同步,備份資料不需要再次同步,否則就構成環路了;

•上述第二條規則有個例外,就是新增加一臺storage server時,由已有的一臺storageserver將已有的所有資料(包括源頭資料和備份資料)同步給該新增伺服器。

通訊協議

• 協議包由兩部分組成:header和body

• header共10位元組,格式如下:

– 8 bytes body length

– 1 byte command

– 1 byte status

• body資料包格式由取決於具體的命令,body可以為空

執行時目錄結構-tracker server

• ${base_path}

|__data

| |__storage_groups.dat:儲存分組資訊

| |__storage_servers.dat:儲存伺服器列表

|__logs

|__trackerd.log:trackerserver日誌檔案

執行時目錄結構-storage server

• ${base_path}

|__data

| |__.data_init_flag:當前storageserver初始化資訊

| |__storage_stat.dat:當前storage server統計資訊

| |__sync:存放資料同步相關檔案

| | |__binlog.index:當前的binlog檔案索引號

| | |__binlog.###:存放更新操作記錄(日誌)

| | |__${ip_addr}_${port}.mark:存放同步的完成情況

| |

| |__一級目錄:256個存放資料檔案的目錄,如:00, 1F

| |__二級目錄:256個存放資料檔案的目錄

|__logs

|__storaged.log:storageserver日誌檔案

安裝和執行

•#step 1. download FastDFS source package and unpack it,

•# if you use HTTP to download file, please downloadlibevent 1.4.x and install it

•tar xzf FastDFS_v1.x.tar.gz

•#for example:

•tar xzf FastDFS_v1.20.tar.gz

•#step 2. enter the FastDFS dir

•cd FastDFS

•#step 3. if HTTP supported, modify make.sh, uncommentthe line:

•# WITH_HTTPD=1, then execute:

•./make.sh

•#step 4. make install

•./make.sh install

•#step 5. edit/modify the config file of tracker andstorage

•#step 6. run server programs

•#start the tracker server:

•/usr/local/bin/fdfs_trackerd

•#start the storage server:

•/usr/local/bin/fdfs_storaged

FastDFS和集中儲存方式對比

FastDFS分散式檔案系統

• FastDFS中文:www.csource.org/

• FastDFS英文:code.google.com/p/fastdfs/

官網資料,分享給大家學習

願意瞭解框架技術或者原始碼的朋友直接求求:2042849237

更多詳細原始碼參考來源


相關文章