MooseFS 分布式文件介绍+部署 MFS


官网:http://www.moosefs.org

1、MooseFS是什么

 一个类MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本,然而对于访问MFS的客户端或者用户来说,整个分布式网络文件系统集群看起来就像一个资源一样,从其对文件系统的情况看MooseFS就相当于UNIX的文件系统(ext3、ext4、nfs):

a.mfs是一个分层的目录树结构

b.存储支持POSIX标准的文件属性(权限,最后访问和修改时间)

c.支持特殊的文件。如:块设备,字符设备,管道、套接字、链接文件(符合链接、硬链接)


2、MooseFS的特性

    a.高可靠性,每一份数据可以设置多个备份(多分数据),并可以存储在不同的主机上

b.高可扩展性,可以很轻松的通过增加主机的磁盘容量或增加主机数量来动态扩展整个文件系统的存储量

c.高可容错性,我们可以通过对mfs进行系统设置,实现当数据文件被删除后的一段时间内,依旧存放于主机的回收站中,以备误删除恢复数据

d.高数据一致性,即使文件被写入、访问时,我们依然可以轻松完成对文件的一致性快照


3、MooseFS的优点

a.轻量、易配置、易维护

b.易于扩展,支持在线扩容。不影响业务

c.开发活跃,社区也活跃,资料丰富

d.以文件系统方式展示:如存图片,虽然存储在chunkserver上的数据是二进制文件,但是在挂载mfs的client端仍旧以图片文件形式展示,便于数据备份

e.硬盘利用率高。测试需要较大磁盘空间

f.可设置删除的空间回收时间,避免误删除文件丢失就恢复不及时影响业务

g.系统负载,即数据读写分配到所有的服务器上

h.可设置文件备份的副本数量,一般建议3份,未来硬盘容量也要是存储单份的容量的三倍

4、MooseFS的缺点

a.master目前是单点(虽然会把数据信息同步到备份服务器,但是恢复需要时间,因此,会影响上线,针对这个问题,可以通过drbd+heartbeat方案或者drbd+inotify方案解决),master和backup之间的同步,类似mysql的主从不同。但是现在master的单点已经修复了

b.master服务器对主机的内存要求略高

c.默认metalogger复制元数据时间较长(可调整)


5、MooseFS系统应用场所

1.大规模高并发的线上数据存储及访问(小文件,大文件都适合)

2.大规模的数据处理,如日志分析,小文件强调性能不用HDFS。

有大多的应用不适合分布式文件系统,不建议大家为了使用而使用。

尽量在前端加cache应用,而不是一味的 扩充文件系统


6、MooseFS结构及原理

MFS组件


管理服务器managing server简称(master):

这个组件的角色是管理整个mfs文件系统的主服务器,除了分发用户请求外,还用来存储整个文件系统中每个数据文件的metadata信息,metadate(元数据)信息包括文件(也可以是目录,socket,管道,块设备等)的大小,属性,文件的位置路径等,很类似lvs负载均衡的主服务器,不同的是lvs仅仅根据算法分发请求,而master根据内存里的metadata信息来分发请求,内存的信息会被实时写入到磁盘,这个master只能由一台处于激活的状态


云数据备份服务器Metadata backup servers(简称metalogger或backup):

这个组件的作用是备份管理服务器master的变化的metadata信息日志文件,文件类型为changelog_ml.*.mfs。以便于在管理服务器出问题时,可以经过简单的操作即可让新的主服务器进行工作。这类似mysql主从同步,只不过它不像mysql从库那样在本地应用数据,而只是接受主服务器上文写入时记录的文件相关的metadata信息,这个backup,可以有一台或多台,它很类似lvs从负载均衡服务器


数据存储服务器组data servers(chunk servers)简称data:

这个组件就是真正存放数据文件实体的服务器了,这个角色可以有多台不同的物理服务器或不同的磁盘及分区来充当,当配置数据的副本多于一份时,据写入到一个数据服务器后,会根据算法在其他数据服务器上进行同步备份。这有点类似lvs集群的RS节点


客户机服务器组(client servers)简称client:

这个组件就是挂载并使用mfs文件系统的客户端,当读写文件时,客户端首先会连接主管理服务器获取数据的metadata信息,然后根据得到的metadata信息,访问数据服务器读取或写入文件实体,mfs客户端通过fuse mechanism实现挂载mfs文件系统的,因此,只有系统支持fuse,就可以作为客户端访问mfs整个文件系统,所谓的客户端并不是网站的用户,而是前端访问文件系统的应用服务器,如web


========================================

管理服务器――MASTER SERVER

元数据日志服务器――Metalogger

数据存储服务器――CHUNK SERVER

客户端――CLIENT


4种角色作用如下:


管理服务器:有时也称为元数据服务器,负责管理各个数据存储服务器,调度文件读写,回收文件空间以及恢复多节点拷贝。


元数据日志服务器:负责备份管理服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在管理服务器出问题时接替其进行工作。元数据日志服务器是mfsl.6以后版本新增的服务,可以把元数据日志保留在管理服务器中,也可以单独存储在一台服务器中。为保证数据的安全性和可靠性,建议单独用一台服务器来存放元  数据日志。需要注意的是,元数据日志守护进程跟管理服务器在同一个服务器上,备份元数据日志服务器作为它的客户端,从管理服务器取得日志文件进行备份。


数据存储服务器是真正存储用户数据的服务器。在存储文件时,首先把文件分成块,然后将这些块在数据存储服务器之间互相复制。同时,数据存储服务器还负责连接管理服务器,听从管理服务器调度,并为客户提供数据传输。数据存储服务器可以有多个,并且数量越多,可靠性越高,MFS可用的磁盘空间也越大。


客户端通过fuse内核接口挂接远程管理服务器上所管理的数据存储服务器,使共享的文件系统和使用本地Linux文件系统的效果看起来是一样的。

========================================


7、MooseFS版本选择

  a、高稳定性要求

     根据前面mfs的原理流程,我们知道管理服务器(master)是MooseFS的最主要的角色,而且是单点,因此master服务器的配置应该尽可能的稳定,例如:

       双电源分别接A、B两路电,机柜的的,尽量不要放在一个机柜上。

  多块磁盘使用raid1或raid10,进行冗余,也可选择raid5

  

  b、资源性要求

  ====================================

  MooseFS ,master设备配置建议

  内存

    对于master服务器来说,资源型要求就是内存大小,为了整个系统访问更快,mfs会把所以访问的元数据metadada信息放在内存中提供用户访问,因此,当文件数量增加时,内存使用量就会增加,根据官方说法,处理一百万个文件chunkserver,大概需要300M的内存空间

    据此,推算如果未来要出来1个亿的文件chunkserver,大概需要30G内存空间

  硬盘:

  硬盘驱动器所需的大小,取决于所用的文件和数据块的数目(主元数据文件)上的文件(源数据更改日志)作出的操作上的数量,例如20G的空间,用于存储信息2500万的文件变更记录保存长达50小时

  ====================================

  MooseFS backup设备配置建议

  MooseFS Metalogger只是收集MooseFS主服务器的源数据(文件更改的信息的变化)备份,因此对硬件的要求不应该高于主服务器的配置,从硬盘上需要大约和主服务器相同的磁盘空间。

  如果确定在主服务器失败后,要启动Metalogger顶替主服务器的话,那么Metalogger服务器至少应该有相同数量的内存和硬盘作为主要主服务器。在生产中我们可以用其他的,如drbd或inotify的同步工具来替代器内部log同步

  ====================================

  MooseFS dataserver 设备配置建议

  MooseFS dataserver是存储数据的真正载体,因此,硬盘的性能较为关键,对于普通的业务,可以选择多块raid5,也可以选择raid10或raid0,建议所以的dataserver的硬盘大小一致比较好,虽然dataserver可以和其他业务公用同一台server,但不建议这样混搭

  ====================================

  虚拟环境搭建准备重点

  内存可以给256M。如果可以建议给512

  可以增大磁盘分区设备,也可以不增加,我们每个服务器增加一个单独的2G大小的虚拟磁盘,用于数据存储,其中,主服务器和备份服务器虚拟磁盘用于drbd及inotify数据同步

  mfs数据服务器的存储地点,可以是单独的服务器、磁盘、分区、目录。至少建议以分区为单位

  操作系统的硬盘空间10G,单独磁盘2G,数据存储


  

  操作系统:centos6.5 支持fuse

  环境准备

两块硬盘  10G + 2G

服务

mfs master   eth0 10.0.0.3 mfs主服务器

mfs backup eth0 10.0.0.4 mfs备份服务器

data server01 eth0 10.0.0.5 mfs数据存放服务器

data server01 eth0 10.0.0.6 mfs数据存放服务器

data server01 eth0 10.0.0.7 mfs数据存放服务器

mfs client eth0 10.0.0.8 mfs客户端服务器

mfs vip   eth0:0 10.0.0.100 VIP初始化绑定在mfs主服务器上面

资源不够,可以把master 和data1、backup和data2.client和data3.绑定在一起


软件下载mfs
wget http://pro.hit.gemius.pl/hitredir/id=.WCbG2t.7Ln5k1s3Q9xPg8cPfX.wVMc5kyXfrKcJTDH.c7/url=moosefs.org/tl_files/mfscode/mfs-1.6.27-1.tar.gz
#更改yum源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
yum install tree -y
grep keepcache /etc/yum.conf 
sed -i 's/keepcache=0/keepcache=1/g' /etc/yum.conf 
grep keepcache /etc/yum.conf 
#关闭selinux:
setenforce 0         #临时生效
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config  #永久生效
##关闭防火墙
/etc/init.d/iptables stop
chkconfig iptables off
chkconfig --list iptables
#时间同步
/usr/sbin/ntpdate pool.ntp.org
echo '#time sync by lvnian at 2010-2-1'>>/var/spool/cron/root
echo '*/10 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1'>>/var/spool/cron/root
crontab -l
#设置hosts文件
cp /etc/hosts /etc/hosts.bak
sed -i '$a 10.0.0.3 MASTER' /etc/hosts 
sed -i '$a 10.0.0.4 BCAKUP' /etc/hosts 
sed -i '$a 10.0.0.5 DATA1' /etc/hosts 
sed -i '$a 10.0.0.6 DATA2' /etc/hosts 
sed -i '$a 10.0.0.7 DATA3' /etc/hosts 
sed -i '$a 10.0.0.8 CLIENT' /etc/hosts 
sed -i '$a 10.0.0.100 mfsmaster.etiantian.org' /etc/hosts 
cat /etc/hosts
上面的五步在每台服务器都要操作
====================================================================


#修改主机名(根据不同的服务器,修改不同的主机名)

hostname MASTER
cp /etc/sysconfig/network /etc/sysconfig/network.bak
sed -i -e '/HOSTNAME=/d' -e '1aHOSTNAME=MASTER' /etc/sysconfig/network
logout
########################################################
hostname BCAKUP
cp /etc/sysconfig/network /etc/sysconfig/network.bak
sed -i -e '/HOSTNAME=/d' -e '1aHOSTNAME=BCAKUP' /etc/sysconfig/network
logout
########################################################
hostname DATA1
cp /etc/sysconfig/network /etc/sysconfig/network.bak
sed -i -e '/HOSTNAME=/d' -e '1aHOSTNAME=DATA1' /etc/sysconfig/network
logout
########################################################
hostname DATA2
cp /etc/sysconfig/network /etc/sysconfig/network.bak
sed -i -e '/HOSTNAME=/d' -e '1aHOSTNAME=DATA2' /etc/sysconfig/network
logout
########################################################
hostname DATA3
cp /etc/sysconfig/network /etc/sysconfig/network.bak
sed -i -e '/HOSTNAME=/d' -e '1aHOSTNAME=DATA3' /etc/sysconfig/network
logout
########################################################
hostname CLIENT
cp /etc/sysconfig/network /etc/sysconfig/network.bak
sed -i -e '/HOSTNAME=/d' -e '1aHOSTNAME=CLIENT' /etc/sysconfig/network
logout
########################################################


##VIP的配置

#在工作中,可以用keepalived或者heartbeat启用vip。在这里。我先用ifconfig在master服务器中配置。

ifconfig eth0:100 10.0.0.100/24 up 
ifconfig eth0:100
------------------------------------------------
[root@MASTER ~]# ifconfig eth0:100 10.0.0.100/24 up 
[root@MASTER ~]# ifconfig eth0:100
eth0:100  Link encap:Ethernet  HWaddr 00:0C:29:A7:2F:91  
          inet addr:10.0.0.100  Bcast:10.0.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
[root@MASTER ~]#
------------------------------------------------
到这来部署前的准备工作才算完成
========================================================



###开始部署


1、安装主服务器mfs master 

 当我们安装主服务器mfs master时,由于我们的目的是安装主服务器,因此在配置的过程中(./configure),可以选择加参数取消安装chunk server(使用--disable-mfschunkserver)以及mfs 客户端(使用--disable-mfsmount)的参数,当然了,我们也可以不加相关的disable参数,安装了不去启动也可以的。为了统一所以服务器的安装步骤,减低安装的复杂性,我们统一了一套安装步骤,适合master backup data服务器,但不适合client服务器。安装主控服务器master的具体步骤如下:

mkdir -p /home/lvnian/tools && cd /home/lvnian/tools
groupadd mfs
useradd -g mfs mfs -s /sbin/nologin 
rz -y
yum install zlib-devel -y
#yum install fuse*        #如果不作为mfs的客户端,可以不用这个参数,只是mfs客户端需要fuse模块,其他的都不需要
tar xf mfs-1.6.27-1.tar.gz 
cd mfs-1.6.27
./configure --prefix=/application/mfs-1.6.27  --with-default-user=mfs \
--with-default-group=mfs 
make && make install
ln -s /application/mfs-1.6.27 /application/mfs
ll /application/
====================================================
安装成功最后的页面:
make[2]: Leaving directory `/home/lvnian/tools/mfs-1.6.27'
make[1]: Leaving directory `/home/lvnian/tools/mfs-1.6.27'
[root@MASTER mfs-1.6.27]# ln -s /application/mfs-1.6.27 /application/mfs
[root@MASTER mfs-1.6.27]# ll /application/
total 4
lrwxrwxrwx. 1 root root   23 Nov 11 10:13 mfs -> /application/mfs-1.6.27
drwxr-xr-x. 6 root root 4096 Nov 11 10:12 mfs-1.6.27
[root@MASTER mfs-1.6.27]# 
[root@MASTER mfs-1.6.27]# ll /application/mfs/
total 16
drwxr-xr-x. 3 root root 4096 Nov 11 10:12 etc
drwxr-xr-x. 2 root root 4096 Nov 11 10:12 sbin
drwxr-xr-x. 4 root root 4096 Nov 11 10:12 share
drwxr-xr-x. 3 root root 4096 Nov 11 10:12 var
[root@MASTER mfs-1.6.27]# 
====================================================
configure出现下面问题:
checking for FUSE... no
******************************** mfsmount disabled ********************************
* fuse library is too old or not installed - mfsmount needs version 2.6 or higher *
***********************************************************************************
checking for fuse_version in -lfuse... no
checking for zlibVersion in -lz... no
configure: error: zlib development library not found
[root@MASTER mfs-1.6.27]# 
问题解决:
yum install zlib-devel -y
====================================================

编译参数说明:

====================================================
选项 作用
--disable-mfsmaster 不创建成管理服务器(用于纯节点的安装)
--disable-mfschunkserver不创建成数据存储服务器
--disable-mfsmount 不创建mfsmount和mfstools(如果用开发包安装,会默认创建这两者)
--enable-mfsmount 确定安装mfsmount和mfstools
--prefix=DIRECTORY 锁定安装目录(默认是/usr/local)
--sysconfdir=DIRECTORY 选择配置文件目录(默认是${prefix}/etc)
--localstatedir=DIRECTORY选择变量数据目录(默认是${prefix}/var,MFS元数据被存储在MFS的子目录下,默认是${prefix}/var/mfs)
--with-default-user 运行守护进程的用户,如果配置文件中没有设定用户,默认为nobody的用户
--with-default-group=GROUP运行守护进程的用户组,如果配置文件中没有设定用户组,默认为nobody的用户组
====================================================



mfs目录结构说明:

[root@MASTER mfs-1.6.27]# ll /application/mfs/
total 16
drwxr-xr-x. 3 root root 4096 Nov 11 10:12 etc       ##这是mfs的配置文件目录
drwxr-xr-x. 2 root root 4096 Nov 11 10:12 sbin      ##这是mfs的命令路径,如果你还有bin目录,证明你激活了mfs 客户端的功能。
drwxr-xr-x. 4 root root 4096 Nov 11 10:12 share      ##mfs的帮助文件目录
drwxr-xr-x. 3 root root 4096 Nov 11 10:12 var        ##mfs数据及日志目录,如:metadata的数据
[root@MASTER mfs-1.6.27]# 
提示:
etc和var需要备份
你可以用tree具体看看mfs下都有什么
[root@MASTER mfs]# ll /application/mfs/etc/mfs
total 28
-rw-r--r-- 1 root root  572 Sep  9 11:53 mfschunkserver.cfg.dist
-rw-r--r-- 1 root root 4060 Sep  9 11:53 mfsexports.cfg.dist  
-rw-r--r-- 1 root root   57 Sep  9 11:53 mfshdd.cfg.dist
-rw-r--r-- 1 root root 1047 Sep  9 11:53 mfsmaster.cfg.dist    ##主配置文件,如果要使用的时候,把.dist去掉即可
-rw-r--r-- 1 root root  449 Sep  9 11:53 mfsmetalogger.cfg.dist
-rw-r--r-- 1 root root  404 Sep  9 11:53 mfsmount.cfg.dist
-rw-r--r-- 1 root root 1123 Sep  9 11:53 mfstopology.cfg.dist
[root@MASTER mfs]#




配置主服务器mfs master 

主服务器mfs master的配置文件位于安装目录/application/mfs下的etc目录。所有的模板文件都是以dist为扩展名结尾,如果我们需要使用则把.dist取得即可。


###启用master的两个配置文件

和master相关的配置文件有俩。分别是mfsexports.cfg和mfsmaster.cfg。故启用

cd /application/mfs/etc/mfs
cp mfsexports.cfg.dist mfsexports.cfg
cp mfsmaster.cfg.dist mfsmaster.cfg

###主配置文件 mfsmaster 暂时不需要改

 mfsmaster.cfg的配置文件继续参考《mfsmaster.cfg配置文件解析》

 

 

###配置 mfsexports

cat >mfsexports.cfg<<EOF
#Allow "meta".
*             .rw
# Allow everything but "meta".
10.0.0.0/24    /        rw,alldirs,mapall=mfs:mfs,password=111111
EOF
cat mfsexports.cfg


上面配置文件的说明


配置文件mfsexpors.cfg指定哪些客户端主机可以远程挂载MFS文件系统,以及授予挂载客户端什么访问权限。例如,我们指定只有10.0.0.X网段的主句可以读写模式访问mfs的整个共享结构资源(/)。在配置文件mfsexpors.cfg文件的第一行,先取消注销然后把星号改为10.0.0.0/24

10.0.0.0/24    /        rw,alldirs,mapall=mfs:mfs,password=111111


第一部分:mfs客户端IP地址或地址范围

地址可以指定的集中表现形式
#  * = 所以IP地址 (same as 0.0.0.0/0)
#  A.B.C.D = given ip address  具体的单个IP地址
#  A.B.C.D-E.F.G.H = range of ip addresses IP地址范围
#  A.B.C.D/BITS = A.B.C.D network with BITS ones in netmask 网络地址/多少位掩码
#  A.B.C.D/E.F.G.H = A.B.C.D network with E.F.G.H netmask 网络地址/子网掩码

第二部分:被挂载的目录

目录部分需要注意两点
/   表示MFS的根
.表示MFSmeta 文件系统
第三部分:这种mfs客户端可以拥有的访问权限
权限部分
ro            ##只读方式共享
rw            ##读写的方式共享
alldirs         #允许挂载任何指定的子目录
maproot        #映射为root,还是指定的用户(类似nfs的匿名用户)
password         #指定客户端密码


master启动

cd /application/mfs/var/mfs
cp metadata.mfs.empty metadata.mfs 
/application/mfs/sbin/mfsmaster start
netstat -lntup |grep mfs
 ==============================================
### 启动报错解决
[root@MASTER mfs]# /application/mfs/sbin/mfsmaster start
working directory: /application/mfs-1.6.27/var/mfs
lockfile created and locked
initializing mfsmaster modules ...
loading sessions ... file not found
if it is not fresh installation then you have to restart all active mounts !!!
exports file has been loaded
mfstopology configuration file (/application/mfs-1.6.27/etc/mfstopology.cfg) not found - using defaults      《=====报错
loading metadata ...
can't open metadata file
if this is new instalation then rename /application/mfs-1.6.27/var/mfs/metadata.mfs.empty as /application/mfs-1.6.27/var/mfs/metadata.mfs                     《=====报错
init: file system manager failed !!!
error occured during initialization - exiting
[root@MASTER mfs]# 
#######启动报错解决,修改源数据文件为metadata.mfs ,启动之后这个metadata.mfs 会变成metadata.mfs.back
cd /application/mfs/var/mfs
cp metadata.mfs.empty metadata.mfs 
 ==============================================
[root@MASTER mfs]# cp metadata.mfs.empty metadata.mfs 
[root@MASTER mfs]# pwd
/application/mfs/var/mfs
[root@MASTER mfs]# ls
metadata.mfs  metadata.mfs.empty  sessions.mfs
[root@MASTER mfs]# /application/mfs/sbin/mfsmaster start
working directory: /application/mfs-1.6.27/var/mfs
lockfile created and locked
initializing mfsmaster modules ...
loading sessions ... ok
sessions file has been loaded
exports file has been loaded
mfstopology configuration file (/application/mfs-1.6.27/etc/mfstopology.cfg) not found - using defaults
loading metadata ...
create new empty filesystemmetadata file has been loaded
no charts data file - initializing empty charts
master <-> metaloggers module: listen on *:9419
master <-> chunkservers module: listen on *:9420
main master server module: listen on *:9421
mfsmaster daemon initialized properly
[root@MASTER mfs]# 
[root@MASTER mfs]# ll
total 12
-rw-r----- 1 mfs  mfs  95 Sep  9 12:56 metadata.mfs.back
-rw-r--r-- 1 root root  8 Sep  9 11:53 metadata.mfs.empty
-rw-r----- 1 mfs  mfs  10 Sep  9 12:52 sessions.mfs
[root@MASTER mfs]#
[root@MASTER mfs]# netstat -lntup|grep mfs              
tcp        0      0 0.0.0.0:9419                0.0.0.0:*                   LISTEN      10905/mfsmaster     
tcp        0      0 0.0.0.0:9420                0.0.0.0:*                   LISTEN      10905/mfsmaster     
tcp        0      0 0.0.0.0:9421                0.0.0.0:*                   LISTEN      10905/mfsmaster     
[root@MASTER mfs]# 
###如果还报错,注意权限问题
chown -R mfs.mfs /application/mfs/var/mfs
 ==============================================

###端口解析

master《=====》backup:9419       也就是master和backup之间通信用9419端口通信
master《=====》chunk:9420   也就是master和data之间通信用9420端口
master sever module:listen on:9421 也就是提供服务给client的端口

###master关闭

/application/mfs/sbin/mfsmaster stop
/application/mfs/sbin/mfsmaster �Cs


#安全定制master server是非常必要的,一定不要用kill -9 mongodb 。

可以使用 mfsmaster -s 或者 mfsmaster stop来安全停止master进程,当然一旦是用来kill 也有解决的办法,那就是通过mfsmaster修复


###配置环境变量

echo "export PATH=$PATH:/application/mfs/sbin:/application/mfs/bin" >>/etc/profile
. /etc/profile
echo $PATH
==============================================
[root@MASTER mfs]# echo "export PATH=$PATH:/application/mfs/sbin:/application/mfs/bin" >>/etc/profile
[root@MASTER mfs]# . /etc/profile
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/application/mfs/sbin:/application/mfs/bin
[root@MASTER mfs]# 
##加入开机自启动
echo "#starup master by lvnian 20150909 " >>/etc/rc.local
echo "/application/mfs/sbin/mfsmaster start" >>/etc/rc.local
tail -2 /etc/rc.local
==============================================
[root@MASTER mfs]# echo "/application/mfs/sbin/mfsmaster start" >>/etc/rc.local
[root@MASTER mfs]# tail -2 /etc/rc.local
tail: inotify cannot be used, reverting to polling
#starup master by lvnian 20150909 
/application/mfs/sbin/mfsmaster start
[root@MASTER mfs]#

###配置主服务器的图像监控

主服务器mfs master的图像监控mfscgiserv,这是一个用Python编写的一个web服务器,它的监控端口是9425.

可以用:/application/mfs/sbin/mfscgiserv start 启动。启动后我们就可以用浏览器就即刻可以比肩全面的监控master、backup及所有客户端挂载的状况信息及相关操作等


#不需要配置,直接启动

/application/mfs/sbin/mfscgiserv start
lsof -i :9425
==============================================
[root@MASTER ~]# lsof -i :9425
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python  14385 root    3u  IPv4  23792      0t0  TCP *:9425 (LISTEN)
python  14385 root    6u  IPv4  23859      0t0  TCP WEB:9425->10.0.0.1:62165 (ESTABLISHED)
python  14385 root    8u  IPv4  23863      0t0  TCP WEB:9425->10.0.0.1:62168 (ESTABLISHED)
python  14385 root    9u  IPv4  23873      0t0  TCP WEB:9425->10.0.0.1:62179 (ESTABLISHED)
python  14385 root   10u  IPv4  23875      0t0  TCP WEB:9425->10.0.0.1:62180 (ESTABLISHED)
[root@MASTER ~]# 
#在web打开下面网站
http://10.0.0.3:9425/mfs.cgi


下面是master的端口图解

master《=====》backup:9419       也就是master和backup之间通信用9419端口通信
master《=====》chunk:9420   也就是master和data之间通信用9420端口
master sever module:listen on:9421 也就是提供服务给client的端口
master web port:9425也就是master的web管理端口

   

###backup元数据日志服务器部署

MFS主服务器的备份服务器,也称为backup server或者元数据日志服务器(Metalogger server)。这里我统一称为 backup server,即备份服务器。

用来安装backup server的服务器,性能不应该低于master,一旦主服务器master宕机,我们只要导入备份信息changelogs到元数据文件,备份服务器可直接替换故障的master继续提供服务


安装backup server和master安装都一样,只是使用的配置文件不一样。用不一样的配置文件区分不同的服务器


安装如下

cd /home/lvnian/tools
groupadd mfs
useradd -g mfs mfs -s /sbin/nologin 
rz -y
yum install zlib-devel -y
#yum install fuse* -y              #如果不作为mfs的客户端,可以不用这个参数,只是mfs客户端需要fuse模块,其他的都不需要
tar xf mfs-1.6.27-1.tar.gz 
cd mfs-1.6.27
./configure --prefix=/application/mfs-1.6.27  --with-default-user=mfs \
--with-default-group=mfs 
make && make install
ln -s /application/mfs-1.6.27 /application/mfs
ll /application/

###启用mfsmetalogger的配置文件

cd /application/mfs/etc/mfs
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
===============================================
[root@BCAKUP mfs-1.6.27]# cd /application/mfs/etc/mfs
[root@BCAKUP mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
[root@BCAKUP mfs]# ll
total 28
-rw-r--r--. 1 root root  572 Nov 11 10:24 mfschunkserver.cfg.dist
-rw-r--r--. 1 root root 4060 Nov 11 10:24 mfsexports.cfg.dist
-rw-r--r--. 1 root root   57 Nov 11 10:24 mfshdd.cfg.dist
-rw-r--r--. 1 root root 1047 Nov 11 10:24 mfsmaster.cfg.dist
-rw-r--r--. 1 root root  449 Nov 11 11:43 mfsmetalogger.cfg
-rw-r--r--. 1 root root  449 Nov 11 10:24 mfsmetalogger.cfg.dist
-rw-r--r--. 1 root root 1123 Nov 11 10:24 mfstopology.cfg.dist
[root@BCAKUP mfs]# 
===============================================



####修改mster_host 对于的主机名,如果准备用域名,可以改用域名,也可以是IP。对着的一个位置

=====# MASTER_HOST = mfsmaster
grep "MASTER_HOST" /application/mfs/etc/mfs/mfsmetalogger.cfg
sed -i 's/# MASTER_HOST = mfsmaster/MASTER_HOST = mfsmaster.etiantian.org/g' /application/mfs/etc/mfs/mfsmetalogger.cfg
grep "MASTER_HOST" /application/mfs/etc/mfs/mfsmetalogger.cfg
===============================================
[root@BCAKUP mfs]# grep "MASTER_HOST" /application/mfs/etc/mfs/mfsmetalogger.cfg
# MASTER_HOST = mfsmaster
[root@BCAKUP mfs]# sed -i 's/# MASTER_HOST = mfsmaster/MASTER_HOST = mfsmaster.etiantian.org/g' /application/mfs/etc/mfs/mfsmetalogger.cfg
[root@BCAKUP mfs]# grep "MASTER_HOST" /application/mfs/etc/mfs/mfsmetalogger.cfg
MASTER_HOST = mfsmaster.etiantian.org
[root@BCAKUP mfs]# 
#主要这个mfsmaster.etiantian.org和对于的IP要写到/etc/hosts里面,
===============================================


#测试主备是否相同

[root@BCAKUP mfs]# telnet mfsmaster.etiantian.org 9419
Trying 10.0.0.100...
Connected to mfsmaster.etiantian.org.
Escape character is '^]'.
###测试可以和9419通讯,注意hosts文件

##启动mfsmetalogger

/application/mfs/sbin/mfsmetalogger start
ps -ef|grep mfs
netstat -an|grep -i 9419
===============================================
[root@BCAKUP mfs]# /application/mfs/sbin/mfsmetalogger start
working directory: /application/mfs-1.6.27/var/mfs
lockfile created and locked
initializing mfsmetalogger modules ...
mfsmetalogger daemon initialized properly
[root@BCAKUP mfs]# ps -ef|grep mfs
mfs       8307     1  0 11:59 ?        00:00:00 /application/mfs/sbin/mfsmetalogger start
root      8309  1697  0 11:59 pts/0    00:00:00 grep mfs
[root@BCAKUP mfs]# netstat -an|grep -i 9419
tcp        0      0 10.0.0.4:47128              10.0.0.100:9419             ESTABLISHED 
##这个端口是master的端口,backup需要和master保持这个长链接
[root@BCAKUP mfs]# 
===============================================
如果 netstat -an|grep -i 9419 没有,注意防火墙问题


##日志文件路径

[root@BCAKUP mfs]#  ll /application/mfs/var/mfs
total 12
-rw-r-----. 1 mfs  mfs    0 Nov 11 11:59 changelog_ml_back.0.mfs
-rw-r-----. 1 mfs  mfs    0 Nov 11 11:59 changelog_ml_back.1.mfs
-rw-r--r--. 1 root root   8 Nov 11 10:24 metadata.mfs.empty
-rw-r-----. 1 mfs  mfs  255 Nov 11 11:59 metadata_ml.mfs.back
-rw-r-----. 1 mfs  mfs   10 Nov 11 12:01 sessions_ml.mfs
[root@BCAKUP mfs]#

到时候如果需要恢复数据的时候,我们需要用到的是metadat* 和changelog*这两种文件


###/mfsmetalogger关闭

/application/mfs/sbin/mfsmetalogger stop
/application/mfs/sbin/mfsmetalogger -s
===============================================
[root@BCAKUP mfs]# /application/mfs/sbin/mfsmetalogger -s
sending SIGTERM to lock owner (pid:8383)
waiting for termination ... terminated
[root@BCAKUP mfs]# ps -ef|grep mfs                       
root      8388  1697  0 12:04 pts/0    00:00:00 grep mfs
[root@BCAKUP mfs]#
===============================================


#安全定制master server是非常必要的,一定不要用kill -9 mongodb 。可以使用 mfsmaster -s 

或者 mfsmaster stop来安全停止master进程,当然一旦是用来kill 也有解决的办法,那就是通过mfsmaster修复


###配置环境变量

echo "export PATH=$PATH:/application/mfs/sbin:/application/mfs/bin" >>/etc/profile
. /etc/profile
echo $PATH
===============================================
[root@BCAKUP mfs]# echo "export PATH=$PATH:/application/mfs/sbin:/application/mfs/bin" >>/etc/profile
[root@BCAKUP mfs]# . /etc/profile
[root@BCAKUP mfs]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/application/mfs/sbin:/application/mfs/bin
[root@BCAKUP mfs]# 
===============================================


###加入开机自启动

echo "#starup metalogger by lvnian 20150909 " >>/etc/rc.local
echo "/application/mfs/sbin/mfsmetalogger start" >>/etc/rc.local
tail -2 /etc/rc.local
===============================================
[root@BCAKUP mfs]# echo "#starup metalogger by lvnian 20150909 " >>/etc/rc.local
[root@BCAKUP mfs]# tail -2 /etc/rc.local
tail: inotify cannot be used, reverting to polling
#starup metalogger by lvnian 20150909 
/application/mfs/sbin/mfsmetalogger start
[root@BCAKUP mfs]# 
===============================================


### 数据存储服务器data servers (chunkservers)

 负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输.

 三台data服务器都要才用双磁盘,也就是多加一个2G的磁盘

 

###安装数据存储服务器

cd /home/lvnian/tools
groupadd mfs
useradd -g mfs mfs -s /sbin/nologin 
rz -y
yum install zlib-devel -y        
tar xf mfs-1.6.27-1.tar.gz 
cd mfs-1.6.27
./configure --prefix=/application/mfs-1.6.27  --with-default-user=mfs \
--with-default-group=mfs 
make && make install
ln -s /application/mfs-1.6.27 /application/mfs
ll /application/
===============================================

##三个服务器都要多挂载一个磁盘

fdisk -l 
fdisk /dev/sdb
....

###结果

[root@DATA1 ~]# fdisk -l
Disk /dev/sda: 12.9 GB, 12884 901888 bytes
255 heads, 63 sectors/track, 1566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00027ffc
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26         157     1048576   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             157        1567    11328512   83  Linux
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x241ce77a
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         130     1044193+  83  Linux
/dev/sdb2             131         261     1052257+  83  Linux
[root@DATA1 ~]# 
###
挂载/dev/sdb1
mkdir -p /mfsdata
mount /dev/sdb1 /mfsdata
mkfs -t ext4 /dev/sdb1
mount /dev/sdb1 /mfsdata
df


###设置开机自动挂载

echo "/dev/sdb1               /mfsdata                ext4    defaults        0 0" >>/etc/fstab
tail -2 /etc/fstab

测试自动挂载是否成功,在设置挂载前,必须格式化/dev/sdb1 ; mkfs -t ext4 /dev/sdb1



###先卸载/mfsdata,再用mount -a 自动挂载,如果成功就行了

umount /mfsdata
df
mount -a
df

###修改mfschunkserver.cfg配置文件

cd /application/mfs/etc/mfs/
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cat  mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
cat  mfshdd.cfg
 ===============================================
grep "MASTER_HOST" /application/mfs/etc/mfs/mfschunkserver.cfg
sed -i 's/# MASTER_HOST = mfsmaster/MASTER_HOST = mfsmaster.etiantian.org/g' /application/mfs/etc/mfs/mfschunkserver.cfg
grep "MASTER_HOST" /application/mfs/etc/mfs/mfschunkserver.cfg
echo "/mfsdata" >>/application/mfs/etc/mfs/mfshdd.cfg
cat  mfshdd.cfg
===============================================
[root@DATA1 mfs]#  grep "MASTER_HOST" /application/mfs/etc/mfs/mfschunkserver.cfg
# MASTER_HOST = mfsmaster
[root@DATA1 mfs]#  sed -i 's/# MASTER_HOST = mfsmaster/MASTER_HOST = mfsmaster.etiantian.org/g' /application/mfs/etc/mfs/mfschunkserver.cfg
[root@DATA1 ~]# grep "MASTER_HOST" /application/mfs/etc/mfs/mfschunkserver.cfg
MASTER_HOST = mfsmaster.etiantian.org           ##如果让它还是解析到10.0.0.3,而不是vip,可以不改
[root@DATA1 ~]#
[root@DATA1 mfs]#  echo "/mfsdata" >>/application/mfs/etc/mfs/mfshdd.cfg
[root@DATA1 mfs]#  cat  mfshdd.cfg
# mount points of HDD drives
#
#/mnt/hd1
#/mnt/hd2
#etc.
/mfsdata           ##本地分区的挂载点。真正存放数据的地方,如果有多个,可以写多行
[root@DATA1 mfs]# 
 ===============================================



 #授权/mfsdata

 

chown -R mfs.mfs /mfsdata

 

 ##启动/mfschunkserver

/application/mfs/sbin/mfschunkserver start
ps -ef|grep mfs
netstat -lnt |grep 94
netstat -an|grep -i est
 ===============================================
[root@DATA1 mfs]#  /application/mfs/sbin/mfschunkserver start
working directory: /application/mfs-1.6.27/var/mfs
lockfile created and locked
initializing mfschunkserver modules ...
hdd space manager: path to scan: /mfsdata/
hdd space manager: start background hdd scanning (searching for available chunks)
main server module: listen on *:9422
no charts data file - initializing empty charts
mfschunkserver daemon initialized properly
[root@DATA1 mfs]# netstat -lnt |grep 94
tcp        0      0 0.0.0.0:9422                0.0.0.0:*                   LISTEN      
[root@DATA1 mfs]#  ps -ef|grep mfs
mfs       1458     1  0 15:21 ?        00:00:00 /application/mfs/sbin/mfschunkserver start
root      1499  13
[root@DATA1 ~]# netstat -an|grep -i est
Active Internet connections (servers and established)
tcp        0      0 10.0.0.5:53991              10.0.0.3:9420               ESTABLISHED 
tcp        0     96 10.0.0.5:22                 10.0.0.1:63675              ESTABLISHED 
Active UNIX domain sockets (servers and established)
[root@DATA1 ~]# 
 ===============================================
##启动之后,看/mfsdata目录的内容
[root@DATA1 ~]# ls /mfsdata/
00  09  12  1B  24  2D  36  3F  48  51  5A  63  6C  75  7E  87  90  99  A2  AB  B4  BD  C6  CF  D8  E1  EA  F3  FC
01  0A  13  1C  25  2E  37  40  49  52  5B  64  6D  76  7F  88  91  9A  A3  AC  B5  BE  C7  D0  D9  E2  EB  F4  FD
02  0B  14  1D  26  2F  38  41  4A  53  5C  65  6E  77  80  89  92  9B  A4  AD  B6  BF  C8  D1  DA  E3  EC  F5  FE
03  0C  15  1E  27  30  39  42  4B  54  5D  66  6F  78  81  8A  93  9C  A5  AE  B7  C0  C9  D2  DB  E4  ED  F6  FF
04  0D  16  1F  28  31  3A  43  4C  55  5E  67  70  79  82  8B  94  9D  A6  AF  B8  C1  CA  D3  DC  E5  EE  F7  lost+found
05  0E  17  20  29  32  3B  44  4D  56  5F  68  71  7A  83  8C  95  9E  A7  B0  B9  C2  CB  D4  DD  E6  EF  F8
06  0F  18  21  2A  33  3C  45  4E  57  60  69  72  7B  84  8D  96  9F  A8  B1  BA  C3  CC  D5  DE  E7  F0  F9
07  10  19  22  2B  34  3D  46  4F  58  61  6A  73  7C  85  8E  97  A0  A9  B2  BB  C4  CD  D6  DF  E8  F1  FA
08  11  1A  23  2C  35  3E  47  50  59  62  6B  74  7D  86  8F  98  A1  AA  B3  BC  C5  CE  D7  E0  E9  F2  FB
[root@DATA1 ~]#
 ===============================================

####/mfsmetalogger关闭

/application/mfs/sbin/mfschunkserver stop
/application/mfs/sbin/mfschunkserver �Cs

##配置环境变量

echo "export PATH=$PATH:/application/mfs/sbin:/application/mfs/bin" >>/etc/rc.local
. /etc/profile
echo $PATH

##加入开机自启动

echo "#starup metalogger by lvnian 20150909 " >>/etc/rc.local
echo "/application/mfs/sbin/mfschunkserver start" >>/etc/rc.local
tail -2 /etc/rc.local

 ##打开下面网页

 http://10.0.0.3:9425/mfs.cgi?sections=CS
 
 [root@DATA2 mfsdata]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        11G  2.9G  7.3G  29% /
tmpfs           116M  4.0K  116M   1% /dev/shm
/dev/sda1       194M   29M  155M  16% /boot
/dev/sdb1      1004M   19M  935M   2% /mfsdata
[root@DATA2 mfsdata]#

为什么df -h的大小和master管理界面的大小有区别:274-19=155M

因为master向data服务器申请空间是按照最小256M申请的,低于256M就不申请空间了


到这来dataserver配置好了


#################################################################################

#####按照client server

由于MFS文件系统客户端的挂载依赖于fuse工具,所以要先安装工具。如果所在的系统已经安装了fuse,则可以跳过这个步骤,高版本的linux内核已经支持了


mfs的客户端,一般是web等需要存储功能的应用服务器



###安装,可以yum安装,也可以编译安装,下面采用yum安装的方案

yum install zlib* -y
yum install fuse* -y    
###查看是否存在fuse模块。没有的再安装完fuse后挂载这个模块
lsmod |grep fuse
modprobe fuse
lsmod |grep fuse
cd /home/lvnian/tools
groupadd mfs
useradd -g mfs mfs -s /sbin/nologin 
rz -y
tar xf mfs-1.6.27-1.tar.gz 
cd mfs-1.6.27
./configure --prefix=/application/mfs-1.6.27  --with-default-user=mfs \
--with-default-group=mfs 
make && make install
ln -s /application/mfs-1.6.27 /application/mfs
ll /application/
 ===============================================
###编译如果不确定默认编译是否存在--enable-mfsmount这个参数,可以加上这个参数,如果默认编译加了,就不需要加了
 ===============================================
./configure --prefix=/application/mfs-1.6.27  --with-default-user=mfs \
--with-default-group=mfs --enable-mfsmount
 ===============================================
###
#如果存在下面参数,证明客户端已经安装好了
 ===============================================
[root@CLIENT mfs-1.6.27]# ll /application/mfs/bin/
total 704
lrwxrwxrwx. 1 root root      8 Sep  9 16:04 mfsappendchunks -> mfstools
lrwxrwxrwx. 1 root root      8 Sep  9 16:04 mfscheckfile -> mfstools
lrwxrwxrwx. 1 root root      8 Sep  9 16:04 mfsdeleattr -> mfstools
lrwxrwxrwx. 1 root root      8 Sep  9 16:04 mfsdirinfo -> mfstools
lrwxrwxrwx. 1 root root      8 Sep  9 16:04 mfsfileinfo -> mfstools
lrwxrwxrwx. 1 root root      8 Sep  9 16:04 mfsfilerepair -> mfstools
lrwxrwxrwx. 1 root root      8 Sep  9 16:04 mfsgeteattr -> mfstools
lrwxrwxrwx. 1 root root      8 Sep  9 16:04 mfsgetgoal -> mfstools
lrwxrwxrwx. 1 root root      8 Sep  9 16:04 mfsgettrashtime -> mfstools
lrwxrwxrwx. 1 root root      8 Sep  9 16:04 mfsmakesnapshot -> mfstools
-rwxr-xr-x. 1 root root 510650 Sep  9 16:04 mfsmount
lrwxrwxrwx. 1 root root      8 Sep  9 16:04 mfsrgetgoal -> mfstools
lrwxrwxrwx. 1 root root      8 Sep  9 16:04 mfsrgettrashtime -> mfstools
lrwxrwxrwx. 1 root root      8 Sep  9 16:04 mfsrsetgoal -> mfstools
lrwxrwxrwx. 1 root root      8 Sep  9 16:04 mfsrsettrashtime -> mfstools
lrwxrwxrwx. 1 root root      8 Sep  9 16:04 mfsseteattr -> mfstools
lrwxrwxrwx. 1 root root      8 Sep  9 16:04 mfssetgoal -> mfstools
lrwxrwxrwx. 1 root root      8 Sep  9 16:04 mfssettrashtime -> mfstools
-rwxr-xr-x. 1 root root    137 Sep  9 16:04 mfssnapshot
-rwxr-xr-x. 1 root root 204078 Sep  9 16:04 mfstools
[root@CLIENT mfs-1.6.27]# 
 ===============================================
最重要的命令时 mfsmount 这个参数

##配置环境变量

 ===============================================
echo "export PATH=$PATH:/application/mfs/sbin:/application/mfs/bin" >>/etc/rc.local
. /etc/rc.local
echo $PATH


###创建数据目录挂载点

mkdir -p /mnt/mfs
chown -R mfs.mfs /mnt/mfs
ll -d /mnt/mfs
ll /mnt/mfs


##设置fuse开机自动挂载

echo "modprobe fuse" >>/etc/rc.local
echo "modprobe fuse" >>/etc/modprobe.d/fuse
cat /etc/modprobe.d/fuse


#客户端挂载mfs

/application/mfs/bin/mfsmount /mnt/mfs -H mfsmaster.etiantian.org -O mfs password 111111
/application/mfs/bin/mfsmount /mnt/mfs -H mfsmaster.etiantian.org -p  # 交互式输入密码
###############
[root@CLIENT ~]# /application/mfs/bin/mfsmount /mnt/mfs -H mfsmaster.etiantian.org
mfsmaster register error: Password is needed
[root@CLIENT ~]#
[root@CLIENT ~]# /application/mfs/bin/mfsmount /mnt/mfs -H mfsmaster.etiantian.org -p
MFS Password:             《================密码是:111111
mfsmaster accepted connection with parameters: read-write,restricted_ip,map_all ; root mapped to mfs:501 ; users mapped to root:root
[root@CLIENT ~]# df
Filesystem                   1K-blocks    Used Available Use% Mounted on
/dev/sda3                     11150604 1392708   9191472  14% /
tmpfs                           118092       0    118092   0% /dev/shm
/dev/sda1                       198337   29670    158427  16% /boot
mfsmaster.etiantian.org:9421   2084160       0   2084160   0% /mnt/mfs
[root@CLIENT ~]#
[root@CLIENT mfs-1.6.27]# mfsmount -h
usage: mfsmount mountpoint [options]
general options:
    -o opt,[opt...]         mount options
    -h   --help             print help
    -V   --version          print version
MFS options:
    -c CFGFILE                  equivalent to '-o mfscfgfile=CFGFILE'
    -m   --meta                 equivalent to '-o mfsmeta'
    -H HOST                     equivalent to '-o mfsmaster=HOST'
    -P PORT                     equivalent to '-o mfsport=PORT'
    -B IP                       equivalent to '-o mfsbind=IP'
    -S PATH                     equivalent to '-o mfssubfolder=PATH'
    -p   --password             similar to '-o mfspassword=PASSWORD', but show prompt and ask user for password
    -n   --nostdopts            do not add standard MFS mount options: '-o allow_other,default_permissions,fsname=MFS'
    -o mfscfgfile=CFGFILE       load some mount options from external file (if not specified then use default file: /application/mfs-1.6.27/etc/mfs/mfsmount.cfg or /application/mfs-1.6.27/etc/mfsmount.cfg)
    -o mfsdebug                 print some debugging information
    -o mfsmeta                  mount meta filesystem (trash etc.)
    -o mfsdelayedinit           connection with master is done in background - with this option mount can be run without network (good for being run from fstab / init scripts etc.)
    -o mfsmkdircopysgid=N       sgid bit should be copied during mkdir operation (default: 1)
    -o mfssugidclearmode=SMODE  set sugid clear mode (see below ; default: EXT)
    -o mfscachemode=CMODE       set cache mode (see below ; default: AUTO)
    -o mfscachefiles            (deprecated) equivalent to '-o mfscachemode=YES'
    -o mfsattrcacheto=SEC       set attributes cache timeout in seconds (default: 1.0)
    -o mfsentrycacheto=SEC      set file entry cache timeout in seconds (default: 0.0)
    -o mfsdirentrycacheto=SEC   set directory entry cache timeout in seconds (default: 1.0)
    -o mfsrlimitnofile=N        on startup mfsmount tries to change number of descriptors it can simultaneously open (default: 100000)
    -o mfsnice=N                on startup mfsmount tries to change his 'nice' value (default: -19)
    -o mfswritecachesize=N      define size of write cache in MiB (default: 128)
    -o mfsioretries=N           define number of retries before I/O error is returned (default: 30)
    -o mfsmaster=HOST           define mfsmaster location (default: mfsmaster)
    -o mfsport=PORT             define mfsmaster port number (default: 9421)
    -o mfsbind=IP               define source ip address for connections (default: NOT DEFINED - choosen automatically by OS)
    -o mfssubfolder=PATH        define subfolder to mount as root (default: /)
    -o mfspassword=PASSWORD     authenticate to mfsmaster with password
    -o mfsmd5pass=MD5           authenticate to mfsmaster using directly given md5 (only if mfspassword is not defined)
    -o mfsdonotrememberpassword do not remember password in memory - more secure, but when session is lost then new session is created without password
CMODE can be set to:
    NO,NONE or NEVER            never allow files data to be kept in cache (safest but can reduce efficiency)
    YES or ALWAYS               always allow files data to be kept in cache (dangerous)
    AUTO                        file cache is managed by mfsmaster automatically (should be very safe and efficient)
SMODE can be set to:
    NEVER                       MFS will not change suid and sgid bit on chown
    ALWAYS                      clear suid and sgid on every chown - safest operation
    OSX                         standard behavior in OS X and Solaris (chown made by unprivileged user clear suid and sgid)
    BSD                         standard behavior in *BSD systems (like in OSX, but only when something is really changed)
    EXT                         standard behavior in most file systems on Linux (directories not changed, others: suid cleared always, sgid only when group exec bit is set)
    XFS                         standard behavior in XFS on Linux (like EXT but directories are changed by unprivileged users)
SMODE extra info:
    btrfs,ext2,ext3,ext4,hfs[+],jfs,ntfs and reiserfs on Linux work as 'EXT'.
    Only xfs on Linux works a little different. Beware that there is a strange
    operation - chown(-1,-1) which is usually converted by a kernel into something
    like 'chmod ug-s', and therefore can't be controlled by MFS as 'chown'
FUSE options:
    -d   -o debug          enable debug output (implies -f)
    -f                     foreground operation
    -s                     disable multi-threaded operation
    -o allow_other         allow access to other users
    -o allow_root          allow access to root
    -o nonempty            allow mounts over non-empty file/dir
    -o default_permissions enable permission checking by kernel
    -o fsname=NAME         set filesystem name
    -o subtype=NAME        set filesystem type
    -o large_read          issue large read requests (2.4 only)
    -o max_read=N          set maximum size of read requests
[root@CLIENT mfs-1.6.27]# 
============================================================
测试
进入client刚刚挂载的/mnt/mfs 目录创建文件,添加内容
============================================================
[root@CLIENT bin]# cd /mnt/mfs/
[root@CLIENT mfs]# ls
[root@CLIENT mfs]# echo 12121221313241 >lvnian.txt
[root@CLIENT mfs]# for n in `seq 10 `;do cp /bin/cat $n ;done
[root@CLIENT mfs]# ls
1  10  2  3  4  5  6  7  8  9  lvnian.txt
[root@CLIENT mfs]# 
============================================================
[root@CLIENT mfs]
分别看maste端和backup的changelog.0.mfs 在添加内容前后的变化
cat  /application/mfs/var/mfs/changelog.0.mfs 
cat /application/mfs/var/mfs/changelog_ml.0.mfs 
同时分别看三个data的下面内容在添加内容前后的变化
find /mfsdata/ -type f

####这样就完成部

日后用的时候就器多个客户端,都挂载好,需要写数据,读数据就往这里读和写就可以了






你可能感兴趣的:(mfs分布式文件系统)