一、结构说明
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文档。