MFS分布式文件系統的原理及環境搭建
阿新 • • 發佈:2018-09-28
故障 firewalld 保存 tap 訪問 擴容 ports x86 pty 概述:
NFS網絡文件系統在性能與容量上無法勝任更高的要求,而本篇講的MFS(MooseFS)可以提供容量PB級別的共享存儲,無需昂貴的專業硬件服務器,自身就擁有冗余功能及動態擴容功能,能保證數據的安全性。`
分布式原理:
分布式文件系統(distributed file system)是指文件系統管理的物質存儲資源不一定直接連接在本地節點上,而是通過計算機網絡與節點相連。簡單說就是把一些分布在局域網內各個計算機上的共享文件夾,集合到一個虛擬共享文件夾內,客戶端訪問只需要打開這個虛擬共享文件夾即可。
分布式文件系統的優點:集中訪問、簡化操作、數據容災、提高了文件的存儲性能。
MFS原理:
MFS是一個具有容錯性的網絡分布式文件系統,它把數據分散存放在多個物理服務器上,而呈現給用戶的則是一個統一整合的資源。
MFS文件系統的組成架構:
* 元數據服務器(Master):在整個體系中負責管理文件系統,維護元數據。
* 元數據日誌服務器(MetaLogger):備份Master服務器的變化日誌文件,文件類型為changelog_ml.*.mfs 當Master服務器數據丟失或者損壞時,可以從日誌服務器中取得進行恢復。
* 數據存儲服務器(Chunk server):真正存儲數據的服務器。將文件分塊保存,並相互進行復制。
* 客戶端(Client):可以像掛載NFS一樣掛載MFS文件系統,其操作是相同的。
MFS讀取數據的處理過程:
* 客戶端向元數據服務器發出讀請求。 * 元數據服務器把所需數據存放的位置(Chunk server的IP地址和Chunk編號)告知客戶端。 * 客戶端向已知的Chunk server請求發送數據。 * Chunk server向客戶端發送數據。
MFS寫入數據的處理過程:
* 客戶端向元數據服務器發送寫入請求。
* 元數據服務器與Chunk server進行交互,但元數據服務器只在某些服務器創建新的分塊Chunks,創建成功後由Chunk server告知元數據服務器操作成功。
* 元數據服務器告知客戶端,可以在哪個Chunk server的哪些Chunks寫入數據。
* 客戶端向指定的Chunk server寫入數據。
* 該Chunk server與其他Chunk server進行數據同步,同步成功後Chunk server告知客戶端數據寫入成功。
* 客戶端告知元數據服務器本次寫入完畢。
接下來進行環境搭建實驗:
實驗環境部署:
主機 | 操作系統 | IP地址 | 主要軟件 |
---|---|---|---|
Master Server | CentOS7.5 x86_64 | 192.168.138.138 | mfs-1.6.27-5.tar.gz |
Metalogger Server | CentOS7.5 x86_64 | 192.168.138.128 | mfs-1.6.27-5.tar.gz |
Chunk Server01 | CentOS7.5 x86_64 | 192.168.138.130 | mfs-1.6.27-5.tar.gz |
Chunk Server02 | CentOS7.5 x86_64 | 192.168.138.139 | mfs-1.6.27-5.tar.gz |
Client | CentOS7.5 x86_64 | 192.168.138.140 | mfs-1.6.27-5.tar.gz/fuse-2.9.2.tar.gz |
首先搭建master server:
安裝環境包:
* yum install -y zlib-devel gcc gcc-c++ #安裝所需的環境包
* useradd mfs -s /sbin/nologin #創建用戶mfs
解壓下載好的軟件包並進行手工編譯安裝:
* tar zxvf mfs-1.6.27-5.tar.gz -C /opt/
* cd mfs-1.6.27 #切換到opt/mfs-1.6.27下插入如下配置
* ./configure --prefix=/usr/local/mfs --with-default-user=mfs \
--with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
* make && make install
切換到配置文件下復制並去掉模板的dist後綴,開啟配置文件:
* cd /usr/local/mfs/etc/mfs/
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsexports.cfg.dist mfsexports.cfg
cp mfstopology.cfg.dist mfstopology.cfg
* cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs
* vim mfsmaster.cfg #不需要改動
* vim mfsexports.cfg #不需要改動
關閉防火墻、關閉增強×××:
* systemctl stop firewalld.service
* setenforce 0
* /usr/local/mfs/sbin/mfsmaster start #開啟服務
* ps -ef | grep mfs #查看監聽狀態
* /usr/local/mfs/sbin/mfsmaster -s #停止
到此master server已經搭建完成,接下來搭建metalogger server:
安裝編譯環境、關閉防火墻、關閉增強×××:
* yum install -y zlib-devel gcc gcc-c++
* systemctl stop firewalld.service
* setenforce 0
創建mfs用戶,解壓軟件包進行手工編譯:
* useradd -s /sbin/nologin mfs
* tar xzvf mfs-1.6.27-5.tar.gz -C /opt/
* cd mfs-1.6.27
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
* make && make install
切換到配置文件下復制並去掉模板的dist後綴,開啟配置文件
* cd /usr/local/mfs/etc/mfs/
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsexports.cfg.dist mfsexports.cfg
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
* vim mfsmetalogger.cfg
MASTER_HOST = 192.168.138.138 去掉#註釋 添加主機地址
* cd /usr/local/mfs/var/mfs
mv metadata.mfs.empty metadata.mfs
* /usr/local/mfs/sbin/mfsmetalogger start #開啟服務
到此metalogger server已經搭建完成,接下來搭建兩臺節點服務器 chunk server:
先搭建第一臺chunk server:
* systemctl stop firewalld.service
* setenforce 0
* yum install -y zlib-devel gcc gcc-c++
* useradd -s /sbin/nologin mfs
* tar xzvf mfs-1.6.27-5.tar.gz -C /opt/
* cd /opt/mfs-1.6.27
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount
* make && make install
* cd /usr/local/mfs/etc/mfs/
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
* vim mfschunkserver.cfg
MASTER_HOST = 192.168.138.138 去掉#註釋 添加主機地址
* vim mfshdd.cfg
/data #末尾添加`` 提供存儲空間
* mkdir /data
* chown -R mfs:mfs /data
* /usr/local/mfs/sbin/mfschunkserver start
* netstat -ntap
* 提示: 第一臺 chunk server搭建完成,第二臺和第一臺安裝配置是一樣的,這裏就不再寫了。
接下來配置客戶端:
* systemctl stop firewalld.service
* setenforce 0
* yum install -y zlib-devel
* tar xzvf fuse-2.9.2.tar.gz -C /opt/
* cd /opt/fuse-2.9.2
./configure
* make && make install
* vim /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH #末尾插入
* source /etc/profile
* 安裝mfs客戶端:
* useradd mfs -s /sbin/nologin
* tar zxvf mfs-1.6.27-5.tar.gz -C /opt/
* cd /opt/mfs-1.6.27
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount
* make && make install
* mkdir /opt/mfs
* modprobe fuse #加載fuse模塊到內核
* /usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.138.138 #指向master主機
* df -hT #查看掛載
* umount /opt/mfs #需要時可解掛載
* 優化客戶端:
* vim /etc/profile
* export PATH=/usr/local/mfs/bin:$PATH #設置環境變量 在末尾插入
* cd /opt/mfs(可在mfs裏寫入內容進行驗證:echo "this is test" > test.txt)
* source /etc/profile #重新加載
* mfsgetgoal -r /opt/mfs/
* mfsgetgoal -r 2 /opt/mfs/ #復制2份文件
最後一步在master server啟動監控程序:
* /usr/local/mfs/sbin/mfscgiserv
* http://192.168.138.138:9425 #客戶端瀏覽器上進行訪問測試
* 上述測試訪問到的MFS監控表中各部分的含義如下:
Info部分:顯示了MFS的基本信息
Server部分:列出現有的Chunk Server
Disks部分:列出每一臺Chunk Server的磁盤目錄及使用量
Exports部分:列出被共享的目錄,即可被掛載的目錄
Mounts部分:顯示被掛載的情況
Operations部分:顯示正在執行的操作
Master Charts部分:顯示Master Server的操作情況,包括讀取、寫入、創建目錄、刪除目錄等
本篇總結:
- MFS是一個具有容錯性的網絡分布式文件系統,它把數據分散存放在多個物理服務器上,而呈現給用戶的是一個統一整合的資源。
- MFS文件系統的組成包括 元數據服務器(Master)、元數據日誌服務器(MetaLogger)、數據存儲服務器(Chunk server)和客戶端(Client)。
- 元數據服務器(Master)需要用到的配置文件有兩個,分別是mfsmaster.cfg和mfsexports,cfg.
- 在元數據服務器(Master)發生故障時,可以從Metalogger中恢復Master.
MFS分布式文件系統的原理及環境搭建