CentOS 7下搭建MFS分布式文件系統
阿新 • • 發佈:2018-08-01
行數 watermark login 分享 bin metal 復制。 path block MFS原理
MFS是一個具有容錯性的網絡分布式文件系統,它把數據分散存放在多個服務器上,而呈現給用戶的則是一個統一的資源。
MFS文件系統的組成架構:
- 元數據服務器(Master):在整個體系中負責管理文件系統,維護元數據;
- 元數據日誌服務器(Metalogger):備份Master服務器的變化日誌文件,文件類型為changlog_ml.*.mfs。當Master服務器數據丟失或者損壞時,可以從日誌服務器中取得文件,進行恢復;
- 數據存儲服務器(Chunk Server):真正存儲的數據的服務器。存儲文件時,會把文件分塊保存,並在數據服務器之間進行復制。數據服務器越多,能夠使用的容量則越大,可靠性就越高,性能也就越好;
客戶端(Client):可以像掛載NFS一樣掛載MFS文件系統,其操作是相同的。
MFS讀取數據的過程:
- 客戶端向元數據服務器發出讀請求;
- 元數據服務器把所需數據存放的位置(ChunkServer的IP地址和Chunk編號)告知客戶端;
客戶端向已知的ChunkServer請求發送數據;- Chunkserver向客戶端發送數據。
MFS寫入數據的過程:
- 客戶端向元數據服務器發送寫入請求;
- 元數據服務器與ChunkServer進行交互,但元數據服務器只在某些服務器創建新的分塊Chunks,創建成功後由ChunkServers告知元數據服務器操作成功;
- 元數據服務器告知客戶端,可以在哪個ChunkServer的哪些Chunks吸入數據;
- 客戶端向指定的ChunkServer寫入數據;
- 該ChunkServer與其他ChunkServer進行數據同步,同步成功後ChunkServer告知客戶端數據寫入成功;
- 客戶端告知元數據服務器本次寫入完畢。
系統環境:
主機 | 操作系統 | IP地址 | 軟件 |
---|---|---|---|
Master Server | CentOS 7.4 X86_64 | 192.168.100.131 | mfs-1.6.27-5.tar.gz |
MetaLogger Server | CentOS 7.4 X86_64 | 192.168.100.132 | mfs-1.6.27-5.tar.gz |
Chunk Server 1 | CentOS 7.4 X86_64 | 192.168.100.136 | mfs-1.6.27-5.tar.gz |
Cunk Server 2 | CentOS 7.4 X86_64 | 192.168.100.138 | mfs-1.6.27-5.tar.gz |
Client | CentOS 7.4 X86_64 | 192.168.100.135 | mfs-1.6.27-5.tar.gz、fuse-2.9.2.tar.gz |
操作步驟如下所示:
1.搭建Master Server
(1)下載源碼包及安裝包
#關閉防火墻及Selinux
systemctl stop firewalld.service
setenforce 0
#安裝相關依賴包
yum -y install gcc gcc-c++ zlib-devel
(2)創建用戶
useradd -s /sbin/nologin -M mfs
(3)安裝源碼包
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27-5/
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver \ #禁用mfschunkserver功能
--disable-mfsmount #禁用mfsmout功能
make && make install
(4)復制文件
cd /usr/local/mfs/etc/mfs
cp mfsmaster.cfg.dist mfsmaster.cfg #主配置文件
cp mfsexports.cfg.dist mfsexports.cfg #被掛載目錄及權限配置文件
cp mfstopology.cfg.dist mfstopology.cfg #角色分布文件
(5)防溢出
cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs
(6)主配置文件mfsmaster.cfg和被掛載目錄及權限配置文件mfsexports.cfg配置文件不需要修改
(7)啟動Master Server
/usr/local/mfs/sbin/mfsmaster start
停止Master Server的命令是/usr/local/mfs/sbin/mfsmaster -s
2.搭建MetaLoggerServer
(1)下載源碼包及安裝包
#關閉防火墻及Selinux
systemctl stop firewalld.service
setenforce 0
#安裝相關依賴包
yum -y install gcc gcc-c++ zlib-devel
(2)創建用戶
useradd -s /sbin/nologin -M mfs
(3)安裝源碼包
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27-5/
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver \ #禁用mfschunkserver功能
--disable-mfsmount #禁用mfsmout功能
make && make install
(4)復制文件
cd /usr/local/mfs/etc/mfs
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
cp mfsexports.cfg.dist mfsexports.cfg
cp mfstopology.cfg.dist mfstopology.cfg
(5)修改配置文件mfsmetalogger.cfg
vim /usr/local/mfs/etc/mfs/mfsmetalogger.cfg
MASTER_HOST=192.168.100.131 #修改為Master Server的IP地址
(6)啟動mfsmetalogger Server
/usr/local/mfs/sbin/mfsmetalogger start
3.搭建Chunk Server
兩臺搭建Chunk Server的步驟是相同的,其步驟如下所示:
(1)下載源碼包及安裝包
#關閉防火墻及Selinux
systemctl stop firewalld.service
setenforce 0
#安裝相關依賴包
yum -y install gcc gcc-c++ zlib-devel
(2)創建用戶
useradd -s /sbin/nologin -M mfs
(3)安裝源碼包
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27-5/
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster\ #禁用mfsmaster功能
--disable-mfsmount #禁用mfsmount功能
make && make install
(4)復制文件
cd /usr/local/mfs/etc/mfs
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
(5)修改配置文件mfschunkserver.cfg和mfshdd.cfg
vim /usr/local/mfs/etc/mfs/mfschunkserver.cfg
MASTER_HOST=192.168.100.131 #修改為Master Server的IP地址
..... #省略部分內容
vim /usr/local/mfs/etc/mfs/mfshdd.cfg
..... #省略部分內容
/data #添加一行/data,作為MFS的分區.生產環境最好使用獨立分區或磁盤掛載到此目錄
(6)創建數據目錄
mkdir /data
chown -R mfs:mfs /data
(7)啟動mfschunk Server
/usr/local/mfs/sbin/mfschunkserver start
4.搭建客戶端
(1)下載源碼包及安裝包
#關閉防火墻及Selinux
systemctl stop firewalld.service
setenforce 0
#安裝相關依賴包
yum -y install gcc gcc-c++ zlib-devel
(2)安裝FUSE
MFS客戶端依賴於FUSE
tar xzvf fuse-2.9.2.tar.gz
cd 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
(3)安裝MFS客戶端
useradd -s /sbin/nologin -M mfs
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27-5/
./configure --prefix=/usr/local/mfs \
--with-default-user=mfs --with-default-group=mfs --disable-mfsmaster \ #禁用mfsmaster功能
--disable-mfschunkserver \ #禁用mfschunkserver功能
--enable-mfsmount #啟用mfsmount功能
make && make install
(4)掛載MFS文件系統
mkdir /mnt/mfs #創建掛載點
modprobe fuse #加載fuse模塊到內核
/usr/local/mfs/bin/mfsmount /mnt/mfs -H 192.168.100.131 #掛載mfs
df -TH #查看掛載情況
(5)MFS常用操作
為了方便使用MFS的命令,將/usr/local/mfs/bin加入到環境變量中。
vim /etc/profile
export PATH=/usr/local/mfs/bin:$PATH #添加
source /etc/profile
mfssetgoal命令用來設置文件被復制的份數。
創建文件測試如下:
分別去2個chunkserver上查看數據目錄/data,結果如下所示:
5.MFS監控
Mfscgiserv使用python編寫的一個web服務器,其監聽端口是9425,可以在Master Server上通過命令/usr/local/mfs/sbin/Mfscgiserv來啟動,用戶利用瀏覽器可以全面監控所有客戶掛載、Chunk Server、Master Server,以及客戶端的各種操作等。
在客戶端上通過瀏覽器訪問http://192.168.100.131:9425
CentOS 7下搭建MFS分布式文件系統