mooseFS是一款網絡分佈式文件系統。它把數據分散在多臺服務器上,但對於用戶來講,看到的只是一個源。MFS也像其他類unix文件系統一樣,包含了層級結構(目錄樹),存儲着文件屬性(權限,最後訪問和修改時間),可以創建特殊的文件(塊設備,字符設備,管道,套接字),符號鏈接,硬鏈接。
MooseFS文件系統結構包括以下四種角色:
1 管理服務器managing server (master)
2 元數據日誌服務器Metalogger server(Metalogger)
3數據存儲服務器data servers (chunkservers)
4 客戶機掛載使用client computers
原理圖:
搭建的環境介紹
Master server: 10.96.153.223
Metalogger server : 10.96.153.224
chunk server : 10.96.153.221 10.96.153.222
client server : 10.96.153.225
這裏使用兩臺chunk server,master、metalogger和client各一臺進行測試,當然,如果由於服務器有限,可以把master和metalogger分別放在chunkserver上。
Master Server安裝
1、下載解壓
#cd /usr/src
#wget http://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.26/mfs-1.6.26.tar.gz
#tar xzf mfs-1.6.26.tar.gz
2、配置編譯參數
#groupadd mfs
#useradd -g mfs mfs
#cd mfs-1.6.26/
#./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmount --disable-mfschunkserver
3、編譯並安裝
#make
#make install
4、配置文件
#cd /usr/local/mfs/etc
#cp mfsmaster.cfg.dist mfsmaster.cfg
#cp mfsexports.cfg.dist mfsexports.cfg
更改配置文件mfsexports.cfg
10.96.153.0/24 / rw,alldirs,maproot=0
5、啓動前準備
#cd /usr/local/mfs/var/mfs
#cp metadata.mfs.empty metadata.mfs
#echo "10.96.153.221 mfsmaster" >> /etc/hosts
6、啓動mfsmaster
#/usr/local/mfs/sbin/mfsmaster start
7、監控服務
#/usr/local/mfs/sbin/mfscgiserv
瀏覽器輸入10.96.153.221:9425
mfsmetalogger搭建
1、下載解壓
#cd /usr/src
#wget http://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.26/mfs-1.6.26.tar.gz
#tar xzf mfs-1.6.26.tar.gz
2、配置編譯參數
#groupadd mfs
#useradd -g mfs mfs
#cd mfs-1.6.26/
#./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmount --disable-mfschunkserver
3、編譯並安裝
#make
#make install
4、配置文件
#cd /usr/local/mfs/etc
#cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
5、啓動前準備
#echo "10.96.153.221 mfsmaster" >> /etc/hosts
6、啓動mfsmetalogger
##/usr/local/mfs/sbin/mfsmetalogger start
Chunk servers 安裝
1、下載解壓
#cd /usr/src
#wget http://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.26/mfs-1.6.26.tar.gz
#tar xzf mfs-1.6.26.tar.gz
2、配置編譯參數
#groupadd mfs
#useradd -g mfs mfs
#cd mfs-1.6.26/
#./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmount --disable-mfsmaster
3、編譯並安裝
#make
#make install
4、創建磁盤(100G)
#dd if=/dev/zero of=/mnt/storage/mfschunks1 bs=1024 count=1 seek=$((100*1024*1024-1))
#mkfs -t ext3 /mnt/storage/mfschunks1
#mkdir -p /mnt/mfs1
#mount -t ext3 -o loop /mnt/storage/mfschunks1 /mnt/mfs1
5、配置文件
#cd /usr/local/mfs/etc
#cp mfschunkserver.cfg.dist mfschunkserver.cfg
#cp mfshdd.cfg.dist mfshdd.cfg
更改配置文件mfshdd.cfg,加入:
/mnt/mfs1
6、啓動前準備
#echo "10.96.153.221 mfsmaster" >> /etc/hosts
#chown -R mfs:mfs /mnt/mfs1
7、啓動chunkserver
##/usr/local/mfs/sbin/mfschunkserver start
mfsclient安裝
1、下載解壓
#cd /usr/src
#wget http://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.26/mfs-1.6.26.tar.gz
#tar xzf mfs-1.6.26.tar.gz
2、配置編譯參數
#groupadd mfs
#useradd -g mfs mfs
#cd mfs-1.6.26/
#./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster--disable-mfschunkserver
3、編譯並安裝
#make
#make install
4、啓動前準備
mkdir /mnt/mfs
#echo "10.96.153.221 mfsmaster" >> /etc/hosts
5、開始掛載
#/usr/local/mfs/bin/mfsmount /mnt/mfs -H mfsmaster
6、檢查
df -h查看輸出
MFS維護
5.1、啓動MFS集羣
1、啓動mfsmaster 進程
2、啓動所有的mfschunkserver 進程
3、啓動mfsmetalogger 進程(如果配置了mfsmetalogger)
4、當所有的chunkservers 連接到MooseFS master 後,任何數目的客戶端可以利用mfsmount 去掛接被export 的文件系統。(可以通過檢查master 的日誌或是CGI 監視器來查看是否所有的chunkserver被連接)。
5.2、停止MFS集羣
1、在所有的客戶端卸載MooseFS 文件系統(用umount 命令或者是其它等效的命令)
2、用mfschunkserver stop 命令停止chunkserver 進程
3、用mfsmetalogger stop 命令停止metalogger 進程
4、用mfsmaster stop 命令停止master 進程
5.3、MFS chunkservers 的維護
若每個文件的goal(目標)都不小於2,並且沒有under-goal 文件(這些可以用mfsgetgoal –r和mfsdirinfo 命令來檢查),那麼一個單一的chunkserver 在任何時刻都可能做停止或者是重新啓動。以後每當需要做停止或者是重新啓動另一個chunkserver 的時候,要確定之前的chunkserver 被連接,而且要沒有under-goal chunks。
5.4、MFS元數據備份
用rsync定時備份/usr/local/app/soft/mfs/var/mfs/metadata.mfs.back
5.5、MFS Master的恢復
mfsmetarestore -a
5.6、從MetaLogger中恢復Master
mfsmetarestore -m metadata.mfs.back -o metadata.mfs changelog_ml.*.mfs