Linux下MFS分布式架构集群配置

jopen 9年前

 

前言:随着分布式、大数据的不断发展,很多时候大家会感觉大数据离自己很远,其实大数据就是我们身边。那我们心目中的大数据到底是什么样的呢,分布式、容错、大容量?

在我们运维中,最常见的文件存储系统大概就是NFS了,但是随着网站压力不断增加,NFS渐渐不能满足企业数据增长需求,有木有自动扩展、高效、部署、实施方便快捷的分布式存储供我们使用呢?那我们来看一下MFS基本可以满足我们的需求。

MogileFS 是一种分布式文件存储系统。可支持文件自动备份的功能,提高可用性和高扩展性。 MogileFS不支持对一个文件内部的随机或顺序读写,因此只适合做一部分应用,如图片服务,静态HTML服务、文件服务器等,这些应用在文件写入后基 本上不需要对文件进行修改,但是可以生成一个新的文件覆盖原有文件。

分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连,分布式文件系统的实际基于客户机/服务器模式。

目前常见的分布式文件系统有很多种,例如我之前一篇文章里面提到的Hadoop、FastDFS、Moosefs、PNFS(Parallel NFS)、Lustre、TFS、GFS、HDFS等等一系列。在众多的分布式文件系统解决方案中,MFS是搭建比较简单、使用起来也不需要过多的修改 web程序,非常方便。那今天我们使用SHELL脚本来部署MFS。

一、 Moosefs的优势

1)   通用文件系统,不需要修改上层应用就可以使用。

2)   可以在线扩容,体系架构可伸缩性极强(官方的case可以扩到70台了)。

3)   部署简单。

4)   体系架构高可用,单独一台机器出问题不会影响整体性能。

5)   文件对象高可用,可设置任意的文件冗余程度(提供比raid1+0更高的冗余级别)而绝对不会影响读或者写的性能,只会加速哦。

6)   提供Windows回收站的功能(不怕误操作了,提供类似oralce 的闪回等高级dbms的即时回滚特性,oralce这些特性可是收费的哦)

7)   提供netapp,emc,ibm等商业存储的snapshot特性。

8)   google filesystem 的一个c实现。

9)   提供web gui监控接口。

10)       提高随机读或写的效率。

11)       提高海量小文件的读写效率。

二、 MFS系统组成部分:

1 、元数据服务器:在整个体系中负责管理管理文件系统,目前MFS只支持一个元数据服务器master,这是一个单点故障,需要一个性能稳定的服务器来充当。希望今后MFS能支持多个master服务器,进一步提高系统的可靠性。

2 、数据存储服务器:chunkserver,真正存储用户数据的服务器,存储文件时,首先把文件分成块,然后这些块在数据服务器chunkserver之间复制,数据服务器可以是多个,并且数量越多,可使用的"磁盘空间"越小,可靠性也越高。

3 、客户端:使用MFS文件系统来存储和访问的主机称为MFS的客户端,成功挂接MFS文件系统以后,就可以像以前使用NFS一样共享这个虚拟性的存储了。

4 .元数据日志服务器:负责备份master 服务器的变化日志文件,文件类型为changelog_ml.*.mfs ,以便于在master server 出问题的时候接替其进行工作。

三、 主控服务器Master安装:

当我们安装主控服务器时,在配置过程中(./configure),可以取消安装chunk server

(--disable-mfschunkserver)以及MooseFS 客户端(--disable-mfsmount). 安装

主控服务器master 的具体步骤为:

添加mfs 组  groupaddmfs  新增系统用户mfs  useradd-g mfs mfs  解压安装:  tar-zxvf mfs-1.6.27.tar.gz ;cd mfs-1.6.27  编译配置:  ./configure --prefix=/usr --sysconfdir=/etc \  --localstatedir=/var/lib --with-default-user=mfs \  --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount&&make &&makeinstall

成功安装master后,会在/etc/mfs下生成很多MFS相关文件:

cd/etc ,复制如下文件:

cp mfsmaster.cfg.dist mfsmaster.cfg  cp mfsexports.cfg.dist mfsexports.cfg

分别表示:主配置文件,挂载文件等功能。

在/etc/mfs/mfsexports.cfg里添加如下语句:

192.168.33.0/24   /  rw,alldirs,maproot=0

启动前准备:

cd /var/lib/mfs/  cp metadata.mfs.empty metadata.mfs  echo "192.168.33.10 mfsmaster">> /etc/hosts  启动mfsmaster:/usr/sbin/mfsmasterstart  启动监控服务:/usr/sbin/mfscgiserv

浏览器访问地址: http://192.168.33.10:9425/mfs.cgi ,可以看到MFS信息。

Linux下MFS分布式架构集群配置

四、   Mfsmetalogger 服务器部署

安装方法跟master编译、安装参数一样哦,最后配置如下:

进入/etc/mfs/下,如下操作:

cp mfsmetalogger.cfg.dist mfsmetalogger.cfg  echo "192.168.33.10 mfsmaster" >> /etc/hosts  最后启动mfsmetalogger服务即可,/usr/sbin/mfsmetalogger start

五、 Chunk servers 服务器部署

MFSChunk 编译参数:

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-  user=mfs --with-default-group=mfs --disable-mfsmaster &&make &&makeinstall

配置方法如下:

cp mfschunkserver.cfg.dist mfschunkserver.cfg  cp mfshdd.cfg.dist mfshdd.cfg

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

/data/

启动前准备:

echo "192.168.33.10 mfsmaster" >> /etc/hosts  chown -R mfs:mfs  /data  /usr/sbin/mfschunkserverstart

六、 MFS客户端安装:

安装编译参数:

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-  user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver&&make &&make install

启动前准备:

mkdir /mnt/mfs echo "192.168.33.10 mfsmaster" >> /etc/hosts

挂载客户端测试:

/usr/bin/mfsmount/mnt/mfs -H  192.168.33.10

然后我们可以对文件进行常规操作,其他应用服务器LAMP可以挂载MFS文件系统,来存放文件。

七、 MFS必备命令:

设置副本的份数,推荐3份  /usr/bin/mfssetgoal -r 3  /mnt/mfs  查看某文件  /usr/bin/mfsgetgoal   /mnt/mfs  查看目录信息  /usr/bin/mfsdirinfo -H /mnt/mfs  写入性能测试:  dd if=/dev/zero of=1.img bs=1M count=50  读取性能测试:  dd if=1.img bs=1M |dd of=/dev/null