1. 程式人生 > >FastDFS分散式檔案系統配置與部署

FastDFS分散式檔案系統配置與部署

一文搞定FastDFS分散式檔案系統配置與部署

閱讀目錄

Ubuntu下FastDFS分散式檔案系統配置與部署

白寧超

2017年4月15日09:11:52

摘要: FastDFS是一個開源的輕量級分散式檔案系統,功能包括:檔案儲存、檔案同步、檔案訪問(檔案上傳、檔案下載)等,解決了大容量儲存和負載均衡的問題。特別適合中小檔案(建議範圍:4KB < file_size <500MB),對以檔案為載體的線上服務,如相簿網站、視訊網站等。本文通過兩次單機環境配置均沒有錯誤,第1-4章節主要是對FastDFS背景發展原理及linux基本介紹,如果讀者只是安裝分散式檔案系統,只是想簡單關注其原理,建議閱讀第二節與第五節。如果讀者僅僅就是安裝為目的建議直接閱讀弟五節5節。本人郵箱:

[email protected],主頁:http://www.cnblogs.com/baiboy/(本文原創/整理,轉載請標註原文出處:Ubuntu下FastDFS分散式檔案系統配置與部署 ) 

1 分散式檔案系統介紹


分散式檔案系統:Distributed file system, DFS,又叫做網路檔案系統:Network File System。一種允許檔案通過網路在多臺主機上分享的檔案系統,可讓多機器上的多使用者分享檔案和儲存空間。

特點:在一個分享的磁碟檔案系統中,所有節點對資料儲存區塊都有相同的訪問權,在這樣的系統中,訪問許可權就必須由客戶端程式來控制。分散式檔案系統可能包含的功能有:透通的資料複製與容錯。

分散式檔案系統是被設計用在區域網。而分散式資料儲存,則是泛指應用分散式運算技術的檔案和資料庫等提供資料儲存服務的系統。

決定因素:資料的儲存方式、資料的讀取速率、資料的安全機制。

發展歷史:大致分為三個發展階段,網路檔案系統(1980s)、共享SAN檔案系統(1990s)、面向物件的並行檔案系統(2000s)

概述:FastDFS是一個開源的輕量級分散式檔案系統,功能包括:檔案儲存、檔案同步、檔案訪問(檔案上傳、檔案下載)等,解決了大容量儲存和負載均衡的問題。特別適合中小檔案(建議範圍:4KB < file_size <500MB),對以檔案為載體的線上服務,如相簿網站、視訊網站等。

2 系統架構介紹


FastDFS由跟蹤伺服器(Tracker Server)、儲存伺服器(Storage Server)和客戶端(Client)構成。

跟蹤伺服器Tracker Server

主要做排程工作,起到均衡的作用;負責管理所有的 storage server和 group,每個 storage 在啟動後會連線 Tracker,告知自己所屬 group 等資訊,並保持週期性心跳。tracker根據storage的心跳資訊,建立group==>[storage serverlist]的對映表。

Tracker需要管理的元資訊很少,會全部儲存在記憶體中;另外tracker上的元資訊都是由storage彙報的資訊生成的,本身不需要持久化任何資料,這樣使得tracker非常容易擴充套件,直接增加tracker機器即可擴充套件為tracker cluster來服務,cluster裡每個tracker之間是完全對等的,所有的tracker都接受stroage的心跳資訊,生成元資料資訊來提供讀寫服務。

儲存伺服器Storage Server

主要提供容量和備份服務;以 group 為單位,每個 group 內可以有多臺 storage server,資料互為備份。以group為單位組織儲存能方便的進行應用隔離、負載均衡、副本數定製(group內storage server數量即為該group的副本數),比如將不同應用資料存到不同的group就能隔離應用資料,同時還可根據應用的訪問特性來將應用分配到不同的group來做負載均衡;缺點是group的容量受單機儲存容量的限制,同時當group內有機器壞掉時,資料恢復只能依賴group內地其他機器,使得恢復時間會很長。

group內每個storage的儲存依賴於本地檔案系統,storage可配置多個數據儲存目錄,比如有10塊磁碟,分別掛載在/data/disk1-/data/disk10,則可將這10個目錄都配置為storage的資料儲存目錄。storage接受到寫檔案請求時,會根據配置好的規則選擇其中一個儲存目錄來儲存檔案。為了避免單個目錄下的檔案數太多,在storage第一次啟動時,會在每個資料儲存目錄裡建立2級子目錄,每級256個,總共65536個檔案,新寫的檔案會以hash的方式被路由到其中某個子目錄下,然後將檔案資料作為本地檔案儲存到該目錄中。

客戶端Client

主要是上傳下載資料的伺服器,也就是我們自己的專案所部署在的伺服器。每個客戶端伺服器都需要安裝Nginx

基本架構如下圖所示。

 

FastDFS的儲存策略

為了支援大容量,儲存節點(伺服器)採用了分卷(或分組)的組織方式。儲存系統由一個或多個卷組成,卷與卷之間的檔案是相互獨立的,所有卷的檔案容量累加就是整個儲存系統中的檔案容量。一個卷可以由一臺或多臺儲存伺服器組成,一個卷下的儲存伺服器中的檔案都是相同的,卷中的多臺儲存伺服器起到了冗餘備份和負載均衡的作用。

在卷中增加伺服器時,同步已有的檔案由系統自動完成,同步完成後,系統自動將新增伺服器切換到線上提供服務。當儲存空間不足或即將耗盡時,可以動態添加捲。只需要增加一臺或多臺伺服器,並將它們配置為一個新的卷,這樣就擴大了儲存系統的容量。

FastDFS的上傳過程

FastDFS向使用者提供基本檔案訪問介面,比如upload、download、append、delete等,以客戶端庫的方式提供給使用者使用。

我們知道Storage Server會定期的向Tracker Server傳送自己的儲存資訊。當Tracker Server Cluster中的Tracker Server不止一個時,各個Tracker之間的關係是對等的,所以客戶端上傳時可以選擇任意一個Tracker。

當Tracker收到客戶端上傳檔案的請求時,會為該檔案分配一個可以儲存檔案的group,當選定了group後就要決定給客戶端分配group中的哪一個storage server。當分配好storage server後,客戶端向storage傳送寫檔案請求,storage將會為檔案分配一個數據儲存目錄。然後為檔案分配一個fileid,最後根據以上的資訊生成檔名儲存檔案。檔名的格式如下:

FastDFS的檔案同步

寫檔案時,客戶端將檔案寫至group內一個storage server即認為寫檔案成功,storage server寫完檔案後,會由後臺執行緒將檔案同步至同group內其他的storage server。

每個storage寫檔案後,同時會寫一份binlog,binlog裡不包含檔案資料,只包含檔名等元資訊,這份binlog用於後臺同步,storage會記錄向group內其他storage同步的進度,以便重啟後能接上次的進度繼續同步;進度以時間戳的方式進行記錄,所以最好能保證叢集內所有server的時鐘保持同步。

storage的同步進度會作為元資料的一部分彙報到tracker上,tracke在選擇讀storage的時候會以同步進度作為參考。

FastDFS的檔案下載

客戶端uploadfile成功後,會拿到一個storage生成的檔名,接下來客戶端根據這個檔名即可訪問到該檔案。

跟upload file一樣,在downloadfile時客戶端可以選擇任意tracker server。tracker傳送download請求給某個tracker,必須帶上檔名資訊,tracke從檔名中解析出檔案的group、大小、建立時間等資訊,然後為該請求選擇一個storage用來服務讀請求。

3 FastDFS效能方案


4 Linux基本命令操作


 

系統的基本操作

Ctrl+Alt+shift+Fn 切換終端

ls –l 檢視

su - username 切換登入

Reboot 重啟

pwd 當前路徑

shutdown -r now 關機

whereis filename 檔案路徑

rm –rf 刪除

touch 檔名 建立檔案

cp path1 path2 複製檔案

mkdir 建立目錄

mv 移動改名

Vi環境

vi filename 開啟檔案

i 插入

Esc 退出

dd 刪除行

x Esc下刪除

wq 儲存

a 插入游標後面

o 插入下一行

hjkl 左下上右

Ctrl+b 向後翻頁

Ctrl+f 向前翻頁

/ Esc下查詢

r 替換游標處文字

u 撤銷

壓縮與解壓

gzip 壓縮gz檔案

unzip 解壓zip

tar -czvf file1 file2 壓縮

tar -zxvf file 解壓.tar.gz

linux系統修改編碼

#vi /etc/sysconfig/i18n 將原內容

1 2 LANG= "en_US.UTF-8" SYSFONT= "latarcyrheb-sun16"

修改為

1 2 3 4 5 6 7 LANG= "zh_CN.GB18030"   LANGUAGE= "zh_CN.GB18030:zh_CN.GB2312:zh_CN"   SUPPORTED= "zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"   SYSFONT= "lat0-sun16"

Ubuntu初始化root密碼:

1 sudo passwd

Ubuntu配置VmwareTools工具:先下載然後找到檔案拷貝桌面並解壓,隨後找到檔案一路安裝。

5 安裝VirtualBox虛擬機器並配置Ubuntu


 

6 Ubuntu環境下安裝並配置FastDFS


 

虛擬機器

Oracle VM VirtualBox

作業系統

Ubuntu16.04

Fastdfs必備軟體(本文軟體下載均採用wget方式)

fastdfs-5.05 、 fastdfs-nginx-module-v1.16 、 libfastcommon-v1.0.7

Nginx

nginx-1.10.1 

Fastdfs主頁

https://github.com/happyfish100/fastdfs

聯網模式

NAT自動轉換模式

IP地址

自動生成,ifconfig檢視,本文是10.0.2.15

6.1 基本操作與配置

切換到root角色操作:sudo passwd #修改root許可權密碼

建立必要資料夾

1 2 3 4 5 6 mkdir /software #下載tar.zp軟體包並安裝 mkdir /software/testfile #上載檔案測試資料夾 mkdir /data #fastdfs根檔案 mkdir /data/fastdfs/track #tracker檔案配置路徑 mkdir /data/fastdfs/storage #storage配置路徑 mkdir /data/fastdfs/cli    ntlog #client配置路徑

6.2 安裝libfastcommon與FastDFS

(1) 下載安裝libfastcommon

1 2 cd /software wget https: //github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz

解壓 libfastcommon:

tar -zxvf V1.0.7.tar.gz

進入libfastcommon-1.0.7裡面,進行編譯和安裝:

1 2 3 cd libfastcommon-1.0.7 ./make.sh ./make.sh install

(2) 下載安裝 FastDFS,這裡也是通過wget下載。

1

相關推薦

FastDFS分散式檔案系統配置部署

一文搞定FastDFS分散式檔案系統配置與部署 閱讀目錄 1 分散式檔案系統介紹 2 系統架構介紹 3 FastDFS效能方案 4 Linux基本命令操作 5 安裝VirtualBox虛擬機器並配置Ubuntu

一文搞定FastDFS分散式檔案系統配置部署

相關文章 1 分散式檔案系統介紹 分散式檔案系統:Distributed file system, DFS,又叫做網路檔案系統:Network File System。一種允許檔案通過網路在多臺主機上分享的檔案系統,可讓多機器上的多使用者分享檔案和儲存空間。 特點:在一個分享的磁碟檔案系統中

FastDFS分散式伺服器系統配置部署

1、什麼是FastDFS: FastDFS 是用 C 語言編寫的一款開源的分散式檔案系統。FastDFS 為網際網路量身定製, 充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用 FastDFS 很容易搭建一套高效能的檔案伺服器叢集提供檔案上傳、下載等

FastdfsFastdfs分散式檔案系統的安裝部署使用,以及fastdfs連線池connectionpool編寫使用

環境:centos 7.X 預編譯安裝元件 yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel libevent-dev git -y 以上安裝完,後續的各

FastdfsFastdfs分散式檔案系統的安裝部署使用,結合nginx訪問圖片,fastdfs連線池connectionpool編寫使用,文末有github連結

環境:centos 7.X 預編譯安裝元件 yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel libevent-dev git -y   以上安裝

FastDFS分散式檔案系統安裝使用(單節點)

FastDFS是由淘寶的餘慶先生所開發,是一個輕量級、高效能的開源分散式檔案系統,用純C語言開發,包括檔案儲存、檔案同步、檔案訪問(上傳、下載)、存取負載均衡、線上擴容、相同內容只儲存一份等功能,適合有大容量儲存需求的應用或系統。做分散式系統開發時,其中要解

FastDFS分散式檔案系統在Linux上的部署和安裝

最近空閒之餘,對分散式檔案系統感興趣就研究研究。 首先要知道FastDFS的定義:FastDFS是用c語言編寫的一款開源的分散式檔案系統。FastDFS為網際網路量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用FastDFS很容易搭

FastDFSFastDFS 分散式檔案系統的安裝使用,看這一篇就夠了!!

## 寫在前面 > 有不少小夥伴在實際工作中,對於如何儲存檔案(圖片、視訊、音訊等)沒有一個很好的解決思路。都明白不能將檔案儲存在單臺伺服器的磁碟上,也知道需要將檔案進行副本備份。如果自己手動寫檔案的副本機制,那就太麻煩了,這會涉及冗餘副本機制、伺服器的排程、副本檢測、伺服器節點檢測、檔案副本存放策略

FastDFS分散式檔案系統 -- 工作原理

FastDFS介紹 FastDFS分散式檔案管理系統,是用 c 語言編寫的一款開源的分散式檔案系統。FastDFS 為網際網路量身定製, 充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用 FastDFS 很容易搭建一套高效能的檔案伺服器叢集提供檔案上傳、

上傳圖片至fastdfs分散式檔案系統並回顯

事件,當我們瀏覽完圖片選中一張時,觸發onchange事件將圖片上傳到伺服器並回顯、 1 <img width="100" height="100" id="allUrl" src="${brand.imgUrl }"/> 2 <input type="hidden" name

第五十二章:FastDFS分散式檔案系統

資料下載 大綱     FastDFS架構包括Tracker server 和 Storage server 。客戶端請求Tracker server 進行檔案上傳、下載,通過Ttacker server 排程,最總

Dubbo+Zookeeper架構—高階篇20-fastdfs分散式檔案系統的安裝

目錄 FastDFS簡介 系統架構 系統架構-下載檔案流程圖 相關術語 同步機制 •同一組內的storage server之間是對等的,檔案上傳、刪除等操作可以在任意一臺storage server上進行; 安裝 環境資訊 一、所有跟蹤伺服器和儲存伺服器均執行如下

mfs分散式檔案系統配置

MFS是什麼 MFS全稱MooseFS,是檔案管理系統的抽象層,將使用者的資料通過master之後,儲存在多個網路儲存節點上面,這個過程對於使用者來說時透明的,並且MFS具有很強大的網路容錯能力;MFS的特性 1.是一個通用的檔案系統,不需要商城應用軟體提供介面,直接可以進

【 專欄 】- 實戰FastDFS分散式檔案系統

實戰FastDFS分散式檔案系統 大型網際網路應用高速增長,導致傳統的檔案系統無法滿足效能要求,隨之應運而生的是分散式檔案系統。FastDFS是一款輕量級、高可靠性、具有資料備份功能、適用於小型檔案應用場景的分散式檔案系統。

FastDFS分散式檔案系統之二】:FastDFS檔案上傳效能測試及Python客戶端上傳操作

  由於要對比swift上傳小檔案以及fdfs上傳小檔案的效能,故做效能測試。 1.1 測試環境: FastDFS叢集的搭建方法:【FastDFS分散式檔案系統之一】:搭建、部署、配置 tracker server1:node2 tracker server2:node3

Java利用fastdfs-client-java開發工具包操作FastDFS分散式檔案系統

org.csource.common.MyException: getStoreStorage fail, errno code: 2 at org.csource.fastdfs.StorageClient.newWritableStorageConnection(StorageClient.java:1

Fastdfs分散式檔案系統檔案同步機制

原連結 http://blog.csdn.net/mr_smile2014/article/details/52118541 FastDFS同步相關檔案: a)10.100.66.82_23000.mark 內容如下: binlog_index=0 binlog

fastdfs分散式檔案系統之TrackerServer連線池實現

非常感謝  http://blog.csdn.net/Mr_Smile2014/article/details/52441824 公司使用fastdfs檔案系統來儲存檔案和圖片,為了避免每個系統都直接通過客戶端直接訪問fastdfs檔案系統,所以我們做了一個

FastDFS 分散式檔案系統詳解

## 什麼是檔案系統 ![](https://mrhelloworld.com/resources/articles/fastdfs/20180810094347_11565.jpg " ")   檔案系統是作業系統用於在磁碟或分割槽上組織檔案的方法和資料結構。磁碟空間是什麼樣的我們並不清楚,但檔案系統可

分散式檔案系統FastDFS配置使用

       FastDFS 是一個用C語言編寫的分散式檔案系統,剛開始接觸FastDFS的時候,是因為檔案同步。後來發現自己完全理解錯誤,FastDFS並不是Rsync那樣檔案同步,但是既然開始了就繼續深入瞭解她。FastDFS支援的檔案同步是把檔案上傳到排程器(trac