MFS分佈式文件系統

MFS原理

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

1)MFS文件系統的組成

  • 元數據服務器(Master):在整個體系中負責管理文件系統,維護元數據。
  • 元數據日誌服務器(MetaLogger):備份Master服務器的變化日誌文件,文件類型爲changelog_ml.*.mfs。當Master服務器數據丟失或者損壞時,可以從日誌服務器中取得文件,進行恢復。
  • 數據存儲服務器(Chunk Server):真正存儲數據的服務器。存儲文件時,會把文件分塊保存,並在數據服務器之間進行復制。數據服務器越多,能使用的“容量”就越大,可靠性就越高,性能也就越好。
  • 客戶端(Client):可以像掛載NFS一樣掛載MFS文件系統,其操作是相同的。

    2)MFS讀取數據的處理過程。

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

    3)MFS寫入數據的處理過程。

  • 客戶端向元數據服務器發送寫入請求。
  • 元數據服務器與Chunk Server進行交互(只有當所需的分塊Chunks存在的時候才進行這個交互),但元數據服務器只在某些服務器創建新的分塊Chunks,創建成功後由Chunk Servers告知元數據服務器操作成功。
  • 元數據服務器告知客戶端,可以在哪個Chunk Server的哪些Chunks寫入數據。
  • 客戶端向指定的Chunks Server寫入數據。
  • 該Chunk Server與其他Chunk Server進行數據同步,同步成功後Chunk Server告知客戶端數據寫入成功。
  • 客戶端告知元數據服務器本次寫入完畢。

實驗環境

主機 IP地址 主要軟件
Master Server 192.168.58.10 mfs-1.6.27-5.tar.gz
MetaLogger Server 192.168.58.11 mfs-1.6.27-5.tar.gz
Chunk Server1 192.168.58.12 mfs-1.6.27-5.tar.gz
Chunk Server2 192.168.58.13 mfs-1.6.27-5.tar.gz
Client 192.168.58.14 mfs-1.6.27-5.tar.gz fuse-2.9.2.tar.gz

1.搭建Master Server

systemctl stop firewalld.service        //關閉防火牆及增強安全功能
systemctl disable firewalld.service
setenforce 0
yum install -y zlib-devel gcc gcc-c++   //安裝軟件包

useradd -s /sbin/nologin -M mfs     //創建用戶

mkdir /abc      //創建壓縮目錄
mount.cifs //192.168.58.22/share /abc           //掛載
cd /abc
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-mfschunkserver \
--disable-mfsmount

make && make install 

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

/usr/local/mfs/sbin/mfsmaster start         //啓動Master Server
ps -ef | grep mfs       //檢查是否啓動

/usr/local/mfs/sbin/mfsmaster -s //停止命令(選擇性使用)

2.搭建MetaLogger Server

systemctl stop firewalld.service        //關閉防火牆及增強安全功能
systemctl disable firewalld.service
setenforce 0
yum install -y zlib-devel gcc gcc-c++   //安裝軟件包

useradd -s /sbin/nologin -M mfs     //創建用戶

mkdir /abc      //創建壓縮目錄
mount.cifs //192.168.58.22/share /abc           //掛載
cd /abc
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-mfschunkserver \
--disable-mfsmount

make && make install

cd /usr/local/mfs/etc/mfs
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

vi mfsmetalogger.cfg
...
MASTER_HOST = 192.168.58.10         //修改爲Master Server的IP地址
...

/usr/local/mfs/sbin/mfsmetalogger start
ps -ef | grep mfs

/usr/local/mfs/sbin/mfsmetalogger -s        //停止MetaLogger Server(選擇性使用)

3.搭建Chunk Server1、Chunk Server2

systemctl stop firewalld.service        //關閉防火牆及增強安全功能
systemctl disable firewalld.service
setenforce 0
yum install -y zlib-devel gcc gcc-c++   //安裝軟件包

useradd -s /sbin/nologin -M mfs     //創建用戶

mkdir /abc      //創建壓縮目錄
mount.cifs //192.168.58.22/share /abc           //掛載
cd /abc
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-mfsmount

make && make install

cd /usr/local/mfs/etc/mfs
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dsit mfshdd.cfg

vi mfschunkserver.cfg
...
MASTER_HOST = 192.168.58.10    //修改爲Master Server的IP地址
...

vi mfshdd.cfg
/data       //末尾添加一行,這裏的/data是一個給MFS的分區

mkdir /data                     /創建相應/data目錄
chown -R mfs:mfs /data          //修改屬主屬組

/usr/local/mfs/sbin/mfschunkserver start     //啓動Chunk Server
/usr/local/mfs/sbin/mfschunkserver -s       //關閉Chunk Server (選擇性使用)

4.客戶端配置

systemctl stop firewalld.service        //關閉防火牆及增強安全功能
systemctl disable firewalld.service
setenforce 0
yum install -y zlib-devel gcc gcc-c++   //安裝軟件包

4.1安裝FUSE

tar xzvf fuse-2.9.2.tar.gz -C /opt      //先掛載好,然後到目錄下解壓
cd /opt/fuse-2.9.2  

./configure
make && make install

vi /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH    //添加到末尾
source /etc/profile

4.2安裝MFS客戶端

useradd -s /sbin/nologin -M mfs
cd /abc
tar zxvf mfs -C /opt

cd /opt/mfs
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \
--disable-mfsmaster \
--disable-mfschunkserver \
--enable-mfsmount                   //開啓MFS掛載功能

make && make install

mkdir /opt/mfs              //創建掛載點
modprobe fuse          //加載fuse模塊到內核
/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.58.10
df -hT          //查看掛載情況

vi /etc/profile                     //優化客戶端
export PATH=/usr/local/mfs/bin:$PATH            //添加/usr/local/mfs/bin至環境變量
source /etc/profile

5.MFS監控

Mfscgiserv是用python編寫的一個Web服務器,其監聽端口是9425,可以在Master Server上通過命令/usr/local/mfs/sbin/mfscgiserv來啓動,用戶利用瀏覽器就可以全面監控所有客戶掛載、Chunk Server、Master Server,以及客戶端的各種操作等。
客戶端上通過瀏覽器訪問http://192.168.58.10:9425

MFS分佈式文件系統

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章