MFS分佈式存儲安裝部署

分佈式

1、簡介
分佈式文件系統(Distributed File System) 是指文件系統管理的物理存儲資源不一定直接連接在本地節點上,而是通過計算機網絡與節點相連。簡單來說就是把一些分散的(分佈在局域網內各個計算機上) 共享文件夾, 集合到一個文件夾內(虛擬共享文件夾)。 對於用戶來說, 要訪問這些共享文件夾時, 只要打開這個虛擬共享文件夾, 就可以看到所有鏈接到虛擬共享文件夾內的共享文件夾, 用戶感覺不到這些共享文件是分散於各個計算機上的。分佈式文件系統的好處是集中訪問、簡化操作、數據容災、提高文件存取性能
2、分佈式優勢

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

MFS分佈式存儲

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

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

4、MFS 讀取數據的處理過程

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

5、MFS 寫入數據的處理過程

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

實驗環境

1、基本組成架構拓撲圖
在這裏插入圖片描述
2、IP地址規劃

主機名 操作系統 IP地址
mfsmaster CentOS 7.6 192.168.7.128
metalogger CentOS 7.6 192.168.7.129
chunk1 CentOS 7.6 192.168.7.134
chunk2 CentOS 7.6 192.168.7.138
chunk3 CentOS 7.6 192.168.7.135
client CentOS 7.6 192.168.7.157

MFS安裝部署

實驗所需安裝包:
鏈接:https://pan.baidu.com/s/1dvmx5McKBqNfXfdkd07deg
提取碼:p42o
1、環境準備(所有服務器)
(1)關閉防火牆
(2)關閉核心功能
(3)配置主機名
(4)配置hosts
(5)將安裝包上傳至/opt目錄下
2、搭建Master Server
(1)安裝依賴包

[root@mfsmaster ~]# hostnamectl set-hostname mfsmaster

(2)創建用戶

[root@mfsmaster ~]# useradd -s /sbin/nologin -M mfs

(3)安裝源碼包

[root@mfsmaster ~]# cd /opt
[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

(4)複製master配置文件,啓動服務

[root@mfsmaster moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs/
[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
[root@mfsmaster mfs]# netstat -anpt | grep mfs
tcp        0      0 0.0.0.0:9419            0.0.0.0:*               LISTEN      7028/mfmaster      
tcp        0      0 0.0.0.0:9420            0.0.0.0:*               LISTEN      7028/mfmaster      
tcp        0      0 0.0.0.0:9421            0.0.0.0:*               LISTEN      7028/mfmaster      

3、搭建MetaLogger server
(1)安裝相關依賴包

[root@metalogger ~]# yum -y install gcc zlib-devel

(2)創建用戶

[root@metalogger ~]# useradd -s /sbin/nologin -M mfs

(3)安裝源碼包 ##上傳到/opt目錄

[root@metalogger ~]# cd /opt
[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

(4)複製metalogger主配置文件

[root@metalogger moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs
[root@metalogger mfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg

(5)修改metalogger主配置文件, 指定master地址

[root@metalogger mfs]# vi /usr/local/mfs/etc/mfs/mfsmetalogger.cfg
 MASTER_HOST = 192.168.7.128

(6)啓動服務

[root@metalogger mfs]# /usr/local/mfs/sbin/mfsmetalogger start
[root@metalogger mfs]# netstat -anpt | grep mfs
tcp        0      0 192.168.7.129:48212     192.168.7.128:9419      ESTABLISHED 7057/mfmetalogger

4、搭建chunkserver1、chunkserver2、chunkserver3
(1)安裝相關依賴包

[root@chunk1 ~]# yum -y install gcc zlib-devel

(2)創建用戶

[root@chunk1 ~]# useradd -s /sbin/nologin -M mfs

(3)安裝源碼包

[root@chunk1 ~]# cd /opt
[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

(4)複製mfschunk配置文件

[root@chunk1 moosefs-3.0.100]# cd /usr/local/mfs/etc/mfs/
[root@chunk1 mfs]# cp mfschunkserver.cfg.sample mfschunkserver.cfg
[root@chunk1 mfs]# cp mfshdd.cfg.sample mfshdd.cfg

(5)修改mfschunk主配置文件, 指定master

[root@chunk1 mfs]# vi mfschunkserver.cfg
MASTER_HOST = 192.168.7.128

[root@chunk1 mfs]# vi mfshdd.cfg
/data

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

(6)啓動服務

[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      7187/mfchunkserver 
tcp        0      0 192.168.7.134:47880     192.168.7.128:9420      ESTABLISHED 7187/mfchunkserver 

5、搭建client
(1)安裝相關依賴包

[root@client ~]# yum -y install gcc zlib-devel

(2)安裝FUSE

[root@client ~]# cd /opt
[root@client opt]# tar zxvf fuse-2.9.2.tar.gz
[root@client opt]# cd fuse-2.9.2
[root@client fuse-2.9.2]# ./configure
[root@client fuse-2.9.2]# make && make install

(3)設置環境變量

[root@client ~]# vi /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

[root@client ~]# source /etc/profile

(4)安裝MFS客戶端

[root@chunk1 ~]# useradd -s /sbin/nologin -M mfs
[root@client ~]# cd /opt
[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

(5)掛載MFS文件系統

[root@client ~]# mkdir /opt/mfs
#加載fuse模塊到內核
[root@client ~]# modprobe fuse
#掛載
[root@client ~]# /usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.7.128
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root

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

[root@client ~]# vim /etc/profile
export PATH=/usr/local/mfs/bin:$PATH
[root@client ~]# source /etc/profile

(2)mfsgetgoal 命令用來查詢文件被複制的份數, 利用-r 命令可以對整個目錄進行遞歸,goal 是指文件被複制的份數

[root@client ~]# mfsgetgoal -r /opt/mfs
/opt/mfs:
 directories with goal          2 :          1

(3) 命令 mfssetgoal 用來設置文件被複制的份數, 生產環境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

(4)創建文件測試

[root@client ~]# cd /opt/mfs/
[root@client mfs]# touch test01
[root@client mfs]# mfsgetgoal test01 
test01: 3

6、Master Server啓動監控程序

[root@mfsmaster ~]#  /usr/local/mfs/sbin/mfscgiserv

使用瀏覽器打開網址http://192.168.7.128:9425查看
在這裏插入圖片描述其中各部分的含義如下:

  • Info 部分: 顯示了 MFS 的基本信息
  • Servers 部分: 列出現有 Chunk Server
  • Disks 部分: 列出現有 Chunk Server 硬盤信息
  • Exports 部分: 列出可被掛載的目錄
  • Mounts 部分: 列出被掛載的目錄
  • Operations 部分: 顯示正在執行的操作
  • Resources 部分: 列出當前存儲信息
  • Quitas 部分: 列出當前配額信息
  • Master charts 部分: 顯示 Master Server 的操作情況, 讀、 寫、 刪除等操作
  • Server charts 部分: 顯示 Chunk Server 的操作情況、 數據傳輸率及系統狀態

7、MFS 集羣的啓動與停止
(1)MFS 集羣啓動的順序如下

  • 啓動 mfsmaster 進程。
  • 啓動所有的 mfschunkserver 進程。
  • 啓動 mfsmetalogger 進程(如果配置了 mfsmetalogger)。
  • 在所有的客戶端掛載 MFS 文件系統。

(2)MFS 集羣停止的順序如下。

  • 在所有的客戶端卸載 MFS 文件系統。
  • 用 mfschunkserver stop 命令停止 chunkserver 進程。
  • 用 mfsmetalogger stop 命令停止 metalogger 進程。
  • 用 mfsmaster stop 命令停止 master 進程

8、MFS災難恢復
(1)整個 MFS 體系中, 直接斷電只有 Master 有可能無法啓動, 可以在 master 上使用命令 /usr/local/mfs/sbin/mfsmaster -a修復
(2)MFS元數據通常有兩部分的數據,分別如下
①主要元數據文件 metadata.mfs, 當 mfsmaster 運行時會被命名爲 metadata.mfs.back
②元數據改變日誌 changelog.*.mfs, 存儲了過去的 N 小時的文件改變(N 的數值是由
BACK_LOGS 參數設置的, 參數的設置在 mfschunkserver.cfg 配置文件中)
③在 Master 發生故障時, 可以從 MetaLogger 中恢復 Master, 步驟如下:

  • 安裝一臺 mfsmaster, 利用同樣的配置來配置這臺 mfsmaster。
  • 將 metalogger 上 /usr/local/mfs/var/mfs/目錄下的文件複製到 mfsmaster 相應的目
    錄中
[root@mfsmaster ~]#scp [email protected]:/usr/local/mfs/var/mfs/* /usr/local/mfs/var/mfs/
  • 利用 mfsmetarestore 命令合併元數據 changelogs。
[root@mfsmaster ~]#/usr/local/mfs/sbin/mfsmaster -a
  • 如果是全新安裝的 Master, 恢復數據後, 要更改 metalogger 和 chunkserver 配置MASTER_HOST 的 IP, 客戶端也需要重新掛載
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章