mfs分佈式存儲搭建應用

                MFS 分佈式存儲的運行方式vim

MFS工做原理centos

MooseFS是一款具備冗餘容錯功能的分佈式文件系統。它把數據分散在多臺服務器上,確保一份數據多個備份副本,對外提供統一的結構。安全

功能特性服務器

對於標準的文件操做,MooseFS表現與其餘類Unix文件系統一致。支持的經過文件系統特性:網絡

· 層次結構(目錄樹)session

· 兼容POSIX文件屬性架構

· 支持特殊文件tcp

· 符號連接和硬連接分佈式

· 基於IP地址和密碼的訪問控制ide

獨有特性

· 高可靠性(數據的多個副本存儲在不一樣服務器)

· 容量動態擴展(添加新硬盤或者服務器)

· 能夠回收在制定時間內刪除的文件,相似回收站功能

· 能夠對整個文件甚至是正在被寫入的文件建立文件快照

MFS總體架構的四種角色

· Master(元數據服務器)負責各個數據存儲服務器的管理,文件讀寫調度,文件空間回收以及恢復,多節點拷貝。存儲着每一個文件的元數據(文件的大小、屬性、位置信息,包括全部很是規文件的全部信息,例如目錄、套接字、管道以及設備文件)

· Metalogger(元數據日誌服務器)負責備份Master服務器的changelog。文件類型爲 changelog.*.mfs ,以便在Master出問題時接替其工做

· Chunk(數據存儲服務器)負責鏈接Master,遵從Master調度,提供存儲空間,併爲客戶端提供數據傳輸

· Client(客戶端掛載)經過FUSE內核接口掛載遠程管理服務器(master)上所管理的數據存儲服務器,使用起來和本地文件系統同樣

· wKioL1kMduyQv6SGAAKKzi-CoWk313.png-wh_50

## MFS讀處理過程:
1、客戶端向元數據服務器發出讀請求。
2、元數據服務器把所需數據存放的位置(Chunk ServerIP地址和chunk編號)告知客戶端。
3、客戶端向已知的Chunk Server請求發送數據。
4Chunk Server向客戶端發送數據。

## MFS寫處理過程:
1、客戶端向元數據服務器發送寫入請求。
2、元數據服務器與Chunk Server進行交互(只有當所需的分塊Chunks存在的時候才進行這個交互):
a、元數據服務器只是在某些服務器建立新的分塊chunks
bChunk Servers告知元數據服務器,步驟a已經操做成功。
3、元數據服務器告知客戶端,你能夠在哪一個Chunk Server的哪些Chunks寫入數據。
4、客戶端向指定的Chunk Server寫入數據
5Chunk Server與其餘Chunk Server進行數據同步。
6Chunk Server之間同步成功。
7Chunk Server告知客戶端數據寫入成功。
8、客戶端告知元數據服務器本次寫入完畢。

 

實驗拓撲

wKioL1kMdwSAR_jeAABSz4jItao292.png-wh_50 

1、搭建master  server

1.安裝依賴包

[root@centos1 ~]# yum -y install zlib-devel

wKioL1kMdyXBhSyqAAARb2n5vVY479.png-wh_50 

2.建立用戶

[root@centos1 ~]# useradd mfs -s /sbin/nologin

wKioL1kMdzjS4yz3AAAP6LKLqUA376.png-wh_50 

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/

wKioL1kMd1LQaLuvAAAWSBR7XOg486.png-wh_50 

[root@centos1 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs  --with-default-group=mfs  --disable-mfschunkserver  --disable-mfsmount

wKiom1kMd2uw-DHuAAAuRJgXgbs910.png-wh_50 

[root@centos1 mfs-1.6.27]# make&&make install

wKioL1kMd36iHDZ2AAANV6BS8OM816.png-wh_50 

4.複製文件

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

wKioL1kMd46AWSvqAAAPvwxNTWw623.png-wh_50 

[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

wKiom1kMd6LhVk16AAAgrgelKpw124.png-wh_50 

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

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

wKiom1kMd7TjUHjQAAAbgqBO7rs920.png-wh_50 

 

5.配置文件(只需瞭解,不用改動)

// mfsmaster.cfg(主配置文件)/usr/local/mfs/etc/mfs目錄下

# WORKING_USER = mfs 運行 master server 的用戶

# WORKING_GROUP = mfs 運行 master server 的組

# SYSLOG_IDENT = mfsmaster master server syslog中的標識,說明是由 master serve 產生的

# LOCK_MEMORY = 0 是否執行 mlockall()以免 mfsmaster 進程溢出(默認爲 0

# NICE_LEVEL = -19 運行的優先級(若是能夠默認是 -19; 注意: 進程必須是用 root啓動)

# EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg 被掛接目錄及其權限控制文件的存放位置

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

# DATA_PATH = /usr/local/mfs/var/mfs 數據存放路徑,此目錄下大體有三類文件,changelogsessionsstats

# BACK_LOGS = 50 metadata 的改變 log 文件數目(默認是 50);

# BACK_META_KEEP_PREVIOUS = 1

# REPLICATIONS_DELAY_INIT = 300 延遲複製的時間(默認是 300s;

# REPLICATIONS_DELAY_DISCONNECT = 3600 chunkserver 斷開的複製延遲(默認是 3600);

# MATOML_LISTEN_HOST = * metalogger 監聽的 IP 地址(默認是*,表明任何 IP)

# MATOML_LISTEN_PORT = 9419 metalogger 監聽的端口地址(默認是 9419)

# MATOML_LOG_PRESERVE_SECONDS = 600

# MATOCS_LISTEN_HOST = * 用於 chunkserver 鏈接的 IP 地址(默認是*,表明任何 IP);

# MATOCS_LISTEN_PORT = 9420 用於 chunkserver 鏈接的端口地址(默認是 9420);

# MATOCU_LISTEN_HOST = * 用於客戶端掛接鏈接的 IP 地址(默認是*,表明任何 IP)

# MATOCU_LISTEN_PORT = 9421 用於客戶端掛接鏈接的端口地址(默認是 9421);

# CHUNKS_LOOP_MAX_CPS = 100000

# CHUNKS_LOOP_MIN_TIME = 300 chunks 的迴環頻率(默認是:300 秒);

mfsexportes.cfg 爲共享mfs文件系統的控制文件,NFS要共享一個目錄時,咱們會使用vim /etc/exports命令,編寫共享給誰,所要共享的目錄,共享出去的屬性這些內容,而mfsexports.cfg的做用與其相似其書寫格式以下: 對客戶端的配置

Allow   everything    but  meta

*                /       rw,alldirs,maproot=0

wKiom1kMd8nAFd-ZAAAbVMhjas4939.png-wh_50 

Client(客戶端)支持格式:ipip/netmaskip/位數掩碼、ip-ip*

該文件每個條目分爲三部分:

第一部分:客戶端的ip 地址

第二部分:被掛接的目錄

第三部分:客戶端擁有的權限

//地址能夠指定的幾種表現形式:

* 全部的ip 地址

n.n.n.n 單個ip 地址

n.n.n.n/b IP 網絡地址/位數掩碼

n.n.n.n/m.m.m.m IP 網絡地址/子網掩碼

f.f.f.f-t.t.t.t IP

 

//目錄部分須要注意兩點:

/ 標識MooseFS ;

. 表示MFSMETA 文件系統

//權限部分:

ro 只讀模式共享

rw 讀寫的方式共享

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

6.啓動服務/usr/local/mfs/sbin/mfsmaster start

wKioL1kMd9_wvXo0AAAqCVk1glw250.png-wh_50 

[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.查看進程

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

wKiom1kMd_vzTz8wAAAuIqp2Xlo836.png-wh_50 

8.中止mfsmaster

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

2、搭建metalogger  server

1.安裝依賴包

[root@centos1 ~]# yum -y install zlib-devel

wKiom1kMeBjAni3CAAARb2n5vVY840.png-wh_50 

2.建立用戶

[root@centos1 ~]# useradd mfs -s /sbin/nologin

 

wKioL1kMeCjjtVUlAAARhVw1glY993.png-wh_50 

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/

wKioL1kMeDrhx-m-AAAXoRcJz1E852.png-wh_50 

[root@centos1 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs  --with-default-group=mfs  --disable-mfschunkserver  --disable-mfsmount

wKiom1kMeErTWg7fAAAuI0yLkdo613.png-wh_50 

[root@centos1 mfs-1.6.27]# make && make install

wKioL1kMeFqwismMAAANptOI1yk187.png-wh_50 

4.複製文件

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

[root@centos2 mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

wKioL1kMeGuTjFvfAAASfEOzJTk963.png-wh_50 

[root@centos2 mfs]# vim mfsmetalogger.cfg

MASTER_HOST=192.168.1.1  //手工添加MASTER SERVERip地址

wKioL1kMeH3R8xtmAAAiwuE2Hyw203.png-wh_50 

5.啓動服務

[root@centos2 mfs]# /usr/local/mfs/sbin/mfsmetalogger start

wKiom1kMeI6wFpOCAAApO9saLmg050.png-wh_50 

3、搭建chunk server

1.安裝依賴包

[root@centos1 ~]# yum -y install zlib-devel

wKiom1kMeKfQd-gJAAARb2n5vVY933.png-wh_50 

2.建立用戶

[root@centos1 ~]# useradd mfs -s /sbin/nologin

wKioL1kMeLuBXJOTAAARaYNLXLY314.png-wh_50 

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/

wKiom1kMeNGB09KhAAAWtZa0AAY022.png-wh_50 

[root@centos3 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount

wKioL1kMeOPjtjW8AAAr56kHGfc498.png-wh_50 

[root@centos3 mfs-1.6.27]# make &&make install

wKioL1kMeP_w5T0nAAAOy8PE95o936.png-wh_50 

4.複製配置文件

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

#cp mfschunkserver.cfg.dist mfschunkserver.cfg

[root@centos3 mfs]# cp mfshdd.cfg mfshdd.cfg

wKiom1kMeROhOO8JAAAqw45MbtA535.png-wh_50 

5.修改配置文件

[root@centos3 mfs]# vim mfschunkserver.cfg

MASTER_HOST = 192.168.1.1  //master服務器的ip地址

wKioL1kMeSmAB6dfAAAfqvBWohA112.png-wh_50 

[root@centos3 mfs]# vim mfshdd.cfg

/data    //設置chunkserver存放數據的目錄

wKiom1kMeUKSa-3rAAAdlGdz0kg065.png-wh_50 

4.設置目錄權限,啓動mfschunkserver

[root@centos3 mfs]# mkdir /data              //建立/data

[root@centos3 mfs]# chown -R mfs:mfs /data          //設置權限

[root@centos3 mfs]# /usr/local/mfs/sbin/mfschunkserver start   //啓動服務

wKiom1kMeVbBmIyxAAAU7nxWjq8949.png-wh_50 

4、搭建第二個chunkserver

1.[root@centos3 ~]# useradd mfs  -s /sbin/nologin

wKioL1kMeWiwm0WKAAAQnLqp3oM834.png-wh_50 

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/

wKiom1kMeXyw057tAAAUR5rQK-4022.png-wh_50 

[root@centos4 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount

wKioL1kMeY6T0ejXAAAf8yi-OCs101.png-wh_50 

[root@centos4 mfs-1.6.27]# make  && make install

wKioL1kMeZ-gfIDnAAAOIT3DeE4428.png-wh_50 

3.複製配置文件

[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

wKiom1kMebPjBcdtAAAWQiNXWlE396.png-wh_50 

4.修改配置文件

[root@centos3 mfs]# vim mfschunkserver.cfg

MASTER_HOST = 192.168.1.1  //master服務器的ip地址

wKiom1kMecWD9oryAAATV7ppUBI272.png-wh_50 

[root@centos3 mfs]# vim mfshdd.cfg

/data    //存放數據的目錄

wKiom1kMeeTAw3hVAAAb4ovz80o299.png-wh_50 

5.設置目錄權限,啓動mfschunkserver

#mkdir   /data

[root@centos3 mfs]# chown -R mfs:mfs /data

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

wKioL1kMefuxBmsAAAAULsbdu68148.png-wh_50 

5、客戶端配置

1.安裝fuse

fuse的功能簡單歸納一下,fuse提供一個文件操做的接口,而後fuse在這個接口上監聽文件操做,並把這些對文件的操做傳給咱們本身的相關代碼進行處理。 也就是說,fuse提供一個掛載點,而後他會在這個掛在點上進行監聽,一旦有操做(新建、讀取、修改)發生,他會把控制權交給咱們的代碼,這些操做的具體代碼都在mfsmount模塊中實現

[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/

wKiom1kMeg-i14ReAAAV6uuNnPI715.png-wh_50 

[root@centos1 fuse-2.9.2]# ./configure

[root@centos1 fuse-2.9.2]# make &&make install

wKioL1kMeiDxva2nAAAPzTtsPtw868.png-wh_50 

2.設置環境變量

[root@centos1 fuse-2.9.2]# vim /etc/profile

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH //環境變量PKG_CONFIG_PATH是用來設置.pc文件的搜索路徑的

wKiom1kMejKA6NJYAAAaMwmFAXc220.png-wh_50 

[root@centos1 fuse-2.9.2]# source /etc/profile     //刷新環境變量

wKiom1kMekSApA9gAAAMfH1AiRQ521.png-wh_50 

3.安裝mfs客戶端

[root@centos3 ~]# useradd -s /sbin/nologin   mfs

wKiom1kMelTAJySeAAAOpUDN8fc619.png-wh_50 

[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/

wKioL1kMemngInVaAAAUDeRmmZ0266.png-wh_50 

[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

wKiom1kMenvi7DcbAAAqsKIEMQE169.png-wh_50 

[root@centos1 mfs-1.6.27]# make&&make install

wKiom1kMeo3SbpT7AAANm5oAHhk361.png-wh_50 

4.掛載mfs文件系統

#mkdir /test     //建立掛載點

[root@centos1 test]# modprobe fuse//加載fuse模塊到內核

wKiom1kMeqXi7kxzAAARmGO2W8o368.png-wh_50 

[root@centos1 test]# /usr/local/mfs/bin/mfsmount /test -H 192.168.1.1//掛載mfs

wKiom1kMerjSPgEJAAAi82gpyac429.png-wh_50 

查看掛載狀況:

wKioL1kMesmTVHeJAABQfrD_Yb0707.png-wh_50 

5.mfs經常使用操做

1.設置環境變量

[root@centos1 test]# vim /etc/profile

export PATH=/usr/local/mfs/bin:$PATH

wKiom1kMet_Q0AmYAAAQRXZn4qs093.png-wh_50 

[root@centos1 test]# source /etc/profile

wKiom1kMevGSOEv0AAAMLDCkgAg727.png-wh_50 

2.查看與設置文件複製的份數

[root@centos1 test]# mfsgetgoal -r /test

wKiom1kMewni8XvsAAASofXKrTM557.png-wh_50 

3.測試

[root@centos1 test]# dd if=/dev/zero of=/test/111.data  bs=200M count=1

wKiom1kMexuDONVyAAAQ3chrrtQ424.png-wh_50 

查看寫入結果:

wKioL1kMey3APXteAAAz3gg6O2A907.png-wh_50 

[root@centos1 test]# mfssetgoal -r 2 /test 進行冗餘測試

wKioL1kMez_x_cTeAAAMWjaFZNY722.png-wh_50 

[root@centos1 test]# dd if=/dev/zero of=/test/222.data  bs=200M count=1

wKiom1kMe0-BmU_WAAAQruBYpoY022.png-wh_50 

查看寫入結果是否冗餘:

wKioL1kMe2ih8OgyAAA2Ey2n2rg265.png-wh_50 

6、mfs監控

1. [root@centos1 mfs]# /usr/local/mfs/sbin/mfscgiserv  //master服務器寫入

wKiom1kMe3vwvLLQAAAN2-bdQCk669.png-wh_50 

2. 經過網站進行監控測試:

 

wKioL1kMe4vRceVRAAB2eTOu8OI295.png-wh_50 

7、MFS集羣維護

1.啓動MFS集羣

安全的啓動MooseFS 集羣(避免任何讀或寫的錯誤數據或相似的問題)的方式是按照如下命令步驟:

1. 啓動mfsmaster 進程

2. 啓動全部的mfschunkserver 進程

3. 啓動mfsmetalogger 進程(若是配置了mfsmetalogger

4. 當全部的chunkservers 鏈接到MooseFS master 後,任何數目的客戶端能夠利用mfsmount 去掛接被export 的文件系統。(能夠經過檢查master 的日誌或是CGI 監視器來查看是否全部的chunkserver被鏈接)。

2.中止MFS集羣

安全的中止MooseFS 集羣:

1. 在全部的客戶端卸載MooseFS 文件系統(用umount 命令或者是其它等效的命令)

2. mfschunkserver stop 命令中止chunkserver 進程

3. mfsmetalogger stop 命令中止metalogger 進程

4. mfsmaster stop 命令中止master 進程

3.MFS元數據備份

一般元數據有兩部分的數據:

· 主要元數據文件metadata.mfs,當mfsmaster 運行的時候會被命名爲metadata.mfs.back

· 元數據改變日誌changelog.*.mfs,存儲了過去的N 小時的文件改變(N 的數值是由BACK_LOGS參數設置的,參數的設置在mfschunkserver.cfg 配置文件中)。

相關文章
相關標籤/搜索