一、结构说明
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/ /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
- # 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
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界面访问
#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
- # 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
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
- # 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守护进程做的。
#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文档。