九爺帶你部署Mfs分布式文件系統(tǒng)

版權(quán)聲明:原創(chuàng)作品抛蚤,謝絕轉(zhuǎn)載!否則將追究法律責(zé)任赏胚。

Mfs分布式文件系統(tǒng)

前言:前面我們學(xué)習(xí)過NFS什荣,以及虛擬化課程的時(shí)候我們學(xué)習(xí)過openfiler呀忧,這兩個(gè)都是屬于存儲(chǔ)服務(wù)器。但是他們有著共同的缺點(diǎn)溃睹,就是性能不好,因?yàn)槎际峭ㄟ^共享方式共享一個(gè)存儲(chǔ)空間胰坟,使得服務(wù)器不堪重負(fù)因篇,會(huì)出現(xiàn)超時(shí)的問題泞辐,而且存在著單點(diǎn)故障問題,盡管可以用rsync同步數(shù)據(jù)到另外一臺(tái)服務(wù)器上做備份竞滓,但性能方便沒有任何提升咐吼。而分布式文件系統(tǒng)把數(shù)據(jù)分散存儲(chǔ)在不同的服務(wù)器上,讀取數(shù)據(jù)的時(shí)候相當(dāng)于同時(shí)讀取商佑,不像nfs是一對(duì)多的關(guān)系锯茄,而是多對(duì)多的關(guān)系,這樣可以使得性能得到大幅提升茶没。

今天我們學(xué)習(xí)使用MFS搭建分布式文件系統(tǒng)肌幽,MFS具有容錯(cuò)功能,高可用抓半,可擴(kuò)展的功能喂急。MFS把數(shù)據(jù)分散在多臺(tái)服務(wù)器上,但用戶看到的只是一個(gè)源笛求。

客戶端向元數(shù)據(jù)服務(wù)器發(fā)出讀請(qǐng)求

元數(shù)據(jù)服務(wù)器把所需數(shù)據(jù)存放的位置(Chunk Server的IP地址和Chunk編號(hào))告知客戶端

客戶端向已知的Chunk Server請(qǐng)求發(fā)送數(shù)據(jù)

Chunk Server向客戶端發(fā)送數(shù)據(jù)

3)寫入的過程

客戶端向元數(shù)據(jù)服務(wù)器發(fā)送寫入請(qǐng)求

元數(shù)據(jù)服務(wù)器與Chunk Server進(jìn)行交互廊移,但元數(shù)據(jù)服務(wù)器只在某些服務(wù)器創(chuàng)建新的分塊Chunks,創(chuàng)建成功后由Chunk Servers告知元數(shù)據(jù)服務(wù)器操作成功

元數(shù)據(jù)服務(wù)器告知客戶端探入,可以在哪個(gè)Chunk Server的哪些Chunks寫入數(shù)據(jù)

客戶端向指定的Chunk Server寫入數(shù)據(jù)

該Chunk Server與其他Chunk Server進(jìn)行數(shù)據(jù)同步狡孔,同步成功后Chunk Server告知客戶端數(shù)據(jù)寫入成功

客戶端告知元數(shù)據(jù)服務(wù)器本次寫入完畢

實(shí)驗(yàn)環(huán)境

實(shí)驗(yàn)拓?fù)?/p>

虛擬機(jī)環(huán)境

實(shí)驗(yàn)步驟

搭建master server

停止防火墻并且安裝支持包

創(chuàng)建用戶

安裝源碼包

[root@centos3~]# tar zxf mfs-1.6.27-5.tar.gz

[root@centos3~]# cd mfs-1.6.27

[root@centos3mfs-1.6.27]# ./configure\

>--prefix=/usr/local/mfs\//指定安裝目錄

>--with-default-user=mfs\//指定程序運(yùn)行用戶

>--with-default-group=mfs\//指定程序運(yùn)行組

>--disable-mfschunkserver\//禁用Chunk功能

>--disable-mfsmount\//禁用mfsmount功能

[root@centos3mfs-1.6.27]# make && make install//編譯安裝

4)復(fù)制文件(設(shè)置配置文件)

[root@centos3mfs-1.6.27]# cd /usr/local/mfs/etc/mfs/

[root@centos3mfs]# ls

mfsexports.cfg.distmfsmetalogger.cfg.dist

mfsmaster.cfg.distmfstopology.cfg.dist

[root@centos3mfs]# cp mfsexports.cfg.dist ?mfsexports.cfg

[root@centos3mfs]# cp mfsmaster.cfg.dist ?mfsmaster.cfg

[root@centos3mfs]# cp mfstopology.cfg.dist ?mfstopology.cfg

[root@centos3mfs]# cd /usr/local/mfs/var/mfs/

[root@centos3mfs]# ls

metadata.mfs.empty

[root@centos1 mfs]# cp metadata.mfs.empty ?metadata.mfs

這個(gè)文件存放master的變化信息

配置文件(下面的只是介紹一下,不用修改蜂嗽,默認(rèn)就好)

需要用到兩個(gè)配置文件:mfsmaster.cfg(主配置文件)和mfsexport.cfg(被掛載目錄及訪問權(quán)限)

mfsmaster.cfg常用的參數(shù)如下苗膝,默認(rèn)全部都是不需要修改的,全文都是以#開頭徒爹,也就是說都是默認(rèn)配置

[root@centos1 mfs]# cd /usr/local/mfs/etc/mfs/

[root@centos1 mfs]# vim mfsmaster.cfg

WORKING_USER = mfs//運(yùn)行masterserver的用戶

# WORKING_GROUP = mfs//運(yùn)行masterserver的組

# SYSLOG_IDENT = mfsmaster//masterserver在syslog的標(biāo)示荚醒,說明是由masterserver產(chǎn)生的

# LOCK_MEMORY = 0//是否執(zhí)行mlokall(),以避免mfsmaster進(jìn)程溢出默認(rèn)為0

# NICE_LEVEL = -19//運(yùn)行的優(yōu)先級(jí)隆嗅,進(jìn)程必須由root啟動(dòng)

# EXPORTS_FILENAME = /usr/local/mfs/etc/mfs/mfsexports.cfg

//被掛載目錄及其權(quán)限控制文件的存放位置

# TOPOLOGY_FILENAME = /usr/local/mfs/etc/mfs/mfstopology.cfg

# DATA_PATH = /usr/local/mfs/var/mfs//數(shù)據(jù)存放路徑

# BACK_LOGS = 50//metadata改變的log文件數(shù)目(默認(rèn)是50)

# BACK_META_KEEP_PREVIOUS = 1

# REPLICATIONS_DELAY_INIT = 300 ?//延遲復(fù)制的時(shí)間(默認(rèn)300)

# REPLICATIONS_DELAY_DISCONNECT = 3600 ?//Chunkserver斷開復(fù)制延遲(默認(rèn)是3600秒)

# MATOML_LISTEN_HOST = *//metalogger監(jiān)聽的IP地址默認(rèn)是所有地址

# MATOML_LISTEN_PORT = 9419//metalogger監(jiān)聽的端口地址(默認(rèn)為9419)

# MATOML_LOG_PRESERVE_SECONDS = 600

# MATOCL_LISTEN_HOST = *//用于chunkserver連接的IP地址(默認(rèn)為*代表所有IP)

# MATOCL_LISTEN_PORT = 9421//用戶客戶端掛在的監(jiān)聽端口9421

# CHUNKS_LOOP_MAX_CPS = 100000

# CHUNKS_LOOP_MIN_TIME = 300//chunks的回環(huán)頻率(默認(rèn)300)

# CHUNKS_SOFT_DEL_LIMIT = 10

# CHUNKS_HARD_DEL_LIMIT = 25

# CHUNKS_WRITE_REP_LIMIT = 2//在一個(gè)循環(huán)里復(fù)制到另外一個(gè)Chunkserver的最大Chunk數(shù)

# CHUNKS_READ_REP_LIMIT = 10//在一個(gè)循環(huán)里從一個(gè)Chunkserver復(fù)制的的最大Chunk數(shù)

# ACCEPTABLE_DIFFERENCE = 0.1

# SESSION_SUSTAIN_TIME = 86400

# REJECT_OLD_CLIENTS = 0//彈出低于1.6.0的客戶端掛接(0或1界阁,默認(rèn)是0)

# deprecated:

# CHUNKS_DEL_LIMIT - use CHUNKS_SOFT_DEL_LIMIT instead

# LOCK_FILE - lock system has been changed, and this option is used onl

y to search for old lockfile

mfsexport.cfg文件參數(shù)格式如下

# Allow everything but "meta".

* ?????????/ ??????rw,alldirs,maproot=0

# Allow "meta".

* ??????????????????????. ??????rw

該文件,每一個(gè)條目分為三個(gè)部分

第一部分:客戶端IP地址

第二部分:被掛載的目錄

第三部分:客戶端擁有的權(quán)限

地址可以指定幾種表現(xiàn)形式

*代表所有的IP地址

n.n.n.n單個(gè)ip地址

n.n.n.n/bIP網(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)示如下

/標(biāo)示MFS根

.表示MFSMETA文件系統(tǒng)

權(quán)限部分如下所示

ro——只讀模式共享

rw——讀寫模式共享

alldirs——允許掛載任何指定的子目錄

maproot——映射為root胖喳,還是普通用戶

password——指定客戶端的密碼

以上就是對(duì)mfsmaster.cfg和mfsexport文件的解釋泡躯,默認(rèn)就是最好的,不需要做任任何修改丽焊。

啟動(dòng)master server

第一遍啟動(dòng)的時(shí)候较剃,可能會(huì)出現(xiàn)以下錯(cuò)誤信息

[root@centos1 mfs]# /usr/local/mfs/sbin/mfsmaster ?start

loading sessions ... file not found

如果出現(xiàn)以上信息,則關(guān)閉服務(wù)并重新啟動(dòng)就可以了

[root@centos1 mfs]# /usr/local/mfs/sbin/mfsmaster ?-s

-s表示停止服務(wù)

[root@centos1 mfs]# /usr/local/mfs/sbin/mfsmaster ?start

再啟動(dòng)就不會(huì)出現(xiàn)任何信息

查看是否啟動(dòng)

8)建立防火墻規(guī)則

[root@centos1 mfs]# iptables -I INPUT -p tcp --dport 9419 -j ACCEPT

[root@centos1 mfs]# iptables -I INPUT -p tcp --dport 9420 -j ACCEPT

[root@centos1 mfs]# iptables -I INPUT -p tcp --dport 9421 -j ACCEPT

[root@centos1 mfs]# service iptables save

搭建metalogger server

1)安裝mfs(同上)

Useradd mfs ?-s ?/sbin/nologin

復(fù)制文件

3)修改配置文件技健,添加master服務(wù)器的ip地址(注意去掉注釋和空格)

開啟服務(wù)

5)查看端口

[root@centos5mfs]# netstat -anpt | grep 9419

tcp ???????0 ?????0 192.168.1.2:50929 ??????????192.168.1.1:9419 ???????????ESTABLISHED 53533/mfsmetalogger

[root@centos5mfs]# iptables -I INPUT -p tcp --dport 9419 -j ACCEPT

[root@centos5mfs]# service iptables save

搭建chunk server(二臺(tái)chunk的搭建步驟相同)

安裝mfs(同上)

復(fù)制文件

Cd /usr/local/mfs/etc/mfs

Cp mfschunkserver.cfg.dist mfschunkserver.cfg

Cp mfshdd.cfg.dist mfshdd.cfg

Vi mfschunkserver.cfg

修改配置文件(一共2個(gè))

vim mfschunkserver.cfg

vim mfshdd.cfg(添加/data

建立文件夾并開啟服務(wù)

開啟例外

[root@centos5mfs]# ps -ef | grep mfs

mfs ??????56269 ?????1 ?0 20:54 ? ???????00:00:00 /usr/local/mfs/sbin/mfschunkserver start

root ?????56297 ?48740 ?0 20:54 pts/0 ???00:00:00 grep mfs

[root@centos5mfs]# iptables -I INPUT -p tcp --dport 9422 -j ACCEPT

[root@centos5mfs]# service iptables save

注意:第二臺(tái)chunk的配置和上面的配置完全一樣写穴,這里就不在說明了

客戶端配置

安裝fuseMFS(客戶端依賴于FUSE)

設(shè)置環(huán)境變量

添加下面這行

exportPKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

安裝MFS客戶端

掛載文件系統(tǒng)

查看掛載情況

設(shè)置文件被復(fù)制的份數(shù)并測試

MFS客戶端安裝完畢后,會(huì)生成/usr/local/mfs/bin/目錄雌贱,在這個(gè)目錄下有很多命令是用戶所需的啊送。

mfsgetgoal命令用來查看文件被復(fù)制的分?jǐn)?shù)偿短,利用-r命令可以對(duì)整個(gè)目錄進(jìn)行遞歸,goal是指文件比復(fù)制的分?jǐn)?shù)馋没。

[root@centos6 mfs-1.6.27]# mfsgetgoal ?-r /mnt/mfs/

/mnt/mfs/:

directories with goal ?1 : ?????????1

由于還沒有設(shè)置昔逗,默認(rèn)為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ù)量勾怒。由于我有二臺(tái)Chunk server我將副本數(shù)量設(shè)置為1

在vim ?/etc/profile文件中增加一行(為了方便執(zhí)行命令)

設(shè)置查詢文件被復(fù)制的份數(shù):

在/mnt/mfs中建立文件

分別打開兩臺(tái)chunk查看/data下,都產(chǎn)生了加密的數(shù)據(jù)声旺,說明成功了

5笔链、mfs監(jiān)控

mfscgiserv是用python編寫的一個(gè)web服務(wù)器,其監(jiān)聽端口是9425艾少,可以再masster server上通過/usr/local/mfs/sbin/mfscgiserv來啟動(dòng)卡乾,用戶利用覽器就可以完全監(jiān)控所有客戶掛接、Chunk server缚够、Master server等幔妨。

在一臺(tái)客戶端上通過覽器訪問http://192.168.1.1:9425

[root@centos3mfs]# /usr/local/mfs/sbin/mfscgiserv

lockfile created and locked

starting simple cgi server (host: any , port: 9425 , rootpath: /usr/local/mfs/share/mfscgi)

[root@centos3mfs]# iptables -I INPUT -p tcp --dport 9425 -j ACCEPT

災(zāi)難恢復(fù)

MFS維護(hù)及災(zāi)難恢復(fù)

1)MFS集群的啟動(dòng)與停止

MFS集群的啟動(dòng)順序如下

(1)啟動(dòng)mfsmaster進(jìn)程

(2)啟動(dòng)所有的mfsChunkserver進(jìn)程

(3)啟動(dòng)mfsmetalogger進(jìn)程

(4)在所有客戶端上掛載NFS文件系統(tǒng)

MFS集群的停止順序如下

(1)在所有客戶端卸載MFS掛載

(2)停止Chunkserver進(jìn)程

(3)停止mfsmetalogger進(jìn)程

(4)停止mfsmaster進(jìn)程

2)MFS災(zāi)難恢復(fù)

整個(gè)MFS體系中,直接斷電只有master server進(jìn)程有可能無法啟動(dòng)谍椅,可以在master上使用命令/usr/local/mfs/sbin/mfsmetarestore -a修復(fù)

我們將master server直接斷電(必須運(yùn)行的時(shí)間夠20分鐘才可以斷電误堡,否則數(shù)據(jù)很有可能直接丟失)

[root@centos1 ~]# /usr/local/mfs/sbin/mfsmaster start

init: file system manager failed !!!

error occured during initialization - exiting

[root@centos1 ~]# /usr/local/mfs/sbin/mfsmetarestore -a

loading objects (files,directories,etc.) ... ok

loading names ... ok

loading deletion timestamps ... ok

loading chunks data ... ok

checking filesystem consistency ... ok

connecting files and chunks ... ok

progress: current change: 0 (first:0 - last:0 - 100% - ETA:finished)

store metadata into file: /usr/local/mfs/var/mfs/metadata.mfs

[root@centos1 ~]# /usr/local/mfs/sbin/mfsmaster ?start

從MetaLogger中恢復(fù)

MFS元數(shù)據(jù)通常有兩部分的數(shù)據(jù),分別如下

(1)主要元數(shù)據(jù)文件metadata.mfs雏吭,當(dāng)mfsmaster運(yùn)行時(shí)會(huì)被命名為metadata.back.mfs锁施。

(2)元數(shù)據(jù)改變?nèi)罩綾hangelog.*.mfs,存儲(chǔ)了過去N小時(shí)的文件變更杖们。

在Master發(fā)生故障時(shí)悉抵,可以從MetaLogger中恢復(fù),步驟如下

(1)安裝一臺(tái)mfsmaster摘完,利用同樣的配置來配置這臺(tái)mfsmaster姥饰,mfsmaster進(jìn)程先不要啟動(dòng)

(2)將metalogger上/usr/local/mfs/var/mfs/目錄下所有文件復(fù)制到mfsmaster相應(yīng)的目錄中。

[root@centos3 mfs]# scp root@192.168.1.101:/usr/local/mfs/var/mfs/* /usr/local/mfs/var/mfs/

[root@centos3 mfs]# /usr/local/mfs/sbin/mfsmetarestore ?-m metadata_ml.mfs.back -o metadata.mfs changelog_ml.*.mfs

loading objects (files,directories,etc.) ... ok

loading names ... ok

loading deletion timestamps ... ok

loading chunks data ... ok

checking filesystem consistency ... ok

connecting files and chunks ... ok

changelog_ml.0.mfs:1: version mismatch

[root@centos3 mfs]# /usr/local/mfs/sbin/mfsmaster ?start

[root@centos3 mfs]# ls

Ceshi

注意:如果是全新安裝的master孝治,恢復(fù)數(shù)據(jù)后列粪,需要更改metalogger和chunkserver,配置MASTER_HOST的ip地址谈飒,客戶端也需要重新掛載mfs目錄岂座。

本文出自 “李世龍” 博客,謝絕轉(zhuǎn)載杭措!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末费什,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子手素,更是在濱河造成了極大的恐慌吕喘,老刑警劉巖赘那,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異氯质,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)祠斧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門闻察,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人琢锋,你說我怎么就攤上這事辕漂。” “怎么了吴超?”我有些...
    開封第一講書人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵钉嘹,是天一觀的道長。 經(jīng)常有香客問我鲸阻,道長跋涣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任鸟悴,我火速辦了婚禮陈辱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘细诸。我一直安慰自己沛贪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開白布震贵。 她就那樣靜靜地躺著利赋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪猩系。 梳的紋絲不亂的頭發(fā)上媚送,一...
    開封第一講書人閱讀 52,584評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音蝙眶,去河邊找鬼季希。 笑死,一個(gè)胖子當(dāng)著我的面吹牛幽纷,可吹牛的內(nèi)容都是我干的式塌。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼友浸,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼峰尝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起收恢,我...
    開封第一講書人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤武学,失蹤者是張志新(化名)和其女友劉穎祭往,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體火窒,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡硼补,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了熏矿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片已骇。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖票编,靈堂內(nèi)的尸體忽然破棺而出褪储,到底是詐尸還是另有隱情,我是刑警寧澤慧域,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布鲤竹,位于F島的核電站,受9級(jí)特大地震影響昔榴,放射性物質(zhì)發(fā)生泄漏辛藻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一论泛、第九天 我趴在偏房一處隱蔽的房頂上張望揩尸。 院中可真熱鬧,春花似錦屁奏、人聲如沸岩榆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽勇边。三九已至,卻和暖如春折联,著一層夾襖步出監(jiān)牢的瞬間粒褒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來泰國打工诚镰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奕坟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓清笨,卻偏偏與公主長得像月杉,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子抠艾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容