摘要: 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中文:www.csource.org/
• FastDFS英文:code.google.com/p/fastdfs/
官網資料,分享給大家學習
願意瞭解框架技術或者原始碼的朋友直接求求:2042849237