且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

轻量级分布式系统-moosefs介绍

更新时间:2022-09-25 12:38:24

MooseFS是一种分布式文件系统,MooseFS文件系统结构包括以下四种角色:
1 管理服务器(master)
2 元数据日志服务器(Metalogger)
3 数据存储服务器 (chunkservers)
4 客户机挂载使用

各种角色作用:
  1 管理服务器:负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝
  2 元数据日志服务器: 负责备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在master server出问题的时候接替其进行工作
  3 数据存储服务器:负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输.
  4 客户端: 通过fuse内核接口挂接远程管理服务器上所管理的数据存储服务器,.看起来共享的文件系统和本地unix文件系统使用一样的效果.吧。

1 Moosefs简介
1.1 角色构成
整个mfs共计四种角色:master、metalogger、chunk和client
1、master:只有一台。
2、metalogger:可以有多台。它负责定期从master下载metadata,并实时同步changelog。metadata和changelog的关系类似于sfrd里面基准和增量的关系。当master挂了的时候,metalogger利用下载下来的metadata和实时同步的changelog来恢复master挂掉时候的metadata。并且接管master的功能。
3、chunk:提供存储的服务器,可以有多台。这些服务器负责提供存储,它可以***的启动和停止。在chunk启动后,会主动与master联系,master知道有多少chunk在网络中,并且会定期检查chunk的状态。
4、client:使用mfs的服务器,可以有多台。它需要运行mfsmount命令,将网络上的存储挂载到本地,看起来类似nfs。client就像读写本地磁盘那样读写mfsmount挂载的网络存储。

2 环境部署
2.1 安装
对于client端,需要安装fuse程序后,才可以编译mfsmount程序;并且需要加载fuse.ko内核模块后才能正确运行mfsmount命令。
2.1.1 fuse的安装
fuse-2.8.4.tar.gz,在http://sourceforge.net/projects/fuse/中下载,放到/home/XXXX/opdir/software目录中。
$ tar xvzf fuse-2.8.4.tar.gz
$ su -
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 
# cd fuse-2.8.4
# ./configure
# make
# make install
在make install的过程中,需要使用root创建文件,因此这里使用root执行命令。
编辑/etc/profile这个文件,将以下行填写在最后
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
完成后,重新登陆或者source /etc/profile目录后,则可以编译安装mfs的client程序。
2.1.2 moosefs的安装
mfs-1.6.15.tar.gz,在http://sourceforge.net/projects/moosefs/中下载,放到/home/XXXX/opdir/software目录中。
$ tar xvzf mfs-1.6.15.tar.gz
$ cd mfs-1.6.15
$ source /etc/profile
$ ./configure --prefix=/home/XXXX/local/mfs --with-default-user=XXXX --with-default-group=XXXX --enable-mfsmount
$ make
$ make install
说明:对于client端的程序,必须加--enable-mfsmount选项以编译mfsmount程序,且这台服务器需要安装fuse程序。master、chunk和metalogger服务器可以不加这个选项,并且不需要安装fuse程序。
2.1.3 加载fuse.ko内核模块
使用root将fuse.ko模块装入内核:
#cd /boot/fuse
#insmod fuse.ko
可以将该命令放入rc.local,使服务器重启时自动执行。
echo “insmod /boot/fuse/fuse.ko >> /etc/rc.local”
2.2 配置
在mfs编译安装后,会自动生成初始化配置示例文件。这些文件在${prefix}/etc目录中,并以.cfg.dist结尾。在使用前需要将文件拷贝成.cfg,即去掉.dist。
master、metalogger和chunk都有一系列的端口配置项,这些端口配置项需要互相匹配,这里简单起见,采用默认配置。对于默认配置,都是这些文件中初始的注释掉的内容,每一行前面的注释符号“#”无需删除。
2.2.1 metalogger的配置
metalogger有一个配置文件,mfsmetalogger.cfg:
$ cd /home/XXXX/local/mfs/etc
$ cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
需要修改的配置项如下:
BACK_LOGS = 24
META_DOWNLOAD_FREQ = 1
MASTER_HOST = IP地址或机器名
说明:
BACK_LOGS = 24 #changelog的数量,一小时一个,这个配置项的值与master中这个配置项的值保持一致
META_DOWNLOAD_FREQ = 1 #metalogger从master中下载metadata的周期,单位:小时。默认配置是24,表示每天从master中下载一次,此配置最小值是1
MASTER_HOST = IP地址或机器名 #此处配置master的域名或者IP地址

2.2.2 master的配置
master有两个配置文件,mfsmaster.cfg、mfsexports.cfg:
$ cd /home/XXXX/local/mfs/etc
$ cp mfsmaster.cfg.dist mfsmaster.cfg
$ cp mfsexports.cfg.dist mfsexports.cfg
1、mfsmaster.cfg需要修改的配置项如下:
BACK_LOGS = 24
说明:
BACK_LOGS = 24 # changelog的数量,一小时一个,这个配置项的值与metalogger中这个配置项的值保持一致
简单起见,其它配置项采用默认配置。
2、mfsexports.cfg需要修改的配置项如下:
简单起见,其它配置项采用默认配置。

2.2.3 chunk的配置
chunk有两个配置文件,mfschunkserver.cfg、mfshdd.cfg:
1、chunk的配置
$ cd /home/XXXX/local/mfs/etc
$ cp mfschunkserver.cfg.dist mfschunkserver.cfg
$ cp mfshdd.cfg.dist mfshdd.cfg
1、mfschunkserver.cfg需要修改的配置项如下:
MASTER_HOST = IP地址或机器名
说明:
MASTER_HOST = IP地址或机器名 #此处配置master的域名或者IP地址
2、mfshdd.cfg需要修改的配置项如下:
这个配置文件说明chunk服务器贡献出来的存储的路径,比如贡献出/home/XXXX/data这个目录,则在mfshdd.cfg文件中增加如下行:
/home/XXXX/data

2.3 启动与停止
启动顺序***按照如下的顺序进行:
1、启动mfs:metalogger->master->chunk
2、client端使用mfs:mfsmount
3、说明:
(1)工作账户:metalogger、master、chunk可以使用configure是--default-user=XXXX这个参数中指明的默认工作账户启动。mfsmount因为是挂在文件系统,因此需要root用户运行。
(2)master启动后会定期检查是否有metalogger连过来,会定期检查chunk的状态;chunk启动后会主动去连master。
2.3.1 metalogger的启动与停止
1、运行命令:
(1)启动
$ cd /home/XXXX/local/mfs/sbin
$ ./mfsmetalogger start
或者
$ /home/XXXX/local/mfs/sbin/mfsmetalogger start
(2)停止
$ cd /home/XXXX/local/mfs/sbin
$ ./mfsmetalogger –s
或者
$ /home/XXXX/local/mfs/sbin/mfsmetalogger -s
2、日志:
#tail –f /var/log/messages | grep metalogger
3、说明:
mfsmetalogger程序运行时不加参数,则默认执行的动作是“停止->启动”。
2.3.2 master的启动与停止
mfs首次编译安装结束后,在启动mfsmaster之前,需要建立一个初始的metadata文件,使用自带文件即可:
$ cd /home/XXXX/local/mfs/var/mfs
$ cp metadata.mfs.empty metadata.mfs
1、运行命令:
(1)启动
$ cd /home/XXXX/local/mfs/sbin
$ ./mfsmaster start
或者
$ /home/XXXX/local/mfs/sbin/mfsmaster start
(2)停止
$ cd /home/XXXX/local/mfs/sbin
$ ./mfsmaster –s
或者
$ /home/XXXX/local/mfs/sbin/mfsmaster -s
2、日志:
#tail –f /var/log/messages | grep master
3、说明:
mfsmaster程序运行时不加参数,则默认执行的动作是“停止->启动”。
2.3.3 chunk的启动与停止
1、运行命令:
(1)启动
$ cd /home/XXXX/local/mfs/sbin
$ ./mfschunkserver start
或者
$ /home/XXXX/local/mfs/sbin/mfschunkserver start
(2)停止
$ cd /home/XXXX/local/mfs/sbin
$ ./mfschunkserver –s
或者
$ /home/XXXX/local/mfs/sbin/mfschunkserver -s
2、日志:
#tail –f /var/log/messages | grep chunkserver
3、说明:
mfschunkserver程序运行时不加参数,则默认执行的动作是“停止->启动”。
2.3.4 mfscgiserv的启动
mfscgiserv是python写的简易的webserver,mfs的web端监控系统的应用程序可以通过它供使用者使用。它需要在master服务器中运行,因为监控程序是监控本地启动的mfsmaster程序。
1、命令:
/home/XXXX/local/python/bin/python /home/XXXX/local/mfs/sbin/mfscgiserv
2、访问:
在浏览器地址栏中输入:http://master_ip:9425
或者
http://master_hostname:9425
这里面mfscgiserv的默认端口是9425
3、说明:
(1)监控程序放在${prefix}/share /mfscgi目录中,是cgi程序。
(2)监控程序也可通过部署apache来进行访问,以使用更多的webserver的特性。如将mfscgi目录放入/home/XXXX/local/apache/cgi-bin/目录中,访问方法如下:http://master_ip:apache_port/cgi-bin/mfscgi
或者
http://master_hostname:apache_port/cgi-bin/mfscgi
2.3.5 client挂载网络文件系统
由于是挂载文件系统,因此需要使用root执行命令:
1、挂载:
client端使用mfsmount命令挂载mfs,这个过程与nfs的挂载类似。这里client挂载时使用master的IP地址或者机器名。
$ cd /home/XXXX/local/mfs/bin
su -
# ./mfsmount /home/XXXX/var/mfs –H master_IP
2、卸载:
su –
#umount /home/XXXX/var/mfs
3、说明:
/home/XXXX/var/mfs是本地挂载点。client挂载mfs中的哪个目录,具有哪些权限(只读、只写、可读可写)与master中mfsexports.cfg配置文件的内容和client端使用mfsmount命令时的参数有关。

3 Moosefs的日常维护
3.1 master的主备切换
master的主备切换分为两个步骤:一是由metalogger恢复master;二是chunk和client端进行响应的处理。
3.1.1 metalogger恢复master
1、metalogger定期从master下载metadata文件,并实时记录changelog,但是这个“实时”究竟有多么的实时,还得再看看。这个下载metadata和记录changelog的工作有点类似sfrd客户端每天下载基准和导入增量。
2、master挂掉之后,使用metarestore命令将metalogger中的基准和增量变成master需要的metadata,然后启动mfsmaster。master和metalogger可以部署在同一台机器,也可以部署在不同机器。
3、metalogger恢复master时使用的命令:
$ cd /home/XXXX/local/mfs/sbin
$ ./metarestore –a
$ ./mfsmaster
4、说明:
(1)metalogger服务器中需要备份master的两个配置文件,由于配置文件不是经常变化,因此通过定时脚本进行文件同步即可。
(2)当metalogger没有下载metadata之前,不能使用期接管master。此时metarestore程序会运行失败。
(3)metarestore程序是根据metalogger中定期下载的metadata和changelog来恢复master挂掉时刻master所记录的整个mfs的信息。

3.1.2 chunk和client相应的修改
1、对于client,需要umount掉mfs分区后,重启mfsmount新的master的IP地址。如果master挂掉之后,经过(1)重启服务器(2)使用同一台机器中metalogger恢复master数据(3)启动master;则client端不需要重新手动进行mfsmount,因为mfsmount会自动重试。
2、对于chunk,可以逐个chunk修改配置文件中master的IP地址,然后进行重启。如果master挂掉之后,经过(1)重启服务器(2)使用同一台机器中metalogger恢复master数据(3)启动master;则chunk不需要重启,master会在自动检测chunk的时候检测到它。
3.2 metalogger的注意事项
1、部署metalogger的服务器的open files数目必须大于或者等于5000,
2、metalogger在启动时不会下载metadata,而是等到第一个下载周期的下载时间点时再去下载,metalogger下载metadata的时间点是每小时的10分30秒,时间间隔是1小时的整数倍。
3、metalogger不是在启动的时候就取下载metadata,而是必须等到下载时间点(2中所述)才会去下载。也就是说,metalogger为确保正确性,要在启动后最少一个小时以内master和metalogger都要保持良好的状态。
 

 

 









本文转自百度技术51CTO博客,原文链接:http://blog.51cto.com/baidutech/748577,如需转载请自行联系原作者