分布式存储MooseFS的搭建,它把数据分散在多台服


MooseFS介绍

mooseFS是一款网络分布式文件系统。它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源。MFS也像其他类unix文件系统一样,包含了层级结构(目录树),存储着文件属性(权限,最后访问和修改时间),可以创建特殊的文件(块设备,字符设备,管道,套接字),符号链接,硬链接。

MooseFS文件系统结构包括以下四种角色:

1 管理服务器managing server (master)
2 元数据日志服务器Metalogger server(Metalogger)
3数据存储服务器data servers (chunkservers)
4 客户机挂载使用client computers

原理图:

read862

write862

搭建的环境介绍

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

相关内容