MFS分佈式文件系統

MFS分佈式文件系統

實驗環境:

  在公司內部通過nfs方式共享一個服務器的存儲空間,使得nfs服務器不堪重負,經常出現超時問題,爲了提高整個系統的性能,所以採用mfs分佈式文件系統,mfs分佈式文件系統是一個具有容錯功能、高可用、可擴展的海量級分佈式文件系統,mfs把數據分散在多臺服務器中,但用戶看到的只有一個源。

wKiom1gtde2jygBYAAFYHRkkKOY634.jpg-wh_50

實驗原理:

MFS讀取數據的處理過程:

1.clientmaster請求讀數據

2.master把所需數據存放的位置(chunk-serveripchunks編號)告知client

3.clientchunk-server請求發送數據

4.chunk-serverclient發送數據

MFS寫入數據的處理過程:

1.clientmaster發送寫請求

2.masterchunk-server交互,確認能提供寫入數據的chunk-server及其chunks編號

3.master將確認好的chunk-serveripchunks編號發給client

4.client將數據寫入到chunk-serverchunks編號的磁盤上

5.chunk-server與其他chunk-server進行數據同步,成功後告知client寫入成功

6.client告知master寫入結束

實驗步驟:

1.搭建元數據服務器mster server192.168.100.157

yum -y install zlib-devel                   安裝依賴包

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

wget ftp://ftp.linuxfan.cn/tools/mfs-1.6.27-5.tar.gz           下載源碼包

tar zxf mfs-1.6.27-5.tar.gz                      解壓

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

cd /usr/local/mfs/etc/mfs/                                   cd到配置文件目錄

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               複製配置文件

ls

/usr/local/mfs/sbin/mfsmaster start                      啓動masterserver

netstat -utpln |grep mfs                        查看其端口

##關閉mfsmaster使用/usr/local/mfs/sbin/mfsmaster -s       關閉masterserver

 

 

2.搭建元數據日誌服務器metalogger192.168.100.156

yum -y install zlib-devel                               

useradd -s /sbin/nologin mfs

wgetftp://ftp.linuxfan.cn/tools/mfs-1.6.27-5.tar.gz

tar zxf mfs-1.6.27-5.tar.gz

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

cd /usr/local/mfs/etc/mfs/

cp mfsmetalogger.cfg.dist mfsmetalogger.cfg           複製配置文件

sed -i '/mfsmaster/a MASTER_HOST =192.168.100.157' mfsmetalogger.cfg   修改masterserver服務器的地址

vim mfsmetalogger.cfg          ##驗證修改

/usr/local/mfs/sbin/mfsmetalogger start           啓動服務,關閉服務將start換成-s

ps aux |grep mfs                 查看進程

 

3.搭建數據存儲服務器chunk-server192.168.100.153-155

1chunk1192.168.100.155

yum -y install zlib-devel

useradd -s /sbin/nologin mfs

wgetftp://ftp.linuxfan.cn/tools/mfs-1.6.27-5.tar.gz

tar zxf mfs-1.6.27-5.tar.gz

cd 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.distmfschunkserver.cfg           複製主配置文件

cp mfshdd.cfg.dist mfshdd.cfg                複製掛載信息的配置文件

sed -i '/BIND_HOST/a MASTER_HOST =192.168.100.157' mfschunkserver.cfg        修改主配置文件中的masterserver

vim mfschunkserver.cfg                   驗證

echo "/data" >>mfshdd.cfg                在掛載信息的配置文件中添加需要共享的目錄,最好此目錄是獨立的磁盤或者分區

mkdir /data

chown -R mfs:mfs /data/         授權

/usr/local/mfs/sbin/mfschunkserverstart      啓動服務,停止服務將start換成-s

ps aux |grep mfs                      查看進程

cd

編寫腳本:方便別的數據存儲服務器的配置

exit  ##重新登錄

cat .bash_history>config_chunk_mfs.sh   ##將歷史命令重定向到腳本中

vi config_chunk_mfs.sh   ##修改內容如下,注意刪除兩vim命令

#!/bin/bash

#by linuxfan.cn 2016.3.21

yum -y install zlib-devel

useradd -s /sbin/nologin mfs

wgetftp://ftp.linuxfan.cn/tools/mfs-1.6.27-5.tar.gz

tar zxf mfs-1.6.27-5.tar.gz

cd 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.distmfschunkserver.cfg

cp mfshdd.cfg.dist mfshdd.cfg

sed -i '/BIND_HOST/a MASTER_HOST =192.168.100.157' mfschunkserver.cfg

echo "/data" >>mfshdd.cfg

mkdir /data

chown -R mfs:mfs /data/

/usr/local/mfs/sbin/mfschunkserver start

ps aux |grep mfs

cd

:wq

2)配置chunk2chunk3192.168.100.154-153

scp [email protected]:/root/config_chunk_mfs.sh  ./     下載chunk1的腳本到本地

sh -x config_chunk_mfs.sh          執行腳本

 

4.配置client端口:192.168.100.152

yum -y install zlib-devel            

wgetftp://ftp.linuxfan.cn/tools/fuse-2.9.2.tar.gz                     mfs客戶端依賴於FUSE

wgetftp://ftp.linuxfan.cn/tools/mfs-1.6.27-5.tar.gz

tar zxf fuse-2.9.2.tar.gz                   編譯安裝fuse

cd fuse-2.9.2

./configure &&make &&makeinstall

cd

echo "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH">>/etc/profile 設置環境變量

source /etc/profile        加載環境變量

echo $PKG_CONFIG_PATH              查看環境變量

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

tar xf mfs-1.6.27-5.tar.gz      編譯安裝mfs

cd 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

cd

mkdir /mnt/mfs      創建掛載點

modprobe fuse       加載fuse模塊到內核

lsmod |grep fuse      查看模塊

/usr/local/mfs/bin/mfsmount /mnt/mfs -H192.168.100.157     掛載mfs

df -h       查看掛載情況

echo "exportPATH=/usr/local/mfs/bin:$PATH" >>/etc/profile                  客戶端安裝完畢後,會生成/usr/local/mfs/bin/目錄,爲了方便使用mfs的命令,需要將其加入到環境變量中

source /etc/profile      加載環境變量

echo $PATH         查看環境變量

 

5.啓用MFS監控:192.168.100.157

mfscgiserv是用python編寫的web服務,監聽端口9425

/usr/local/mfs/sbin/mfscgiserv         啓動

netstat -utpln |grep 9425       查看端口

使用瀏覽器訪問:http://192.168.100.157:9425

wKioL1gtdySgrSMnAAHKmhO-dfg224.png-wh_50

 

6.MFS-client客戶端的使用:

sed -i '47aMANPATH  /usr/local/mfs/share/man'/etc/man.config   ##mfs的命令添加man幫助

man mfsmount   ##查看幫助

mfsgetgoal -r /mnt/mfs/        查看文件在存儲服務器複製的份數, -r 表示遞歸

mfssetgoal -r 2 /mnt/mfs/   ##設置文件複製的份數,份數必須小於等於存儲服務器的數量

cd /mnt/mfs/                   cd到掛載點

touch test                創建測試文件

mfsgetgoal test               查看測試文件複製幾份

 

7.維護MFS及災難恢復:

1MFS集羣的啓動與停止:

MFS的啓動順序:master元數據服務器-->chunkserver存儲服務器-->metalogger元數據日誌服務器-->client客戶端

MFS停止的順序:client(umount)客戶端-->chunkserver(-s)存儲服務器-->metalogger(-s)元數據日誌服務器-->master(-s)元數據服務器

2)恢復master:新安裝mfsmaster同樣配置-->複製metalogger的配置文件-->合併元數據changelogs

[email protected]:/usr/local/mfs/var/mfs/* /usr/local/mfs/var/mfs/

/usr/local/mfs/sbin/mfsmetarestore -mmetadata_ml.mfs.back -o metadata.mfs chagelog_ml.*.mfs

注:若更換master元數據服務器,存儲服務器和客戶端需要重新更改master服務器的ip地址

3)若直接斷電可能導致master有可能無法啓動,可以在master上執行/usr/local/mfs/sbin/mfsmetarestore-a進行修復

 

重點:

  • mfs是一個具有容錯性的網絡分佈式文件系統,他把數據分佈在多臺物理服務器中,而呈現給用戶的則是一個源;

  • mfs文件系統的組成包括元數據服務器master、元數據日誌服務器metalogger、數據存儲服務器chunk server、客戶端client

  • 元數據服務器master需要用到的配置文件有兩個,分別是mfsmaster.cfgmfsexports.cfg

  • 在元數據服務器master發生故障時,可以從metalogger日誌服務器中恢復master

  • 可以使用keepalived雙機熱備實現master服務器的高可用;

  • 注意在客戶端在掛載點創建文件時,可以設置此文件在存儲服務器的複製份數,若有兩臺存儲服務器(每臺的共享目錄容量爲10G),客戶端數據複製兩份,那麼這兩個存儲服務器都會存在客戶端創建的文件,此時兩臺存儲服務器的容量就是10G;三臺10G存儲服務器時,客戶端文件複製兩份,那麼存儲的總容量就是20G

擴展:

http://www.open-open.com/lib/view/open1375192526108.html   對比文件系統的區別

自主學習:

1.模擬一臺數據存儲服務器宕機,測試mfs文件系統;

2.實時增加一臺數據存儲服務器,驗證mfs擴容結果;

3.模擬master發生故障,從metalogger中恢復master


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