MFS分佈式文件系統

幾臺Web服務器通過NFS共享一個存儲,在業務功能上滿足需求,但在性能與容量上NFS無法勝任更高的要求。MFS即moosefs,可以提供容量PB級別的共享存儲,無需昂貴的專業硬件服務器,自身擁有冗餘功能及動態擴容功能,保證數據的安全性。

工作原理:

分佈式原理

分佈式文件系統就是把一些分散在多臺計算機上的共享文件夾,集合到一個共享文件夾內,用戶要訪問這些文件夾的時候,只要打開一個文件夾,就可以的看到所有鏈接到此文件夾內的共享文件夾。分佈式文件系統的好處是集中訪問、簡化操作、數據容災、提高文件存取性能

MFS原理

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

(1)MFS文件系統的組成

元數據服務器(Master:在整個體系中負責管理文件系統,維護元數據,目前不支持高可用。

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

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

客戶端(Client: 可以像掛載NFS一樣 掛載MFS文件系統。

2018-03-05_110345.png


(2)MFS讀取數據的出路過程

   客戶端向元數據服務器發出讀請求

   元數據服務器把所需數據存放的位置(Chunk Server的IP地址和Chunk編號)告知客戶端

   客戶端向已知的Chunk Server請求發送數據

   Chunk Server向客戶端發送數據

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

   客戶端向元數據服務器發送寫入請求

   元數據服務器與Chunk Server進行交互(只有當所需的分塊Chunks存在的時候才進行這個交互),但元數據服務器只在某些服務器創建新的分塊Chunks,創建成功後由Chunk Servers告    知元數據服務器操作成功

   元數據服務器告知客戶端,可以在哪個Chunk Server的哪些Chunks寫入數據

   客戶端向指定的Chunk Server寫入數據

   該Chunk Server與其他Chunk Server進行數據同步,同步成功後Chunk Server告知客戶端數據寫入成功

   客戶端告知元數據服務器本次寫入完畢

案例實施

實驗拓撲

2018-03-05_111626.png

實驗過程

  1. 搭建Master Server

(1)關閉防火牆、安裝支持軟件

2018-03-04_155830.png

(2)創建用戶

2018-03-04_155857.png

(3)安裝源碼包

2018-03-04_155914.png

(4)複製文件

2018-03-04_160153.png


2018-03-04_160607.png

(5)配置文件

需要用到的配置文件有兩個:mfsmaster.cfg(主配置文件)和mfsexports.cfg(被掛載目錄及權限配置文件)

mfsmaster.cfg文件常用參數如下

2018-03-04_160722.png

2018-03-04_160809.png

mfsexports.cfg文件參數合適如下

2018-03-05_114404.png

該文件,每一個條目分爲三個部分

 第一部分:客戶端IP地址

 第二部分:被掛載的目錄

 第三部分:客戶端擁有的權限

地址可以指定幾種表現形式

  *代表所有的IP地址

  n.n.n.n單個ip地址

  n.n.n.n/b IP網絡地址/位數掩碼

  n.n.n.n/m.m.m.m IP網絡地址/子網掩碼

  f.f.f.f-t.t.t.t IP

目錄部分的標示如下

 / 標示MFS

 . 表示MFSMETA文件系統

權限部分如下所示

 ro——只讀模式共享

 rw——讀寫模式共享

 alldirs——允許掛載任何指定的子目錄

 maproot——映射爲root,還是普通用戶

 password——指定客戶端的密碼

以上就是對mfsmaster.cfgmfsexport文件的解釋,默認就是最好的,不需要做任任何修改。

(6)啓動Master Server

第一遍啓動的時候,可能會出現以下錯誤信息

[root@centos1 mfs]# /usr/local/mfs/sbin/mfsmaster  start

loading sessions ... file not found         

         如果出現以上信息,則關閉服務並重新啓動就可以了

[root@centos1 mfs]# /usr/local/mfs/sbin/mfsmaster  -s

         -s 表示停止服務

[root@centos1 mfs]# /usr/local/mfs/sbin/mfsmaster  start

         再啓動就不會出現任何信息

2018-03-04_161032.png


停止Master Server的命令是/usr/local/mfs/sbin/mfsmaster -s

2.搭建Metalogger Server

(1)關閉防火牆、安裝支持軟件,創建用戶、安裝源碼包

2018-03-04_161247.png

(2)複製文件

2018-03-04_161434.png

(3)修改配置文件

2018-03-04_161457.png

2018-03-04_161532.png

(4)啓動服務

2018-03-04_161658.png

停止Metalogger Server的命令是/usr/local/mfs/sbin/mfsmetalogger -s

3.搭建Chunk Server(兩臺Chunk Server操作一樣)

(1)關閉防火牆、安裝支持軟件,創建用戶、安裝源碼包

2018-03-04_161832.png

(2)複製文件

2018-03-04_162019.png

(3)修改配置文件

2018-03-04_162040.png

2018-03-04_162112.png


2018-03-05_120110.png

2018-03-04_162231.png

(4)創建文件,並設置權限

2018-03-05_120254.png

(5)開啓服務

2018-03-04_162540.png

停止Chunk Server的命令是/usr/local/mfs/sbin/mfschunkserver -s

4.客戶端設置

2018-03-04_171017.png

(1)安裝fuse

2018-03-04_171027.png

然後設置環境變量

2018-03-04_171130.png

2018-03-04_171156.png

立即生效

2018-03-04_171236.png

(2)安裝MFS客戶端

2018-03-04_171447.png

(3)掛載MFS文件系統

2018-03-04_171713.png

2018-03-04_171758.png

如果要卸載MFS,使用命令umount /mnt/mfs即可

(4)MFS常用操作

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

2018-03-04_171130.png

2018-03-04_171939.png

2018-03-04_171236.png

mfsgetgoal命令用來查看文件被複制的分數,利用-r命令可以對整個目錄進行遞歸,goal是指文件比複製的分數

2018-03-04_172023.png

命令mfssetgoal用來設置文件被複制的分數,生產環境下Chunk server節點數量應大於2,文件副本數小於等於Chunk server服務器的數量。

2018-03-04_172102.png

創建文件測試如下

2018-03-04_172200.png

分別打開兩臺Chunk Server,查看/data文件,都產生了加密數據,說明成功了

2018-03-04_172243.png


5.MFS監控

mfscgiserv是用python編寫的一個web服務器,其監聽端口是9425,可以再masster server 上通過 /usr/local/mfs/sbin/mfscgiserv來啓動,用戶利用瀏覽器就可以完全監控所有客戶掛接、Chunk serverMaster server,以及客戶端的各種操作等。

在Master Server開啓Mfscgiserv

2018-03-04_172332.png

在客戶端上通過瀏覽器訪問http://192.168.1.1:9425

2018-03-04_172414.png

其中各部分的含義如下:

Info部分:顯示了MFS的基本信息

Server部分:列出現有Chunk Server

Disks部分:列出現有Chunk Server硬盤信息

Exports部分:列出可被掛載的目錄

Mounts部分:列出被掛載的目錄

Operations部分:顯示正在執行的操作

Master charts部分:顯示Master Server的操作情況,讀、寫、刪除等操作

Server charts部分:顯示Chunk Server的操作情況、數據傳輸率及系統狀態

6.MFS維護及災難恢復

1).MFS集羣的啓動與停止

MFS集羣的啓動順序如下

1)啓動mfsmaster進程

2)啓動所有的mfsChunkserver進程

3)啓動mfsmetalogger進程

4)在所有客戶端上掛載NFS文件系統

MFS集羣的停止順序如下

1)在所有客戶端卸載MFS文件系統

2)用mfschunkserver -s停止Chunkserver進程

3)用mfsmetalogger -s停止mfsmetalogger進程

4)用mfsmaster -s停止mfsmaster進程

2).MFS災難恢復

整個MFS體系中,直接斷電只有master server進程有可能無法啓動,可以在master上使用命令/usr/local/mfs/sbin/mfsmetarestore -a修復

MFS元數據通常有兩部分的數據,分別如下

(1)主要元數據文件metadata.mfs,當mfsmaster運行時會被命名爲metadata.mfs.back。

(2)元數據改變日誌 changelog.*.mfs,存儲了過去N小時的文件變更。

在Master發生故障時,可以從Metalogger中恢復Master,步驟如下

(1)安裝一臺mfsmaster,利用同樣的配置來配置這臺mfsmaster,mfsmaster進程先不要啓動

(2)將metalogger上/usr/local/mfs/var/mfs/目錄下所有文件複製到mfsmaster相應的目錄中

2018-03-04_172542.png

(3)利用mfsmetarestore命令合併元數據changelogs

2018-03-04_172613.png

(4)開啓Master Server

注意:如果是全新安裝的master,恢復數據後,需要更改metaloggerchunkserver,配置MASTER_HOSTip地址,客戶端也需要重新掛載mfs目錄。


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