分布式存储MooseFS的搭建

MooseFS介绍

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、下载解压

  1. #cd /usr/src
  2. #wget http://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.26/mfs-1.6.26.tar.gz
  3. #tar xzf mfs-1.6.26.tar.gz

2、配置编译参数

  1. #groupadd mfs
  2. #useradd -g mfs mfs
  3. #cd mfs-1.6.26/
  4. #./configure –prefix=/usr/local/mfs –with-default-user=mfs –with-default-group=mfs –disable-mfsmount –disable-mfschunkserver

3、编译并安装

  1. #make
  2. #make install

4、配置文件

  1. #cd /usr/local/mfs/etc
  2. #cp mfsmaster.cfg.dist mfsmaster.cfg
  3. #cp mfsexports.cfg.dist mfsexports.cfg

更改配置文件mfsexports.cfg

  1. 10.96.153.0/24 / rw,alldirs,maproot=0

5、启动前准备

  1. #cd /usr/local/mfs/var/mfs
  2. #cp metadata.mfs.empty metadata.mfs
  3. #echo "10.96.153.221 mfsmaster" >> /etc/hosts

6、启动mfsmaster

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

7、监控服务

  1. #/usr/local/mfs/sbin/mfscgiserv

浏览器输入10.96.153.221:9425

mfsmetalogger搭建

1、下载解压

  1. #cd /usr/src
  2. #wget http://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.26/mfs-1.6.26.tar.gz
  3. #tar xzf mfs-1.6.26.tar.gz

2、配置编译参数

  1. #groupadd mfs
  2. #useradd -g mfs mfs
  3. #cd mfs-1.6.26/
  4. #./configure –prefix=/usr/local/mfs –with-default-user=mfs –with-default-group=mfs –disable-mfsmount –disable-mfschunkserver

3、编译并安装

  1. #make
  2. #make install

4、配置文件

  1. #cd /usr/local/mfs/etc
  2. #cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

5、启动前准备

  1. #echo "10.96.153.221 mfsmaster" >> /etc/hosts

6、启动mfsmetalogger

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

Chunk servers 安装

1、下载解压

  1. #cd /usr/src
  2. #wget http://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.26/mfs-1.6.26.tar.gz
  3. #tar xzf mfs-1.6.26.tar.gz

2、配置编译参数

  1. #groupadd mfs
  2. #useradd -g mfs mfs
  3. #cd mfs-1.6.26/
  4. #./configure –prefix=/usr/local/mfs –with-default-user=mfs –with-default-group=mfs –disable-mfsmount –disable-mfsmaster

3、编译并安装

  1. #make
  2. #make install

4、创建磁盘(100G)

  1. #dd if=/dev/zero of=/mnt/storage/mfschunks1 bs=1024 count=1 seek=$((100*1024*1024-1))
  2. #mkfs -t ext3 /mnt/storage/mfschunks1
  3. #mkdir -p /mnt/mfs1
  4. #mount -t ext3 -o loop /mnt/storage/mfschunks1 /mnt/mfs1

5、配置文件

  1. #cd /usr/local/mfs/etc
  2. #cp mfschunkserver.cfg.dist mfschunkserver.cfg
  3. #cp mfshdd.cfg.dist mfshdd.cfg

更改配置文件mfshdd.cfg,加入:

  1. /mnt/mfs1

6、启动前准备

  1. #echo "10.96.153.221 mfsmaster" >> /etc/hosts
  2. #chown -R mfs:mfs /mnt/mfs1

7、启动chunkserver

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

mfsclient安装

1、下载解压

  1. #cd /usr/src
  2. #wget http://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.26/mfs-1.6.26.tar.gz
  3. #tar xzf mfs-1.6.26.tar.gz

2、配置编译参数

  1. #groupadd mfs
  2. #useradd -g mfs mfs
  3. #cd mfs-1.6.26/
  4. #./configure –prefix=/usr/local/mfs –with-default-user=mfs –with-default-group=mfs –disable-mfsmaster–disable-mfschunkserver

3、编译并安装

  1. #make
  2. #make install

4、启动前准备

  1. mkdir /mnt/mfs
  2. #echo "10.96.153.221 mfsmaster" >> /etc/hosts

5、开始挂载

  1. #/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的恢复

  1. mfsmetarestore -a

5.6、从MetaLogger中恢复Master

  1. mfsmetarestore -m metadata.mfs.back -o metadata.mfs changelog_ml.*.mfs