MFS分佈式文件系統(理論+實戰)

一、MFS簡介

MFS 正式推出是在2008 年 5 月, 是一個具有容錯功能的、 高可用、 可擴展的海量級分佈式文件系統。 MFS 把數據分散在多臺服務器上, 但用戶看到的只是一個源。 MFS 也像其他類 UNIX 文件系統一樣,包含了層級結構、 文件屬性, 可以創建特殊的文件(塊設備、 字符設備、 管道、 套接字)、符號鏈接和硬鏈接。

1.1、MFS優勢

  • 集中訪問
  • 簡化操作
  • 數據容災
  • 提高文件存取性能

1.2、MFS原理

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

1.3、MFS文件系統的組成

  • 元數據服務器(Master): 在整個體系中負責管理文件系統, 維護元數據

  • 元數據日誌服務器(MetaLogger): 備份 Master 服務器的變化日誌文件, 文件類型爲 changelog_ml.*.mfs。 當 Master 服務器數據丟失或者損壞,可以從日誌服務器中取得文件恢復

  • 數據存儲服務器(Chunk Server): 真正存儲數據的服務器。 存儲文件時, 會把文件分塊保存, 並在數據服務器之間複製, 數據服務器越多, 能使用的“容量” 就越大, 可靠性就越高, 性能越好。

  • 客戶端(Client): 可以像掛載 NFS 一樣掛載 MFS 文件系統, 其操作是相同的。

二、MFS分佈式文件系統部署

2.1、部署準備

準備六臺虛擬機,都要關閉防火牆、關閉核心防護、配置主機名、配置yum,配置hosts文件。
在這裏插入圖片描述

●關閉防火牆
systemctl stop firewalld
systemctl disable firewalld

●關閉核心防護
setenforce 0
vi /etc/sysconfig/selinux 
SELINUX=disabled

●配置主機名
hostnamectl set-hostname mfsmaster
hostnamectl set-hostname metalogger
hostnamectl set-hostname chunk1
hostnamectl set-hostname chunk2
hostnamectl set-hostname chunk3
hostnamectl set-hostname client

●配置hosts文件
vi /etc/hosts
192.168.100.129     mfsmaster
192.168.100.131    	metalogger
192.168.100.132      chunk1
192.168.100.133     chunk2
192.168.100.134    chunk3
192.168.100.135     client

●安裝編譯包
yum -y install gcc gcc-c++ make zlib-devel

2.2、搭建 Master Server

//創建用戶
[root@mfsmaster ~]# useradd -s /sbin/nologin -M mfs

//安裝源碼包  
[root@mfsmaster opt]# tar xzvf moosefs-3.0.100-1.tar.gz -C /opt/
[root@mfsmaster opt]# cd /opt/moosefs-3.0.100/

[root@mfsmaster moosefs-3.0.100]# 
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \
--disable-mfsmount

[root@mfsmaster moosefs-3.0.100]# make && make install

//複製 master 配置文件
[root@mfsmaster moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs/
[root@mfsmaster mfs]# ll
總用量 24
總用量 24
-rw-r--r--. 1 root root 4057 3月  24 17:05 mfsexports.cfg.sample
-rw-r--r--. 1 root root 8597 3月  24 17:05 mfsmaster.cfg.sample
-rw-r--r--. 1 root root 2175 3月  24 17:05 mfsmetalogger.cfg.sample
-rw-r--r--. 1 root root 1052 3月  24 17:05 mfstopology.cfg.sample
[root@mfsmaster mfs]# cp mfsmaster.cfg.sample mfsmaster.cfg
[root@mfsmaster mfs]# cp mfsexports.cfg.sample mfsexports.cfg
[root@mfsmaster mfs]# cp mfstopology.cfg.sample mfstopology.cfg

[root@mfsmaster mfs]# cd /usr/local/mfs/var/mfs/
[root@mfsmaster mfs]# cp metadata.mfs.empty metadata.mfs

[root@mfsmaster mfs]# chown mfs:mfs /usr/local/mfs/var/mfs

[root@mfsmaster mfs]# /usr/local/mfs/sbin/mfsmaster start      #####啓動   
####停止 Master Server 的命令是/usr/local/mfs/sbin/mfsmaster stop###

[root@mfsmaster mfs]# netstat -anpt | grep mfs
tcp        0      0 0.0.0.0:9419            0.0.0.0:*               LISTEN      100461/mfsmaster    
tcp        0      0 0.0.0.0:9420            0.0.0.0:*               LISTEN      100461/mfsmaster    
tcp        0      0 0.0.0.0:9421            0.0.0.0:*               LISTEN      100461/mfsmaster 
端口介紹:
9419----元數據日誌服務器
9420----元數據存儲
9421----客戶端用的

2.3、搭建 MFS 日誌服務器

//創建用戶
[root@metalogger ~]# useradd -s /sbin/nologin -M mfs

//安裝源碼包   
[root@metalogger opt]# tar xzvf moosefs-3.0.100-1.tar.gz -C /opt/
[root@metalogger opt]# cd /opt/moosefs-3.0.100/

[root@metalogger moosefs-3.0.100]# 
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \
--disable-mfsmount

[root@metalogger moosefs-3.0.100]# make && make install

//安裝源碼包   複製 metalogger 主配置文件
[root@metalogger moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs
[root@metalogger mfs]# ll
總用量 24
-rw-r--r--. 1 root root 4057 3月  24 17:06 mfsexports.cfg.sample
-rw-r--r--. 1 root root 8597 3月  24 17:06 mfsmaster.cfg.sample
-rw-r--r--. 1 root root 2175 3月  24 17:06 mfsmetalogger.cfg.sample
-rw-r--r--. 1 root root 1052 3月  24 17:06 mfstopology.cfg.sample
[root@metalogger mfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg

 //修改metalogger主配置文件, 指定master地址
[root@metalogger mfs]# vi /usr/local/mfs/etc/mfs/mfsmetalogger.cfg
 MASTER_HOST = 192.168.100.129


[root@metalogger mfs]# /usr/local/mfs/sbin/mfsmetalogger start
[root@metalogger mfs]# netstat -anpt | grep mfs
tcp        0      0 192.168.100.131:45736   192.168.100.129:9419    ESTABLISHED 16271/mfsmetalogger 

2.4、搭建 chunk 存儲端

三臺chunk存儲服務器的配置一樣,所以就不一一展示了。

//創建用戶
[root@chunk1 ~]# useradd -s /sbin/nologin -M mfs

//安裝源碼包  
[root@chunk1 opt]# tar xzvf moosefs-3.0.100-1.tar.gz -C /opt/
[root@chunk1 opt]# cd /opt/moosefs-3.0.100/

[root@chunk1 moosefs-3.0.100]# 
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \
--disable-mfsmount

[root@chunk1 moosefs-3.0.100]# make && make install

//複製 mfschunk 配置文件
[root@chunk1 moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs/
[root@chunk1 mfs]# ll
總用量 12
-rw-r--r--. 1 root root 3491 3月  24 17:21 mfschunkserver.cfg.sample
-rw-r--r--. 1 root root 1648 3月  24 17:21 mfshdd.cfg.sample
-rw-r--r--. 1 root root 2175 3月  24 17:21 mfsmetalogger.cfg.sample

[root@chunk1 mfs]# cp mfschunkserver.cfg.sample mfschunkserver.cfg
[root@chunk1 mfs]# cp mfshdd.cfg.sample mfshdd.cfg

//修改 mfschunk 主配置文件, 指定 master。
[root@chunk1 mfs]# vi mfschunkserver.cfg
MASTER_HOST = 192.168.100.129

[root@chunk1 mfs]# vi mfshdd.cfg
#在文件末尾添加以下目錄
/data

[root@chunk1 mfs]# mkdir /data
[root@chunk1 mfs]# chown -R mfs:mfs /data

[root@chunk1 mfs]# /usr/local/mfs/sbin/mfschunkserver start

[root@chunk1 mfs]# netstat -anpt | grep mfs
tcp        0      0 0.0.0.0:9422            0.0.0.0:*               LISTEN      21544/mfschunkserve 
tcp        0      0 192.168.100.132:49788   192.168.100.129:9420    ESTABLISHED 21544/mfschunkserve

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

2.5、搭建客戶端並掛載MFS

  • 客戶端通過 mfsmount 與 MFS文件文件系統進行溝通,管理服務器(接收和修改文件元數據)、chunkservers(實際的文件交換數據)。
  • mfsmount 是基於FUSE的機制 (用戶空間文件系統中)
//安裝fuse-2.9.2.tar.gz包
[root@client ~]# cd /opt
[root@client opt]# tar xzvf fuse-2.9.2.tar.gz -C /opt
[root@client opt]# cd fuse-2.9.2
[root@client fuse-2.9.2]# ./configure
[root@client fuse-2.9.2]# make && make install

//設置環境變量
[root@client fuse-2.9.2]# vi /etc/profile
#在文件末尾添加以下代碼
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
[root@client fuse-2.9.2]# source /etc/profile   #執行使之生效

//安裝 MFS 客戶端
[root@client fuse-2.9.2]# cd /opt
[root@client opt]# useradd -s /sbin/nologin -M mfs    #創建系統用戶
[root@client opt]# tar xzvf moosefs-3.0.100-1.tar.gz -C /opt/
[root@client opt]# cd /opt/moosefs-3.0.100/
[root@client moosefs-3.0.100]# 
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \
--disable-mfschunkserver \
--enable-mfsmount

[root@client moosefs-3.0.100]# make && make install

//掛載 MFS 文件系統
[root@client moosefs-3.0.100]# cd ~
[root@client ~]#  mkdir /opt/mfs
[root@client ~]#  modprobe fuse     # 加載 fuse 模塊到內核
[root@client ~]#  /usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.100.129     ####master地址

在這裏插入圖片描述

//設置永久掛載
寫掛載腳本,配置成開機自啓。
cd /etc/profile.d/
vi mt.sh
#!/bin/bash
/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.100.40 >/dev/null 2>&1
chmod +x mt.sh

三、MFS的使用

3.1、優化並使用命令測試

MFS 在客戶端安裝完畢後, 會生成/usr/local/mfs/bin/目錄, 在這個目錄下有很多命令是用戶所需要的。
在這裏插入圖片描述
爲了方便使用這些命令, 可將/usr/local/mfs/bin 路徑加入到環境變量中

[root@client ~]# vim /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export PATH=/usr/local/mfs/bin:$PATH                 ###此處添加

[root@client ~]# source /etc/profile
● mfsgetgoal 命令用來查詢文件被複制的份數,利用 -r 命令可以對整個目錄進行遞歸操作。
   goal 是指文件被複制的份數

[root@client ~]# mfsgetgoal -r /opt/mfs
/opt/mfs:
 directories with goal          2 :          1
  
● mfsgetgoal 命令用來設置文件被複制的份數, 生產環境 Chunk Server節點數量應至少
大於 2, 文件副本數小於等於 Chunk Server服務器的數量

[root@client ~]# mfssetgoal -r 3 /opt/mfs/
/opt/mfs/:
 inodes with goal changed:                       1
 inodes with goal not changed:                   0
 inodes with permission denied:                  0

##創建文件測試mfssetgoal命令的結果
[root@client ~]# cd /opt/mfs/
[root@client bin]# cd /opt/mfs/
[root@client mfs]# touch abc
[root@client mfs]# mfsgetgoal abc
abc: 3

在這裏插入圖片描述
在這裏插入圖片描述

3.2、使用 MFS 網頁版監控

【Master Server----啓動監控程序】
[root@mfsmaster ~]#  /usr/local/mfs/sbin/mfscgiserv

【在真機中打開瀏覽器訪問】
http://192.168.100.129:9425/mfs.cgi?masterhost=mfsmaster  //注意主機名和IP地址

在這裏插入圖片描述
在這裏插入圖片描述

其中各部分的含義如下。
Info 部分: 顯示了 MFS 的基本信息。
Servers 部分: 列出現有 Chunk Server。
Disks 部分: 列出現有 Chunk Server 硬盤信息。
Exports 部分: 列出可被掛載的目錄。
Mounts 部分: 列出被掛載的目錄。
Operations 部分: 顯示正在執行的操作。
Resources 部分: 列出當前存儲信息。
Quitas 部分: 列出當前配額信息。
Master charts 部分: 顯示 Master Server 的操作情況, 讀、 寫、 刪除等操作。
Server charts 部分: 顯示 Chunk Server 的操作情況、 數據傳輸率及系統狀態。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章