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

概述:

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

分佈式原理:

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

MFS原理:

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告知客戶端數據寫入成功。
* 客戶端告知元數據服務器本次寫入完畢。

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

實驗環境部署:

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

主機 操做系統 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:

安裝環境包:c++

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

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

* 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分佈式文件系統的原理及環境搭建

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

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

* 上述測試訪問到的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.
相關文章
相關標籤/搜索