1. 程式人生 > >MFS分布式文件系統的原理及環境搭建

MFS分布式文件系統的原理及環境搭建

故障 firewalld 保存 tap 訪問 擴容 ports x86 pty

概述:
NFS網絡文件系統在性能與容量上無法勝任更高的要求,而本篇講的MFS(MooseFS)可以提供容量PB級別的共享存儲,無需昂貴的專業硬件服務器,自身就擁有冗余功能及動態擴容功能,能保證數據的安全性。`

分布式原理:

分布式文件系統(distributed file system)是指文件系統管理的物質存儲資源不一定直接連接在本地節點上,而是通過計算機網絡與節點相連。簡單說就是把一些分布在局域網內各個計算機上的共享文件夾,集合到一個虛擬共享文件夾內,客戶端訪問只需要打開這個虛擬共享文件夾即可。
分布式文件系統的優點:集中訪問、簡化操作、數據容災、提高了文件的存儲性能。

MFS原理:

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

MFS文件系統的組成架構:

技術分享圖片

* 元數據服務器(Master):在整個體系中負責管理文件系統,維護元數據。
* 元數據日誌服務器(MetaLogger):備份Master服務器的變化日誌文件,文件類型為changelog_ml.*.mfs 當Master服務器數據丟失或者損壞時,可以從日誌服務器中取得進行恢復。
* 數據存儲服務器(Chunk server):真正存儲數據的服務器。將文件分塊保存,並相互進行復制。
* 客戶端(Client):可以像掛載NFS一樣掛載MFS文件系統,其操作是相同的。

MFS讀取數據的處理過程:

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

MFS寫入數據的處理過程:

* 客戶端向元數據服務器發送寫入請求。
* 元數據服務器與Chunk server進行交互,但元數據服務器只在某些服務器創建新的分塊Chunks,創建成功後由Chunk server告知元數據服務器操作成功。
* 元數據服務器告知客戶端,可以在哪個Chunk server的哪些Chunks寫入數據。
* 客戶端向指定的Chunk server寫入數據。
* 該Chunk server與其他Chunk server進行數據同步,同步成功後Chunk server告知客戶端數據寫入成功。
* 客戶端告知元數據服務器本次寫入完畢。

接下來進行環境搭建實驗:

實驗環境部署:

技術分享圖片

主機 操作系統 IP地址 主要軟件
Master Server CentOS7.5 x86_64 192.168.138.138 mfs-1.6.27-5.tar.gz
Metalogger Server CentOS7.5 x86_64 192.168.138.128 mfs-1.6.27-5.tar.gz
Chunk Server01 CentOS7.5 x86_64 192.168.138.130 mfs-1.6.27-5.tar.gz
Chunk Server02 CentOS7.5 x86_64 192.168.138.139 mfs-1.6.27-5.tar.gz
Client CentOS7.5 x86_64 192.168.138.140 mfs-1.6.27-5.tar.gz/fuse-2.9.2.tar.gz

首先搭建master server:

安裝環境包:

* yum install -y zlib-devel gcc gcc-c++              #安裝所需的環境包
* useradd mfs -s /sbin/nologin                          #創建用戶mfs

解壓下載好的軟件包並進行手工編譯安裝:

* tar zxvf mfs-1.6.27-5.tar.gz -C /opt/
* cd mfs-1.6.27                     #切換到opt/mfs-1.6.27下插入如下配置
* ./configure --prefix=/usr/local/mfs --with-default-user=mfs \           
--with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
* make && make install

切換到配置文件下復制並去掉模板的dist後綴,開啟配置文件:

* cd /usr/local/mfs/etc/mfs/    
  cp mfsmaster.cfg.dist mfsmaster.cfg    
  cp mfsexports.cfg.dist mfsexports.cfg
  cp mfstopology.cfg.dist mfstopology.cfg
* cd /usr/local/mfs/var/mfs/
  cp metadata.mfs.empty metadata.mfs
* vim mfsmaster.cfg    #不需要改動
* vim mfsexports.cfg   #不需要改動

關閉防火墻、關閉增強×××:

* systemctl stop firewalld.service
* setenforce 0
* /usr/local/mfs/sbin/mfsmaster start    #開啟服務
* ps -ef | grep mfs        #查看監聽狀態
* /usr/local/mfs/sbin/mfsmaster -s  #停止

到此master server已經搭建完成,接下來搭建metalogger server:

安裝編譯環境、關閉防火墻、關閉增強×××:

* yum install -y zlib-devel gcc gcc-c++
* systemctl stop firewalld.service
* setenforce 0

創建mfs用戶,解壓軟件包進行手工編譯:

* useradd -s /sbin/nologin mfs
* tar xzvf mfs-1.6.27-5.tar.gz -C /opt/
* cd mfs-1.6.27
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
* make && make install

切換到配置文件下復制並去掉模板的dist後綴,開啟配置文件

* cd /usr/local/mfs/etc/mfs/
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsexports.cfg.dist mfsexports.cfg
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
* vim mfsmetalogger.cfg
MASTER_HOST = 192.168.138.138      去掉#註釋 添加主機地址
* cd /usr/local/mfs/var/mfs
  mv metadata.mfs.empty metadata.mfs
* /usr/local/mfs/sbin/mfsmetalogger start    #開啟服務

到此metalogger server已經搭建完成,接下來搭建兩臺節點服務器 chunk server:

先搭建第一臺chunk server:

* systemctl stop firewalld.service
* setenforce 0
* yum install -y zlib-devel gcc gcc-c++
* useradd -s /sbin/nologin mfs
* tar xzvf mfs-1.6.27-5.tar.gz -C /opt/
* cd /opt/mfs-1.6.27
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount
* make && make install
* cd /usr/local/mfs/etc/mfs/
  cp mfschunkserver.cfg.dist mfschunkserver.cfg
  cp mfshdd.cfg.dist mfshdd.cfg
*   vim mfschunkserver.cfg
MASTER_HOST = 192.168.138.138      去掉#註釋 添加主機地址
* vim mfshdd.cfg
/data               #末尾添加`` 提供存儲空間
* mkdir /data
* chown -R mfs:mfs /data
* /usr/local/mfs/sbin/mfschunkserver start
* netstat -ntap 
* 提示: 第一臺 chunk server搭建完成,第二臺和第一臺安裝配置是一樣的,這裏就不再寫了。

接下來配置客戶端:

* systemctl stop firewalld.service
* setenforce 0
* yum install -y zlib-devel
* tar xzvf fuse-2.9.2.tar.gz -C /opt/
* cd /opt/fuse-2.9.2
  ./configure
* make && make install 
* vim /etc/profile
  export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH  #末尾插入
* source /etc/profile
* 安裝mfs客戶端:
* useradd mfs -s /sbin/nologin
* tar zxvf mfs-1.6.27-5.tar.gz -C /opt/
* cd /opt/mfs-1.6.27
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount

* make && make install 
* mkdir /opt/mfs
* modprobe fuse  #加載fuse模塊到內核
* /usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.138.138   #指向master主機
* df -hT   #查看掛載
* umount /opt/mfs    #需要時可解掛載
* 優化客戶端:
* vim /etc/profile
* export PATH=/usr/local/mfs/bin:$PATH       #設置環境變量 在末尾插入
* cd /opt/mfs(可在mfs裏寫入內容進行驗證:echo "this is test" > test.txt)
* source /etc/profile    #重新加載
* mfsgetgoal -r /opt/mfs/
* mfsgetgoal -r 2 /opt/mfs/        #復制2份文件

最後一步在master server啟動監控程序:

* /usr/local/mfs/sbin/mfscgiserv
* http://192.168.138.138:9425        #客戶端瀏覽器上進行訪問測試

技術分享圖片

技術分享圖片

技術分享圖片

* 上述測試訪問到的MFS監控表中各部分的含義如下:
Info部分:顯示了MFS的基本信息
Server部分:列出現有的Chunk Server
Disks部分:列出每一臺Chunk Server的磁盤目錄及使用量
Exports部分:列出被共享的目錄,即可被掛載的目錄
Mounts部分:顯示被掛載的情況
Operations部分:顯示正在執行的操作
Master Charts部分:顯示Master Server的操作情況,包括讀取、寫入、創建目錄、刪除目錄等

本篇總結:

  • MFS是一個具有容錯性的網絡分布式文件系統,它把數據分散存放在多個物理服務器上,而呈現給用戶的是一個統一整合的資源。
  • MFS文件系統的組成包括 元數據服務器(Master)、元數據日誌服務器(MetaLogger)、數據存儲服務器(Chunk server)和客戶端(Client)。
  • 元數據服務器(Master)需要用到的配置文件有兩個,分別是mfsmaster.cfg和mfsexports,cfg.
  • 在元數據服務器(Master)發生故障時,可以從Metalogger中恢復Master.

MFS分布式文件系統的原理及環境搭建