FastDFS文件管理系統

来源:https://www.cnblogs.com/chenzhazha/archive/2019/02/18/10395350.html
-Advertisement-
Play Games

一.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、文件尾碼名(由客戶端指定,主要用於區分文件類型)拼接而成。

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 昨天 2014年,媳婦坐月子,給媳婦買了mi6和一個小米平板2(16G)。是我們人生擁有的第一個平板,激動不已。 買之前看了小米平板1的口碑不錯,arm構架,NVIDIA的主板好像,圖形處理做得當然沒的說,買新不買舊買了2。 但據說小米意識到1代平板做得有點過於牛逼了,二代沒能超越。 重點是:換了 ...
  • 技術無所謂貴賤,既然曾經做過就總該是要留下點什麼,畢竟做技術這些年給我們留下太多太多的成長經歷,總有人問這些已經很皮毛了為什麼還要寫,其實沒那麼多花哨理由,就是想著做或者不做這一塊總是要對過往做個簡單歸總,習慣已成自然,雖然因為種種原因頻繁隔斷更新,但一有時間就想著寫點什麼,希望N年後還可以幫到更多... ...
  • 查看系統的shell: cat /etc/shells 文件測試表達式: -f 文件 文件存在且為普通文件則真,即測試表達式成立。 -d 文件 文件存在且為目錄文件則真,即測試表達式成立。 -s 文件 文件存在且文件大小不為0則真,即測試表達式成立。 -e 文件 文件存在則真,即測試表達式成立。只要 ...
  • su 切換用戶 用法:su [選項] [-] [用戶 [參數]... ] login-shell 與 no-login-shell 的區別login-shell 登錄時先去讀取 /etc/profile, 然後按照順序讀取 ~/.bash_profile 或者 ~/.bash_login 或者 ~/ ...
  • 首先-->搞了幾天的SpringBoot玩的差不多了,領導直接說, 別項目組需要做前後端分離,說前端缺少人手,沒有辦法咯,只能硬著頭皮去了, 說先學一下'vue',給我個文檔讓我學學,說是前半年的重點項目,那就開是搞吧! 這幾年沒有搞過前端了, 對前端實在是生疏,搞了一上午, 也沒搞出來一個什麼道道 ...
  • Linux版本 1、上傳JDK包至指定目錄,並解壓 2、配置JDK環境變數 打開/etc/profile配置文件 3、在文件末尾追加如下內容(要根據自己的JDK版本以及目錄作相應改動),並保存文件,退出編輯 4、使配置生效 5、驗證JDK配置正確與否 方式一,有類似如下圖內容輸出即配置成功 方式二, ...
  • 1、將以下安裝包複製到伺服器 mysql community client 5.7.24 1.sles12.x86_64.rpm mysql community server 5.7.24 1.sles12.x86_64.rpm mysql community libs 5.7.24 1.sles1 ...
  • 最近都在和Linux打交道,感覺還不錯。我覺得Linux相比windows比較麻煩的就是很多東西都要用命令來控制,當然,這也是很多人喜歡linux的原因,比較短小但卻功能強大。我將我瞭解到的命令列舉一下,僅供大家參考: 系統信息 arch 顯示機器的處理器架構(1) uname -m 顯示機器的處理 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...