1. 程式人生 > >CentOS 7下搭建MFS分布式文件系統

CentOS 7下搭建MFS分布式文件系統

行數 watermark login 分享 bin metal 復制。 path block

MFS原理

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

MFS文件系統的組成架構:

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

MFS讀取數據的過程:

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

MFS寫入數據的過程:

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

系統環境:

主機 操作系統 IP地址 軟件
Master Server CentOS 7.4 X86_64 192.168.100.131 mfs-1.6.27-5.tar.gz
MetaLogger Server CentOS 7.4 X86_64 192.168.100.132 mfs-1.6.27-5.tar.gz
Chunk Server 1 CentOS 7.4 X86_64 192.168.100.136 mfs-1.6.27-5.tar.gz
Cunk Server 2 CentOS 7.4 X86_64 192.168.100.138 mfs-1.6.27-5.tar.gz
Client CentOS 7.4 X86_64 192.168.100.135 mfs-1.6.27-5.tar.gz、fuse-2.9.2.tar.gz

操作步驟如下所示:

1.搭建Master Server

(1)下載源碼包及安裝包

#關閉防火墻及Selinux
systemctl stop firewalld.service
setenforce 0
#安裝相關依賴包
yum -y install gcc gcc-c++ zlib-devel 

(2)創建用戶

useradd -s /sbin/nologin -M mfs

(3)安裝源碼包

tar zxvf mfs-1.6.27-5.tar.gz -C /opt

cd /opt/mfs-1.6.27-5/

./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver \   #禁用mfschunkserver功能
--disable-mfsmount        #禁用mfsmout功能

make && make install

(4)復制文件

cd /usr/local/mfs/etc/mfs
cp mfsmaster.cfg.dist mfsmaster.cfg   #主配置文件
cp mfsexports.cfg.dist mfsexports.cfg #被掛載目錄及權限配置文件
cp mfstopology.cfg.dist mfstopology.cfg #角色分布文件

技術分享圖片

(5)防溢出

cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs

技術分享圖片

(6)主配置文件mfsmaster.cfg和被掛載目錄及權限配置文件mfsexports.cfg配置文件不需要修改

(7)啟動Master Server

/usr/local/mfs/sbin/mfsmaster start

技術分享圖片
技術分享圖片
停止Master Server的命令是/usr/local/mfs/sbin/mfsmaster -s

2.搭建MetaLoggerServer

(1)下載源碼包及安裝包

#關閉防火墻及Selinux
systemctl stop firewalld.service
setenforce 0
#安裝相關依賴包
yum -y install gcc gcc-c++ zlib-devel 

(2)創建用戶

useradd -s /sbin/nologin -M mfs

(3)安裝源碼包

tar zxvf mfs-1.6.27-5.tar.gz -C /opt

cd /opt/mfs-1.6.27-5/

./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver \   #禁用mfschunkserver功能
--disable-mfsmount    #禁用mfsmout功能

make && make install

(4)復制文件

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

技術分享圖片

(5)修改配置文件mfsmetalogger.cfg

vim /usr/local/mfs/etc/mfs/mfsmetalogger.cfg

    MASTER_HOST=192.168.100.131  #修改為Master Server的IP地址 

(6)啟動mfsmetalogger Server

/usr/local/mfs/sbin/mfsmetalogger start

技術分享圖片
技術分享圖片

3.搭建Chunk Server

兩臺搭建Chunk Server的步驟是相同的,其步驟如下所示:

(1)下載源碼包及安裝包

#關閉防火墻及Selinux
systemctl stop firewalld.service
setenforce 0
#安裝相關依賴包
yum -y install gcc gcc-c++ zlib-devel 

(2)創建用戶

useradd -s /sbin/nologin -M mfs

(3)安裝源碼包

tar zxvf mfs-1.6.27-5.tar.gz -C /opt

cd /opt/mfs-1.6.27-5/

./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster\   #禁用mfsmaster功能
--disable-mfsmount    #禁用mfsmount功能

make && make install

(4)復制文件

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

技術分享圖片

(5)修改配置文件mfschunkserver.cfg和mfshdd.cfg

vim /usr/local/mfs/etc/mfs/mfschunkserver.cfg

    MASTER_HOST=192.168.100.131  #修改為Master Server的IP地址 
    ..... #省略部分內容
vim /usr/local/mfs/etc/mfs/mfshdd.cfg    
    .....  #省略部分內容
    /data       #添加一行/data,作為MFS的分區.生產環境最好使用獨立分區或磁盤掛載到此目錄

(6)創建數據目錄

mkdir /data
chown -R mfs:mfs /data

(7)啟動mfschunk Server

/usr/local/mfs/sbin/mfschunkserver start

技術分享圖片

4.搭建客戶端

(1)下載源碼包及安裝包

#關閉防火墻及Selinux
systemctl stop firewalld.service
setenforce 0
#安裝相關依賴包
yum -y install gcc gcc-c++ zlib-devel 

(2)安裝FUSE

MFS客戶端依賴於FUSE

tar xzvf fuse-2.9.2.tar.gz

cd 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

(3)安裝MFS客戶端

useradd -s /sbin/nologin -M mfs

tar zxvf mfs-1.6.27-5.tar.gz -C /opt

cd /opt/mfs-1.6.27-5/
./configure --prefix=/usr/local/mfs \  
--with-default-user=mfs --with-default-group=mfs --disable-mfsmaster \   #禁用mfsmaster功能
--disable-mfschunkserver \ #禁用mfschunkserver功能
--enable-mfsmount  #啟用mfsmount功能

make && make install

(4)掛載MFS文件系統

mkdir /mnt/mfs   #創建掛載點

modprobe fuse    #加載fuse模塊到內核

/usr/local/mfs/bin/mfsmount /mnt/mfs -H 192.168.100.131   #掛載mfs

df -TH   #查看掛載情況

技術分享圖片

(5)MFS常用操作

為了方便使用MFS的命令,將/usr/local/mfs/bin加入到環境變量中。

vim /etc/profile

   export PATH=/usr/local/mfs/bin:$PATH   #添加

source /etc/profile    

mfssetgoal命令用來設置文件被復制的份數。
技術分享圖片
創建文件測試如下:
技術分享圖片
分別去2個chunkserver上查看數據目錄/data,結果如下所示:
技術分享圖片

5.MFS監控

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

在客戶端上通過瀏覽器訪問http://192.168.100.131:9425
技術分享圖片

CentOS 7下搭建MFS分布式文件系統