一、结构说明
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源码包下载:
| 安装路径 | 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安装
#vi mfsmaster.cfg
- # WORKING_USER = mfs
- # WORKING_GROUP = mfs
- # SYSLOG_IDENT = mfsmaster
- # LOCK_MEMORY = 0
- # NICE_LEVEL = -19
- # EXPORTS_FILENAME = /etc/mfsexports.cfg
- # DATA_PATH = /var/lib/mfs 元数据存放路径编译时已指定, 用于备份元数据服务器的变化日志
- BACK_LOGS = 24 需和metalogger server上配置一致,,存储了过去的24小时的元数据改变日志changelog.*.mfs.
- # REPLICATIONS_DELAY_INIT = 300
- # REPLICATIONS_DELAY_DISCONNECT = 3600
- # MATOML_LISTEN_HOST = *
- # MATOML_LISTEN_PORT = 9419
- # MATOCS_LISTEN_HOST = *
- #MATOCS_LISTEN_PORT = 9420 元数据服务器使用9420监听端口来接受数据存储服务器chunkserver端的连接
- # MATOCU_LISTEN_HOST = *
- # MATOCU_LISTEN_PORT = 9421 元数据服务器在9421端口监听,用以接受客户端对MFS进行远程挂接(客户端以mfsmount挂接MFS)
- # CHUNKS_LOOP_TIME = 300
- # CHUNKS_DEL_LIMIT = 100
- # CHUNKS_WRITE_REP_LIMIT = 1
- # CHUNKS_READ_REP_LIMIT = 5
- # REJECT_OLD_CLIENTS = 0
- # deprecated, to be removed in MooseFS 1.7
- # LOCK_FILE = /var/run/mfs/mfsmaster.lock 文件锁所在的位置,避免启动多次启动同一个守护进程
#vi mfsexports.cfg
- # WORKING_USER = daemon
- # WORKING_GROUP = daemon
- # SYSLOG_IDENT = mfsmetalogger
- # LOCK_MEMORY = 0
- # NICE_LEVEL = -19
- # DATA_PATH = /var/mfs
- BACK_LOGS = 24 存放备份日志的总个数24,超出24则轮转
- META_DOWNLOAD_FREQ = 1 每小时从master同步一次
- # MASTER_RECONNECTION_DELAY = 5
- MASTER_HOST = 192.168.40.140 指定master主机IP
- # MASTER_PORT = 9419 准备连接元数据服务器端口
- # MASTER_TIMEOUT = 60
- # deprecated, to be removed in MooseFS 1.7
- # LOCK_FILE = /var/run/mfs/mfsmetalogger.lock
6. 存储块服务器chunk servers安装配置(两台chunk一样)
#vi /etc/mfschunkserver.cfg
- # WORKING_USER = mfs
- # WORKING_GROUP = mfs
- # SYSLOG_IDENT = mfschunkserver
- # LOCK_MEMORY = 0
- # NICE_LEVEL = -19
- # DATA_PATH = /var/lib/mfs
- # MASTER_RECONNECTION_DELAY = 5
- # BIND_HOST = *
- MASTER_HOST = 192.168.40.140 指定连接的master元数据服务器 ip地址
- # MASTER_PORT = 9420
- # MASTER_TIMEOUT = 60
- # CSSERV_LISTEN_HOST = *
- # CSSERV_LISTEN_PORT = 9422 用于监听与其它数据存储服务器的连接(数据复制),如有多个chunkserver存储的话
- # HDD_CONF_FILENAME = /etc/mfshdd.cfg 分配给MFS使用的磁盘空间配置文件路径
- # HDD_TEST_FREQ = 10
- # deprecated, to be removed in MooseFS 1.7
- # LOCK_FILE = /var/run/mfs/mfschunkserver.lock
- BACK_LOGS = 24
- # 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守护进程做的。
4) 修改/etc/hosts 绑定主机名mfsmaster与ip:192.168.40.140
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