天天看點

MFS 高可用存儲分布式檔案系統

MFS分布式檔案系統

系統:redhat

機器:192.168.1.248(Master)

            192.168.1.249(Backup)

           192.168.1.250(Chunkserver 1)

           192.168.1.238(Chunkserver2)

          192.168.1.251 (client)

   Master安裝MFS:

配置之前確定5台機器的selinux關閉,iptables關閉

# useradd mfs

# tar zvxf mfs-1.6.17.tar.gz

# cd mfs-1.6.17

# ./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

# mv mfsexports.cfg.dist mfsexports.cfg

# mv mfsmaster.cfg.dist mfsmaster.cfg

# mv mfsmetalogger.cfg.dist mfsmetalogger.cfg

# cd /usr/local/mfs/var/mfs/

# mv metadata.mfs.empty metadata.mfs

# echo "192.168.1.248    mfsmaster" >> /etc/hosts

Mfsmaster.cfg 配置檔案包含主要伺服器master 相關的設定

mfsexports.cfg 指定那些用戶端主機可以遠端挂接MooseFS 檔案系統,以及授予

挂接用戶端什麼樣的通路權。預設是所有主機共享/

試着運作master 服務(服務将以安裝配置configure 指定的使用者運作mfs):

# /usr/local/mfs/sbin/mfsmaster start

working directory: /usr/local/mfs/var/mfs

lockfile created and locked

initializing mfsmaster modules ...

loading sessions ... ok

sessions file has been loaded

exports file has been loaded

loading metadata ...

create new empty filesystemmetadata file has been loaded

no charts data file - initializing empty charts

master <-> metaloggers module: listen on *:9419

master <-> chunkservers module: listen on *:9420

main master server module: listen on *:9421

mfsmaster daemon initialized properly

為了監控MooseFS 目前運作狀态,我們可以運作CGI 監控服務,這樣就可以用浏覽器檢視整個MooseFS 的運作情況:

# /usr/local/mfs/sbin/mfscgiserv

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

Backup伺服器配置 (作用是故障了替代Master):

# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

# cp mfsexports.cfg.dist mfsexports.cfg

# cp mfsmaster.cfg.dist mfsmaster.cfg

# /usr/local/mfs/sbin/mfsmetalogger start

initializing mfsmetalogger modules ...

mfsmetalogger daemon initialized properly

Chunkserver 伺服器配置(存儲資料塊,每台Chunkserver配置都一樣):

# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster

# cp mfschunkserver.cfg.dist mfschunkserver.cfg

# cp mfshdd.cfg.dist mfshdd.cfg

建議在chunk server 上劃分單獨的空間給 MooseFS 使用,這樣做的好處是便于管理剩餘空間,這裡使用的共享點是/mfs1和/mfs2

在配置檔案mfshdd.cfg 中,我們給出了用于用戶端挂接MooseFS 分布式檔案系統根分區所使用的共享空間位置

# vi /usr/local/mfs/etc/mfshdd.cfg

#加入下面2行

/mfs1

/mfs2

# chown -R mfs:mfs /mfs*

開始啟動chunk server

# /usr/local/mfs/sbin/mfschunkserver start

initializing mfschunkserver modules ...

hdd space manager: scanning folder /mfs2/ ...

hdd space manager: scanning folder /mfs1/ ...

hdd space manager: /mfs1/: 0 chunks found

hdd space manager: /mfs2/: 0 chunks found

hdd space manager: scanning complete

main server module: listen on *:9422

mfschunkserver daemon initialized properly

client配置(用戶端挂載mfs共享目錄):

前提環境:

所有的client都需要安裝fuse,核心版本為2.6.18-128.el5需要按照fuse-2.7.6.tar.gz,如果是2.6.18-194.11.3.el5核心則需要安裝fuse-2.8.4否則報錯)

在/etc/profile檔案最後面加上:PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

再執行 source /etc/profile 使之生效

tar xzvf fuse-2.7.6.tar.gz

cd fuse-2.7.6

./configure --enable-kernel-module

make;make install

如果安裝成功會找到/lib/modules/2.6.18-128.el5/kernel/fs/fuse/fuse.ko這個核心子產品

再執行modprobe fuse

檢視是否加載成功 :lsmod|grep "fuse"

#./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver

挂載操作

# mkdir -p /data/mfs

# /usr/local/mfs/bin/mfsmount /data/mfs -H mfsmaster

mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root

進行副本建立,隻要在1台client上進行操作就可以了

# cd /data/mfs/

副本數為1

# mkdir floder1

副本數為2

# mkdir floder2

副本數為3

# mkdir floder3

使用指令mfssetgoal –r 設定目錄裡檔案的副本數:

# /usr/local/mfs/bin/mfssetgoal -r 1 /data/mfs/floder1

/data/mfs/floder1:

 inodes with goal changed:                         0

 inodes with goal not changed:                     1

 inodes with permission denied:                    0

# /usr/local/mfs/bin/mfssetgoal -r 2 /data/mfs/floder2

/data/mfs/floder2:

 inodes with goal changed:                         1

 inodes with goal not changed:                     0

# /usr/local/mfs/bin/mfssetgoal -r 3 /data/mfs/floder3

/data/mfs/floder3:

 inodes with goal not changed:                     0

拷貝檔案測試

# cp /root/mfs-1.6.17.tar.gz /data/mfs/floder1

# cp /root/mfs-1.6.17.tar.gz /data/mfs/floder2

# cp /root/mfs-1.6.17.tar.gz /data/mfs/floder3

指令mfschunkfile 用來檢查給定的檔案以多少副本數來存儲

目錄folder1 有一個副本存儲在一個chunk 裡:

# /usr/local/mfs/bin/mfscheckfile /data/mfs/floder1/mfs-1.6.17.tar.gz

/data/mfs/floder1/mfs-1.6.17.tar.gz:

1 copies: 1 chunks

在目錄folder2 中,是以兩個副本儲存的

# /usr/local/mfs/bin/mfscheckfile /data/mfs/floder2/mfs-1.6.17.tar.gz 

/data/mfs/floder2/mfs-1.6.17.tar.gz:

2 copies: 1 chunks

在目錄folder3 中,是以三個副本儲存的

# /usr/local/mfs/bin/mfscheckfile /data/mfs/floder3/mfs-1.6.17.tar.gz 

/data/mfs/floder3/mfs-1.6.17.tar.gz:

3 copies: 1 chunks

停止 <b>MooseFS</b>

為了安全停止MooseFS 叢集,建議執行如下的步驟:

·在所有用戶端用Unmount 指令先解除安裝檔案系統(本例将是: umount /data/mfs)

·停止chunk server 程序: /usr/local/mfs/sbin/mfschunkserver stop

·停止 metalogger 程序: /usr/local/mfs/sbin/mfsmetalogger stop

·停止主要 master server 程序: /usr/local/mfs/sbin/mfsmaster stop

注意說明:

1、定時備份/usr/local/mfs/var/mfs/metadata.mfs.back檔案

失敗恢複

拷貝備份檔案到 備份伺服器<b>Backup server (metalogger)</b>

在備份伺服器<b>Backup server (metalogger)</b> 操作

# /usr/local/mfs/sbin/mfsmetarestore -a

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

loading names ... ok

loading deletion timestamps ... ok

checking filesystem consistency ... ok

loading chunks data ... ok

connecting files and chunks ... ok

applying changes from file: /usr/local/mfs/var/mfs/changelog_ml.1.mfs

meta data version: 23574

version after applying changelog: 23574

applying changes from file: /usr/local/mfs/var/mfs/changelog_ml.0.mfs

version after applying changelog: 23583

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

修改hosts檔案,變更mfsmaster的ip

192.168.1.249    mfsmaster

啟動master

all inodes: 2381

directory inodes: 104

file inodes: 2277

chunks: 2185

metadata file has been loaded

所有客戶機執行

# umount /data/mfs

所有存儲節點停止mfschunkserver服務

#/usr/local/mfs/sbin/mfschunkserver stop

所有客戶機,chunkserver修改hosts檔案,更改mfsmaster的ip

所有存儲節點啟動服務

#/usr/local/mfs/sbin/mfschunkserver start

所有客戶機進行挂載

mfs會把所有chunkserver的共享目錄容量累積為一個總的容量存儲空間,client看到的目錄大小就是所有chunkserver共享的目錄空間總和。

MFS Master和backup高可用這塊,可以用DRBD來解決Master單點故障,後面我會釋出這塊的文檔。

挂載權限這塊可以在Master裡設定運作挂載的ip段(mfsexport.cfg)  也可以通過iptables控制。

恢複誤删除檔案:

/usr/local/mfs/bin/mfsmount /data/reco -H mfsmaster -p -m   (/data/reco建立目錄用于恢複删除的檔案,如果彈出passwod就輸入mfsmaster的機器密碼),進入/data/reco/trash

mv 00* ./undel/

再去挂載的目錄檢視删除的檔案都已經恢複完成。

本文轉自 liang3391 51CTO部落格,原文連結:http://blog.51cto.com/liang3391/482599