MFS集群部署

MFS分布式文件系统搭建

MFS背景

mooseFS(moose 驼鹿)是一款网络分布式文件系统。它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源。MFS也像其他类unix文件系统一样,包含了层级结构(目录树),存储着文件属性(权限,最后访问和修改时间),可以创建特殊的文件(块设备,字符设备,管道,套接字),符号链接,硬链接。

  

MooseFS[MFS]是一个具有容错性的网络分布式文件系统。它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。

一、SAN和MFS比较

   当我们存储服务器的容量达到瓶颈之后,那我们就需要采用分布式的文件系统来扩大存储容量,类似与百度云的存储,也是采用分布式存储!

二、MFS的特征

   1:层析结构(目录树)

   2:存储文件属性(权限,访问和修改时间)

   3:支持特殊文件(块设备,字符设备,管道)

   4:符号链接,软硬链接

   5:对文件系统访问可以通过IP地址或者密码进行访问限制

   6:高可靠(数据的多个拷贝存储在不同的计算机上)

   7:通过附加新的计算机或者硬盘可以实现容量的动态拓展

   8:删除文件可以根据一个可配置的时间周期进行保留

   9:不受访问和写入影响的文件连贯快照

应用场景

      谈及MooseFS的应用场景,其实就是去谈分布式文件系统的应用场景。

      1)大规模高并发的数据存储及访问(小文件、大文件),

      2)大规模的数据处理,如日志分析

源码编译搭建下载地址:

https://moosefs.com/support/#documentation

三、MFS分布式文件系统部署方案

MooseFS 是一种分布式文件系统,MooseFS 文件系统结构包括以下四种角色:

1 管理服务器 managing server (master)

负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝

2元数据日志服务器Metalogger server(Metalogger):

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

3 数据存储服务器 data servers (chunk servers )

听从管理服务器调度,提供存储空间,并为客户提供数据传输.。 真正存储用户数据的服务器。存储文件时,首先把文件分成块,然后这些块在数据服务器chunkserver之间复 制(复制份数可以手工指定,建议设置副本数为 3)。数据服务器可以是多个,并且数量越多,可使用的“磁盘空间”越大,可靠性也越高。

4 客户机挂载使用 client computers

客户端挂载远程mfs服务器共享出的存储并使用。  通过fuse 内核接口挂载进程管理服务器上所管理的数据存储服务器共享出的硬盘。 共享的文件系统的用法和 nfs 相似。使用 MFS 文件系统来存储和访问的主机称为 MFS 的客户端,成功挂接 MFS 文件系统以后,就可以像以前使用 NFS 一样共享这个虚拟性的存储了。

3.1 内部运行机制

   1:客户端请求访问存储,请求发送到了MFS Master

   2:MFS Master根据我们的请求,查询所需要的文件分布在那些服务器上

   3:客户端直接和存储服务器进行数据存储和读写

端口号简述:(基础理论知识了解一下)

9420  : MFS master和MFS chunck通信端口

9421  : MFS master和MFS Client端通信端口

9419  : MFS master和MFSmetalogger端通信端口

9422  : MFS chunck 和MFS Client端通信端口

9425  : MFS master web界面监听端口,查看整体运行状态

四、MFS分布式文件实验环境

主机名称

IP

角色

Master-server

192.168.1.251

MFS管理服务器

Metalogger

192.168.1.252

MF元数据日志服务器

Chunk-server1

192.168.1.226

MFS数据存储服务器

Chunk-server2

192.168.1.227

MFS数据存储服务器

MFS-Client

192.168.1.225

连接MFS存储的客户端

安装环境准备:

所有服务器端和客户端都要支持fuse内核模块。

由于mfs的客户端程序也就是加载mfs磁盘系统的命令是使用了fuse,因此只要是想挂载mfs的服务器,必要的前提条件就是先安装fuse,这样编译mfs的时候才能顺利通过。

fuse概述:

用户空间文件系统(Filesystem in Userspace,简称FUSE)是操作系统中的概念,指完全在用户态实现的文件系统。目前Linux通过内核模块对此进行支持。一些文件系统如NTFS-3G(作用:让Linux中对NTFS文件系统提供支持) 使用FUSE实现。

注:2.6以上内核,都自带fuse

拓扑图:

4.1、MFS管理服务器

所有节点上须配置好网络源,上传moosefs-master.zip源码包

[root@Master-server~]# yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel –y                                      #解决依赖

[root@Master-server~]# useradd -s /sbin/nologin mfs #创建运行mfs用户

[root@Master-server~]# unzip moosefs-master.zip    #解压mfs源码包

[root@Master-server~]# cd moosefs-master/          #切换到源码目录

[root@Master-servermoosefs-master]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs&& make -j 4&& make install

 #指定安装路径,用户,组,&& 内核编译&& 安装

[root@Master-servermoosefs-master]# echo $?     #验证编译安装是否成功

0

 

[root@Master-servermoosefs-master]# cd /usr/local/mfs/#切换到安装目录

[root@Master-servermfs]# ll

total4

drwxr-xr-x2 root root 4096 Jun 21 16:59 bin   #客户端工具

drwxr-xr-x3 root root   17 Jun 21 16:59 etc   #配置文件

drwxr-xr-x2 root root  208 Jun 21 16:59 sbin  #启动程序

drwxr-xr-x4 root root   31 Jun 21 16:59 share #文档

drwxr-xr-x3 root root   17 Jun 21 16:59 var   #元数据目录

[root@Master-servermfs]# cd / usr/local/mfs/etc/mfs/

//Master配置文件

[root@Master-servermfs]# cp mfsmaster.cfg.sample mfsmaster.cfg

//输出目录配置文件

[root@Master-servermfs]# cp mfsexports.cfg.sample mfsexports.cfg

//元数据日志

[root@Master-servermfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg

[root@Master-servermfs]# cd /usr/local/mfs/var/mfs/

//首次安装master 时,会自动生成一个名为metadata.mfs.empty 的元数据文件 metadata,该文件是空的。MooseFSmaster 运必须有文件metadata.mfs

[root@Master-servermfs]# cp metadata.mfs.empty metadata.mfs

[root@Master-servermfs]# vim /usr/local/mfs/etc/mfs/mfsmaster.cfg

  

69行代表运行用户、组

30行代表数据目录

72行代表监听的主机,*代表监听所有

75行代表监听的端口

以上默认不需要修改

[root@Master-servermfs]# chown -R mfs:mfs /usr/local/mfs/  #目录授权

[root@Master-servermfs]# /usr/local/mfs/sbin/mfsmaster start #启动

[root@Master-servermfs]# netstat -antup | grep 94*          #查看端口

[root@Master-servermfs]# echo "/usr/local/mfs/sbin/mfsmaster start" >>/etc/rc.local   #写入到随机启动运行

[root@Master-servermfs]# chmod +x /etc/rc.local  #添加执行权限

[root@Master-servermfs]# vim /usr/local/mfs/etc/mfs/mfsexports.cfg

1.客户端 IP 地址

 *                       所有 IP 地址

 x.x.x.x                 单个 IP 地址

 x.x.x.x/m.m.m.m         IP 网络地址/子网掩码

 f.f.f.f-t.t.t.t               IP

2.被挂载的目录

  /                      表示 MooseFS 的根

  .                      表示 MFSMETA 文件系

3.客户端拥有的权限

  ro                     只读

  rw                     读写

  alldirs                  允许挂载任何指定的子目录

  maproot                映射为 root 用户还是指定的用户

  password               指定客户端密码

[root@Master-servermfs]# /usr/local/mfs/sbin/mfsmaster restart

4.2、安装MFS元数据日志服务器

[root@Metalogger~]#yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel –y   #解决依赖

[root@Metalogger~]#useradd -s /sbin/nologin mfs   #创建运行用户

[root@Metalogger~]#unzip moosefs-master.zip    #解压

[root@Metalogger~]#cd moosefs-master/      #切换到源目录

[root@Metaloggermoosefs-master]# ./configure --prefix=/usr/local/mfsmeta--with-default-user=mfs --with-default-group=mfs && make –j 4&& make install

#指定安装路径,用户,组 && 编译&& 安装

[root@Metaloggermoosefs-master]# echo $?    #检测安装是否正常

0

[root@Metaloggermfs]# vim mfsmetalogger.cfg  #修改配置文件

#META_DOWNLOAD_FREQ = 24  

#24元数据备份文件下载请求频率。默认为24小时,即每隔一天从元数据服务器

#(MASTER) 下载一个 metadata.mfs.back matedata.mfs.back 文件将消失,那么要恢复整个 mfs,则需从 metalogger 服务器取得该文件。请特别注意这个文件,它与日志文件一起,才能够恢复整个被损坏的分布式文件系统。

 

MASTER_HOST =192.168.1.251        #此行原来注释了,修改,并启用

#MASTER_HOST,这个文件中需要修改的是 MASTER_HOST 变量,这个变量的值是 MASTER SERVER IP 地址

[root@Metaloggermfs]# chown  -R  mfs:mfs /usr/local/mfsmeta/   #授权

[root@Metaloggermfs]# /usr/local/mfsmeta/sbin/mfsmetalogger  start  #启动

open files limithas been set to: 4096

workingdirectory: /usr/local/mfsmeta/var/mfs

lockfile createdand locked

initializingmfsmetalogger modules ...

mfsmetaloggerdaemon initialized properly

 

[root@Metaloggermfs]# echo "/usr/local/mfsmeta/sbin/mfsmetalogger start" >>/etc/rc.local    #写入开机加载文件

[root@Metaloggermfs]# netstat -anput | grep 9419    #查看端口

tcp  0  0192.168.1.252:37918 192.168.1.251:9419   ESTABLISHED7872/mfsmetalogge

4.3 Chunk Server1安装配置

[root@Chunk-server1~]#yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel –y    #解决依赖

[root@Chunk-server1~]# useradd -s /sbin/nologin mfs  #创建运行用户

[root@Chunk-server1~]# mkdir /Chunk-server1   #创建挂载目录,10G硬盘

[root@Chunk-server1~]# mount /dev/sdb1 /Chunk-server1/  #挂载

[root@Chunk-server1~]# chown -R mfs:mfs /Chunk-server1/  #目录授权

[root@Chunk-server1~]# unzip moosefs-master.zip 

[root@Chunk-server1~]# cd moosefs-master

[root@Chunk-server1moosefs-master]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs--with-default-group=mfs && make -j 4 && make install

[root@Chunk-server1moosefs-master]# echo $?

0

[root@Chunk-server1moosefs-master]# cd /usr/local/mfs/etc/mfs/

[root@Chunk-servermfs]# cp mfschunkserver.cfg.sample mfschunkserver.cfg

[root@Chunk-server1mfs]# cp mfshdd.cfg.sample mfshdd.cfg

[root@Chunk-server1mfs]# vim mfschunkserver.cfg   #修改存储配置文件

MASTER_HOST =192.168.1.251  #元数据服务器的名称或地址,可以是主机名,也可以是 ip 地址

MASTER_PORT =9420          #可以启用它,也可以不启用,不启用,默认就是9420

#CSSERV_LISTEN_PORT = 9422     #这个监听端口用于与其它数据存储服务器间的连接,通常是数据复制

#HDD_CONF_FILENAME = /usr/local/mfs/etc/mfs/mfshdd.cfg     #分配给 MFS 使用的磁盘空间配置文件的位置

[root@Chunk-server1mfs]# vim mfshdd.cfg    #修改挂载目录配置文件

#在这里/Chunk-server1 是一个给 mfs 的分区,一个独立的磁盘的挂载目录

[root@Chunk-server1mfs]# chown -R mfs:mfs /usr/local/mfs/

[root@Chunk-server1~]# /usr/local/mfs/sbin/mfschunkserver start

[root@Chunk-server1~]#  echo "/usr/local/mfs/sbin/mfschunkserverstart" >> /etc/rc.local

[root@Chunk-server1~]# chmod +x /etc/rc.local

[root@Chunk-server1~]# ls /Chunk-server1/

4.4 Chunk Server2安装配置

[root@Chunk-server2~]#yuminstall rpm-build gcc gcc-c++ fuse-devel zlib-devel -y

[root@Chunk-server2~]# useradd -s /sbin/nologin mfs

[root@Chunk-server2~]# mkdir /Chunk-server2

[root@Chunk-server2~]# mount /dev/sdb1 /Chunk-server2/

[root@Chunk-server2~]# chown -R mfs:mfs /Chunk-server2/

[root@Chunk-server2~]# unzip moosefs-master.zip

[root@Chunk-server2~]# cd moosefs-master

[root@Chunk-server2moosefs-master]#  ./configure--prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs&& make -j 4 && make install

[root@Chunk-server2moosefs-master]# echo $?

0

[root@Chunk-server2moosefs-master]# cd /usr/local/mfs/etc/mfs/

[root@Chunk-server2mfs]#  cp mfschunkserver.cfg.samplemfschunkserver.cfg

[root@Chunk-server2mfs]#  cp mfshdd.cfg.sample mfshdd.cfg

[root@Chunk-server2mfs]#  vim mfschunkserver.cfg

MASTER_HOST =192.168.1.251  #元数据服务器的名称或地址,可以是主机名,也可以是 ip 地址

MASTER_PORT =9420          #可以启用它,也可以不启用,不启用,默认就是9420

#CSSERV_LISTEN_PORT = 9422     #这个监听端口用于与其它数据存储服务器间的连接,通常是数据复制

#HDD_CONF_FILENAME = /usr/local/mfs/etc/mfs/mfshdd.cfg     #分配给 MFS 使用的磁盘空间配置文件的位置

[root@Chunk-server2mfs]# vim mfshdd.cfg

#在这里/Chunk-server2 是一个给 mfs 的分区,一个独立的磁盘的挂载目录

[root@Chunk-server2mfs]# chown -R mfs:mfs /usr/local/mfs/

[root@Chunk-server2~]# /usr/local/mfs/sbin/mfschunkserver start

[root@Chunk-server2~]#  echo"/usr/local/mfs/sbin/mfschunkserver start" >> /etc/rc.local

[root@Chunk-server2~]# chmod +x /etc/rc.local

[root@Chunk-server2~]# ls /Chunk-server2/

4.5 配置客户端

[root@MFS-Client~]# yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel –y

[root@MFS-Client~]#  useradd -s /sbin/nologin mfs

[root@MFS-Client~]# unzip moosefs-master.zip

[root@MFS-Client~]# cd moosefs-master/

[root@MFS-Clientmoosefs-master]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs--with-default-group=mfs --enable-mfsmount 

#跟其他不一样的是客户端需要开启这个模块

[root@MFS-Clientmoosefs-master]# make -j 4 && make install

[root@MFS-Clientmoosefs-master]# echo $?

0

[root@MFS-Clientmoosefs-master]# mkdir /mfs-mount   #创建挂载目录

[root@MFS-Clientmoosefs-master]# modprobe fuse     #加载fuse模块

[root@MFS-Clientmoosefs-master]# lsmod | grep fuse   #查看fuse模块

fuse                   91874  1

[root@MFS-Clientmoosefs-master]# ln -s /usr/local/mfs/bin/mfsmount /usr/bin/mfsmount   #创建软链接启动

[root@MFS-Client~]# mfsmount /mfs-mount/ -H 192.168.1.251 –p #挂载MFS

MFS Password:   #没有在配置文件写密码,默认为空

mfsmasteraccepted connection with parameters: read-write,restricted_ip ; root mapped toroot:root

[root@MFS-Client~]# echo "modprobe fuse" >> /etc/rc.local  #开机加载fuse模块

[root@MFS-Client~]# echo "/usr/local/mfs/bin/mfsmount /mfs -H 192.168.1.63" >>/etc/rc.local   #开机自动挂载

[root@MFS-Client~]# chmod +x /etc/rc.local

4.6 测试验证

[root@Chunk-server1mfs]# tree /Chunk-server1/  #查看目录树

[root@Chunk-server2mfs]# tree /Chunk-server2/   #查看目录树

[root@MFS-Client~]# cp -r /boot/* /mfs-mount/   #客户端拷贝测试数据

[root@MFS-Client~]# ls /mfs-mount/

[root@Chunk-server1~]# tree /Chunk-server1/  #查看目录树

[root@Chunk-server2mfs]# tree /Chunk-server2/  #查看目录树

通过上面的测试,发现客户端上能正常查看到数据。而存储服务器上只能看到文件碎片。

4.7 配置web监控

主用来监控 MFS 各节点状态信息,可部署在任一节点服务器。

[root@Master-server~]# /usr/local/mfs/sbin/mfscgiserv start   #启动

lockfilecreated and locked

startingsimple cgi server (host: any , port: 9425 , rootpath:/usr/local/mfs/share/mfscgi)

浏览器:http://192.168.1.251:9425

没有做主机名和IP映射就会出现下面的问题,把mfsmaster改成IP地址就好了。

4.8 扩展知识

4.8.1、设置数据存放份数

#默认为3份。我们将它修改为2份。

[root@MFS-Clientbin]# ./mfssetgoal -r 2 /mfs-mount/  #修改数据存放份数

/mfs-mount/:

 inodes with goal changed:                       0

 inodes with goal not changed:                 325

 inodes with permission denied:                  0

[root@MFS-Clientbin]# cp /etc/hosts /mfs-mount  #拷贝测试数据验证

[root@MFS-Clientbin]# ./mfsfileinfo /mfs-mount/hosts  #查看数据

/mfs-mount/hosts:

       chunk 0: 000000000000013D_00000001 /(id:317 ver:1)

              copy 1: 192.168.1.226:9422(status:VALID)

              copy 2: 192.168.1.227:9422(status:VALID)

4.8.2、回收站清空

[root@MFS-Client~]# cd /usr/local/mfs/bin/

[root@MFS-Clientbin]# ./mfssettrashtime 600 /mfs-mount/ #设定清空时间

/mfs-mount/:600

#回收站延迟清空时间,以秒计算,设置文件或目录的删除时间。

[root@MFS-Clientbin]# ./mfsgettrashtime /mfs-mount/

/mfs-mount/:3600

#因为设置的时间是按照小时计算,设置的单位是秒,不满一小时就按一小时计算

4.8.3、mfsmaster配置文件注释

(usr/local/mfs/etc/mfs/mfsmaster.cfg)

# WORKING_USER =mfs               #运行master server 用户

# WORKING_GROUP =mfs             #运行master server

# SYSLOG_IDENT =mfsmaster        #master server syslog中的标识,说明是由master产生的

# 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

#MATOCS_LISTEN_HOST = *               #metalogger 监听的ip地址(默认是*,代表任何ip

#MATOCS_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                #chunksde 回环频率(默认是:300秒)

#CHUNKS_WRITE_REP_LIMIT = 1            #在一个循环里复制到一个chunkserver的最大chunk数目

#CHUNKS_READ_REP_LIMIT = 5             #在一个循环里从一个chunkserver复制的最大chunk数目

#CHUNKS_READ_REP_LIMIT= 0      弹出低于1.6.0的客户端挂接(01,默认是0

4.8.4、集群启动顺序

        1 启动masterserver

        2 启动chunkserver

        3 启动metalogger

        4 启动客户端,使用mfsmount挂载相关目录

 MFS集群停止:

         1 所有客户端卸载MooseFS文件系统

         2 停止chunkserver

         3 停止metalogger

            4 停止masterserver

这样就部署完成了,如果后面新增Chunk-server只需要安装1或者2的配置去执行就可以了!有问题欢迎留言评论,一定改正!


猜你喜欢

转载自blog.csdn.net/qq_32731747/article/details/80771397
mfs