moosefs分布式网络文件系统
由于单机文件系统的不可靠性,软硬件都存在故障风险,所以在重要场合,大多已经开始采用分布式文件系统,分布式系统遵循不把鸡蛋放在一个篮子里的原则,在一台机器崩溃的情况,文件系统集群中的其它服务器依旧可以提供完整的文件存取服务。由于分布式文件系统的容错性、高可靠性和高可扩展性的优点,其自诞生起就一直很火,各类开源产品层出不穷。本文演示了如何使用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,如下图:
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已经生效!如下图,
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空间!
使用metalogger恢复数据
如果master无法启动,使用/opt/mfs/sbin/mfsmetarestore -a进行修复,如果不能修复,则拷贝metalogger上的备份日志到master上,然后,进行恢复!
说明
- 以上只是演示的配置,实际环境中请注意修改对应的配置文件项。
- mfs的各个角色可以部署在同一台服务器上。
mfs的优缺点
- 配置简单,扩展方便,有较高的容错能力
- mfs的master存在单点问题
当前暂无评论 »