CentOS6分布式文件系统方案确定及安装和配置MooseFS分布式文件系统

前言

基于Linux分布式文件系统方案1

现在有大量的企业采用共享存储服务器NFS的方式,来对应用数据进行网络存储,但这存在性能瓶颈和单点故障的问题,于是分布式文件存储管理系统开始流行起来。其优点是不言而喻的,以下介绍的是分布式文件系统MFS,相信对大家有所帮助。

随着公司业务量的增加,相关的业务数据也随着成倍的增加.相应的机器存储空间不足的问题就成为目前一个比较突出的问题,随之而来的备份亦成为一个很为头痛的问题。公司虽然有几台大容量的计算机可用来存放相关数据,但其位置位于各个机房,一时较难以组织,即使将其组织起来只能满足在一段时间内的存储需求,这个需要利用多台服务器上空闲空间加以组织利用,以提供更大的磁盘空间。目前绝大多数业务系统采用NFS文件共享的方式来解决文件惟一性的问题,这种方法在规模较小、访问量低的时候还可以;随着量(访问及文件数目)的增加,这种共享架构显得有些力不从心了,性能与用户体验会有不小的下降。除此之外,还要努力保证这台NFS服务器不能宕机,所有靠共享提供数据的应用就不再可用。基于这样一种需求,我们需要对NFS服务器进行优化或采取别的解决方案,然而优化并不能对应对日益增多的客户端的性能要求,因此只能是采取别的解决方案了。分布式文件系统是一个比较合适的选择,采用分布式文件系统后,服务器之间的数据访问不再是一对多的关系(1个NFS服务器,多个NFS客户端),而是多对多的关系,这样一来,性能大幅提升毫无问题,同时可靠性也高了许多。

Moose File System是一个具备容错功能的网络分布式文件系统,它将数据分布在网络中的不同服务器上,MooseFS通过 FUSE 使之看起来就是一个 Unix 的文件系统。

基于Linux分布式文件系统方案2

由于用户数量的不断攀升,我对访问量大的应用实现了可扩展、高可靠的集群部署(即lvs+keepalived的方式),但仍然有用户反馈访问慢的问题。通过排查个服务器的情况,发现问题的根源在于共享存储服务器NFS。在我这个网络环境里,N个服务器通过nfs方式共享一个服务器的存储空间,使得NFS服务器不堪重负。察看系统日志,全是nfs服务超时之类的报错。一般情况下,当nfs客户端数目较小的时候,NFS性能不会出现问题;一旦NFS服务器数目过多,并且是那种读写都比较频繁的操作,所得到的结果就不是我们所期待的。下面是某个集群使用nfs共享的示意图:

1

这种架构除了性能问题而外,还存在单点故障,一旦这个NFS服务器发生故障,所有靠共享提供数据的应用就不再可用,尽管用rsync方式同步数据到另外一个服务器上做nfs服务的备份,但这对提高整个系统的性能毫无帮助。基于这样一种需求,我们需要对nfs服务器进行优化或采取别的解决方案,然而优化并不能对应对日益增多的客户端的性能要求,因此唯一的选择只能是采取别的解决方案了;通过调研,分布式文件系统是一个比较合适的选择。采用分布式文件系统后,服务器之间的数据访问不再是一对多的关系(1个NFS服务器,多个NFS客户端),而是多对多的关系,这样一来,性能大幅提升毫无问题。
到目前为止,有数十种以上的分布式文件系统解决方案可供选择,如lustre,hadoop,Pnfs等等。我尝试了PVFS,hadoop,moosefs这三种应用,参看了lustre、KFS等诸多技术实施方法,最后我选择了moosefs(以下简称MFS)这种分布式文件系统来作为我的共享存储服务器。

基于Linux分布式文件系统方案3

分布式文件系统]各分布式文件系统比较、适用领域、原理、选型(MooseFS,fastDFS,mogileFS,glusterFS,ceph,NFS,lustre):http://www.kissthink.com/archive/4195.html

介绍

分布式文件系统之MooseFS—-介绍:http://nolinux.blog.51cto.com/4824967/1600890

部署

分布式文件系统之MooseFS—-部署:http://nolinux.blog.51cto.com/4824967/1601385

管理优化

分布式文件系统之MooseFS—-管理优化:http://nolinux.blog.51cto.com/4824967/1602616

附录:
1、 注意客户端部分在安装之前,需要查看是否安装了fuse。没有安装请执行如下部分:
yum install fuse
yum install fuse-devel

MooseFS维护技巧集锦:http://os.51cto.com/art/201209/356017.htm

2、官方文档:
http://www.moosefs.com/download/centosfedorarhel.html

3、官方下载地址
http://www.moosefs.com/download.html

4、安全停止 MooseFS 集群步骤:

umount -l /mnt/mfs #客户端卸载MooseFS 文件系统
/usr/local/mfs/bin/mfschunkserver stop #停止 chunk server 进程
/usr/local/mfs/bin/mfsmetalogger stop #停止 metalogger 进程
/usr/local/mfs/bin/mfsmaster stop #停止主控 master server 进程
(注:一定要安全停止master server是非常必要的,最好不要用kill。利用mfsmaster –s来安全停止master serve)

安全启动 MooseFS 集群步骤:

/usr/local/mfs/bin/mfsmaster start #启动 master 进程
/usr/local/mfs/bin/mfschunkserver start #启动 chunkserver 进程
/usr/local/mfs/bin/mfsmetalogger start #启动 metalogger 进程
/usr/local/mfs/bin/mfsmount /mnt/mfs -H 192.168.128.10 #客户端挂载 MooseFS 文件系统

启动和停止web gui

启动: /usr/local/mfs/sbin/mfscgiserv
停止: kill /usr/local/mfs/sbin/mfscgiserv

5、常用操作:

1),设置文件副本数量

[root@Client ~]# cp /usr/local/src/mfs-1.6.20-2.tar.gz /mnt/mfs
[root@Client ~]# /usr/local/mfs/bin/mfssetgoal 3 /mnt/mfs
/mnt/mfs: 3

查看设置:

[root@Client ~]# /usr/local/mfs/bin/mfsgetgoal /mnt/mfs
/mnt/mfs: 3

2),设置删除文件后空间回收时间。默认的回收时间为7天(604800秒)

设置回收时间为1小时:

[root@Client ~]# /usr/local/mfs/bin/mfssettrashtime 3600 /mnt/mfs
/mnt/mfs: 3600

查看设置:
[root@Client ~]# /usr/local/mfs/bin/mfsgettrashtime /mnt/mfs
/mnt/mfs: 3600

3)Master崩溃后修复

[root@Master ~]# /usr/local/mfs/sbin/mfsmetarestore -a
loading objects (files,directories,etc.) ... ok
loading names ... ok
loading deletion timestamps ... ok
checking filesystem consistency ... ok
loading chunks data ... ok
connecting files and chunks ... ok
store metadata into file: /usr/local/mfs/var/mfs/metadata.mfs

调用metadata.mfs文件恢复,如果编译安装时指定了--localstatedir=DIRECTORY参数指定路径,则需要加上-d参数。

[root@Master ~]# /usr/local/mfs/sbin/mfsmetarestore -a -d DIRECTORY

6、配置文件解释

1)mfsmaster.cfg

# WORKING_USER = mfs 运行master server 的用户
# WORKING_GROUP = mfs 运行master server 的组
# SYSLOG_IDENT = mfsmaster master server 在syslog中的标识,说明是由master serve 产生的
# LOCK_MEMORY = 0 是否执行mlockall()以避免mfsmaster 进程溢出(默认为0)
# NICE_LEVEL = -19 运行的优先级(如果可以默认是-19; 注意: 进程必须是用root启动)
# EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg 被挂接目录及其权限控制文件的存放位置
# DATA_PATH = /usr/local/mfs/var/mfs 数据存放路径,此目录下大致有三类文件,changelog,sessions和stats;
# BACK_LOGS = 50 metadata 的改变log 文件数目(默认是50);
# REPLICATIONS_DELAY_INIT = 300 延迟复制的时间(默认是300s);
# REPLICATIONS_DELAY_DISCONNECT = 3600 chunkserver 断开的复制延迟(默认是3600);
# MATOML_LISTEN_HOST = * metalogger 监听的IP 地址(默认是*,代表任何IP);
# MATOML_LISTEN_PORT = 9419 metalogger 监听的端口地址(默认是9419);
# MATOCS_LISTEN_HOST = * 用于chunkserver 连接的IP 地址(默认是*,代表任何IP);
# MATOCS_LISTEN_PORT = 9420 用于chunkserver 连接的端口地址(默认是9420);
# MATOCU_LISTEN_HOST = * 用于客户端挂接连接的IP 地址(默认是*,代表任何IP);
# MATOCU_LISTEN_PORT = 9421 用于客户端挂接连接的端口地址(默认是9421);
# CHUNKS_LOOP_TIME = 300 chunks 的回环频率(默认是:300 秒);
注:原文为Chunks loop frequency in seconds (default is 300)
# CHUNKS_DEL_LIMIT = 100
# CHUNKS_WRITE_REP_LIMIT = 1 在一个循环里复制到一个chunkserver 的最大chunk数目(默认是1)
# CHUNKS_READ_REP_LIMIT = 5 在一个循环里从一个chunkserver 复制的最大chunk数目(默认是5)
# REJECT_OLD_CLIENTS = 0 弹出低于1.6.0 的客户端挂接(0 或1,默认是0)
注意mfsexports 访问控制对于那些老客户是没用的

2),mfsexports.cfg

#* / ro
#192.168.1.0/24 / rw
#192.168.1.0/24 / rw,alldirs,maproot=0,password=passcode
#10.0.0.0-10.0.0.5 /test rw,maproot=nobody,password=test
* . rw
#* / rw,alldirs,maproot=0
192.168.3.98 /tt rw,alldirs,maproot=0
192.168.3.139 / rw,alldirs,maproot=0
192.168.3.138 / rw,alldirs,maproot=0,password=111111

该文件每一个条目分为三部分:
第一部分:客户端的ip 地址
第二部分:被挂接的目录
第三部分:客户端拥有的权限
地址可以指定的几种表现形式:

* 所有的ip 地址
n.n.n.n 单个ip 地址
n.n.n.n/b IP 网络地址/位数掩码
n.n.n.n/m.m.m.m IP 网络地址/子网掩码
f.f.f.f-t.t.t.t IP 段

目录部分需要注意两点:
/ 标识MooseFS 根;
. 表示MFSMETA 文件系统

权限部分:
ro 只读模式共享
rw 读写的方式共享
alldirs 许挂载任何指定的子目录
maproot 映射为root,还是指定的用户
password 指定客户端密码

7、在配置文件中用主机名mfsmaster代替IP
需要在/etc/hosts 指定主机名mfsmaster和主机IP地址192.168.1.1相对应(做一次简单DNS解析):

192.168.1.1     mfsmaster

8、对文件夹goal的设置,会直接影响新增加的文件,已有的文件也会有影响,但有延迟,延迟时间也比较长,在测试中发现修改goal值后差不多5分钟才看到已有文件的变化。估计是受mfsmaster.cfg配置文件中的REPLICATIONS_DELAY_INIT = 300 延迟复制的时间(默认是300s)影响。

9、用df -h | grep mfs 或mount检查分区情况。

10、在实验中注意关闭SELinux和防火墙。

11、创建磁盘(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

12、若每个文件的goal(目标)都不小于2,并且没有under-goal 文件(这些可以用mfsgetgoal –r和mfsdirinfo 命令来检查),那么一个单一的chunkserver 在任何时刻都可能做停止或者是重新启动。以后每当需要做停止或者是重新启动另一个chunkserver 的时候,要确定之前的chunkserver 被连接,而且要没有under-goal chunks。

13、MFS元数据备份
用rsync定时备份/usr/local/app/soft/mfs/var/mfs/metadata.mfs.back

14、MFS Master的恢复

mfsmetarestore -a

15、从MetaLogger中恢复Master

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

16、进行副本建立,只要在1台client上进行操作就可以了

扩展阅读:
分布式文件系统MFS(moosefs)实现存储共享(第二版)【可全文参考】:http://sery.blog.51cto.com/10037/263515/

MooseFS(MFS)分布式文件系统安装【重点参考WEB查看master运行状态】:http://blog.itpub.net/21979463/viewspace-1121282/

在CentOS上安装部署MooseFS分布式文件系统【通过yum安装MFS】:http://heylinux.com/archives/2467.html

CentOS如何安装MooseFS技术实战【可全文参考、keepalived实现故障自动切换、简单性能测试】:http://os.51cto.com/art/201207/346949_all.htm

MFS 高可用存储分布式文件系统【参考副本数建立测试、失败恢复、恢复误删除文件】:http://liang3391.blog.51cto.com/178205/482599/

mfs权威指南(moosefs)分布式文件系统一站式解决方案(部署,性能测试)【可全文参考】:http://bbs.chinaunix.net/thread-1644309-1-1.html

MFS总结【可全文参考】:http://blog.csdn.net/liuyunfengheda/article/details/5260278

解决 mfsmaster单点故障方案:
keepalived 辅助 moosefs 解决 mfsmaster单点故障【可全文参考】:http://bbs.linuxtone.org/thread-9190-1-1.html

高可用分布式存储(Corosync+Pacemaker+DRBD+MooseFS)【可全文参考,有点复杂】:http://sofar.blog.51cto.com/353572/1429162

MFS分布式存储以及用DRBD解决单点问题的介绍:http://blog.sina.com.cn/s/blog_502c8cc40100juwx.html

安装 MooseFS 在同一个主机:
CentOS 6.2 下安装 MooseFS -安装 MooseFS 在同一个主机:http://ckwang17.iteye.com/blog/1747492

MooseFS安装教程详解【可全文参考、单独server上安装MooseFS、MooseFS的基本用法(设置副本)】:http://os.51cto.com/art/201209/356038_all.htm


后期维护:

分布式存储系统MFS的维护:http://www.ithov.com/linux/129280.shtml

CentOS 安装moosefs【可参考挂接垃圾箱、恢复被删除文件、恢复数据】:http://www.cnblogs.com/kgdxpr/archive/2012/12/26/2834477.html

发表评论?

0 条评论。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据