導讀 | 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 - 虛擬機規劃如下
項目實施 搭建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