MFS 分佈式文件系統 【CenOS 7 部署 + 源碼包提供】

目錄

1)MFS 文件系統的組成
2)MFS 讀寫數據的處理過程
3)MFS 搭建案例環境
4)MFS 搭建過程詳解
5)MFS 監控
6)文章總結node


1)MFS 文件系統的組成

MooseFS是一個具備容錯性的網絡分佈式文件系統。它把數據分散存放在多個物理服務器上,而呈現給用戶的則是一個統一的資源。python


獨有特徵
一、高可靠(數據的多個拷貝被存儲在不一樣的計算機上)
二、經過附加新的計算機或者硬盤能夠實現容量的動態擴展
三、刪除的文件能夠根據一個可配置的時間週期進行保留(一個文件系統級別的回收站)
四、不受訪問和寫入影響的文件連貫快照c++


體系機構
一、管理服務器(master server)
一臺管理整個文件系統的獨立主機,存儲着每一個文件的元數據(文件的大小、屬性、位置信息,包括全部很是規文件的全部信息,例如目錄、套接字、管道以及設備文件)
二、數據服務器羣(chunk servers)
任意數目的商用服務器,用來存儲文件數據並在彼此之間同步(若是某個文件有超過一個備份的話)
三、元數據備份服務器(metalogger server)
任意數量的服務器,用來存儲元數據變化日誌並週期性下載主要元數據文件,以便用於管理服務器意外中止時好接替其位置。
四、訪問mfs的客戶端
任意數量的主機,能夠經過mfsmount進程與管理服務器(接收和更改元數據)和數據服務器(改變實際文件數據)進行交流。vim


MFS 文件系統組成架構圖以下:瀏覽器

MFS 分佈式文件系統 【CenOS 7 部署 + 源碼包提供】


2)MFS 讀寫數據的處理過程

1·MFS 讀取數據的處理過程:服務器

  • > 客戶端向元數據服務器發出讀請求;
  • > 元數據服務器把所需數據存放的位子(chunk server 的 IP 地址和 Chunk編號)告知客戶端;
  • > 客戶端向已知的 chunk server 請求發送數據;
  • > chunk server 向客戶端發送數據;

以下圖:網絡

MFS 分佈式文件系統 【CenOS 7 部署 + 源碼包提供】


2·MFS 寫入數據的處理過程:session

  1. > 客戶端向元數據服務器發送寫入請求;
  2. > 元數據服務器與 chunk server 進行交互 (只有當所需的分塊 Chunks 存在的時候才進行這個交互),可是元數據服務器值在某寫服務器建立新的分塊 Chunks,建立成功後又由 chunk server 告知元數據服務器操做成功;
  3. > 元數據服務器告知客戶端,能夠在哪一個chunk server 的哪些 Chunks寫入數據;
  4. > 客戶端向指定的 chunk server 寫入數據;
  5. > 該 chunk server 與其餘 chunk server 進行數據同步,同步成功後 chunk server 告知
  6. > 客戶端數據寫入成功;
  7. > 客戶端告知元數據服務器本次寫入完畢。

以下圖:架構

MFS 分佈式文件系統 【CenOS 7 部署 + 源碼包提供】


3)MFS 案例環境介紹

分佈式原理:app

分佈式文件系統,就是把一些分散的 (分佈在局域網內各個計算機上)共享文件夾,集合到一個文件夾內(虛擬共享文件夾)。對於用戶來講,要訪問這些共享文件夾時,只要打開它就能夠看到全部連接到虛擬共享文件夾內的共享文件夾,用戶時感受不到這些時分散各個計算機的。它的好處是:集中訪問、簡化操做、數據容災,以及提升文件的存儲性能。


案例拓撲圖:
此篇文章是使用五臺服務器模擬搭建MFS文件系統,以下圖:
MFS 分佈式文件系統 【CenOS 7 部署 + 源碼包提供】


案例表格:

主機 操做系統 IP 地址 主要軟件
Master Server CenOS 7.4 192.168.154.128 mfs-1.6.27-5.tar.gz
MetaLogger Server CenOS 7.4 192.168.154.136 mfs-1.6.27-5.tar.gz
Chunk Server 1 CenOS 7.4 192.168.154.131 mfs-1.6.27-5.tar.gz
Chunk Server 2 CenOS 7.4 192.168.154.132 mfs-1.6.27-5.tar.gz
Client CenOS 7.4 192.168.154.130 mfs-1.6.27-5.tar.gz 、 fuse-2.9.2.tar.gz

源碼包下載:

MFS 源碼包 百度網盤連接 密碼:x4v5


4)MFS 搭建過程詳解

部署(Master Server)

1·部署元數據服務器 (Master Server),下載源碼包、關閉防火牆、安裝依賴包


[root@localhost Y2C]# yum install gcc gcc-c++ zlib-devel -y
[root@localhost Y2C]# systemctl stop firewalld.service 
[root@localhost Y2C]# setenforce 0

2·建立 mfs 管理用戶


[root@localhost Y2C]# useradd -s /sbin/nologin -M mfs


3·解壓、安裝源碼包


[root@localhost Y2C]# tar zxvf mfs-1.6.27-5.tar.gz -C /opt/
[root@localhost Y2C]# cd /opt/mfs-1.6.27
[root@localhost mfs-1.6.27]# ./configure \
  --prefix=/usr/local/mfs \     #指定安裝路徑
 --with-default-user=mfs \    #指定默認用戶爲 mfs
 --with-default-group=mfs \  #指定默認組爲 mfs 組
 --disable-mfschunkserver \  #關閉 數據存儲服務器
--disable-mfsmount              #關閉客戶端掛載功能  
[root@localhost mfs-1.6.27]# make && make install

4·把配置文件模板複製爲配置文件


[root@localhost mfs-1.6.27]# cd /usr/local/mfs/etc/mfs
[root@localhost mfs]# cp mfsexports.cfg.dist mfsexports.cfg
[root@localhost mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg
[root@localhost mfs]# cp mfstopology.cfg.dist mfstopology.cfg
[root@localhost mfs]# cd /usr/local/mfs/var/mfs
[root@localhost mfs]# cp metadata.mfs.empty metadata.mfs

5·以上配置文件無需修改就直接可使用,如今能夠啓動 Master Server


[root@localhost mfs]# /usr/local/mfs/sbin/mfsmaster start    #啓動mfs服務
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfsmaster modules ...
loading sessions ... file not found
if it is not fresh installation then you have to restart all active mounts !!!
exports file has been loaded
mfstopology: incomplete definition in line: 7
mfstopology: incomplete definition in line: 7
mfstopology: incomplete definition in line: 22
mfstopology: incomplete definition in line: 22
mfstopology: incomplete definition in line: 28
mfstopology: incomplete definition in line: 28
topology file has been loaded
loading metadata ...
create new empty filesystemmetadata file has been loaded
no charts data file - initializing empty charts
master <-> metaloggers module: listen on *:9419
master <-> chunkservers module: listen on *:9420
main master server module: listen on *:9421
mfsmaster daemon initialized properly
[root@localhost mfs]# ps -ef | grep mfs    #檢查服務是否啓動
mfs       46007      1  0 11:21 ?        00:00:00 /usr/local/mfs/sbin/mfsmaster start

中止 Master Server 的命令是:
[root@localhost mfs]# /usr/local/mfs/sbin/mfsmaster stop


部署 MetaLogger Server。和Master Server是同樣的過程

1·下載源碼包、關閉防火牆、安裝依賴包


[root@localhost Y2C]# yum install gcc gcc-c++ zlib-devel -y
[root@localhost Y2C]# systemctl stop firewalld.service 
[root@localhost Y2C]# setenforce 0

2·建立管理用戶、解壓、安裝源碼包

[root@localhost Y2C]# useradd -s /sbin/nologin -M mfs
[root@localhost Y2C]# tar zxvf mfs-1.6.27-5.tar.gz -C /opt
[root@localhost Y2C]# cd /opt/mfs-1.6.27
[root@localhost mfs-1.6.27]# ./configure \
  --prefix=/usr/local/mfs \
  --with-default-user=mfs \
  --with-default-group=mfs \
  --disable-mfschunkserver \
  --disable-mfsmount
[root@localhost mfs-1.6.27]# make && make install

3·把配置文件模板,複製爲配置文件

[root@localhost mfs-1.6.27]# cd /usr/local/mfs/etc/mfs
[root@localhost mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

4·修改 mfsmetalogger.cfg 配置文件

[root@localhost mfs]# vim mfsmetalogger.cfg 
修改內容以下:
MASTER_HOST = 192.168.154.128       #這裏 IP地址須要指向 Master Server 的 IP地址

5·啓動 MfsmetaLogger Server 服務

[root@localhost mfs]# /usr/local/mfs/sbin/mfsmetalogger start
[root@localhost mfs]# ps -elf |grep mfs     #查看服務是否啓動
5 S mfs       41488      1  0  61 -19 -  2967 poll_s 11:46 ?        00:00:00 /usr/local/mfs/sbin/mfsmetalogger start
0 S root      41508   1387  0  80   0 - 28180 -      11:48 pts/0    00:00:00 grep --color=auto mfs

部署 Chunk Server
此文章是兩臺 Chunk Server 服務器,每臺的搭建步驟是相同的 。

1· 下載源碼包、關閉防火牆、安裝依賴包

[root@localhost Y2C]# systemctl stop firewalld.service
[root@localhost Y2C]# setenforce 0
[root@localhost Y2C]# yum install gcc gcc-c++ zlib-devel -y

2·建立管理用戶 mfs 、解壓、安裝源碼包

[root@localhost Y2C]# tar zxvf mfs-1.6.27-5.tar.gz -C /opt
[root@localhost Y2C]# cd /opt/mfs-1.6.27
[root@localhost mfs-1.6.27]# useradd -s /sbin/nologin -M mfs
[root@localhost mfs-1.6.27]# ./configure \
  --prefix=/usr/local/mfs \
  --with-default-user=mfs \
  --with-default-group=mfs \
  --disable-mfsmaster \
  --disable-mfsmount
[root@localhost mfs-1.6.27]# make && make install

3·複製配置文件模板爲配置文件

[root@localhost mfs-1.6.27]# cd /usr/local/mfs/etc/mfs
[root@localhost mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg
[root@localhost mfs]# cp mfshdd.cfg.dist mfshdd.cfg

4·修改chunk server 配置文件

[root@localhost mfs]# vim mfschunkserver.cfg
修改內容以下:
MASTER_HOST = 192.168.154.128     #須要指向 Master Server 服務器IP地址
[root@localhost mfs]# vim mfshdd.cfg
添加以下內容:
/data         #這裏添加的 /data 是一個給 MFS 的分區,生產環境中最好使用獨立的分區或磁盤掛載到此目錄

MFS 分佈式文件系統 【CenOS 7 部署 + 源碼包提供】


5·建立 /data 目錄、給予管理用戶權限、啓動服務

[root@localhost mfs]# mkdir /data
[root@localhost mfs]# chown -R mfs.mfs /data
[root@localhost mfs]# /usr/local/mfs/sbin/mfschunkserver start
[root@localhost mfs]# netstat -antp | grep mfschunkserve   #查看啓動狀態

部署 Client 客戶端

1·另外一臺 mfschunk server 安裝配置都是相同,這裏就再也不重複介紹。如今開始部署 Client 客戶端。關閉防火牆、下載源碼包、安裝依賴包

[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install gcc gcc-c++ zlib-devel -y

2· 解壓 、 安裝軟件包 fuse

[root@localhost Y2C]# tar zxvf fuse-2.9.2.tar.gz -C /opt    #MFS 客戶端依賴於 fuse 因此這裏須要先安裝 fuse 這個包
[root@localhost Y2C]# cd /opt/fuse-2.9.2
[root@localhost fuse-2.9.2]# ./configure
[root@localhost fuse-2.9.2]# make && make install
設置環境變量:
[root@localhost ~]# vim /etc/profile
加入如下環境變量:
export  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
加載環境變量配置文件:
[root@localhost ~]# source /etc/profile

3·建立管理用戶 mfs ,解壓 mfs 源碼包、安裝

[root@localhost Y2C]# useradd -s /sbin/nologin mfs
[root@localhost Y2C]# tar zxvf mfs-1.6.27-5.tar.gz -C /opt
[root@localhost mfs-1.6.27]# ./configure \
  --prefix=/usr/local/mfs \
  --with-default-user=mfs \
  --with-default-group=mfs \
  --disable-mfsmaster \
  --disable-mfschunkserver \
  --enable-mfsmount      #開啓客戶端掛載功能
[root@localhost mfs-1.6.27]# make && make install

4·建立掛載點、加載內核模塊、掛載MFS

[root@localhost mfs-1.6.27]# mkdir /opt/mfs
[root@localhost mfs-1.6.27]# modprobe fuse
[root@localhost mfs-1.6.27]# /usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.154.128      # -H 指定元數據服務器 IP地址
mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root

5·查看掛載是否成功:

[root@localhost mfs-1.6.27]# df -h
MFS 分佈式文件系統 【CenOS 7 部署 + 源碼包提供】


6· MFS 經常使用操做
MFS 在客戶端安裝完畢後,會生成 /usr/local/mfs/bin/ 目錄,在這個目錄下會生成不少命令是用戶所須要的,爲了方便,能夠將 /usr/local/mfs/bin 加入環境變量中

[root@localhost mfs-1.6.27]# vim /etc/profile
加入以下內容:
export PATH=/usr/local/mfs/bin:$PATH

[root@localhost mfs-1.6.27]# source /etc/profile    #從新加載環境變量配置文件

7· mfsgetgoal 命令用來查詢文件被複制的分數,利用 -r 命能夠對整個目錄進行遞歸,goal 是指文件被複制份數

[root@localhost mfs-1.6.27]# mfsgetgoal -r /opt/mfs
/opt/mfs:
 directories with goal  1 :

8·mfssetgoal 命令用來設置文件被複制的份數,生產環境 Chunk Server 節點數量應該大於2,文件副本數小於等於 Chunk Server 服務器的數量。

[root@localhost mfs-1.6.27]# mfssetgoal -r 2 /opt/mfs
/opt/mfs:
 inodes with goal changed:               1
 inodes with goal not changed:           0
 inodes with permission denied:          0
[root@localhost mfs-1.6.27]# mfsgetgoal -r /opt/mfs
/opt/mfs:
 directories with goal  2 :

9·建立測試文件

[root@localhost mfs-1.6.27]# cd /opt/mfs
[root@localhost mfs]# echo "this is test" > test.txt

5)MFS 監控

Mfscgiserv 是用 python 編寫的一個Web 服務器,其監聽端口是 9425 ,能夠在 Master Server 上經過命令 /usr/local/mfs/sbin/mfscgiserv 來啓動,用戶利用瀏覽器就能夠全面監控全部客戶掛載、chunk server、master server,以及客戶端的各類操做等。


在 Master Server 上經過命令 /usr/local//mfs/sbin/mfscgiserv 啓動監控,經過瀏覽器訪問
http://192.168.154.128:9425/mfs.cgi 。以下圖:
MFS 分佈式文件系統 【CenOS 7 部署 + 源碼包提供】


下表是對 MFS 監控 的含義說明:

功能 含義
Info 顯示 MFS 的基本信息
Servers 列出現有 Chunk Server
Disks 列出現有 Chunk Server 的硬盤信息
Exports 列出可被掛載的目錄
Mounts 列出被掛載的目錄
operations 顯示正在執行的操做
Resources 列出當前存儲信息
Quotas 列出當前配額信息
Master Charts 顯示Master Server的操做狀況。如:讀、寫
Server Charts 顯示 Chunk server 的操做狀況。數據傳輸率及系統狀態

文章總結

  1. > MFS 是一個具備容錯性的網絡分佈式文件系統,它把數據分散存放在多個物理服務器上,而呈現給用戶的是一個統一的資源;
  2. > MFS文件系統的組成包括元數據服務器(Master)、元數據日誌服務器(MetaLogger)、數據存儲服務器(Chunk Server)和客戶端(Client)。
  3. > 元數據服務器(Master)須要用到的配置文件有兩個,分別是 mfsmaster.cfg和mfsexports.cfg
  4. > 在元數據服務器(Master)發生故障時,能夠從 MetaLogger種恢復Master
相關文章
相關標籤/搜索