1. 程式人生 > >輕松部署MFS分布式文件系統 【內附源碼包】

輕松部署MFS分布式文件系統 【內附源碼包】

make ins 編號 net 支持 var 復制 取數 特殊文件

MFS概述

MFS是一種分布式文件系統,它把數據分散存放在多個物理服務器上,前面只放置一臺負責“調度”元數據服務器,最終呈現給用戶的則是一個統一的資源。
優點:
相對於集中式文件系統來說,分布式系統擁有更好的擴展性、穩定性、數據的安全性。
缺點:
master只能做單點,會出現單點故障

常規特征

對標準的文件操作來說,mfs用起來跟其它的類unix系統類似:
1.分層次的結構(目錄樹)
2.存儲POSIX文件屬性(權限、最後訪問和修改時間)
3.支持特殊文件(塊和字符設備、管道以及套接字)
4.符號連接和硬連接
5.對文件系統的訪問可以通過IP地址和(或者)密碼進行限制

獨有特征

1.高可靠(數據的多個拷貝被存儲在不同的計算機上)

2.通過附加新的計算機或者硬盤可以實現容量的動態擴展
3.刪除的文件可以根據一個可配置的時間周期進行保留(一個文件系統級別的回收站)
4.不受訪問和寫入影響的文件連貫快照

體系機構

1.管理服務器(master server)
一臺管理整個文件系統的獨立主機,存儲著每個文件的元數據(文件的大小、屬性、位置信息,包括所有非常規文件的所有信息,例如目錄、套接字、管道以及設備文件)
2.數據服務器群(chunk servers)
任意數目的商用服務器,用來存儲文件數據並在彼此之間同步(如果某個文件有超過一個備份的話)
3.元數據備份服務器(metalogger server)
任意數量的服務器,用來存儲元數據

變化日誌並周期性下載主要元數據文件,以便用於管理服務器意外停止時好接替其位置。
4.訪問mfs的客戶端
5.任意數量的主機,可以通過mfsmount進程與管理服務器(接收和更改元數據)和數據服務器(改變實際文件數據)進行交流。

架構及實現原理

技術分享圖片

1.MFS文件系統架構包括以下四種角色:

a.管理服務器 managing server (Master):負責各個數據存儲服務器的管理,文件讀寫調度,文件空間回收以及恢復.多節點拷貝。

b.元數據日誌服務器 Metalogger server(Metalogger):負責備份Master服務器的變化日誌文件,文件類型為changelog_ml.*.mfs,以便於在master server出問題的時候接替其進行工作。

c.數據存儲服務器 (chunkservers):負責連接管理服務器,聽從管理服務器調度,提供存儲空間,並為客戶提供數據傳輸

d.客戶機掛載使用client computers:通過fuse內核接口掛接遠程管理服務器上所管理的數據存儲服務器,看起來共享的文件系統和本地 unix 文件系統使用一樣的效果。

2.實現原理

(1) MFS 寫入數據過程:
? 客戶端向元數據服務器發送寫入請求。
? 元數據服務器與Chunk Server進行交互(只有當所需的分塊Chunks不存在的時候才進行這個交互):
? 元數據服務器只是在某些服務器創建新的分塊chunks。
? Chunk Servers告知元數據服務器,步驟a已經操作成功。
? 元數據服務器告知客戶端,你可以在哪個Chunk Server的哪些Chunks寫入數據。
? 客戶端向指定的Chunk Server寫入數據
? Chunk Server與其他Chunk Server進行數據同步。
? Chunk Server之間同步成功。
? Chunk Server告知客戶端數據寫入成功。

(2 )MFS 讀取數據數據過程:
? 客戶端向元數據服務器發出讀請求。
? 元數據服務器把所需數據存放的位置(Chunk Server的IP地址和chunk編號)告知客戶端。
? 客戶端向已知的Chunk Server請求發送數據。
? Chunk Server向客戶端發送數據

實驗案例:

使用5臺服務器模擬搭建MFS文件系統,拓撲圖如下
技術分享圖片

實驗環境

技術分享圖片

軟件包鏈接:https://pan.baidu.com/s/11_BcT5ahW01FAx73WT5q1w
密碼:ibuy

搭建master sever

1.關閉防火墻

systemctl stop firewalld.service
setenforce 0

2.解壓軟件包

yum install -y gcc gcc-c++ zlib-devel #安裝環境工具包
useradd mfs -s /sbin/nologin #添加進程用戶
tar zvxf mfs-1.6.27-5.tar.gz -C /opt #解壓軟件包

3.編譯安裝

cd /opt/mfs-1.6.27/ #切換到此目錄下
./configure \
--prefix=/usr/local/mfs \ #指定安裝目錄
--with-default-user=mfs \ #指定運行用戶
--with-default-group=mfs \ #指定運行組
--disable-mfschunkserver \ #禁用mfs的chunk功能
--disable-mfsmount #禁用mfs的mount功能
make && make install #編譯安裝

4.復制文件

cd /usr/local/mfs/etc/mfs
cp mfsmaster.cfg.dist mfsmaster.cfg #主配置文件
cp mfsexports.cfg.dist mfsexports.cfg #掛載以及權限設定文件
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg #日誌文件
cd /usr/local/mfs/var/mfs
cp metadata.mfs.empty metadata.mfs #master元數據文件

5.創建軟連接

ln -s /usr/local/mfs/sbin/* /usr/local/bin/

6.開啟服務

mfsmaster start #開啟mfs
ps -ef | grep mfs # 查看啟動端口
/usr/local/mfs/sbin/mfsmaster -s #停止

搭建logger server服務

1.解壓軟件包

useradd mfs -s /sbin/nologin #創建進程用戶
tar zvxf mfs-1.6.27-5.tar.gz -C /opt #解壓軟件包

2.編譯安裝

cd /opt/mfs-1.6.27/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \ #禁用mfs的chunk功能
--disable-mfsmount #禁用mfs的mount功能
make && make install

3.復制文件

cd /usr/local/mfs/etc/mfs
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

4.修改配置文件

vim mfsmetalogger.cfg
#約15行
MASTER_HOST = 192.168.65.159 #指向master的IP地址

5.開啟服務

/usr/local/mfs/sbin/mfsmetalogger start
ps -ef | grep mfs #查看端口
/usr/local/mfs/sbin/mfsmetalogger -s 停止

搭建chunkserver1 (2配置相同)

1.環境包

yum install -y gcc gcc-c++ zlib-devel #安裝工具包
useradd mfs -s /sbin/nologin #創建進程用戶

2.解壓軟件包

tar zvxf mfs-1.6.27-5.tar.gz -C /opt

3.編譯安裝

cd /opt/mfs-1.6.27/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \ #禁用mfs的master功能
--disable-mfsmount #禁用mfs的mount功能
make && make install #編譯安裝

4.復制文件

cd /usr/local/mfs/etc/mfs
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg

5.修改配置文件

vim mfschunkserver.cfg #約12行
MASTER_HOST = 192.168.65.159 #指向master的IP
vim mfshdd.cfg
/data #添加目錄

6.創建mfs分區目錄

mkdir /data #創建mfs分區目錄
chown -R mfs.mfs /data/ #賦予權限

7.啟動服務

/usr/local/mfs/sbin/mfschunkserver start

搭建client

1.解壓fuse軟件包

yum install -y gcc gcc-c++ zlib-devel
tar zvxf fuse-2.9.2.tar.gz -C /opt

2.編譯安裝

cd /opt/fuse-2.9.2/
./configure
make && make install

3.添加環境變量

vim /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKGCONFIG
PATH
source /etc/profile

4.解壓mfs軟件包

tar zvxf mfs-1.6.27-5.tar.gz -C /opt
useradd -s /sbin/nologin mfs

5.編譯安裝

cd /opt/mfs-1.6.27/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \
--disable-mfschunkserver \ #禁用mfs的chunk功能
--enable-mfsmount # 開啟mfs的mount功能
make && make install #編譯安裝

6.掛載mfs文件系統

cd /usr/local/mfs/etc/mfs
mkdir /opt/mfs #創建掛載點
modprobe fuse #加載fuse模塊到內核
/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.65.159 #掛載MFS

技術分享圖片

7.優化客戶端

vim /etc/profile
export PATH=/usr/local/mfs/bin:$PATH
source /etc/profile #刷新環境變量使其生效
mfsgetgoal -r /opt/mfs #復制文本

8.啟動監控

/usr/local/mfs/sbin/mfscgiserv
netstat -ntap | grep 9425

9.客戶端訪問 http://192.168.65.159:9425
技術分享圖片
技術分享圖片

輕松部署MFS分布式文件系統 【內附源碼包】