昔我往矣

moosefs分布式网络文件系统

2015年02月26日

由于单机文件系统的不可靠性,软硬件都存在故障风险,所以在重要场合,大多已经开始采用分布式文件系统,分布式系统遵循不把鸡蛋放在一个篮子里的原则,在一台机器崩溃的情况,文件系统集群中的其它服务器依旧可以提供完整的文件存取服务。由于分布式文件系统的容错性、高可靠性和高可扩展性的优点,其自诞生起就一直很火,各类开源产品层出不穷。本文演示了如何使用moosefs(简称mfs)搭建一套分布式网络文件系统!

mfs相关说明
mfs的集群划分为如下几类角色:

  • master 集群的master节点,mfs客户端使用该节点进行挂载
  • chunk server 存储块节点,保存mfs块数据
  • metalogger 备份mfs日志,可以用来护恢复master
  • client 挂载mfs文件系统进行读写的节点

mfs测试环境

操作系统 centos 6.4 x86_64
moosemfs版本 moosefs-ce-2.0.50(当前最新版)
master节点 192.168.1.1
chunk节点 192.168.1.2和192.168.1.3
metalog节点 192.168.1.2
客户端节点 192.168.1.3

安装过程
安装过程对于客户端和服务器端和各个节点都是一样的

# printf "192.168.1.1 mfsmaster \n192.168.1.2 mfs2\n192.168.1.3 mfs3\n" >> /etc/hosts  
# yum -y install zlib-devel  fuse-devel  gcc make
# useradd  mfs
# wget http://ppa.moosefs.com/src/moosefs-ce-2.0.50-1.tar.gz
# tar xvf moosefs-ce-2.0.50-1.tar.gz
# cd moosefs-ce-2.0.50
# ./configure --prefix=/opt/mfs --enable-mfsmount --with-default-user=mfs --with-default-#group=mfs
# make && make install && echo ok
# chown -R mfs:mfs /opt/mfs

节点配置和启动
master(192.168.1.1)节点

# cd /opt/mfs/etc/mfs    
# cp mfsmaster.cfg.dist mfsmaster.cfg    
# cp mfsexports.cfg.dist mfsexports.cfg    #按照默认配置就好了     
# cp /opt/mfs/var/mfs/metadata.mfs.empty /opt/mfs/var/mfs/metadata.mfs   
  
# /opt/mfs/sbin/mfsmaster start    
# /opt/mfs/sbin/mfscgiserv start  #启动web监控页面,非必须    

以上,皆使用mfs的默认配置,配置文件十分简单,注释的很清楚,有兴趣可以自己研究。
可以使用浏览器打开连接 http://192.168.1.1:9425查看监控,还没有添加任何chunkserver,如下图:
mfs-master

Chunkserver(192.168.1.2和192.168.1.3)节点

# cd /opt/mfs/etc/mfs    
# cp mfschunkserver.cfg.dist mfschunkserver.cfg
# cp mfshdd.cfg.dist mfshdd.cfg
# echo "/mfschunk_data   10G" >>  mfshdd.cfg

# mkdir /mfschunk_data   #保存块数据的目录
# chown -R mfs.mfs /mfschunk_data   
# /opt/mfs/sbin/mfschunkserver start

此时,再观察mfsmaster的状态,发现已经有20G左右的可用空间,说明chunkserver已经生效!如下图,
mfs-chunkserver

mfsmount(192.168.1.3)客户端节点

# /opt/mfs/bin/mfsmount /mnt -H mfsmaster  #挂载

Metalogger(192.168.1.2)节点
metalogger节点不是必要的,但是在master挂掉的时候,可以用来恢复master,十分有用!

# cd /opt/mfs/etc/mfs    
# cp mfsmetalogger.cfg.dist  mfsmetalogger.cfg
# /opt/mfs/sbin/mfsmetalogger start

mfs的基本配置很简单,到这里就配置完了。
说明,由于各个配置文件中,master的名字就是mfsmaster,演示中都是按照默认的配置来,所以没必要修改配置文件,使用默认即可,如要定制配置文件,请同时注意修改/etc/hosts文件。

测试
在客户机上写入文件

# dd if=/dev/zero of=/mnt/test.file bs=4k count=102400   #写入400M的测试文件
# /opt/mfs/bin/mfsgetgoal /mnt/     
/mnt/: 1                                  #该文件只保存一份
# /opt/mfs/bin/mfssetgoal -r 2 /mnt/   #设置/mnt目录为2份
/mnt/:                                                                                                                                                       
 inodes with goal changed:               2                                                                                                                   
 inodes with goal not changed:           0                                                                                                               
 inodes with permission denied:          0         
# /opt/mfs/bin/mfsgetgoal /mnt/test.file         
/mnt/test.file: 2                          #该测试文件份数已经变为2份

在监控上也可以看到两台chunkserver各使用了400M空间!
mfs-setgoal2

使用metalogger恢复数据
如果master无法启动,使用/opt/mfs/sbin/mfsmetarestore -a进行修复,如果不能修复,则拷贝metalogger上的备份日志到master上,然后,进行恢复!

说明

  • 以上只是演示的配置,实际环境中请注意修改对应的配置文件项。
  • mfs的各个角色可以部署在同一台服务器上。

mfs的优缺点

  • 配置简单,扩展方便,有较高的容错能力
  • mfs的master存在单点问题

参考:
http://developer.51cto.com/art/201406/443594.htm

当前暂无评论 »

添加新评论 »