MFS 分布式存儲的運行方式
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比沿河網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式沿河網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋沿河地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。MFS工作原理
MooseFS是一款具有冗余容錯功能的分布式文件系統(tǒng)。它把數(shù)據(jù)分散在多臺服務(wù)器上,確保一份數(shù)據(jù)多個備份副本,對外提供統(tǒng)一的結(jié)構(gòu)。
功能特性
對于標(biāo)準(zhǔn)的文件操作,MooseFS表現(xiàn)與其他類Unix文件系統(tǒng)一致。支持的通過文件系統(tǒng)特性:
· 層次結(jié)構(gòu)(目錄樹)
· 兼容POSIX文件屬性
· 支持特殊文件
· 符號鏈接和硬鏈接
· 基于IP地址和密碼的訪問控制
獨有特性
· 高可靠性(數(shù)據(jù)的多個副本存儲在不同服務(wù)器)
· 容量動態(tài)擴展(添加新硬盤或者服務(wù)器)
· 可以回收在制定時間內(nèi)刪除的文件,類似回收站功能
· 可以對整個文件甚至是正在被寫入的文件創(chuàng)建文件快照
MFS整體架構(gòu)的四種角色
· Master(元數(shù)據(jù)服務(wù)器)負(fù)責(zé)各個數(shù)據(jù)存儲服務(wù)器的管理,文件讀寫調(diào)度,文件空間回收以及恢復(fù),多節(jié)點拷貝。存儲著每個文件的元數(shù)據(jù)(文件的大小、屬性、位置信息,包括所有非常規(guī)文件的所有信息,例如目錄、套接字、管道以及設(shè)備文件)
· Metalogger(元數(shù)據(jù)日志服務(wù)器)負(fù)責(zé)備份Master服務(wù)器的changelog。文件類型為 changelog.*.mfs ,以便在Master出問題時接替其工作
· Chunk(數(shù)據(jù)存儲服務(wù)器)負(fù)責(zé)連接Master,聽從Master調(diào)度,提供存儲空間,并為客戶端提供數(shù)據(jù)傳輸
· Client(客戶端掛載)通過FUSE內(nèi)核接口掛載遠(yuǎn)程管理服務(wù)器(master)上所管理的數(shù)據(jù)存儲服務(wù)器,使用起來和本地文件系統(tǒng)一樣
·
## MFS讀處理過程:
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ù)。
## MFS寫處理過程:
1、客戶端向元數(shù)據(jù)服務(wù)器發(fā)送寫入請求。
2、元數(shù)據(jù)服務(wù)器與Chunk Server進(jìn)行交互(只有當(dāng)所需的分塊Chunks存在的時候才進(jìn)行這個交互):
a、元數(shù)據(jù)服務(wù)器只是在某些服務(wù)器創(chuàng)建新的分塊chunks。
b、Chunk Servers告知元數(shù)據(jù)服務(wù)器,步驟a已經(jīng)操作成功。
3、元數(shù)據(jù)服務(wù)器告知客戶端,你可以在哪個Chunk Server的哪些Chunks寫入數(shù)據(jù)。
4、客戶端向指定的Chunk Server寫入數(shù)據(jù)
5、Chunk Server與其他Chunk Server進(jìn)行數(shù)據(jù)同步。
6、Chunk Server之間同步成功。
7、Chunk Server告知客戶端數(shù)據(jù)寫入成功。
8、客戶端告知元數(shù)據(jù)服務(wù)器本次寫入完畢。
實驗拓?fù)?/strong>
一、搭建master server
1.安裝依賴包
[root@centos1 ~]# yum -y install zlib-devel
2.創(chuàng)建用戶
[root@centos1 ~]# useradd mfs -s /sbin/nologin
3.安裝源碼包
[root@centos1 ~]# tar xf /mnt/mfs-1.6.27-5.tar.gz -C /usr/src
[root@centos1 mfs-1.6.27]# cd /usr/src/mfs-1.6.27/
[root@centos1 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
[root@centos1 mfs-1.6.27]# make&&make install
4.復(fù)制文件
[root@centos1 mfs-1.6.27]# cd /usr/local/mfs/etc/mfs
[root@centos1 mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg
[root@centos1 mfs]# cp mfsexports.cfg.dist mfsexports.cfg
[root@centos1 mfs]# cp mfstopology.cfg mfstopology.cfg
[root@centos1 mfs]# cd /usr/local/mfs/var/mfs/
[root@centos1 mfs]# cp metadata.mfs.empty metadata.mfs
5.配置文件(只需了解,不用改動)
①// mfsmaster.cfg(主配置文件)/usr/local/mfs/etc/mfs目錄下
# WORKING_USER = mfs 運行master server的用戶
# WORKING_GROUP = mfs 運行master server的組
# SYSLOG_IDENT = mfsmaster master server 在syslog中的標(biāo)識,說明是由master serve產(chǎn)生的
# LOCK_MEMORY = 0 是否執(zhí)行mlockall()以避免mfsmaster進(jìn)程溢出(默認(rèn)為0)
# NICE_LEVEL = -19 運行的優(yōu)先級(如果可以默認(rèn)是-19;注意:進(jìn)程必須是用root啟動)
# EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg 被掛接目錄及其權(quán)限控制文件的存放位置
# TOPOLOGY_FILENAME = /usr/local/mfs/etc/mfs/mfstopology.cfg
# DATA_PATH = /usr/local/mfs/var/mfs 數(shù)據(jù)存放路徑,此目錄下大致有三類文件,changelog,sessions和stats;
# BACK_LOGS = 50 metadata 的改變log文件數(shù)目(默認(rèn)是50);
# BACK_META_KEEP_PREVIOUS = 1
# REPLICATIONS_DELAY_INIT = 300 延遲復(fù)制的時間(默認(rèn)是300s);
# REPLICATIONS_DELAY_DISCONNECT = 3600 chunkserver 斷開的復(fù)制延遲(默認(rèn)是3600);
# MATOML_LISTEN_HOST = * metalogger 監(jiān)聽的IP地址(默認(rèn)是*,代表任何IP);
# MATOML_LISTEN_PORT = 9419 metalogger 監(jiān)聽的端口地址(默認(rèn)是9419);
# MATOML_LOG_PRESERVE_SECONDS = 600
# MATOCS_LISTEN_HOST = * 用于chunkserver連接的IP地址(默認(rèn)是*,代表任何IP);
# MATOCS_LISTEN_PORT = 9420 用于chunkserver連接的端口地址(默認(rèn)是9420);
# MATOCU_LISTEN_HOST = * 用于客戶端掛接連接的IP地址(默認(rèn)是*,代表任何IP);
# MATOCU_LISTEN_PORT = 9421 用于客戶端掛接連接的端口地址(默認(rèn)是9421);
# CHUNKS_LOOP_MAX_CPS = 100000
# CHUNKS_LOOP_MIN_TIME = 300 chunks 的回環(huán)頻率(默認(rèn)是:300秒);
②mfsexportes.cfg 為共享mfs文件系統(tǒng)的控制文件,NFS要共享一個目錄時,我們會使用vim /etc/exports命令,編寫共享給誰,所要共享的目錄,共享出去的屬性這些內(nèi)容,而mfsexports.cfg的作用與其類似其書寫格式如下: 對客戶端的配置
Allow everything but “meta”
* / rw,alldirs,maproot=0
Client(客戶端)支持格式:ip、ip/netmask、ip/位數(shù)掩碼、ip-ip、*
該文件每一個條目分為三部分:
第一部分:客戶端的ip 地址
第二部分:被掛接的目錄
第三部分:客戶端擁有的權(quán)限
//地址可以指定的幾種表現(xiàn)形式:
* 所有的ip地址
n.n.n.n 單個ip地址
n.n.n.n/b IP 網(wǎng)絡(luò)地址/位數(shù)掩碼
n.n.n.n/m.m.m.m IP 網(wǎng)絡(luò)地址/子網(wǎng)掩碼
f.f.f.f-t.t.t.t IP 段
//目錄部分需要注意兩點:
/ 標(biāo)識MooseFS根;
. 表示MFSMETA文件系統(tǒng)
//權(quán)限部分:
ro 只讀模式共享
rw 讀寫的方式共享
alldirs 許掛載任何指定的子目錄
6.啟動服務(wù)/usr/local/mfs/sbin/mfsmaster start
[root@centos1 mfs]#netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN 7599/mfsmaster
tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN 7599/mfsmaster
tcp 0 0 0.0.0.0:9421 0.0.0.0:* LISTEN 7599/mfsmaster
tcp 0 0 192.168.1.1:9419 192.168.1.2:37816 ESTABLISHED 7599/mfsmaster
tcp 0 0 192.168.1.1:9420 192.168.1.3:48107 ESTABLISHED 7599/mfsmaster
tcp 0 0 ::1:25 :::* LISTEN 1732/master
7.查看進(jìn)程
[root@centos1 mfs]# ps -ef|grep mfs
8.停止mfsmaster
[root@centos1 mfs]#/usr/local/mfs/sbin/mfsmaster -s 或stop
二、搭建metalogger server
1.安裝依賴包
[root@centos1 ~]# yum -y install zlib-devel
2.創(chuàng)建用戶
[root@centos1 ~]# useradd mfs -s /sbin/nologin
3.安裝源碼包
[root@centos1 ~]# tar xf /mnt/mfs-1.6.27-5.tar.gz -C /usr/src
[root@centos1 mfs-1.6.27]# cd /usr/src/mfs-1.6.27/
[root@centos1 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
[root@centos1 mfs-1.6.27]#make && make install
4.復(fù)制文件
[root@centos1 mfs-1.6.27]# cd /usr/local/mfs/etc
[root@centos2 mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
[root@centos2 mfs]# vim mfsmetalogger.cfg
MASTER_HOST=192.168.1.1 //手工添加MASTER SERVER的ip地址
5.啟動服務(wù)
[root@centos2 mfs]# /usr/local/mfs/sbin/mfsmetalogger start
三、搭建chunk server
1.安裝依賴包
[root@centos1 ~]# yum -y install zlib-devel
2.創(chuàng)建用戶
[root@centos1 ~]# useradd mfs -s /sbin/nologin
3.安裝
[root@centos1 ~]# tar xf /mnt/mfs-1.6.27-5.tar.gz -C /usr/src
[root@centos1 mfs-1.6.27]# cd /usr/src/mfs-1.6.27/
[root@centos3 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount
[root@centos3 mfs-1.6.27]# make &&make install
4.復(fù)制配置文件
[root@centos3 mfs]# cd /usr/local/mfs/etc/mfs/
#cp mfschunkserver.cfg.dist mfschunkserver.cfg
[root@centos3 mfs]# cp mfshdd.cfg mfshdd.cfg
5.修改配置文件
[root@centos3 mfs]# vim mfschunkserver.cfg
MASTER_HOST = 192.168.1.1 //master服務(wù)器的ip地址
[root@centos3 mfs]# vim mfshdd.cfg
/data //設(shè)置chunkserver存放數(shù)據(jù)的目錄
4.設(shè)置目錄權(quán)限,啟動mfschunkserver
[root@centos3 mfs]# mkdir /data //創(chuàng)建/data
[root@centos3 mfs]# chown -R mfs:mfs /data //設(shè)置權(quán)限
[root@centos3 mfs]# /usr/local/mfs/sbin/mfschunkserver start //啟動服務(wù)
四、搭建第二個chunkserver
1.[root@centos3 ~]# useradd mfs -s /sbin/nologin
2.安裝
[root@centos4 mfs-1.6.27]# tar xf /mnt/mfs-1.6.27-5.tar.gz -C /usr/src
[root@centos4 mfs-1.6.27]# cd /usr/src/mfs-1.6.27/
[root@centos4 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount
[root@centos4 mfs-1.6.27]# make && make install
3.復(fù)制配置文件
[root@centos3 mfs-1.6.27]# cd /usr/local/mfs/etc/mfs
[root@centos4 mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg
[root@centos4 mfs]# cp mfshdd.cfg.dist mfshdd.cfg
4.修改配置文件
[root@centos3 mfs]# vim mfschunkserver.cfg
MASTER_HOST = 192.168.1.1 //master服務(wù)器的ip地址
[root@centos3 mfs]# vim mfshdd.cfg
/data //存放數(shù)據(jù)的目錄
5.設(shè)置目錄權(quán)限,啟動mfschunkserver
#mkdir /data
[root@centos3 mfs]# chown -R mfs:mfs /data
[root@centos3 mfs]# /usr/local/mfs/sbin/mfschunkserver start
五、客戶端配置
1.安裝fuse
fuse的功能簡單概括一下,fuse提供一個文件操作的接口,然后fuse在這個接口上監(jiān)聽文件操作,并把這些對文件的操作傳給我們自己的相關(guān)代碼進(jìn)行處理。 也就是說,fuse提供一個掛載點,然后他會在這個掛在點上進(jìn)行監(jiān)聽,一旦有操作(新建、讀取、修改)發(fā)生,他會把控制權(quán)交給我們的代碼,這些操作的具體代碼都在mfsmount模塊中實現(xiàn)。
[root@centos1 fuse-2.9.2]# tar xf /mnt/fuse-2.9.2.tar.gz -C /usr/src
[root@centos1 fuse-2.9.2]# cd /usr/src/fuse-2.9.2/
[root@centos1 fuse-2.9.2]# ./configure
[root@centos1 fuse-2.9.2]# make &&make install
2.設(shè)置環(huán)境變量
[root@centos1 fuse-2.9.2]# vim /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH //環(huán)境變量PKG_CONFIG_PATH是用來設(shè)置.pc文件的搜索路徑的
[root@centos1 fuse-2.9.2]# source /etc/profile //刷新環(huán)境變量
3.安裝mfs客戶端
[root@centos3 ~]# useradd -s /sbin/nologin mfs
[root@centos1 mfs-1.6.27]# tar xf /mnt/mfs-1.6.27-5.tar.gz -C /usr/src
[root@centos1 mfs-1.6.27]# cd /usr/src/mfs-1.6.27/
[root@centos1 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount
[root@centos1 mfs-1.6.27]# make&&make install
4.掛載mfs文件系統(tǒng)
#mkdir /test //創(chuàng)建掛載點
[root@centos1 test]# modprobe fuse//加載fuse模塊到內(nèi)核
[root@centos1 test]# /usr/local/mfs/bin/mfsmount /test -H 192.168.1.1//掛載mfs
查看掛載情況:
5.mfs常用操作
1.設(shè)置環(huán)境變量
[root@centos1 test]# vim /etc/profile
export PATH=/usr/local/mfs/bin:$PATH
[root@centos1 test]# source /etc/profile
2.查看與設(shè)置文件復(fù)制的份數(shù)
[root@centos1 test]# mfsgetgoal -r /test
3.測試
[root@centos1 test]# dd if=/dev/zero of=/test/111.data bs=200M count=1
查看寫入結(jié)果:
[root@centos1 test]# mfssetgoal -r 2 /test 進(jìn)行冗余測試
[root@centos1 test]# dd if=/dev/zero of=/test/222.data bs=200M count=1
查看寫入結(jié)果是否冗余:
六、mfs監(jiān)控
1. [root@centos1 mfs]# /usr/local/mfs/sbin/mfscgiserv //master服務(wù)器寫入
2. 通過網(wǎng)站進(jìn)行監(jiān)控測試:
七、MFS集群維護(hù)
1.啟動MFS集群
安全的啟動MooseFS 集群(避免任何讀或?qū)懙腻e誤數(shù)據(jù)或類似的問題)的方式是按照以下命令步驟:
1. 啟動mfsmaster 進(jìn)程
2. 啟動所有的mfschunkserver 進(jìn)程
3. 啟動mfsmetalogger 進(jìn)程(如果配置了mfsmetalogger)
4. 當(dāng)所有的chunkservers 連接到MooseFS master后,任何數(shù)目的客戶端可以利用mfsmount去掛接被export的文件系統(tǒng)。(可以通過檢查master的日志或是CGI監(jiān)視器來查看是否所有的chunkserver被連接)。
2.停止MFS集群
安全的停止MooseFS 集群:
1. 在所有的客戶端卸載MooseFS 文件系統(tǒng)(用umount命令或者是其它等效的命令)
2. 用mfschunkserver stop 命令停止chunkserver進(jìn)程
3. 用mfsmetalogger stop 命令停止metalogger進(jìn)程
4. 用mfsmaster stop 命令停止master進(jìn)程
3.MFS元數(shù)據(jù)備份
通常元數(shù)據(jù)有兩部分的數(shù)據(jù):
· 主要元數(shù)據(jù)文件metadata.mfs,當(dāng)mfsmaster運行的時候會被命名為metadata.mfs.back
· 元數(shù)據(jù)改變?nèi)罩綾hangelog.*.mfs,存儲了過去的N小時的文件改變(N的數(shù)值是由BACK_LOGS參數(shù)設(shè)置的,參數(shù)的設(shè)置在mfschunkserver.cfg配置文件中)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。