幾臺Web服務器經過NFS共享一個存儲,在業務功能上知足需求,但在性能與容量上NFS沒法勝任更高的要求。MFS即moosefs,能夠提供容量PB級別的共享存儲,無需昂貴的專業硬件服務器,自身擁有冗餘功能及動態擴容功能,保證數據的安全性。python
工做原理:
web
分佈式原理centos
分佈式文件系統就是把一些分散在多臺計算機上的共享文件夾,集合到一個共享文件夾內,用戶要訪問這些文件夾的時候,只要打開一個文件夾,就能夠的看到全部連接到此文件夾內的共享文件夾。分佈式文件系統的好處是集中訪問、簡化操做、數據容災、提升文件存取性能。瀏覽器
MFS原理安全
MFS是一個具備容錯性的網絡分佈式文件系統,它把數據分散存放在多個物理服務器上,而呈現給用戶的則是一個統一的資源。服務器
(1)MFS文件系統的組成網絡
元數據服務器(Master):在整個體系中負責管理文件系統,維護元數據,目前不支持高可用。session
元數據日誌服務器(MetaLogger):備份Master服務器的變化日誌文件,文件類型爲change_ml.*.mfs。當master服務器損壞,能夠從日誌服務器中取得文件恢復。分佈式
數據存儲服務器(Chunk Server):真正存儲數據的服務器。存儲文件時,會把文件分塊保存,並在服務器之間複製,數據服務器越多,容量就越大,可靠性越高,性能越好。ide
客戶端(Client): 能夠像掛載NFS同樣 掛載MFS文件系統。
(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告知客戶端數據寫入成功
客戶端告知元數據服務器本次寫入完畢
案例實施
實驗拓撲
實驗過程
搭建Master Server
(1)關閉防火牆、安裝支持軟件
(2)建立用戶
(3)安裝源碼包
(4)複製文件
(5)配置文件
須要用到的配置文件有兩個:mfsmaster.cfg(主配置文件)和mfsexports.cfg(被掛載目錄及權限配置文件)
mfsmaster.cfg文件經常使用參數以下
mfsexports.cfg文件參數合適以下
該文件,每個條目分爲三個部分
第一部分:客戶端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.cfg和mfsexport文件的解釋,默認就是最好的,不須要作任任何修改。
(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
再啓動就不會出現任何信息
中止Master Server的命令是/usr/local/mfs/sbin/mfsmaster -s
2.搭建Metalogger Server
(1)關閉防火牆、安裝支持軟件,建立用戶、安裝源碼包
(2)複製文件
(3)修改配置文件
(4)啓動服務
中止Metalogger Server的命令是/usr/local/mfs/sbin/mfsmetalogger -s
3.搭建Chunk Server(兩臺Chunk Server操做同樣)
(1)關閉防火牆、安裝支持軟件,建立用戶、安裝源碼包
(2)複製文件
(3)修改配置文件
(4)建立文件,並設置權限
(5)開啓服務
中止Chunk Server的命令是/usr/local/mfs/sbin/mfschunkserver -s
4.客戶端設置
(1)安裝fuse
而後設置環境變量
當即生效
(2)安裝MFS客戶端
(3)掛載MFS文件系統
若是要卸載MFS,使用命令umount /mnt/mfs便可
(4)MFS經常使用操做
MFS客戶端安裝完畢後,會生成/usr/local/mfs/bin/目錄,在這個目錄下有不少命令是用戶所需的。爲了方便使用這些命令,可將/usr/local/mfs/bin加入到環境變量中。
mfsgetgoal命令用來查看文件被複制的分數,利用-r命令能夠對整個目錄進行遞歸,goal是指文件比複製的分數
命令mfssetgoal用來設置文件被複制的分數,生產環境下Chunk server節點數量應大於2,文件副本數小於等於Chunk server服務器的數量。
建立文件測試以下
分別打開兩臺Chunk Server,查看/data文件,都產生了加密數據,說明成功了
5.MFS監控
mfscgiserv是用python編寫的一個web服務器,其監聽端口是9425,能夠再masster server 上經過 /usr/local/mfs/sbin/mfscgiserv來啓動,用戶利用瀏覽器就能夠徹底監控全部客戶掛接、Chunk server、Master server,以及客戶端的各類操做等。
在Master Server開啓Mfscgiserv
在客戶端上經過瀏覽器訪問http://192.168.1.1:9425
其中各部分的含義以下:
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相應的目錄中
(3)利用mfsmetarestore命令合併元數據changelogs
(4)開啓Master Server
注意:若是是全新安裝的master,恢復數據後,須要更改metalogger和chunkserver,配置MASTER_HOST的ip地址,客戶端也須要從新掛載mfs目錄。