2021-05-12 14:32:11
Yum簡單安裝MFS分散式檔案系統
2020-06-16 16:39:13
什麼是MFS?
MooseFS是一個容錯,高可用,高效能,擴充套件,網路分散式檔案系統。它將資料分布在多個物理商品伺服器上,這些伺服器對使用者可視為一個虛擬磁碟。它符合POSIX並且像任何其他類Unix檔案系統一樣支援:
- 分層結構:檔案和資料夾,
- 檔案屬性,
- 特殊檔案:管道,插座,塊和字元裝置,
- 符號和硬連結,
- 安全屬性和ACL。
它適用於需要標準檔案系統的所有應用程式。
分散式原理
分散式檔案系統是指檔案系統管理的物理儲存資源不一定直接連線在本地節點上,而是通過計算機網路與節點相連。簡單來說,就是把一些分散的(分布在區域網內各個計算機上)共用資料夾,集合到一個資料夾內(虛擬共用資料夾)。對於使用者來說,要存取這些共用檔案時,只要開啟這個虛擬共用資料夾,就可以看到所有連結到虛擬共用資料夾內的共用資料夾,使用者感覺不到這些共用檔案是分布於各個計算機上的。分散式檔案系統的好處是集中存取、簡化操作、資料容災,以及提高檔案的存取效能。
MFS原理
MFS是一個具有容錯性的網路分散式檔案系統,它把資料分散存放在多個物理伺服器上,而呈現給使用者的則是統一的資源。
MFS檔案系統的組成
- 後設資料伺服器(Master):在整個體系中負責管理檔案系統,維護後設資料。
- 後設資料紀錄檔伺服器(Metalogger):備份Master伺服器的變化紀錄檔檔案,檔案型別為changelog_ml.*.mfs。當Master伺服器資料丟失或損壞時,可以從紀錄檔伺服器中取得檔案,進行恢復。
- 資料儲存伺服器(Chunk Server):真正儲存資料的伺服器。儲存檔案時,會把檔案分塊儲存,並在資料伺服器間進行複製。資料伺服器越多,能使用的“容量”也越大,可靠性越高,效能也就越好。
- 用戶端(Client):可以直接掛載MFS檔案系統。
MFS讀取資料的處理過程
- 用戶端向後設資料伺服器發出讀請求
- 後設資料伺服器把所需資料存放的位置(Chunk Server的IP地址和Chunk編號)告知用戶端
- 用戶端向已知的Chunk Server請求傳送資料
- Chunk Server向用戶端傳送資料
MFS寫入資料的處理過程
- 用戶端向後設資料伺服器傳送寫入請求
- 後設資料伺服器與Chunk Server進行互動(只有當所需的分塊Chunk存在的時候才進行互動),但後設資料伺服器只在某些伺服器建立新的分塊chunks,建立成功後由Chunk Servers告知後設資料伺服器操作成功
- 後設資料伺服器告知用戶端,可以在哪個Chunk Server的那些chunks寫入資料
- 用戶端向指定的Chunk Server寫入資料
- 該Chunk Server與其他Chunk Server進行資料同步,同步成功後Chunk Server告知用戶端資料寫入成功
- 用戶端告知後設資料伺服器本次寫入完畢
MFS優勢
- 高可用性:沒有單點故障也稱為無SPOF設定。檔案系統的後設資料在物理冗餘伺服器上儲存為兩個或多個副本。使用者資料冗餘地分布在系統中的儲存伺服器上。
- 低成本的資料安全:MooseFS使使用者能夠節省大量硬碟空間,保持相同的資料冗餘級別。在大多數常見情況下,將節省至少55%的硬碟空間.
- 可延伸性:儲存可以擴充套件到16位元組(~16000千兆位元組),這使我們可以儲存超過20億個檔案
- 高效能:旨在支援高效能I/O操作。使用者資料可以在許多儲存節點上同時讀取/寫入,從而避免單個中央伺服器或單個網路連線瓶頸。
環境準備
- 使用五台伺服器模擬搭建MFS檔案系統
- 關閉防火牆及selinux
systemctl stop firewalld setenforce 0
- 虛擬機器規劃如下
主機 | 作業系統 | IP地址 | 主要軟體 |
---|---|---|---|
Master Server | CentOS-7-x86_64 | 172.16.10.21 | 使用yum安裝 |
MetalLogger Server | CentOS-7-x86_64 | 172.16.10.26 | |
Chunk Server1 | CentOS-7-x86_64 | 172.16.10.27 | |
Chunk Server2 | CentOS-7-x86_64 | 172.16.10.28 | |
Client | CentOS-7-x86_64 | 172.16.10.29 |
專案實施
搭建Master Server
安裝軟體
curl "https://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS //新增鍵值 curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo //新增適當的庫條目 yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli -y
啟動服務
systemctl start moosefs-master systemctl enable moosefs-master netstat -ntap | grep mfs
搭建MetalLogger Server
安裝軟體
curl "https://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS //新增鍵值 curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo //新增適當的庫條目 yum install moosefs-metalogger -y
修改組態檔
vim /etc/mfs/mfsmetalogger.cfg MASTER_HOST = 172.16.10.21 //地址指向主伺服器
啟動服務
systemctl start moosefs-metalogger systemctl enable moosefs-metalogger netstat -ntap | grep mfs
搭建Chunk Server
專案中的兩台Chunk Server的搭建步驟是完全相同
安裝軟體
curl "https://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS //新增鍵值 curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo //新增適當的庫條目 yum install moosefs-chunkserver -y
修改組態檔
- 修改mfschunkserver.cfg
vim /etc/mfs/mfschunkserver.cfg MASTER_HOST = 172.16.10.21 //在組態檔中修改,將地址指向主伺服器
- 修改mfshdd.cfg
vim /etc/mfs/mfshdd.cfg /chen //在末行新增共用目錄
為共用目錄授權
chown -R mfs:mfs /chen
啟動服務
systemctl start moosefs-chunkserver systemctl enable moosefs-chunkserver netstat -ntap | grep mfs
安裝Client
安裝軟體
curl "https://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS //新增鍵值 curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo //新增適當的庫條目 yum install moosefs-client -y
載入fuse模組到核心
modprobe fuse
掛載共用目錄
mkdir /opt/mfs //建立掛載點 mfsmount /opt/mfs/ -H 172.16.10.21 //掛載,地址為master地址
檢視掛載
df -h
常用操作介紹
mfsgetgoal命令用來查詢檔案被複製的份數,利用-r命令可以對整個目錄進行遞回,goal是指檔案被複製的份數。
mfsgetgoal -r /opt/mfs/
mfssetgoal命令同來設定檔案被複製的份數,生產環境中Chunk節點數量應至少大於2,檔案副本數量小於等於Chunk伺服器數量。mfssetgoal -r 2 /opt/mfs/
MFS監控
Mfscgiserv是一個用Python編寫的web伺服器,監聽埠是9425,可以在Master Server啟動監控,使用者利用瀏覽器就可以全面監控所有客戶掛載、Chunk Server、Master Server,以及用戶端的各種操作等。
主伺服器上開啟監控
mfscgiserv
相關文章