分佈式文件系統就是把一些分散在多臺計算機上的共享文件夾,集合到一個共享文件夾內,用戶要訪問這些文件夾的時候,只要打開一個文件夾,就能夠的看到全部連接到此文件夾內的共享文件夾。c++
MFS是一個具備容錯性的網絡分佈式文件系統,它把數據分散存放在多個物理服務器上,而呈現給用戶的則是一個統一的資源。vim
MFS的組成
•元數據服務器(Master):在整個體系中負責管理文件系統,維護元數據,目前不支持高可用。
•元數據日誌服務器(MetaLogger):備份Master服務器的變化日誌文件,當master服務器損壞,能夠從日誌服務器中取得文件恢復。
•數據存儲服務器(Chunk Server):真正存儲數據的服務器,服務器越多,容量就越大,可靠性越高,性能越好。
•客戶端(Client): 能夠像掛載NFS同樣 掛載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
#關閉防火牆 [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
#關閉防火牆 [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
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
[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
# 關閉防火牆 [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/
在瀏覽器訪問http://192.168.45.133:9425分佈式