幾臺Web服務器通過NFS共享一個存儲,在業務功能上滿足需求,但在性能與容量上NFS無法勝任更高的要求。MFS即moosefs,可以提供容量PB級別的共享存儲,無需昂貴的專業硬件服務器,自身擁有冗餘功能及動態擴容功能,保證數據的安全性。
工作原理:
分佈式原理
分佈式文件系統就是把一些分散在多臺計算機上的共享文件夾,集合到一個共享文件夾內,用戶要訪問這些文件夾的時候,只要打開一個文件夾,就可以的看到所有鏈接到此文件夾內的共享文件夾。分佈式文件系統的好處是集中訪問、簡化操作、數據容災、提高文件存取性能。
MFS原理
MFS是一個具有容錯性的網絡分佈式文件系統,它把數據分散存放在多個物理服務器上,而呈現給用戶的則是一個統一的資源。
(1)MFS文件系統的組成
元數據服務器(Master):在整個體系中負責管理文件系統,維護元數據,目前不支持高可用。
元數據日誌服務器(MetaLogger):備份Master服務器的變化日誌文件,文件類型爲change_ml.*.mfs。當master服務器損壞,可以從日誌服務器中取得文件恢復。
數據存儲服務器(Chunk Server):真正存儲數據的服務器。存儲文件時,會把文件分塊保存,並在服務器之間複製,數據服務器越多,容量就越大,可靠性越高,性能越好。
客戶端(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目錄。