分散式檔案系統fastdfs_搭建和基本使用

panda-star發表於2020-10-15

分散式檔案系統fastdfs_搭建和基本使用

一、簡介

fastdfs是開源的輕量級的分散式檔案系統,可以用於檔案儲存。這裡對fastdfs特點及搭建進行介紹,作業系統使用的是mac。

二、fastdfs知識點

2.1 fastdfs特點

fastdfs是開源的分散式檔案系統,有以下特點:

  • 開源的,可以在github上自由下載(github地址:https://github.com/happyfish100/fastdfs);
  • 分散式的,可動態擴充套件容量,包含冗餘備份;
  • fastdfs叢集可動態新增和移出tracker和storage伺服器,而不影響線上服務;

2.2 fastdfs應用場景

fastdfs可進行檔案管理,包含檔案儲存、上傳、下載、訪問等。適用於如圖片管理、視訊音訊管理、附件管理等以檔案為基礎的服務。

2.3 fastdfs儲存結構

fastdfs以卷volume(實際顯示為組group)構成儲存結構,fastdfs由一個或多個卷構成,不同卷間相同獨立,所有卷的容量總和即是fastdfs容量,一個卷可以由一臺或多臺伺服器構成,同一個卷不同伺服器上的資料是一樣的,可起到冗餘備份和負載均衡。
同一卷新增伺服器時,fastdfs會自動同步資料,同步完後會自動切換提供服務。

儲存空間不夠時,可動態新增捲,方式為新增一臺或多臺伺服器,並配置新的卷,就增加了fastdfs容量。

fastdfs檔案標識由兩部分構成:卷名(或者說組名)和檔名,兩者唯一定位一個檔案。

2.4 fastdfs構成

fastdfs由tracker、storage、client三部分構成。它們的作用如下:

  • tracker:對檔案訪問進行規劃和負載均衡,可以有多臺伺服器;
  • storage:儲存檔案和檔案管理(包含儲存、上傳、下載、訪問等),同時也管理檔案key-value形式的後設資料資訊(會生成單獨的以-m結尾的檔案,後續有示例),可以有多臺伺服器;
  • client:接收使用者請求,到tracker中查詢檔案位置等資訊,然後根據前面取到的資訊,到storage中真正獲取檔案。

三、fastdfs安裝

fastdfs安裝包含libfastcommon模組、fastdfs模組、fastdfs-nginx-module模組,下面分別進行介紹。

4.1 libfastcommon安裝

安裝流程如下:

git clone https://github.com/happyfish100/libfastcommon.git
cd libfastcommon
./make.sh
sudo ./make.sh install

4.2 fastdfs安裝

fastdfs模組是主體。

安裝流程如下:

git clone https://github.com/happyfish100/fastdfs.git
cd fastdfs
./make.sh
./make.sh install

接下來需要配置fastdfs,配置檔案位於/etc/fdfs/目錄下,配置包括tracker.conf、storage.conf、client.conf三個檔案,先進行fastdfs配置目錄:

sudo chmod -R  a+w /etc/fdfs/
#先進入fastdfs配置檔案目錄
cd /etc/fdfs/

tracker.conf檔案配置:

#複製tracker.conf
cp tracker.conf.sample tracker.conf
#建立tracker目錄
mkdir -p /Users/xx/fastdfs_dir/fastdfs_data/tracker
#修改tracker.conf
vim tracker.conf
#tracker.conf修改如下:
base_path = /Users/xx/fastdfs_dir/fastdfs_data/tracker

storage.conf檔案配置:

#複製storage.conf
cp storage.conf.sample storage.conf
#建立storage目錄
mkdir -p /Users/xx/fastdfs_dir/fastdfs_data/storage
#修改tracker.conf
vim storage.conf
#tracker.conf修改如下:
base_path = /Users/xx/fastdfs_dir/fastdfs_data/storage
store_path0 = /Users/xx/fastdfs_dir/fastdfs_data/storage
tracker_server = 192.168.31.220:22122

client.conf檔案配置:

#複製client.conf
cp client.conf.sample client.conf
#修改client.conf
vim client.conf
#client.conf修改如下:
base_path = /Users/xx/fastdfs_dir/fastdfs_data/tracker
tracker_server = 192.168.31.220:22122

4.3 fastdfs-nginx-module安裝

fastdfs-nginx-module模組便於訪問,當多臺機器檔案還未完成時,用於重定向請求到源伺服器,獲取資源。結合nginx使用,需要在nginx中新增fastdfs-nginx-module模組。安裝步驟如下:

#下載fastdfs-nginx-module模組
git clone https://github.com/happyfish100/fastdfs-nginx-module.git

#下載nginx
wget http://nginx.org/download/nginx-1.17.7.tar.gz
#解壓nginx-1.17.7.tar.gz
tar -zxvf nginx-1.17.7.tar.gz
#進入nginx-1.17.7目錄
cd nginx-1.17.7
#nginx安裝及新增fastdfs-nginx-module模組
./configure --add-module=/Users/xx/fastdfs_dir/fastdfs-nginx-module/src
make
sudo make install

#檢視nginx新增fastdfs-nginx-module配置
/usr/loca/nginx/sbin/nginx -V
輸出如下:
 nginx version: nginx/1.17.7
 built by clang 10.0.1 (clang-1001.0.46.4)
 configure arguments: --add-module=/Users/xx/fastdfs_dir/fastdfs-nginx-module/src

fastdfs-nginx-module配置:

#複製mod_fastdfs.conf
cp fastdfs-nginx-module/src/mod_fastdfs.conf  /etc/fdfs/
#修改mod_fastdfs.conf
vim /etc/fdfs/mod_fastdfs.conf
#mod_fastdfs.conf修改內容如下:
tracker_server=192.168.31.220:22122
url_have_group_name = true #url是否包含group名稱
store_path0=/Users/xx/fastdfs_dir/fastdfs_data/storage

#複製fastdfs其它配置檔案到配置目錄
cp fastdfs/conf/http.conf fastdfs/conf/mime.types fastdfs/conf/anti-steal.jpg /etc/fdfs/

修改nginx配置:

#進入nginx目錄
cd /usr/local/nginx
#修改nginx配置檔案nginx.conf
vim nginx/conf/nginx.conf
#在nginx.conf檔案的http->server模組下新增:
location ~/group([0-9])/M00 {
    ngx_fastdfs_module;
}

備註:
若不新增fastdfs-nginx-module,也可通過nginx訪問指定機器上的檔案,此時nginx中的nginx.conf配置如下:

#在nginx.conf檔案的http->server模組下新增:
location /group1/M00 {
    alias /Users/xx/fastdfs_dir/fastdfs_data/storage/data;
}

四、fastdfs使用

4.1 fastdfs啟動

sudo /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
sudo /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf start

4.2 fastdfs常用操作

fastdfs操作命令位於/usr/local/bin目錄下以fdfs開頭的,這裡介紹常用的:

#檔案上傳(fdfs_upload_file位於/usr/local/bin目錄下):
fdfs_upload_file /etc/fdfs/client.conf /Users/xx/t.txt
結果如下:
group1/M00/00/00/wKgf3F5GG5-AITOrAAAACfJka8E677.txt
#解析
#組名:group1
#磁碟:M00
#目錄:00/00
#檔案:wKgf3F5GG5-AITOrAAAACfJka8E677.txt
#實際儲存於:
#/Users/xx/fastdfs_dir/fastdfs_data/storage/data/00/00/wKgf3F5GG5-AITOrAAAACfJka8E677.txt

#查年檔案詳情:
fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/wKgf3F5GG5-AITOrAAAACfJka8E677.txt

#檔案刪除:
fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgf3F5GG5-AITOrAAAACfJka8E677.txt

#檔案下載:
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKgf3F5GG5-AITOrAAAACfJka8E677.txt t1.txt

4.3 nginx訪問檔案

地址為:http://localhost:80/group1/M00/00/00/wKgf3F5GG5-AITOrAAAACfJka8E677.txt

相關文章