MFS原理node
MFS是一個具備容錯性的網絡分佈式文件系統,它把數據分散存放在多個物理服務器上,而呈現給用戶的則是一個統一的資源。c++
MFS文件系統組成介紹vim
角色服務器 |
做用網絡 |
元數據服務器(Master)架構 |
一臺管理整個文件系統的獨立主機,存儲着每一個文件的元數據(文件的大小、屬性、位置信息,包括全部很是規文件的全部信息,例如目錄、套接字、管道以及設備文件)。 |
元數據日誌服務器 (Metalogger)分佈式 |
任意數量的服務器,用來存儲元數據變化日誌並週期性下載主要元數據文件,以便用於管理服務器意外中止時好接替其位置。 |
數據存儲服務器(chunk servers)ide |
任意數目的商用服務器,用來存儲文件數據並在彼此之間同步(若是某個文件有超過一個備份的話)。優化 |
客戶端(Client)this |
任意數量的主機,能夠經過mfsmount進程與管理服務器(接收和更改元數據)和數據服務器(改變實際文件數據)進行交流。 |
MFS文件系統組成圖示
MFS讀取數據處理過程:
Client向Master發出讀請求
Master把所需的數據存放位置(Chunk IP&Chunk No.)告知Client
Client向Chunk發送數據請求
Chunk向Client發送數據
MFS寫入數據處理過程:
Client向Master發出寫入請求
Master與Chunk進行交互,但Master只在某些服務器建立新的分塊Chunks,建立成功後由Chunk告知Master建立成功
Master告知Client能夠在哪一個Chunk的哪些Chunks寫入數據
Client向指定的Chunk寫入數據
Chunk與其餘Chunk進行數據同步,同步成功後Chunk告知Client寫入數據成功
Client告知Master本次寫入完畢
實驗環境介紹:
192.168.218.156
主機 |
IP地址 |
Master Server | 192.168.218.130 |
MetaLogger Server | 192.168.218.157 |
Chunk1 Server | |
Server | 192.168.218.145 |
Client Server | 192.168.218.139 |
實驗步驟:
安裝master server:
yum install gcc gcc-c++ zlib-devel -y
useradd -s /sbin/nologin mfs
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 \ #禁用Chunk功能
--disable-mfsmount #禁用Client功能
make && make install
cd /usr/local/mfs/etc/mfs/
cp mfsexports.cfg.dist mfsexports.cfg #使掛載權限配置文件生效
cp mfsmaster.cfg.dist mfsmaster.cfg #使master主配置文件生效
cp mfstopology.cfg.dist mfstopology.cfg #使拓撲架構感知配置文件生效
cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs # 使防斷鏈文件生效
/usr/local/mfs/sbin/mfsmaster start
systemctl stop firewalld.service
setenforce 0
netstat -ntap | grep mfs
#/usr/local/mfs/sbin/mfsmaster –s #中止服務
搭建MetaLogger server:
yum install gcc gcc-c++ zlib-devel -y
useradd -s /sbin/nologin mfs
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 #使日誌配置文件生效
vim mfsmetalogger.cfg
MASTER_HOST = 192.168.218.130 #指定Master服務器地址
cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs #使防斷鏈文件生效
/usr/local/mfs/sbin/mfsmaster start
systemctl stop firewalld.service
setenforce 0
搭建兩臺Chunk服務器:
yum install gcc gcc-c++ zlib-devel -y
useradd -s /sbin/nologin mfs
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 #使chunk配置文件生效
cp mfshdd.cfg.dist mfshdd.cfg #使硬盤提供存儲空間配置文件生效
vim mfschunkserver.cfg
MASTER_HOST = 192.168.218.130
vim mfshdd.cfg
/data
mkdir /data
chown -R mfs.mfs /data/
/usr/local/mfs/sbin/mfschunkserver start #啓動服務
systemctl stop firewalld.service
setenforce 0
netstat -ntap | grep mfs
Client配置
systemctl stop firewalld.service
setenforce 0
yum install gcc gcc-c++ zlib-devel -y
tar zxvf fuse-2.9.2.tar.gz -C /opt #內核加載包
cd /opt/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
安裝mfs客戶端
useradd -s /sbin/nologin mfs
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-mfschunkserver \
--enable-mfsmount
make && make install
mkdir /opt/mfs
modprobe fuse #加載fuse模塊到內核
/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.218.130 #掛載MFS服務
優化客服端
vim /etc/profile
export PATH=/usr/local/mfs/bin:$PATH
source /etc/profile
echo 'this is test!' > /opt/mfs/abc.txt
mfssetgoal -r 2 /opt/mfs #設置文件被複制的份數,-r表示遞歸
/opt/mfs:
inodes with goal changed: 2
inodes with goal not changed: 0
inodes with permission denied: 0
mfsgetgoal -r /opt/mfs #查看複製文件的份數
/opt/mfs/abc.txt: 2
mfsfileinfo /opt/mfs/abc.txt #查看實際副本份數及其所在的節點
/opt/mfs/abc.txt:
chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
copy 1: 192.168.218.145:9422
copy 2: 192.168.218.156:9422
MASTER-Server----------------啓動監控程序
[root@master mfs]# /usr/local/mfs/sbin/mfscgiserv
lockfile created and locked
starting simple cgi server (host: any , port: 9425 , rootpath: /usr/local/mfs/share/mfscgi)
訪問:http://192.168.218.130:9425查看MFS監控網頁