MFS分佈式文件系統
mfs工作原理
分佈式原理
分佈式文件系統就是把一些分散在多臺計算機上的共享文件夾,集合到一個共享文件夾內,用戶要訪問這些文件夾的時候,只要打開一個文件夾,就可以的看到所有鏈接到此文件夾內的共享文件夾。
MFS原理
MFS是一個具有容錯性的網絡分佈式文件系統,它把數據分散存放在多個物理服務器上,而呈現給用戶的則是一個統一的資源。
MFS的組成
- 元數據服務器(Master):在整個體系中負責管理文件系統,維護元數據,目前不支持高可用。
- 元數據日誌服務器(MetaLogger):備份Master服務器的變化日誌文件,當master服務器損壞,可以從日誌服務器中取得文件恢復。
- 數據存儲服務器(Chunk Server):真正存儲數據的服務器,服務器越多,容量就越大,可靠性越高,性能越好。
-
客戶端(Client): 可以像掛載NFS一樣 掛載MFS文件系統
MFS讀數據的處理過程
- 客戶端向元數據服務器發出讀請求
- 元數據服務器把所需數據存放的位置(Chunk Server的IP地址和Chunk編號)告知客戶端
- 客戶端向已知的Chunk Server請求發送數據
- Chunk Server向客戶端發送數據
寫入的過程
- 客戶端向元數據服務器發送寫入請求
- 元數據服務器與Chunk Server進行交互,但元數據服務器只在某些服務器創建新的分塊Chunks,創建成功後由hunk Servers告知元數據服務器操作成功
- 元數據服務器告知客戶端,可以在哪個Chunk Server的哪些Chunks寫入數據
- 客戶端向指定的Chunk Server寫入數據
- 該Chunk Server與其他Chunk Server進行數據同步,同步成功後Chunk Server告知客戶端數據寫入成功
- 客戶端告知元數據服務器本次寫入完畢
實驗環境:
master:192.168.45.133
masterlogger:192.168.45.130
chunk1:192.168.45.136
chunk2:192.168.45.134
client:192.168.45.135實驗的搭建
7-3:master 192.168.45.133
#關閉防火牆
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
#安裝組件
[root@localhost ~]# yum install zlib-devel gcc gcc-c++ -y
#掛載mfs必要軟件包
[root@localhost ~]# mount.cifs //192.168.100.3/lzp /mnt
Password for root@//192.168.100.3/lzp:
[root@localhost ~]# cd /mnt/mfs
#解壓安裝包
[root@localhost mfs]# tar zxvf mfs-1.6.27-5.tar.gz -C /opt
[root@localhost mfs]# cd /opt/mfs-1.6.27/
[root@localhost mfs-1.6.27]# useradd -s /sbin/nologin mfs
[root@localhost mfs-1.6.27]# ./configure \
--prefix=/usr/local/mfs \ //指定安裝目錄
--with-default-user=mfs \ //指定程序運行用戶
--with-default-group=mfs \ //指定程序運行組
--disable-mfschunkserver \ //禁用Chunk功能
--disable-mfsmount //禁用mfsmount功能
[root@localhost mfs-1.6.27]# make && make install
#複製文件,配置mfs文件
[root@localhost mfs-1.6.27]# cd /usr/local/mfs/etc/mfs/
[root@localhost mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg
#權限
[root@localhost mfs]# cp mfsexports.cfg.dist mfsexports.cfg
#日誌
[root@localhost mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
[root@localhost mfs]# cd /usr/local/mfs/var/mfs/
[root@localhost mfs]# cp metadata.mfs.empty metadata.mfs
#修改權限並啓動
[root@localhost mfs]# chown -R mfs.mfs /usr/local/mfs
[root@localhost mfs]# /usr/local/mfs/sbin/mfsmaster start
#查看mfs端口是否開啓
[root@localhost mfs]# ps -ef | grep mfs
#啓動監控,在所有全部搭建好之後再啓動
[root@localhost mfs]# /usr/local/mfs/sbin/mfscgiserv
查看搭建好之後,查看端口的開啓情況
7-5:log日誌 192.168.45.130
#關閉防火牆
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
#安裝必要組件
[root@localhost ~]# yum install zlib-devel gcc gcc-c++ -y
#創建用戶
[root@localhost ~]# useradd mfs -s /sbin/nologin
#掛載軟件包
[root@localhost ~]# mount.cifs //192.168.100.3/lzp /mnt
[root@localhost ~]# cd /mnt/mfs
#解壓安裝包
[root@localhost mfs]# tar zxvf mfs-1.6.27-5.tar.gz -C /opt
[root@localhost mfs]# cd /opt/mfs-1.6.27/
[root@localhost mfs-1.6.27]# ./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \
--disable-mfsmount
[root@localhost mfs-1.6.27]# make && make install
[root@localhost mfs-1.6.27]# cd /usr/local/mfs/etc/mfs/
[root@localhost mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
[root@localhost mfs]# vim mfsmetalogger.cfg
#在第15行開啓功能,然後地址指向master服務器地址
MASTER_HOST = 192.168.45.133
#修改權限並啓動
[root@localhost mfs]# chown -R mfs.mfs /usr/local/mfs/
[root@localhost mfs]# /usr/local/mfs/sbin/mfsmetalogger start
查看端口開啓情況
7-7:存儲節點 192.168.45.136
root@localhost ~]# yum install zlib-devel gcc gcc-c++ -y
[root@localhost ~]# useradd -s /sbin/nologin mfs
[root@localhost ~]# mount.cifs //192.168.100.3/lzp /mnt
[root@localhost ~]# cd /mnt/mfs
#解壓安裝包
[root@localhost mfs]# tar zxvf mfs-1.6.27-5.tar.gz -C /opt
[root@localhost mfs]# cd /opt/mfs-1.6.27/
[root@localhost mfs-1.6.27]# ./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \
--disable-mfsmount
[root@localhost mfs-1.6.27]# make && make install
[root@localhost mfs-1.6.27]# cd /usr/local/mfs/etc//mfs/
[root@localhost mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg
[root@localhost mfs]# cp mfshdd.cfg.dist mfshdd.cfg
#修改,在第12行,開啓,並將地址指向master地址
[root@localhost mfs]# vim mfschunkserver.cfg
MASTER_HOST = 192.168.45.133
#設置掛載目錄
[root@localhost mfs]# vim mfshdd.cfg
/data
[root@localhost mfs]# mkdir /data
[root@localhost mfs]# chown -R mfs:mfs /data
[root@localhost mfs]# /usr/local/mfs/sbin/mfschunkserver start
查看端口開啓情況
7-8:存儲節點192.168.45.134
[root@localhost ~]# yum install zlib-devel gcc gcc-c++ -y
[root@localhost ~]# useradd -s /sbin/nologin mfs
[root@localhost ~]# mount.cifs //192.168.100.3/lzp /mnt
[root@localhost ~]# cd /mnt/mfs
#解壓安裝包
[root@localhost mfs]# tar zxvf mfs-1.6.27-5.tar.gz -C /opt
[root@localhost mfs]# cd /opt/mfs-1.6.27/
#編譯安裝
[root@localhost mfs-1.6.27]# ./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \
--disable-mfsmount
[root@localhost mfs-1.6.27]# make && make install
#複製並修改
[root@localhost mfs-1.6.27]# cd /usr/local/mfs/etc//mfs/
[root@localhost mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg
[root@localhost mfs]# cp mfshdd.cfg.dist mfshdd.cfg
[root@localhost mfs]# vim mfschunkserver.cfg
MASTER_HOST = 192.168.45.133
[root@localhost mfs]# vim mfshdd.cfg
/data
[root@localhost mfs]# mkdir /data
[root@localhost mfs]# chown -R mfs:mfs /data
[root@localhost mfs]# /usr/local/mfs/sbin/mfschunkserver start
查看端口開啓情況
7-9:客戶端192.168.45.135
# 關閉防火牆
[root@manager ~]# systemctl stop firewalld.service
[root@manager ~]# setenforce 0
#安裝必要組件
[root@manager ~]# yum install gcc gcc-c++ zlib-devel -y
#掛載軟件包
[root@manager ~]# mount.cifs //192.168.100.3/lzp /mnt
[root@manager ~]# cd /mnt/mfs/
#解壓軟件包
[root@manager mfs]# tar zxvf fuse-2.9.2.tar.gz -C /opt
#編譯安裝
[root@manager mfs]# cd /opt/fuse-2.9.2/
[root@manager fuse-2.9.2]# ./configure
[root@manager fuse-2.9.2]# make && make install
#修改系統文件
[root@manager fuse-2.9.2]# vim /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
#重新加載
[root@manager fuse-2.9.2]# source /etc/profile
#創建用戶
[root@manager fuse-2.9.2]# useradd -s /sbin/nologin mfs
#解壓安裝包
[root@manager fuse-2.9.2]# cd /mnt/mfs/
[root@manager mfs]# tar zxvf mfs-1.6.27-5.tar.gz -C /opt
#編譯安裝
[root@manager mfs]# cd /opt/mfs-1.6.27/
[root@manager mfs-1.6.27]# ./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \
--disable-mfschunkserver \
--enable-mfsmount
[root@manager mfs-1.6.27]# make && make install
#創建掛載點
[root@manager mfs-1.6.27]# mkdir /opt/mfs
[root@manager mfs-1.6.27]# modprobe fuse
#掛載
[root@manager mfs-1.6.27]# /usr/local//mfs/bin/mfsmount /opt/mfs -H 192.168.45.133
# 優化客戶端
[root@manager mfs-1.6.27]# vim /etc/profile
export PATH=/usr/local/mfs/bin:$PATH
[root@manager mfs-1.6.27]# source /etc/profile
# 備份
[root@manager mfs-1.6.27]# mfsgetgoal -r /opt/mfs/