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.5mfs数据存放服务器

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

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

mfs clienteth010.0.0.8mfs客户端服务器

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

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

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

环境准备:

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

------------------------------------------------
到这来部署前的准备工作才算完成

###开始部署

 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====================================================
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目录结构说明:

etc ##这是mfs的配置文件目录

sbin ##这是mfs的命令路径,如果你还有bin目录,证明你激活了mfs 客户端的功能。

share ##mfs的帮助文件目录

var ##mfs数据及日志目录,如:metadata的数据

提示:   etc和var需要备份
 ##############################################################################

配置主服务器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 暂时不需要改

###配置 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关闭

/application/mfs/sbin/mfsmaster stop
/application/mfs/sbin/mfsmaster –s

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

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

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

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

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

#不需要配置,直接启动

/application/mfs/sbin/mfscgiserv start
lsof -i :9425
#在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安装都一样,只是使用的配置文件不一样。用不一样的配置文件区分不同的服务器

###启用mfsmetalogger的配置文件

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

cd /application/mfs/etc/mfs
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

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

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

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

##启动mfsmetalogger

/application/mfs/sbin/mfsmetalogger start
ps -ef|grep mfs
netstat -an|grep -i 9419
##这个端口是master的端口,backup需要和master保持这个长链接

===============================================
如果 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


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

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

###/mfsmetalogger关闭

/application/mfs/sbin/mfsmetalogger stop
/application/mfs/sbin/mfsmetalogger -s
===============================================

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

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

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

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

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

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

挂载/dev/sdb1
mkdir -p /mfsdata
mount /dev/sdb1 /mfsdata
mkfs -t ext4 /dev/sdb1
mount /dev/sdb1 /mfsdata
df

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

===============================================
###修改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
===============================================
sed -i 's/# MASTER_HOST = mfsmaster/MASTER_HOST = mfsmaster.etiantian.org/g' /application/mfs/etc/mfs/mfschunkserver.cfg
echo "/mfsdata" >>/application/mfs/etc/mfs/mfshdd.cfg
MASTER_HOST = mfsmaster.etiantian.org ##如果让它还是解析到10.0.0.3,而不是vip,可以不改
/mfsdata ##本地分区的挂载点。真正存放数据的地方,如果有多个,可以写多行
===============================================

#授权/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
===============================================
##启动之后,看/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
===============================================

####/mfsmetalogger关闭

/application/mfs/sbin/mfschunkserver stop
/application/mfs/sbin/mfschunkserver –s

##打开下面网页

http://10.0.0.3:9425/mfs.cgi?sections=CS
[root@DATA2 mfsdata]# df -h
为什么df -h的大小和master管理界面的大小有区别:274-19=155M

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

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

配置client server

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

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

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

###查看是否存在fuse模块。没有的再安装完fuse后挂载这个模块
lsmod |grep fuse
modprobe fuse
lsmod |grep fuse
###编译如果不确定默认编译是否存在--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
===============================================
最重要的命令时 mfsmount 这个参数

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

mkdir -p /mnt/mfs
chown -R mfs.mfs /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 # 交互式输入密码

============================================================
测试
进入client刚刚挂载的/mnt/mfs 目录创建文件,添加内容
============================================================
[root@CLIENT bin]# cd /mnt/mfs/
[root@CLIENT mfs]# echo 12121221313241 >lvnian.txt
[root@CLIENT mfs]# for n in `seq 10 `;do cp /bin/cat $n ;done
============================================================
分别看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(三)的更多相关文章

  1. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  2. 从零开始学习jQuery (三) 管理jQuery包装集

    本系列文章导航 从零开始学习jQuery (三) 管理jQuery包装集 一.摘要 在使用jQuery选择器获取到jQuery包装集后, 我们需要对其进行操作. 本章首先讲解如何动态的创建元素, 接着 ...

  3. 前端学习 第三弹: JavaScript语言的特性与发展

    前端学习 第三弹: JavaScript语言的特性与发展 javascript的缺点 1.没有命名空间,没有多文件的规范,同名函数相互覆盖 导致js的模块化很差 2.标准库很小 3.null和unde ...

  4. Android Animation学习(三) ApiDemos解析:XML动画文件的使用

    Android Animation学习(三) ApiDemos解析:XML动画文件的使用 可以用XML文件来定义Animation. 文件必须有一个唯一的根节点: <set>, <o ...

  5. 三、Android学习第三天——Activity的布局初步介绍(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 三.Android学习第三天——Activity的布局初步介绍 今天总结下 ...

  6. JavaWeb学习总结(三)——Tomcat服务器学习和使用(二) 包含https 非对称秘钥 NB

    JavaWeb学习总结(三)--Tomcat服务器学习和使用(二) 一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命 ...

  7. MyEclipse Spring 学习总结三 SpringMVC

    MyEclipse Spring 学习总结三 SpringMVC 一.SpringMVC原理 1.Springmvc 框架介绍 1)Spring 框架停工了构建Web应用程序的全功能MVC模块.Spr ...

  8. Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar

    web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...

  9. MyBatis学习系列三——结合Spring

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...

  10. MyBatis学习 之 三、动态SQL语句

    目录(?)[-] 三动态SQL语句 selectKey 标签 if标签 if where 的条件判断 if set 的更新语句 if trim代替whereset标签 trim代替set choose ...

随机推荐

  1. springboot页面国际化

    引入依赖pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...

  2. UML 包图 详细介绍

      6.1 包图的概念 包是一种常规用途的组合机制.UML中的一个包直接对应于Java中的一个包,C#中的命名空间.在Java中,一个包可能含有其他包.类或者同时含有这两者.进行建模时,通常使用逻辑性 ...

  3. Oracle之PL/SQL Developer的下载与安装

    PL/SQL是什么? PL/SQL Developer是一个集成开发环境(以下简称PL/SQL),专门开发面向Oracle数据库的应用.PL/SQL也是一种程序语言,叫做过程化SQL语言(Proced ...

  4. linux设置 自定义脚本开机启动

    本文原创,转载请标明出处 https://blog.csdn.net/qq2531246791/article/details/89036084 一. 赋予可执行权限 chmod +x /etc/rc ...

  5. 在shell脚本里使用sftp批量传送文件

    转至:https://blog.csdn.net/istronger/article/details/52141530?utm_medium=distribute.pc_relevant.none-t ...

  6. iredmail邮件系统离线搭建手册-从零到无

    --时间:2020年10月20日 --作者:飞翔的小胖猪 概述 前言 iRedMail 是一个基于 Linux/BSD 系统的零成本.功能完备.成熟的邮件服务器解决方案.iRedMail 是一个开源. ...

  7. 探究Spring原理

    探究Spring原理 探究IoC原理 首先我们大致了解一下ApplicationContext的加载流程: 我们可以看到,整个过程极为复杂,一句话肯定是无法解释的,所以我们就从ApplicationC ...

  8. 5.注入内部Bean

    我们将定义在 <bean> 元素的 <property> 或 <constructor-arg> 元素内部的 Bean,称为"内部 Bean". ...

  9. VSCode 安装Vue 插件 - vetur

    想要编辑器识别vue文件需要安装vue插件,在VSCode上好用的是vetur 如下图:(如果没有安装就会出现安装按钮,点击进行安装) 安装完成之后,重启VSCode,就能识别vue文件了,方便我们编 ...

  10. git命令合集

    ##快捷键 ##一. 快捷键 1. 清屏快捷键 control+L 2. vim快捷操作 * control+b 往上翻页 * Control+f 往下翻页 * shift+g 回到末尾 3. oh ...