官网: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
####这样就完成部
日后用的时候就器多个客户端,都挂载好,需要写数据,读数据就往这里读和写就可以了