MooseFS 分布式文件系统应用(一)

本文详细介绍了MooseFS分布式文件系统的结构,包括mfs client、master元数据服务器和chunk存储服务器的角色。master负责调度并将数据分发到chunk server,文章还提供了master server、metalogger server以及chunk servers的安装配置步骤,强调了BACK_LOGS参数的设置以保持元数据的一致性。
摘要由CSDN通过智能技术生成
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://iceeggplant.blog.51cto.com/1446843/705179

一、结构说明
1. mfs client客户端数据由mount创建或web服务器通过程序调用将要上传的内容至mfs client(相当于原先的nfs图片服务器)。
2.master元数据服务器负责管理,调度,只保留元数据日志(此日志非日志文件中的日志),将真实数据分发至chunk存储服务器。
目前不支持多个master存在单点故障,可增设一台metalogger server作为master的备份,定期下载metadata并实时同步changlog日志变化文件(默认24小时同步一次,最小可设为每1小时同步一次)。
3.master调度将真实数据分发至各chunk server,文件分成块以副本形式在各chunk间复制存储。
后期可以不停服务增加chunk服务器或磁盘空间进行扩容。

二、安装配置

1.最新MooseFS1.6.20源码包下载:

rpm包下载:
2.使用分布如下:
主控服务器master server:192.168.40.140
主控备份服务器metalogger server:192.168.40.185
存储块服务器Chunk01 server:192.168.40.183
Chunk02 server:192.168.40.184
Web客户端(client):192.168.40.144
3. 安装规范:

安装路径

mfs用户帐户

数据存储路径

主要配置文件

master

/usr

Mfs:mfs

/etc/mfsmaster.cfg

/etc/mfsexports.cfg

metalogger

/usr

Mfs:mfs

/etc/mfsmetalogger.cfg

Chunk01

/usr

Mfs:mfs

/data

/etc/mfschunkserver.cfg

/etc/mfshdd.cfg

Chunk02

/usr

Mfs:mfs

/data

/etc/mfschunkserver.cfg

/etc/mfshdd.cfg

Mfs-client

/usr

本地挂接点/mnt

4. 主控服务器master server安装

1)#groupadd mfs
#useradd –g mfs mfs   建mfs组、用户
2)源码编译可取消装chunk server及mfs客户端mfsmount模块
#./configure --prefix=/usr –sysconfdir=/etc –localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs –disable-mfschunkserver –disable-mfsmount
# make && make install
注:--localstatedir=/var/lib 二进制文件metadata 和文本文件changelog 将被保存的目录。
3) 成功安装后/etc 下会自动生成.dist的样例配置文件:
 #cp mfsmaster.cfg.dist mfsmaster.cfg
#cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
#cp mfsexports.cfg.dist mfsexports.cfg
注:配置文件里被注释掉的行,即是MooseFS 内置的缺省值
4)主要配置更改:
  Mfsmaster.cfg包含主控服务器master的相关参数设置
  Mfsexports.cfg 指定哪些客户端主机可以远程挂接及访问权限

#vi mfsmaster.cfg

 
   
  1. # WORKING_USER = mfs
  2. # WORKING_GROUP = mfs
  3. # SYSLOG_IDENT = mfsmaster
  4. # LOCK_MEMORY = 0
  5. # NICE_LEVEL = -19
  6. # EXPORTS_FILENAME = /etc/mfsexports.cfg
  7. # DATA_PATH = /var/lib/mfs 元数据存放路径编译时已指定, 用于备份元数据服务器的变化日志
  8. BACK_LOGS = 24 需和metalogger server上配置一致,,存储了过去的24小时的元数据改变日志changelog.*.mfs.
  9. # REPLICATIONS_DELAY_INIT = 300
  10. # REPLICATIONS_DELAY_DISCONNECT = 3600
  11. # MATOML_LISTEN_HOST = *
  12. # MATOML_LISTEN_PORT = 9419
  13. # MATOCS_LISTEN_HOST = *
  14. #MATOCS_LISTEN_PORT = 9420 元数据服务器使用9420监听端口来接受数据存储服务器chunkserver端的连接
  15. # MATOCU_LISTEN_HOST = *
  16. # MATOCU_LISTEN_PORT = 9421 元数据服务器在9421端口监听,用以接受客户端对MFS进行远程挂接(客户端以mfsmount挂接MFS)
  17. # CHUNKS_LOOP_TIME = 300
  18. # CHUNKS_DEL_LIMIT = 100
  19. # CHUNKS_WRITE_REP_LIMIT = 1
  20. # CHUNKS_READ_REP_LIMIT = 5
  21. # REJECT_OLD_CLIENTS = 0
  22. # deprecated, to be removed in MooseFS 1.7
  23. # LOCK_FILE = /var/run/mfs/mfsmaster.lock 文件锁所在的位置,避免启动多次启动同一个守护进程

#vi mfsexports.cfg

192.168.40.144 / rw,alldirs,maproot=0
赋予mfs-client:192.168.40.144客户端可以挂载并具有读写权限。
5)首次安装master 时,会自动生成一个名为metadata.mfs.empty 的元数据文件 metadata,该文件是空的,master 运必须有文件metadata.mfs
  #cp /var/lib/mfs/metadata.mfs.empty /var/lib/mfs/metadata.mfs
6)修改/etc/hosts 绑定主机名mfsmaster与ip:192.168.40.140绑定
#vi /etc/hosts
192.168.40.140 mfsmaster
7)启动服务并设为开机启动
/usr/sbin/mfsmaster start
/usr/sbin/mfscgiserv start  mfs自带的CGI监控服务便用监控moosefs运行状态,使用9425端口。可通过web界面访问 http://192.168.40.140:9425
#vi /etc/rc.local 添加设为开机启动
/usr/local/mfs/sbin/mfsmaster start
/usr/local/mfs/sbin/mfscgiserv
8)查看启动进程
#ps aux |grep mfs
#netstat natlp
5. master备份服务器metalogger安装配置
1)安装同主master,先创建用户和组mfs,再编译安装。
2)产生配置文件
#cp /etc/mfsmetalogger.cfg.dist /etc/mfsmetalogger.cfg
#vi /etc/mfsmetalogger.cfg
 
  
  1. # WORKING_USER = daemon
  2. # WORKING_GROUP = daemon
  3. # SYSLOG_IDENT = mfsmetalogger
  4. # LOCK_MEMORY = 0
  5. # NICE_LEVEL = -19
  6. # DATA_PATH = /var/mfs
  7. BACK_LOGS = 24 存放备份日志的总个数24,超出24则轮转
  8. META_DOWNLOAD_FREQ = 1  每小时从master同步一次
  9. # MASTER_RECONNECTION_DELAY = 5
  10. MASTER_HOST = 192.168.40.140 指定master主机IP
  11. # MASTER_PORT = 9419 准备连接元数据服务器端口
  12. # MASTER_TIMEOUT = 60
  13. # deprecated, to be removed in MooseFS 1.7
  14. # LOCK_FILE = /var/run/mfs/mfsmetalogger.lock

3)修改/etc/hosts 绑定主机名mfsmaster与ip:192.168.40.140绑定
#vi /etc/hosts
192.168.40.140 mfsmaster
4)启动服务并设为开机启动
#vi /etc/rc.local 设为开机启动
/usr/sbin/mfsmetalogger start

6. 存储块服务器chunk servers安装配置(两台chunk一样)

1) #groupadd mfs
#useradd –g mfs mfs创建用户和组mfs
2) 编译安装:
#./configure --prefix=/usr –sysconfdir=/etc –localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs –disable-mfsmaster
可以取消安装master模块.
# make && make install
3) Chunk server所需配置文件
#cp /etc/mfschunkserver.cfg.dist /etc/mfschunkserver.cfg
#cp /etc/mfshdd.cfg.dist /etc/mfshdd.cfg.dist 配置客户端挂接根分区所使用的共享空间位置。

#vi /etc/mfschunkserver.cfg

 
  
  1. # WORKING_USER = mfs
  2. # WORKING_GROUP = mfs
  3. # SYSLOG_IDENT = mfschunkserver
  4. # LOCK_MEMORY = 0
  5. # NICE_LEVEL = -19
  6. # DATA_PATH = /var/lib/mfs
  7. # MASTER_RECONNECTION_DELAY = 5
  8. # BIND_HOST = *
  9. MASTER_HOST = 192.168.40.140   指定连接的master元数据服务器 ip地址
  10. # MASTER_PORT = 9420
  11. # MASTER_TIMEOUT = 60
  12. # CSSERV_LISTEN_HOST = *
  13. # CSSERV_LISTEN_PORT = 9422   用于监听与其它数据存储服务器的连接(数据复制),如有多个chunkserver存储的话
  14. # HDD_CONF_FILENAME = /etc/mfshdd.cfg 分配给MFS使用的磁盘空间配置文件路径
  15. # HDD_TEST_FREQ = 10
  16. # deprecated, to be removed in MooseFS 1.7
  17. # LOCK_FILE = /var/run/mfs/mfschunkserver.lock
  18. BACK_LOGS = 24
  19. # CSSERV_TIMEOUT = 5

BACK_LOGS说明:

通常元数据有两部分的数据:
3.1)主要元数据文件metadata.mfs,当mfsmaster运行的时候会被命名为 metadata.mfs.back
3.2)元数据改变日志changelog.*.mfs,存储了过去的N小时的文件改变(N的数值是由BACK_LOGS参数设置的)。
主要的元数据文件需要定期备份,备份的频率取决于取决于多少小时changelogs储存。元数据changelogs应该实时的自动复制。自从MooseFS 1.6.5,这两项任务是由mfsmetalogger守护进程做的。
#vi /etc/mfshdd.cfg
/data 指定客户端挂载所使用的共享空间为/data
注:建议在chunk server 上划分单独的空间,最好是一个单独的硬盘或者一个raid卷,且单个存储不小于 2G(因为chunk初始化磁盘时需占用一定空间)。

4) 修改/etc/hosts 绑定主机名mfsmaster与ip:192.168.40.140

#vi /etc/hosts
192.168.40.140 fsmaster
5) 启动服务并设开机启动
#vi /etc/rc.local
/usr/sbin/mfschunkserver start 启动chunkserver
working directory: /data
lockfile created and locked
initializing mfschunkserver modules ...
scanning folder /data/ ...
/data/: 0 chunks found
scanning complete
main server module: listen on *:9422
no charts data file - initializing empty charts
mfschunkserver daemon initialized properly
7. Mfs-client客户端安装配置
1) #useradd –s /sbin/nologin mfs 创建用户mfs
2) Fuse的安装: mfs-client是通过fuse内核接口挂载到master-server上的。
#./configure –prefix=/usr &&make&&make install
3) 编译安装客户端mfs
#./configure --prefix=/usr –sysconfdir=/etc –localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs –disable-mfsmaster –disable-mfschunkserver –enable-mfsmount
# make && make install
取消安装master和chunk模块,加载mount动态模块并保证fuse模块的安装并被加入到内核:
#modprobe fuse
4) 修改绑定主机名mfsmaster与ip:192.168.40.140
#vi /etc/hosts
192.168.40.140 mfsmaster
5) 创建本地挂载点/mnt 并属主组mfs读写权限 并将其挂载到master上(有更改)
#mkdir /mnt/mfs
#mkdir /mnt/mfsmeta
#/usr/bin/mfsmount /mnt –H 192.168.40.140
#ls /mnt/mfsmeta
Reserved trash
#mount 查看
mfs#192.168.40.140:9421 on /mnt type fuse (rw,nosuid,nodev,allow_other,default_permissions)
mfsmeta#192.168.40.140:9421 on /mfsmeta type fuse (rw,nosuid,nodev,allow_other,default_permissions)
加入到/etc/rc.local 下开机自动挂接MFS
#/usr/bin/mfsmount /mnt –H 192.168.40.140
#/usr/bin /mfsmount /mfsmeta –H 192.168.40.140 –o mfsmeta
6) # df –h检查分区情况
mfs#192.168.40.185:9421 101G 1.9G 99G 2% /mnt
7) 副本设置及mfsmount工具使用:
Mfssetgoal 2 /mnt 设置副本数为2
三、后期维护
1. 可以不停服务进行在线扩容,在原来基础上增加一个chunk时,数据会自动同步到新增的chunk server上以达到数据均衡。master会自动调度,数据会在chunk间重新分配。
  2.master的主备切换
master的主备切换分为两个步骤:一是由metalogger恢复master;二是chunk和client端进行响应的处理。
2.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)说明:
metalogger服务器中需要备份master的两个配置文件,由于配置文件不是经常变化,因此通过定时脚本进行文件同步即可。
当metalogger没有下载metadata之前,不能使用期接管master。此时metarestore程序会运行失败。
metarestore程序是根据metalogger中定期下载的metadata和changelog来恢复master挂掉时刻master所记录的整个mfs的信息。

2.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的时候检测到它.

2.3 metalogger的注意事项
1)部署metalogger的服务器的open files数目必须大于或者等于5000,
2)metalogger在启动时不会下载metadata,而是等到第一个下载周期的下载时间点时再去下载,metalogger下载metadata的时间点是每小时的10分30秒,时间间隔是1小时的整数倍。
3) metalogger不是在启动的时候就取下载metadata,而是必须等到下载时间点(2中所述)才会去下载。也就是说,metalogger为确保正确性,要在启动后最少一个小时以内master和metalogger都要保持良好的状态。

相关测试及结果见下一篇mfs文档。

本文出自 “E人空间” 博客,请务必保留此出处http://iceeggplant.blog.51cto.com/1446843/705179

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值