MFS原理
MFS是一個具有容錯性的網絡分佈式文件系統,它把數據分散存放在多個物理服務器上,而呈現給用戶的則是一個統一的資源。
1)MFS文件系統的組成
- 元數據服務器(Master):在整個體系中負責管理文件系統,維護元數據。
- 元數據日誌服務器(MetaLogger):備份Master服務器的變化日誌文件,文件類型爲changelog_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寫入數據。
- 客戶端向指定的Chunks Server寫入數據。
- 該Chunk Server與其他Chunk Server進行數據同步,同步成功後Chunk Server告知客戶端數據寫入成功。
- 客戶端告知元數據服務器本次寫入完畢。
實驗環境
主機 | IP地址 | 主要軟件 |
---|---|---|
Master Server | 192.168.58.10 | mfs-1.6.27-5.tar.gz |
MetaLogger Server | 192.168.58.11 | mfs-1.6.27-5.tar.gz |
Chunk Server1 | 192.168.58.12 | mfs-1.6.27-5.tar.gz |
Chunk Server2 | 192.168.58.13 | mfs-1.6.27-5.tar.gz |
Client | 192.168.58.14 | mfs-1.6.27-5.tar.gz fuse-2.9.2.tar.gz |
1.搭建Master Server
systemctl stop firewalld.service //關閉防火牆及增強安全功能
systemctl disable firewalld.service
setenforce 0
yum install -y zlib-devel gcc gcc-c++ //安裝軟件包
useradd -s /sbin/nologin -M mfs //創建用戶
mkdir /abc //創建壓縮目錄
mount.cifs //192.168.58.22/share /abc //掛載
cd /abc
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-mfschunkserver \
--disable-mfsmount
make && make install
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
/usr/local/mfs/sbin/mfsmaster start //啓動Master Server
ps -ef | grep mfs //檢查是否啓動
/usr/local/mfs/sbin/mfsmaster -s //停止命令(選擇性使用)
2.搭建MetaLogger Server
systemctl stop firewalld.service //關閉防火牆及增強安全功能
systemctl disable firewalld.service
setenforce 0
yum install -y zlib-devel gcc gcc-c++ //安裝軟件包
useradd -s /sbin/nologin -M mfs //創建用戶
mkdir /abc //創建壓縮目錄
mount.cifs //192.168.58.22/share /abc //掛載
cd /abc
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-mfschunkserver \
--disable-mfsmount
make && make install
cd /usr/local/mfs/etc/mfs
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
vi mfsmetalogger.cfg
...
MASTER_HOST = 192.168.58.10 //修改爲Master Server的IP地址
...
/usr/local/mfs/sbin/mfsmetalogger start
ps -ef | grep mfs
/usr/local/mfs/sbin/mfsmetalogger -s //停止MetaLogger Server(選擇性使用)
3.搭建Chunk Server1、Chunk Server2
systemctl stop firewalld.service //關閉防火牆及增強安全功能
systemctl disable firewalld.service
setenforce 0
yum install -y zlib-devel gcc gcc-c++ //安裝軟件包
useradd -s /sbin/nologin -M mfs //創建用戶
mkdir /abc //創建壓縮目錄
mount.cifs //192.168.58.22/share /abc //掛載
cd /abc
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-mfsmount
make && make install
cd /usr/local/mfs/etc/mfs
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dsit mfshdd.cfg
vi mfschunkserver.cfg
...
MASTER_HOST = 192.168.58.10 //修改爲Master Server的IP地址
...
vi mfshdd.cfg
/data //末尾添加一行,這裏的/data是一個給MFS的分區
mkdir /data /創建相應/data目錄
chown -R mfs:mfs /data //修改屬主屬組
/usr/local/mfs/sbin/mfschunkserver start //啓動Chunk Server
/usr/local/mfs/sbin/mfschunkserver -s //關閉Chunk Server (選擇性使用)
4.客戶端配置
systemctl stop firewalld.service //關閉防火牆及增強安全功能
systemctl disable firewalld.service
setenforce 0
yum install -y zlib-devel gcc gcc-c++ //安裝軟件包
4.1安裝FUSE
tar xzvf fuse-2.9.2.tar.gz -C /opt //先掛載好,然後到目錄下解壓
cd /opt/fuse-2.9.2
./configure
make && make install
vi /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH //添加到末尾
source /etc/profile
4.2安裝MFS客戶端
useradd -s /sbin/nologin -M mfs
cd /abc
tar zxvf mfs -C /opt
cd /opt/mfs
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \
--disable-mfsmaster \
--disable-mfschunkserver \
--enable-mfsmount //開啓MFS掛載功能
make && make install
mkdir /opt/mfs //創建掛載點
modprobe fuse //加載fuse模塊到內核
/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.58.10
df -hT //查看掛載情況
vi /etc/profile //優化客戶端
export PATH=/usr/local/mfs/bin:$PATH //添加/usr/local/mfs/bin至環境變量
source /etc/profile
5.MFS監控
Mfscgiserv是用python編寫的一個Web服務器,其監聽端口是9425,可以在Master Server上通過命令/usr/local/mfs/sbin/mfscgiserv來啓動,用戶利用瀏覽器就可以全面監控所有客戶掛載、Chunk Server、Master Server,以及客戶端的各種操作等。
客戶端上通過瀏覽器訪問http://192.168.58.10:9425