一.FastDFS介紹 FastDFS 是一個開源的高性能分散式文件系統(DFS)。 它的主要功能包括:文件存儲,文件同步和文件訪問,以及高容量和負載平衡。主要解決了海量數據存儲問題,特別適合以中小文件(建議範圍:4KB < file_size <500MB)為載體的線上服務。 FastDFS 系統 ...
一.FastDFS介紹
FastDFS 是一個開源的高性能分散式文件系統(DFS)。 它的主要功能包括:文件存儲,文件同步和文件訪問,以及高容量和負載平衡。主要解決了海量數據存儲問題,特別適合以中小文件(建議範圍:4KB < file_size <500MB)為載體的線上服務。
FastDFS 系統有三個角色:跟蹤伺服器(Tracker Server)、存儲伺服器(Storage Server)和客戶端(Client)。
Tracker Server:跟蹤伺服器,主要做調度工作,起到均衡的作用;負責管理所有的 storage server和 group,每個 storage 在啟動後會連接 Tracker,告知自己所屬 group 等信息,並保持周期性心跳。
Storage Server:存儲伺服器,主要提供容量和備份服務;以 group 為單位,每個 group 內可以有多台 storage server,數據互為備份。
Client:客戶端,上傳下載數據的伺服器,也就是我們自己的項目所部署在的伺服器。
存儲節點Storage採用了分捲[Volume](或分組[group])的組織方式,存儲系統由一個或多個組組成,組與組之間的文件是相互獨立的,所有組的文件容量累加就是整個存儲系統中的文件容量。
一個捲[Volume](組[group])可以由一臺或多台存儲伺服器組成,一個組中的存儲伺服器中的文件都是相同的,組中的多台存儲伺服器起到了冗餘備份和負載均衡的作用,數據互為備份,存儲空間以group內容量最小的storage為準,所以建議group內的多個storage儘量配置相同,以免造成存儲空間的浪費。
二.操作環境
操作系統:Centos 6.5
IP:192.168.200.101
三.下載安裝FastDFS
1.安裝相關依賴包
[root@zha ~]# yum -y install unzip zip gcc-c++
2.下載安裝libfastcommon(公共C函數庫)
[root@zha ~]# wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz [root@zha ~]# mkdir /softpackages [root@zha ~]# tar xf V1.0.7 -C /softpackages/ [root@zha ~]# cd /softpackages/libfastcommon-1.0.7/ [root@zha libfastcommon-1.0.7]# ./make.sh && ./make.sh install
libfastcommon.so 安裝到了/usr/lib64/libfastcommon.so,但是FastDFS主程式設置的lib目錄是/usr/local/lib,所以需要創建軟鏈接。
[root@zha libfastcommon-1.0.7]# ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so [root@zha libfastcommon-1.0.7]# ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so [root@zha libfastcommon-1.0.7]# ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so [root@zha libfastcommon-1.0.7]# ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
3.下載安裝FastDFS
wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz [root@zha libfastcommon-1.0.7]# cd /softpackages/ [root@zha softpackages]# wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz [root@zha softpackages]# ls libfastcommon-1.0.7 V5.05 [root@zha softpackages]# tar xf V5.05 [root@zha softpackages]# cd fastdfs-5.05/ [root@zha fastdfs-5.05]# ./make.sh && ./make.sh install
預設安裝方式安裝後的相應文件與目錄:
服務腳本:/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_tracker
配置文件:
/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample
4. 配置FastDFS跟蹤器(Tracker)
[root@zha fastdfs-5.05]# cd /etc/fdfs/ [root@zha fdfs]# cp tracker.conf.sample tracker.conf
修改tracker.conf配置文件
[root@zha fdfs]# vim tracker.conf
Tracker 數據和日誌目錄地址(根目錄必須存在,子目錄會自動創建)
創建tracker基礎數據目錄,即base_path對應的目錄(用於存儲tracker的數據文件和日誌文件等)
[root@zha fdfs]# mkdir -p /home/chenjiaxin/fastdfs
為啟動腳本創建軟引用,因為fdfs_trackerd等命令在/usr/local/bin中並沒有,而是在/usr/bin路徑下
[root@zha fdfs]# ln -s /usr/bin/fdfs_trackerd /usr/local/bin [root@zha fdfs]# ln -s /usr/bin/stop.sh /usr/local/bin [root@zha fdfs]# ln -s /usr/bin/restart.sh /usr/local/bin
啟動服務
[root@zha fdfs]# /etc/init.d/fdfs_trackerd start
Starting FastDFS tracker server:
查看埠
[root@zha fdfs]# netstat -antp|grep fdfs tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 15181/fdfs_trackerd
設置開機啟動
[root@zha fdfs]# chkconfig fdfs_trackerd on
5. 配置 FastDFS 存儲 (Storage)
創建Storage伺服器的文件目錄,註意同Tracker相比要多建一個目錄,因為Storage還需要一個文件存儲路徑,用於存放接收的文件:
[root@zha fdfs]# mkdir /opt/fastdfs_storage [root@zha fdfs]# mkdir /opt/fastdfs_storage_data [root@zha fdfs]# cp storage.conf.sample storage.conf
修改storage.conf配置文件:
[root@zha fdfs]# vim storage.conf #設置storage數據文件和日誌目錄 base_path=/opt/fastdfs_storage
#實際文件存儲路徑 store_path0=/opt/fastdfs_storage_data #存儲路徑個數,需要和store_path個數匹配 store_path_count=1 #tracker 伺服器的 IP地址和埠號,如果是單機搭建,IP不要寫127.0.0.1,否則啟動不成功 tracker_server=192.168.200.101 :22122
#設置 http 埠號 http.server_port=8888
配置完成後同樣要為Storage伺服器的啟動腳本設置軟引用:
[root@zha fdfs]# ln -s /usr/bin/fdfs_storaged /usr/local/bin [root@zha fdfs]# /etc/init.d/fdfs_storaged start Starting FastDFS storage server:
查看是否有23000,22122,兩個埠
[root@zha fdfs]# netstat -nulpt | grep fdfs tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 15228/fdfs_storaged tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 15181/fdfs_trackerd
設置開機啟動
[root@zha fdfs]#chkconfig fdfs_storaged on
查看:storage伺服器是否已經登記到 tracker伺服器
[root@zha fdfs]# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf Storage 1: id = 192.168.200.101 ip_addr = 192.168.200.101 (bogon) ACTIVE
看到192.168.200.101 ACTIVE 證明成功登記到了tracker伺服器
現在已經完成fastdfs的全部配置!
四.文件上傳測試
1.修改track客戶端配置文件
[root@zha fdfs]# cp client.conf.sample client.conf [root@zha fdfs]# vim client.conf
[root@zha fdfs]# mkdir -p /home/a/fastdfs
2.上傳文件
[root@zha ~]# cd /opt/fastdfs_storage/data/ [root@zha data]# ls fdfs_storaged.pid storage_stat.dat Penguins.jpg sync [root@zha data]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf Penguins.jpg group1/M00/00/00/wKjIZVr6ZLqAD2P2AAvea_OGt2M341.jpg
上傳成功後返迴文件ID號:
group1/M00/00/00/wKjIZVr6ZLqAD2P2AAvea_OGt2M341.jpg
返回的文件ID由group、存儲目錄、兩級子目錄、fileid、文件尾碼名(由客戶端指定,主要用於區分文件類型)拼接而成。