日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

FastDFS分布式文件系统介绍及单机版安装

發布時間:2024/3/26 81 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FastDFS分布式文件系统介绍及单机版安装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、分布式文件系統

分布式文件系統 (Distributed File System) 是一個軟件/軟件服務器,這個軟件可以用來管理文件,但這個軟件所管理的文件通常不是在一個服務器節點上,而是在多個服務器節點上,這些服務器節點通過網絡相連構成一個龐大的文件存儲服務器集群,這些服務器都用于存儲文件資源,通過分布式文件系統來管理這些服務器上的文件。

常見的分布式文件系統有:FastDFS、GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS等,

GFS(Google File System)
--------------------------------------
Google公司為了滿足本公司需求而開發的基于Linux的專有分布式文件系統

HDFS
--------------------------------------
Hadoop 實現的一個分布式文件系統(Hadoop Distributed File System),簡稱HDFS

Lustre
---------------------------------------
是一個大規模的、安全可靠的,具備高可用性的集群文件系統,它是由SUN公司開發和維護的

Ceph
---------------------------------------
是加州大學圣克魯茲分校的Sage weil攻讀博士時開發的分布式文件系統

GridFS
---------------------------------------
GridFS是MongoDB之上的分布式文件系統,其利用了MongoDB的分布式存儲機制并通過MongoDB來存儲文件數據和文件元數據

MogileFS
---------------------------------------
由memcahed的開發公司danga,開發的一款采用perl開發的產品,目前國內使用mogielFS的有圖片托管網站yupoo等

mooseFS
---------------------------------------
相對比較輕量級,對master服務器有單點依賴,用perl編寫,性能相對較差

分布式文件系統與傳統文件系統對比:

二、什么是FastDFS

FastDFS是一個開源的輕量級分布式文件系統,為互聯網應用量身定做,簡單、靈活、高效,采用C語言開發,由阿里巴巴開發并開源,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件為載體的在線服務,如相冊網站、視頻網站等等。

FastDFS為互聯網量身定制,充分考慮了冗余備份、負載均衡、線性擴容等機制,并注重高可用、高性能等指標,使用FastDFS很容易搭建一套高性能的文件服務器集群提供文件上傳、下載等服務。

三、FastDFS發展歷史

1、2008年4月項目啟動,7月發布第一個版本V1.00,兩年時間內持續升級到V1.29

2、2010年8月推出V2.00

3、2011年6月推出V3.00

4、2012年10月推出V4.00

5、2013年12月推出V5.00

6、2017年3月推出V5.10

7、2018年6月推出V5.12(截止目前最新版)

8、詳細發展歷史查看:?https://github.com/happyfish100/fastdfs/blob/master/HISTORY

9、FastDFS系統架構從第一個版本發布后一直沒有大的調整,高版本完全兼容低版本的數據,可以做到平滑升級,推薦更新升級到最新版本;

10、FastDFS代碼托管在github上:https://github.com/happyfish100/fastdfs

四、FastDFS整體架構

FastDFS文件系統由兩大部分構成,一個是客戶端,一個是服務端;客戶端通常指我們的程序,比如我們的Java程序去連接FastDFS、操作FastDFS,那我們的Java程序就是一個客戶端;FastDFS提供專有API訪問,目前提供了 C、Java 和 PHP 幾種編程語言的API,用來訪問FastDFS文件系統;

服務端由兩個部分構成:一個是跟蹤器(tracker),一個是存儲節點(storage);跟蹤器(tracker)主要做調度工作,在內存中記錄集群中存儲節點storage的狀態信息,是前端Client和后端存儲節點storage的樞紐;因為相關信息全部在內存中,Tracker server的性能非常高,一個較大的集群(比如上百個group)中有3臺就足夠了;存儲節點(storage)用于存儲文件,包括文件和文件屬性(meta data)都保存到存儲服務器磁盤上,完成文件管理的所有功能:文件存儲、文件同步和提供文件訪問等;

TIP:

所需要安裝包版本對應關系名稱版本號
libfastcommon1.0.36
fastdfs5.11
nginx1.12.2
fastdfs-nginx-module1.20
fastdfs-client-java1.27-SNAPSHOT

?

五、FastDFS下載
? ? ? ? ? ?FastDFS沒有Windows版本,不能在Windows下使用;FastDFS需要安裝部署在Linux環境下;下載地址:https://github.com/happyfish100/fastdfs/releases,下載安裝版本為FastDFS5.11

六、FastDFS安裝

  • 安裝前的準備
  • 檢查Linux上是否安裝了 gcc、libevent、libevent-devel,執行如下yum命令檢查:
  • yum list installed | grep gcc
  • yum list installed | grep libevent
  • yum list installed | grep libevent-devel
  • 如果沒有安裝,則需進行安裝,執行如下命令安裝:
  • yum install gcc libevent libevent-devel -y
  • 安裝 libfastcommon 庫
  • libfastcommon 庫是 FastDFS 文件系統運行需要的公共 C 語言函數庫
  • 安裝libfastcommon 庫的步驟如下
  • 下載 libfastcommon 源代碼包
  • 下載地址:https://github.com/happyfish100
  • 安裝包地址:https://github.com/happyfish100/libfastcommon/archive/V1.0.36.tar.gz
  • 解壓下載下來的tar.gz壓縮包:tar -zxvf libfastcommon-1.0.36.tar.gz
  • 切換到解壓后的libfastcommon目錄:cd libfastcommon-1.0.36
  • 執行make腳本進行編譯:./make.sh
  • 注意:第4步make編譯的時候如果報錯,需解決錯誤后再次進行make,通常發生錯誤是由于Linux缺少某些依賴庫導致,根據錯誤提示解決錯誤
  • 執行make install進行安裝:./make.sh install
  • 至此 libfastcommon 庫安裝完畢
  • 安裝FastDFS
  • FastDFS才是我們真正的分布式文件系統,安裝步驟如下:
  • 下載FastDFS,下載地址:https://github.com/happyfish100/fastdfs/releases
  • 下載安裝包:wget?https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz??-O fastdfs-5.11.tar.gz
  • 解壓下載下來的tar.gz包:tar -zxvf fastdfs-5.11.tar.gz
  • 切換到解壓后的目錄:cd fastdfs-5.11
  • 執行編譯: ./make.sh
  • 然后再執行安裝 ./make.sh install
  • 至此FastDFS安裝完成,安裝后所有編譯出來的文件存放在/usr/bin目錄下,所有配置文件存放在/etc/fdfs目錄下,使用命令查看:ll /usr/bin/fdfs*
  • 另外注意需要把解壓后的fastdfs-5.11/conf目錄下的兩個文件拷貝到/etc/fdfs/?
  • cp http.conf /etc/fdfs/
  • cp mime.types /etc/fdfs/
  • 這兩個文件后續需要用到,所以先拷貝過去,原因:讓fastdfs-nginx-module的配置文件調用
  • 七、FastDFS配置

  • FastDFS安裝后配置文件位于/etc/fdfs/目錄下,修改該目錄下的配置文件
  • 把所有的.sample后綴都去掉,使用 mv 命令改文件名,去掉文件名后綴。盡量使用cp復制在改名(備份,備份,備份)
  • 修改tracker.conf文件
  • base_path=/opt/fastdfs/tracker
  • 新建?mkdir -p /opt/fastdfs/tracke
  • 不然會報:
  • 修改storage.conf文件
  • base_path=/opt/fastdfs/storage
  • store_path0=/opt/fastdfs/storage/files
  • tracker_server=192.168.184.133:22122
  • 新建文件夾:
  • mkdir -p /opt/fastdfs/storage
  • mkdir -p /opt/fastdfs/storage/files
  • 如果配置store_path0該配置了,就得創鍵file文件,如果不配置則默認使用base_path
  • 然后啟動FastDFS
  • 八、FastDFS啟動

  • FastDFS服務啟動需要啟動兩個腳本:
  • 啟動FastDFS的tracker服務,在任意目錄下執行:fdfs_trackerd /etc/fdfs/tracker.conf
  • 啟動FastDFS的storage服務,在任意目錄下執行:fdfs_storaged /etc/fdfs/storage.conf
  • 首次啟動storage后,它會在配置的路徑下創建存儲文件的目錄,前提是配置的路徑要存在,不存在服務都起不來,所以上面七步驟中有提示要創鍵文件夾
  • 查看啟動進程:ps -ef | grep fdfs ,有啟動的執行命令即為啟動成功;
  • 查看storage是否已經登記到了tracker下:fdfs_monitor /etc/fdfs/storage.conf
  • 九、FastDFS關閉

  • 關閉FastDFS,執行如下命令:
  • 關閉tracker執行命令,在任意目錄下執行:fdfs_trackerd /etc/fdfs/tracker.conf stop
  • 關閉storage執行命令,在任意目錄下執行:fdfs_storaged /etc/fdfs/storage.conf stop
  • 或者kill關閉fastdfs,但不建議kill -9 強制關閉,因為可能會導致文件信息不同步問題
  • 十、FastDFS重啟

  • 重啟FastDFS,執行如下命令:
  • 重啟tracker執行命令:fdfs_trackerd /etc/fdfs/tracker.conf restart
  • 重啟storage執行命令:fdfs_storaged /etc/fdfs/storage.conf restart
  • 十一、FastDFS測試

  • FastDFS安裝完成之后,可以使用fdfs_test腳本測試文件上傳,執行命令:
  • 測試之前,需要修改client.conf配置文件,修改兩個配置:
  • base_path=/opt/fastdfs/client
  • tracker_server=192.168.184.133:22122
  • 新建文件夾:
  • mkdir -p /opt/fastdfs/client
  • 測試文件上傳,執行命令:
  • fdfs_test /etc/fdfs/client.conf upload /root/testfastfds.txt
  • 測試文件刪除,執行命令:
  • fdfs_delete_file ?/etc/fdfs/client.conf? group1/M00/00/00/wKi4hVzVCW-AR0ZTAAAAIIe1k0c233_big.txt
  • FastDFS生成的文件目錄結構及名稱示例:
  • ?
  • //一道亮麗的風景線//

    十二、安裝Nginx的FastDFS擴展模塊

  • 概述
  • 已經上傳到FastDFS文件系統中的文件,我們如何在瀏覽器中訪問呢?FastDFS?V4.05 以后的版本就把內置 HTTP服務去掉了,所以我們測試上傳成功了,但是卻無法訪問。
  • FastDFS提供了一個Nginx擴展模塊,利用該模塊,我們可以通過Nginx訪問已經上傳到FastDFS上的文件
  • 下載
  • 下載fastdfs的nginx擴展模塊源代碼:
  • wget?https://github.com/happyfish100/fastdfs-nginx-module/archive/73869650b6171fd6e5bf81b5b8caa89f021d6c7b.zip?-O fastdfs-nginx-module.zip
  • 解壓下載下來的fastdfs-nginx-module.zip 文件:
  • unzip fastdfs-nginx-module.zip
  • 安裝Nginx并且添加fastDFS模塊
  • 下載nginx:wget http://nginx.org/download/nginx-1.12.2.tar.gz
  • 解壓下載下來的nginx文件,執行命令:tar -zxvf nginx-1.12.2.tar.gz
  • 切換至解壓后的nginx主目錄,執行命令:cd nginx-1.12.2
  • 切換到解壓后的nginx-1.12.1目錄下,執行configure命令:
  • ./configure --prefix=/usr/local/fastdfs/nginx_fdfs --add-module=/home/soft/fastdfs/fastdfs-nginx-module-73869650b6171fd6e5bf81b5b8caa89f021d6c7b/src
  • 其中--prefix是指定nginx安裝路徑,--add-module指定fastDFS的nginx模塊的源代碼路徑
  • 執行命令進行編譯:make
  • 執行命令進行安裝:make install
  • 以上安裝Nginx的FastDFS擴展模塊注意事項
  • 我們知道,nginx是C語言開發,因此同樣需要gcc,還需要安裝pcre,因為nginx的http模塊需要用到pcre,還需要zlib,它提供了解壓縮,還需要openssl,Nginx的安裝需要Linux安裝相關的幾個庫,否則編譯會出現錯誤,這幾個庫分別是:
  • gcc編譯器是否安裝?
  • 檢查是否安裝:yum list installed | grep gcc
  • 執行安裝:yum install gcc -y
  • openssl庫是否安裝?
  • 檢查是否安裝:yum list installed | grep openssl
  • 執行安裝:yum install openssl openssl-devel -y
  • pcre庫是否安裝?
  • 檢查是否安裝:yum list installed | grep pcre
  • 執行安裝:yum install pcre pcre-devel -y
  • zlib庫是否安裝?
  • 檢查是否安裝:yum list installed | grep zlib
  • 執行安裝:yum install zlib zlib-devel -y
  • 一次性安裝,執行如下命令:
  • yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel -y
  • 配置
  • 將/home/soft/fastdfs/fastdfs-nginx-module-73869650b6171fd6e5bf81b5b8caa89f021d6c7b/src目錄下的mod_fastdfs.conf文件拷貝到 /etc/fdfs/目錄下,這樣才能正常啟動Nginx
  • mod_fastdfs.conf 專門配置Nginx的擴展模塊的
  • 修改mod_fastdfs.conf配置文件:
  • base_path=/opt/fastdfs/nginx_mod
  • tracker_server=192.168.184.133:22122
  • store_path0=/opt/fastdfs/storage/files
  • url_have_group_name = true
  • 創鍵文件夾:
  • mkdir -p /opt/fastdfs/nginx_mod
  • 其他路徑都存在所以不用創鍵
  • 配置Nginx的配置文件
  • #攔截請求路徑中包含 /group[1-9]/M0[0-9] 的請求,使用 fastdfs的Nginx 模塊進行轉發:
    location ~ /group[1-9]/M0[0-9] {
    ? ? ?ngx_fastdfs_module;
    }
  • 如果出現404訪問不到,檢查一下 url_have_group_name = false,如果為false改為true
  • 啟動與測試
  • 啟動帶有fastdfs模塊的Nginx
  • 重啟fastDFS服務進程,執行如下命令:(不重啟也可以)
  • fdfs_trackerd /etc/fdfs/tracker.conf restart
  • fdfs_storaged /etc/fdfs/storage.conf restart
  • 重新上傳一個文件進行測試驗證:fdfs_test /etc/fdfs/client.conf upload /root/testfastfdsnginx.txt
  • 在瀏覽器訪問上傳的文件,顯示訪問成功
  • 當遇到400錯誤, 檢查配置/etc/fdfs/mod_fastdfs.conf
  • url_have_group_name=true ?
  • 該配置表示訪問路徑中是否需要帶有group1,改為true表示路徑中需要有group1
  • 十三、FastDFS提供的主要功能

    ? ?upload:上傳文件,download:下載文件,delete:刪除文件

    十四、FastDFS文件系統的Java客戶端

  • 前提你電腦安裝了maven使用mvn命令操作一下就行了
  • fastDFS文件系統Java客戶端是指采用Java語言編寫的一套程序,專門用來訪問fastDFS文件系統
  • 由于maven倉庫里沒有該依賴所以:
  • 下載官方的源代碼:https://github.com/happyfish100/fastdfs-client-java/archive/master.zip
  • 解壓fastdfs-client-java-master,采用maven命令編譯成jar安裝到本地maven庫:mvn clean install
  • 在Java程序中使用它提供的API來訪問fastDFS文件系統
  • 十五、FastDFS開發示例

    使用Java客戶端,編程操作fastDFS分布式文件系統:

    引入依賴:

    <dependency><groupId>org.csource</groupId><artifactId>fastdfs-client-java</artifactId><version>1.27-SNAPSHOT</version> </dependency>

    代碼:

    在類路徑中配置該文件:fdfs_client.conf配置,tracker_server可以配置多個,配置多個tracker_server連接集群

    connect_timeout = 2 network_timeout = 30 charset = UTF-8 tracker_server=192.168.184.133:22122

    代碼:

    public class FastService {public static void main(String[] args) throws IOException, MyException {//1、初始化配置連接信息ClientGlobal.init("fdfs_client.conf");//檢查加載配置結果System.out.println("加載配置結果:ClientGlobal.configInfo(): " + ClientGlobal.configInfo());//2、創建一個Tracker的客戶端對象TrackerClient trackerClient = new TrackerClient();//3、通過Tracker的客戶端對象,獲取到一個Tracker服務器對象TrackerServer trackerServer = trackerClient.getConnection();//4、通過Tracker的客戶端對象和Tracker服務器對象,獲取到一個Storage服務器對象StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);//5、通過Tracker服務器對象和Storage服務器對象,構造一個Storage客戶端對象StorageClient storageClient = new StorageClient(trackerServer, storageServer);//有了上面的5步,接下來就可以正式去操作FastDFS了//文件上傳String[] strArray = storageClient.upload_file("G:/test.txt", "txt", null);for (String str : strArray) {System.out.println(str);}//文件下載,返回值0表示下載成功,其他值都是下載失敗,比如:-1, 1, -22 都是失敗的//strArray[0] group_name//strArray[1] remote_filename//G:/測試下載.txt local_filenameint download = storageClient.download_file(strArray[0], strArray[1], "G:/測試下載.txt");System.out.println("下載結果:"+download);//文件刪除,返回值0表示刪除成功,其他值都是刪除失敗,比如:-1, 1, -22 都是失敗的//int delete = storageClient.delete_file(strArray[0], strArray[1]);//System.out.println("刪除結果:"+delete);}}

    fastdfs-client-java-master里面的README.md說的很清楚了

    ?

    總結

    以上是生活随笔為你收集整理的FastDFS分布式文件系统介绍及单机版安装的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。