今天又是周日,办公室就我一个人,很静很静,只能听到电脑的运行的声音,嗡嗡响,这么好的环境,我不写点东西就对不起自己啦!!

      这篇博文写关于MFS的一下东西,先简单介绍一下MFS文件系统的组成:
1、  元数据服务器。在整个体系中负责管理管理文件系统,目前MFS只支持一个元数据服务器master,这是一个单点故障,需要一个性能稳定的服务器来充当。希望今后MFS能支持多个master服务器,进一步提高系统的可靠性。
2、  数据存储服务器chunkserver。真正存储用户数据的服务器。存储文件时,首先把文件分成块,然后这些块在数据服务器chunkserver之间复 制(复制份数可以手工指定,建议设置副本数为3)。数据服务器可以是多个,并且数量越多,可使用的“磁盘空间”越大,可靠性也越高。
3、  客户端。使用MFS文件系统来存储和访问的主机称为MFS的客户端,成功挂接MFS文件系统以后,就可以像以前使用NFS一样共享这个虚拟性的存储了。

一、环境描述:

· 主控服务器Master server: 119.147.146.246
· 主控备份服务器Metalogger server: 119.147.146.248
· 存储块服务器Chunk servers: 119.147.146.249
· 客户端主机 (clients): 119.147.146.242、10.20.220.26
二、主控服务器Master的安装
1.安装
 #useradd mfs -s /sbin/nologin
 #tar -zxvf mfs-1.6.11.tar.gz
 #cd mfs-1.6.11
 #./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-     default-group=mfs --disable-mfschunkserver --disable-mfsmount
 #make
 #make install
2.copy配置文件
 #cd /usr/local/mfs/etc/
 #cp mfsmaster.cfg.dist mfsmaster.cfg
 #cp mfsexports.cfg.dist mfsexports.cfg
3.mfsmaster.cfg文件详解
 [root@localhost ~]# cat /usr/local/mfs/etc/mfsmaster.cfg
 # WORKING_USER = mfs   #运行master server的用户
 # WORKING_GROUP = mfs  #运行master server的的组
 # SYSLOG_IDENT = mfsmaster #是master server在syslog中的标志
 # LOCK_MEMORY = 0#是否执行mlockall()以避免mfsmaster进程溢出(默认为0)
 # NICE_LEVEL = -19 #运行的优先级
 # EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg #被挂载目录及权限控制文件的存放位置
 # DATA_PATH = /usr/local/mfs/var/mfs #数据存放路径
 # BACK_LOGS = 50  #元数据的改变日志文件数量(默认50)
 # REPLICATIONS_DELAY_INIT = 300  #延迟复制的时间(默认300s)
 # REPLICATIONS_DELAY_DISCONNECT = 3600 #CHUNK SERVER断开复制的延迟
 # MATOML_LISTEN_HOST = * #元数据日志服务器监听的IP地址(默认*,代表任何)
 # MATOML_LISTEN_PORT = 9419 #元数据日志服务器监听的端口(默认9419)
 # MATOCS_LISTEN_HOST = *  #用于CHUNK SERVER 连接的IP(默认*,任何IP)
 # MATOCS_LISTEN_PORT = 9420 #用于CHUNK SERVER连接的端口(默认9420)
 # MATOCU_LISTEN_HOST = *   #用于客户端挂载连接的IP(默认*。代表任何IP)
 # MATOCU_LISTEN_PORT = 9421#用户客户端挂载连接的端口(默认9421)
 # CHUNKS_LOOP_TIME = 300 #chunks的回环频率(默认300s)
 # CHUNKS_DEL_LIMIT = 100 #表示在一个loop设备中可以删除chunks的最大数(默认100)
 # CHUNKS_WRITE_REP_LIMIT = 1 #在一个循环里复制一个CHUNK SERVER的最大chunks数目(默认1)
 # CHUNKS_READ_REP_LIMIT = 5 #在一个循环里从一个CHUNK SERVER 中复制最大chunks数目(默认5)
 # REJECT_OLD_CLIENTS = 0 弹出低于1.6.0的客户端挂接(0或1,默认0)
 # deprecated, to be removed in MooseFS 1.7
 # LOCK_FILE = /var/run/mfs/mfsmaster.lock
 
 
注意:
如果我们打算更改这些配置文件中的某些项目的值,则需要打开特定配置文件相关文本行前的注释,然后修改跟随其后的值。因为被注释掉的行,即是MooseFS内置的缺省值,在这里我们暂时不打算对其进行修改。
 
4.mfsexports.cfg文件详解
 [root@localhost ~]# cat /usr/local/mfs/etc/mfsexports.cfg
 #*                      /       ro
 #192.168.1.0/24         /       rw
 #192.168.1.0/24         /       rw,alldirs,maproot=0,password=passcode
 #10.0.0.0-10.0.0.5      /test   rw,maproot=nobody,password=test
 #*                      .       rw
 #*                       /       rw,alldirs,maproot=0
 #192.168.1.0/24         /       rw,alldirs,maproot=0,password=passcode
 119.147.146.248/24              /       rw,alldirs,maproot=0
 119.147.146.242/24              /data     rw,alldirs,maproot=0,password=123
 
mfsexports.cfg文件每一条由三部分组成,第一部分表示客户端的IP地址,第二部分表示被挂接的目录,第三部分表示客户端拥有的权限,下面对三给部分进行解释:
a.客户端IP地址
  *                        所有IP地址
  x.x.x.x                  单个IP地址
  x.x.x.x/m.m.m.m          IP网络地址/子网掩码
  f.f.f.f-t.t.t.t          IP段
 b.被挂载的目录
  /                        表示MooseFS的根
  .                        表示MFSMETA文件系统
 c.客户端拥有的权限
  ro                       只读
  rw                       读写
  alldirs                  允许挂载任何指定的子目录
  maproot                  映射为root用户还是指定的用户
  password                 指定客户端密码
 
5.首次安装master时,会自动生成一个名为metadata.mfs.empty的元数据文件metadata,该文件是空的。MooseFS master运必须有文件metadata.mfs
 #cp /usr/local/mfs/var/mfs/metadata.mfs.empty /usr/local/mfs/var/mfs/metadata.mfs
 
6.启动master
 #/usr/local/mfs/sbin/mfsmaster start
7.开机启动
[root@localhost ~]# echo "/usr/local/mfs/sbin/mfscgiserv" >>/etc/rc.local
[root@localhost ~]# echo "/usr/local/mfs/sbin/mfsmaster" >> /etc/rc.local
查看mfs是否运行
 #ps -ef | grep mfs
mfs      23920     1  0 01:34 ?        00:00:01 /usr/local/mfs/sbin/mfsmaster start
 
三、安装主控备份服务器Metalogger server
1.安装
 #useradd mfs -s /sbin/nologin
 #tar -zxvf mfs-1.6.11.tar.gz
 #cd mfs-1.6.11
 #./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-     default-group=mfs --disable-mfschunkserver --disable-mfsmount
 #make
 #make install
2.copy配置文件
 #cd /usr/local/etc
 #cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
3.mfsmetalogger.cfg文件详解
[root@localhost etc]# cat mfsmetalogger.cfg
# WORKING_USER = mfs
# WORKING_GROUP = mfs
# SYSLOG_IDENT = mfsmetalogger
# LOCK_MEMORY = 0
# NICE_LEVEL = -19
# DATA_PATH = /usr/local/mfs/var/mfs
# BACK_LOGS = 50
#META_DOWNLOAD_FREQ = 24
# MASTER_RECONNECTION_DELAY = 5
MASTER_HOST = 119.147.146.246
# MASTER_PORT = 9419
# MASTER_TIMEOUT = 60
# deprecated, to be removed in MooseFS 1.7
# LOCK_FILE = /var/run/mfs/mfsmetalogger.lock

META_DOWNLOAD_FREQ,元数据备份文件下载请求频率,默认24H,即每隔一天从元数据服务器上下载一个metadata.mfs.back文件。当元数据服务器关闭或者出故障时,metadata.mfs.back文件将消失,此时要恢复整个MFS,需要从元数据日志服务器中取的该文件。注意,这个文件和日志文件共同使用才可以恢复整个被损毁的分布式文件系统。

MASTER_HOST,这个文件中需要修改的是MASTER_HOST变量,这个变量的值是MASTER SERVER 的IP地址

4.启动元数据日志服务器

[root@localhost ~]# /usr/local/mfs/sbin/mfsmetalogger start
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfsmetalogger modules ...
mfsmetalogger daemon initialized properly

5.开机启动

echo "/usr/local/mfs/sbin/mfsmetalogger" >> /etc/rc.local

查看MFS进程

[root@localhost ~]# ps -ef | grep mfs
mfs      16373     1  0 19:55 ?        00:00:00 /usr/local/mfs/sbin/mfsmetalogger start

查看MFS通讯端口是否打开

[root@localhost ~]# lsof -i:9419
COMMAND     PID USER   FD   TYPE DEVICE SIZE NODE NAME
mfsmetalo 16373  mfs    7u  IPv4 119836       TCP 119.147.146.248:42981->119.147.146.246:9419 (ESTABLISHED)

四、安装存储块服务器Chunk servers

1.安装

 #useradd mfs -s /sbin/nologin
 #tar -zxvf mfs-1.6.11.tar.gz
 #cd mfs-1.6.11
 #./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster
 #make
 #make install
2.copy配置文件
 #cd /usr/local/mfs/etc/
 #cp mfschunkserver.cfg.dist mfschunkserver.cfg #主配置文件
 #cp mfshdd.cfg.dist mfshdd.cfg   #指定服务器分配给MFS使用的空间
[root@localhost etc]# cat mfschunkserver.cfg
# WORKING_USER = mfs
# WORKING_GROUP = mfs
# SYSLOG_IDENT = mfschunkserver
# LOCK_MEMORY = 0
# NICE_LEVEL = -19
# DATA_PATH = /usr/local/mfs/var/mfs
# MASTER_RECONNECTION_DELAY = 5
MASTER_HOST = 119.147.146.246   #元数据服务器的名称或地址(主机名或者IP)
MASTER_PORT = 9420            
# MASTER_TIMEOUT = 60
# CSSERV_LISTEN_HOST = *
# CSSERV_LISTEN_PORT = 9422 #这个监听端口用于与其他数据储存服务器间的连接,通常是数据复制。
# CSSERV_TIMEOUT = 5
# HDD_CONF_FILENAME = /usr/local/mfs/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 = 50
 
[root@localhost etc]# cat mfshdd.cfg
#/mnt/hd1
#/mnt/hd2
/data    #MFS的分区,客户端挂载的目录
 
改变/data的属主
[root@localhost ~]# chown -R mfs:mfs /data
3.启动数据储存服务器
[root@localhost etc]# /usr/local/mfs/sbin/mfschunkserver start
4.开机启动
[root@localhost ~]# echo "/usr/local/mfs/sbin/mfschunkserver" >> /etc/rc.local
五、MFS客户端的安装配置
为了挂接基于MooseFS分布式文件,客户端主机必须安装FUSE软件包( fuse版本号至少2.6,推荐使用版本号大于2.7.2的fuse)。如果系统没有安装fuse,你必须手动对其进行安装。一种常见的安装方式是从源码进行编译安装-我们可以从 http://sourceforge.net/projects/fuse/取得安装源码:
1.安装fuse-2.8.1.tar.gz
 #tar -zxvf fuse-2.8.1.tar.gz
 #cd fuse-2.8.1
 #./configure
 #make
 #make install
2.安装mfs-1.6.11.tar.gz
 #useradd mfs -s /sbin/nologin
 #tar -zxvf mfs-1.6.11.tar.gz
 #cd mfs-1.6.11
 #export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
 # ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount --disable-mfsmaster --disable-mfschunkserver
 #make
 #make install
3.加载fuse模块到内核
 [root@localhost ~]# modprobe fuse
4.创建挂载点
 [root@localhost ~]# mkdir /mnt/mfs
5.挂载MFS
/usr/local/mfs/bin/mfsmount /mnt/mfs -H 119.147.146.246 -p
输入密码就可以了,所有的MFS都挂载的是同一个元数据服务器的IP,而不是其他数据储存服务器的IP
6.开机自动挂载
echo “/usr/local/mfs/bin/mfsmount /mnt/mfs -H 119.147.146.246 -p” >> /etc/rc.local
7.查看挂载情况
[root@localhost ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroupRoot-LogVolRoot
                       16G  2.6G   13G  18% /
/dev/cciss/c0d0p1      99M   27M   68M  29% /boot
tmpfs                 5.9G     0  5.9G   0% /dev/shm
/dev/mapper/VolGroupData-LogVolData
                      246G   13G  221G   6% /data
/dev/mapper/VolGroupData-LogVolLog
                      9.7G  2.3G  7.0G  25% /data/logs
119.147.146.246:9421   11G  112M   11G   2% /mnt/mfs
利用mount查看
[root@localhost ~]# mount
119.147.146.246:9421 on /mnt/mfs type fuse.mfs (rw,nosuid,nodev,allow_other,default_permissions)
六、通过监控客户端连接状态
1.在Master server上启动mfscgiserv
[root@localhost ~]# /usr/local/mfs/sbin/mfscgiserv
2.在浏览器中输入“http://masterserver IP:端口号”即可

今天就简单的写到这里啦,以后具体内容在补充吧。