MFS介紹
在衡南等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作按需制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站制作,衡南網(wǎng)站建設(shè)費(fèi)用合理。MFS(MooseFS ) 是一個具有容錯功能的、高可用、可擴(kuò)展的海量級分布式文件系統(tǒng)。MFS 把數(shù)據(jù)分散在多臺服務(wù)器上,但是客戶看到的只是一個源。MFS 也像其他類 UNIX 文件系統(tǒng)一樣,包含了層級結(jié)構(gòu)和文件屬性,可以創(chuàng)建特殊的文件(塊設(shè)備、字符設(shè)備、管道、套接字)、符號鏈接和硬鏈接。
MFS 原理
( 1)MFS 文件系統(tǒng)組成
1).元數(shù)據(jù)服務(wù)器(Master):在整個系統(tǒng)中負(fù)責(zé)管理文件系統(tǒng),維護(hù)元數(shù)據(jù)。
2).元數(shù)據(jù)日志服務(wù)器(MetaLogger):備份 Master 服務(wù)器的變化日志文件,文件類型為 changelog_ml.*.mfs 。當(dāng)Master 服務(wù)器數(shù)據(jù)丟失或者損壞時, 可以從日志服務(wù)器中取得文件,進(jìn)行恢復(fù)。
3).數(shù)據(jù)存儲服務(wù)器(Chunk Server):真正存儲數(shù)據(jù)的服務(wù)器。存儲文件時,會把文件分塊保存,并在數(shù)據(jù)庫服務(wù)器之間進(jìn)行復(fù)制。數(shù)據(jù)服務(wù)器越多,能使用的容量就越大,可靠性就越高,性能也就越好。
4).客戶端(Client):可以像掛載 NFS 一樣掛載 MFS 文件系統(tǒng),其操作是相同的。
(2)MFS 讀取數(shù)據(jù)的處理過程。
1). 客戶端向元數(shù)據(jù)服務(wù)器發(fā)出讀請求。
2). 元數(shù)據(jù)服務(wù)器把所需數(shù)據(jù)存放的位置( Chunk Server 的IP 地址和 Chunk 編號)告知客戶端。
3). 客戶端向己知的 Chunk Server 請求發(fā)送數(shù)據(jù)。
4). Chunk Server 向客戶端發(fā)送數(shù)據(jù)。
(3). MFS 寫入數(shù)據(jù)的處理過程。
1).客戶端向元數(shù)據(jù)服務(wù)器發(fā)出寫入請求。
2).元數(shù)據(jù)服務(wù)器與 Chunk Server 進(jìn)行交互(只有當(dāng)所需的分塊 Chunks 存在的 時候才進(jìn)行這個交互),單元數(shù)據(jù)服務(wù)器只在某些服務(wù)器創(chuàng)建新的分塊 Chunks ,創(chuàng)建成功后由 Chunk Server 告知元數(shù)據(jù)服務(wù)器操作成功。
3). 元數(shù)據(jù)服務(wù)器告知客戶端,可以在哪個 Chunk Server 的哪些 Chunks 寫入數(shù)據(jù)。
4). 客戶的向指定的 Chunk Server 寫入數(shù)據(jù)。
5).該 Chunk Server 與其他 Chunk Server 進(jìn)行數(shù)據(jù)同步,同步成功后 Chunk Server 告知客戶端數(shù)據(jù)寫入成功。
6).客戶端告知元數(shù)據(jù)服務(wù)器本次寫入完畢。
實(shí)驗(yàn)環(huán)境
本次實(shí)驗(yàn)使用5臺服務(wù)器模擬搭建 MFS 文件系統(tǒng),具體的拓?fù)鋱D如下所示:
實(shí)驗(yàn)環(huán)境如下
主機(jī) 操作系統(tǒng) IP 地址 主要軟件 Master Server Centos 7 192.168.91.147 mfs-1.6.27-5.tar.gz Metalogger Server Centos 7 192.168.91.149 mfs-1.6.27-5.tar.gz Chunk Server 1 Centos 7 192.168.91.148 mfs-1.6.27-5.tar.gz Chunk Server 2 Centos 7 192.168.91.150 mfs-1.6.27-5.tar.gz Client Centos 7 192.168.91.146 mfs-1.6.27-5.tar.gz
fuse-2.9.2.tar.gz鏈接:https://pan.baidu.com/s/17N08A1JTAitFDJhJTJmwlQ (MFS軟件包)
提取碼:b7z9
(1)分別在這5臺服務(wù)器關(guān)閉防火墻,安裝編譯環(huán)境1.搭建Master server
[root@localhost ~]# yum install gcc gcc-c++ zlib-devel –y
[root@localhost ~]# useradd -s /sbin/nologin mfs
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
(2)創(chuàng)建用戶
[root@master Y2C]# useradd -s /sbin/nologin mfs //創(chuàng)建 mfs 用戶
(3)安裝源碼包
[root@master Y2C]# tar zxvf mfs-1.6.27-5.tar.gz -C /opt/
[root@master Y2C]# cd /opt/mfs-1.6.27/
[root@master mfs-1.6.27]# ./configure \
> --prefix=/usr/local/mfs \ //指定安裝路徑
> --with-default-user=mfs \ //指定默認(rèn)用戶為 mfs
> --with-default-group=mfs \ //指定默認(rèn)組
> --disable-mfschunkserver \ //禁用 Chunk Server
> --disable-mfsmount //禁用客戶端[root@master mfs-1.6.27]# make && make install
(4)復(fù)制文件(在 master 服務(wù)器中配置文件不用修改)
[root@master mfs-1.6.27]# cd /usr/local/mfs/etc/mfs/
[root@master mfs]# ls
mfsexports.cfg.dist mfsmaster.cfg.dist mfsmetalogger.cfg.dist mfstopology.cfg.dist //生成4個配置文件
[root@master mfs]# cp mfsexports.cfg.dist mfsexports.cfg //權(quán)限配置文件
[root@master mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg //master 配置文件
[root@master mfs]# cp mfstopology.cfg.dist mfstopology.cfg //元數(shù)據(jù)日志文件[root@master mfs]# cd /usr/local/mfs/var/mfs/
[root@master mfs]# ls
metadata.mfs.empty
[root@master mfs]# cp metadata.mfs.empty metadata.mfs //master運(yùn)行過程中自動產(chǎn)生的元數(shù)據(jù)文件
(5)啟動 Master Server
[root@master mfs]# /usr/local/mfs/sbin/mfsmaster start
[root@master mfs]# netstat -ntap | grep mfsmaster //查看端口是否啟動(有3個端口)
tcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN 9061/mfsmaster
tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN 9061/mfsmaster
tcp 0 0 0.0.0.0:9421 0.0.0.0:* LISTEN 9061/mfsmaster停止 Master Server 的命令是 /usr/local/mfs/sbin/mfsmaster –s
2.搭建 MetaLogger Server
(1)安裝編譯環(huán)境,關(guān)閉防火墻。
[root@metalogger ]# yum install gcc gcc-c++ zlib-devel –y
[root@metalogger ]# systemctl stop firewalld
[root@metalogger ]# setenforce 0
(2)創(chuàng)建 mfs 用戶
[root@metalogger ]# useradd -s /sbin/nologin mfs
(3)安裝源碼包(與 Master Server 配置一樣)
[root@metalogger] tar zxvf mfs-1.6.27-5.tar.gz -C /opt/
[root@metalogger] cd /opt/mfs-1.6.27/
[root@metalogger]./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \
--disable-mfsmount[root@metalogger] make && make install
(4)復(fù)制文件
[root@metalogger mfs-1.6.27]# cd /usr/local/mfs/etc/mfs/
[root@metalogger mfs]# ls
mfsexports.cfg.dist mfsmaster.cfg.dist mfsmetalogger.cfg.dist mfstopology.cfg.dist
[root@metalogger mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg //復(fù)制元數(shù)據(jù)日志文件
(5)修改元數(shù)據(jù)日志文件的配置文件
[root@metalogger mfs]# vim mfsmetalogger.cfg
# WORKING_USER = mfs //運(yùn)行 masterserver 的用戶
# WORKING_GROUP = mfs //運(yùn)行 masterserver 的組
# SYSLOG_IDENT = mfsmetalogger //表示 mfsmetalogger 產(chǎn)生的日志
# LOCK_MEMORY = 0 //是否執(zhí)行 mlockall(),以避免 masterserver 進(jìn)程溢出(默認(rèn)值為0)
# NICE_LEVEL = –19 //運(yùn)行的優(yōu)先級(如果可以,默認(rèn)是 -19;注意:進(jìn)程必須用 root 啟動)# DATA_PATH = /usr/local/mfs/var/mfs //數(shù)據(jù)存放路徑
# BACK_LOGS = 50 //metadata 改變的 log 文件數(shù)目(默認(rèn)是50)
# BACK_META_KEEP_PREVIOUS = 3
# META_DOWNLOAD_FREQ = 24# MASTER_RECONNECTION_DELAY = 5
MASTER_HOST = 192.168.91.147 //修改為 Master server 的 IP 地址
# MASTER_PORT = 9419 //連接端口地址# MASTER_TIMEOUT = 60
(6)啟動 mfsmetalogger
[root@metalogger mfs]# /usr/local/mfs/sbin/mfsmetalogger start
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfsmetalogger modules ...
mfsmetalogger daemon initialized properly
[root@metalogger mfs]# netstat -ntap | grep mfsmetalogger //查看端口
tcp 0 1 192.168.91.149:40552 220.250.64.225:9419 SYN_SENT 59501/mfsmetalogger
3.搭建 Chunk Server(本次實(shí)驗(yàn)兩臺 Chunk Server 搭建步驟是相同的,具體步驟如下)
(1)安裝編譯環(huán)境
[root@chunkserver ~]# systemctl stop firewalld.service
[root@chunkserver ~]# setenforce 0
[root@chunkserver ~]# yum install gcc gcc-c++ zlib-devel –y
(2)創(chuàng)建 mfs 用戶
[root@chunkserrver ]# useradd -s /sbin/nologin mfs
(3)安裝源碼包
[root@chunkserver ~]# tar zxvf mfs-1.6.27-5.tar.gz -C /opt/
[root@chunkserver Y2C]# cd /opt/mfs-1.6.27/
[root@chunkserver mfs-1.6.27]# useradd -s /sbin/nologin mfs
[root@chunkserver mfs-1.6.27]# ./configure \
> --prefix=/usr/local/mfs \
> --with-default-user=mfs \
> --with-default-group=mfs \
> --disable-mfsmaster \ //禁用 mfsmaster
> --disable-mfsmount //禁用客戶端[root@chunkserver mfs]# make && make install
(4)復(fù)制文件,并修改 Chunkserver 的配置文件
[root@chunkserver mfs-1.6.27]# cd /usr/local/mfs/etc/mfs/
[root@chunkserver mfs]# ls
mfschunkserver.cfg.dist mfshdd.cfg.dist
[root@chunkserver mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg
[root@chunkserver mfs]# cp mfshdd.cfg.dist mfshdd.cfg[root@chunkserver mfs]# vim mfschunkserver.cfg
# WORKING_USER = mfs
# WORKING_GROUP = mfs
# SYSLOG_IDENT = mfschunkserver
# LOCK_MEMORY = 0
# NICE_LEVEL = -19# DATA_PATH = /usr/local/mfs/var/mfs
# MASTER_RECONNECTION_DELAY = 5
# BIND_HOST = *
MASTER_HOST = 192.168.91.147 //修改為 Master Server 的 IP 地址
# MASTER_PORT = 9420# MASTER_TIMEOUT = 60
# CSSERV_LISTEN_HOST = *
# CSSERV_LISTEN_PORT = 9422# HDD_CONF_FILENAME = /usr/local/mfs/etc/mfs/mfshdd.cfg
# HDD_TEST_FREQ = 10
(5)添加存儲目錄
[root@chunkserver mfs]# vim mfshdd.cfg
# mount points of HDD drives
#
#/mnt/hd1
#/mnt/hd2
#etc.
/data //添加一行 /data ,在這里 /data 是一個給 MFS 的分區(qū),生產(chǎn)環(huán)境最好使用獨(dú)立的分區(qū)或磁盤關(guān)在到此目錄
[root@chunkserver mfs]# mkdir /data //創(chuàng)建 /data 目錄
[root@chunkserver mfs]# chown -R mfs.mfs /data //給 mfs用戶和組對于 /data 的執(zhí)行權(quán)限
(6)啟動 ChukServer
[root@chunkserver mfs]# /usr/local/mfs/sbin/mfschunkserver start
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfschunkserver modules ...
hdd space manager: path to scan: /data/
hdd space manager: start background hdd scanning (searching for available chunks)
main server module: listen on *:9422
no charts data file - initializing empty charts
mfschunkserver daemon initialized properly
[root@chunkserver mfs]# netstat -ntap | grep mfs
tcp 0 0 0.0.0.0:9422 0.0.0.0:* LISTEN 43697/mfschunkserve
tcp 0 0 192.168.91.148:52454 192.168.91.147:9420 ESTABLISHED 43697/mfschunkserve
另一臺的 ChunkServer 也是一樣的配置
chunk server 2
[root@chunkserver2 mfs]# /usr/local/mfs/sbin/mfschunkserver start
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfschunkserver modules ...
hdd space manager: path to scan: /data/
hdd space manager: start background hdd scanning (searching for available chunks)
main server module: listen on *:9422
no charts data file - initializing empty charts
mfschunkserver daemon initialized properly
[root@chunkserver2 mfs]# netstat -ntap | grep mfs
tcp 0 0 0.0.0.0:9422 0.0.0.0:* LISTEN 47743/mfschunkserve
tcp 0 0 192.168.91.150:36058 192.168.91.147:9420 ESTABLISHED 47743/mfschunkserve
4搭建客戶端
(1)安裝編譯環(huán)境
[root@client ~]# systemctl stop firewalld.service
[root@client ~]# setenforce 0
[root@client ~]# yum install gcc gcc-c++ zlib-devel –y
(2)安裝 FUSE,MFS 客戶端依賴于 FUSE
[root@client Y2C]# tar zxvf fuse-2.9.2.tar.gz -C /opt/
[root@client Y2C]# cd /opt/fuse-2.9.2/
[root@client fuse-2.9.2]# ./configure[root@client fuse-2.9.2]# make && make install
然后設(shè)置于環(huán)境變量
[root@client fuse-2.9.2]# vim /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH //在末行加入
[root@client fuse-2.9.2]# source /etc/profile //刷新環(huán)境變量
(3)安裝 MFS 客戶端
[root@client fuse-2.9.2]# useradd -s /sbin/nologin mfs //創(chuàng)建 mfs 用戶
[root@client Y2C]# tar zxvf mfs-1.6.27-5.tar.gz -C /opt/
[root@client Y2C]# cd /opt/mfs-1.6.27/
[root@client mfs-1.6.27]# ./configure \
> --prefix=/usr/local/mfs \
> --with-default-user=mfs \
> --with-default-group=mfs \
> --disable-mfsmaster \ //禁用 master
> --disable-mfschunkserver \ //禁用 chunkserver
> --enable-mfsmount //啟用客戶端[root@client mfs-1.6.27]# make && make install
(4)掛載 MFS 文件系統(tǒng)
[root@client mfs-1.6.27]# mkdir /opt/mfs //創(chuàng)建掛載點(diǎn)
[root@client mfs-1.6.27]# modprobe fuse //加載 fuse 模塊到內(nèi)核
[root@client mfs-1.6.27]# /usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.91.147 //掛載 MFS (指定到 Master Server 服務(wù)器)
mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root
[root@client mfs-1.6.27]# df –h //查看掛載情況
文件系統(tǒng) 容量 已用 可用 已用% 掛載點(diǎn)
/dev/sda2 20G 3.6G 17G 18% /
devtmpfs 978M 0 978M 0% /dev
tmpfs 993M 0 993M 0% /dev/shm
tmpfs 993M 18M 975M 2% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda5 5.0G 50M 5.0G 1% /opt
/dev/sda3 10G 37M 10G 1% /home
/dev/sda1 997M 158M 839M 16% /boot
tmpfs 199M 4.0K 199M 1% /run/user/42
tmpfs 199M 40K 199M 1% /run/user/0
//192.168.91.1/rhel6 120G 50G 71G 41% /aaa
192.168.91.147:9421 33G 0 33G 0% /opt/mfs要卸載 MFS,使用命令 umount /opt/mfs
(5)MFS 常用操作
MFS 在客戶端安裝完畢后,會生成 /usr/local/mfs/bin/ 目錄,在這個目錄下有很多命令是用戶所需要的。為了方便使用這些命令,可以將 /usr/local/mfs/bin/ 加到環(huán)境變量中。
[root@client mfs-1.6.27]# vim /etc/profile
export PATH=/usr/local/mfs/bin/:$PATH
[root@client mfs-1.6.27]# source /etc/profile
mfsgetgoal 命令用來查詢文件被復(fù)制的分?jǐn)?shù),,利用 –r 命令可以對整個目錄進(jìn)行遞歸, goal 是指文件被復(fù)制的分?jǐn)?shù)
[root@client mfs-1.6.27]# mfsgetgoal -r /opt/mfs
/opt/mfs:
directories with goal 1 : 1
mfssetgoal 命令用來設(shè)置文件被復(fù)制的分?jǐn)?shù),生產(chǎn)環(huán)境中 Chunk Server 節(jié)點(diǎn)數(shù)量應(yīng)至少大于2,文件副本數(shù)小于等于 Chunk Server 服務(wù)器的數(shù)量
[root@client mfs-1.6.27]# mfssetgoal -r 2 /opt/mfs
/opt/mfs:
inodes with goal changed: 1
inodes with goal not changed: 0
inodes with permission denied: 0
[root@client mfs-1.6.27]# mfsgetgoal -r /opt/mfs/
/opt/mfs/:
directories with goal 2 : 1
創(chuàng)建文件測試如下
[root@client mfs-1.6.27]# cd /opt/mfs
[root@client mfs]# touch test
[root@client mfs]# ls
test
[root@client mfs]# mfsgetgoal test
test: 2
(6)MFS 監(jiān)控
Mfscgiserv 是用 python 編寫的一個 web 服務(wù)器,其監(jiān)聽端口是 9425,可以再 Master Server 上通過命令 /usr/local/mfs/sbin/mfscgiserv 來啟動,用戶利益瀏覽器就可以全名監(jiān)控所有客戶掛載、Chunk Server 、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.91.147:9425/
總結(jié):
(1)MFS 是一個具有容錯性的網(wǎng)絡(luò)分布式文件系統(tǒng),它把數(shù)據(jù)分散放在多個物理服務(wù)器上,而呈現(xiàn)給客戶的是一個統(tǒng)一的資源。
(2)MFS 文件系統(tǒng)的組成包括:元數(shù)據(jù)服務(wù)器(Master)、元數(shù)據(jù)日志服務(wù)器(MetaLogger)、數(shù)據(jù)存儲服務(wù)器(Chunk Server)和客戶端(Client)
(3)元數(shù)據(jù)服務(wù)器(Master)需要用到的配置文件有兩個,分別是 mfsmaster.dfg 和 mfsexports.cfg。
(4)在元數(shù)據(jù)服務(wù)器(Master)發(fā)生故障時,可以從 Metaloggwr 中恢復(fù) Master 。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。