一、MooseFS简介

1、介绍

MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器单独磁盘或分区上,确保一份数据有多个备份副本。对于访问的客户端或者用户来说,整个分布式网络文件系统集群看起来就像一个资源一样。

2、特性

从其对文件操作的情况看,MooseFS表现与其他类Unix文件系统一致。

支持的通用文件系统特性:

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

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

支持特殊的文件,如:块设备,字符设备,管道和套接字,链接文件(符号链接和硬链接)

支持基于IP地址和密码的方式访问文件系统

独有特性:

  • 高可靠性

  • 每一份数据可以设置多个副本(多份数据),并可以存储在不同的主机上

  • 高可扩展性

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

  • 高可容错性

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

  • 高数据一致性

  • 即便文件被写入/访问时,我们依然可以完成对文件的一致性快照

3、优缺点

优点:

1)由于MFS是基于GPL发布的,因此完全免费,并且开发和社区都很活跃,资料也非常丰富

2)轻量、易部署、易配置、易维护

3)通用文件系统,不需要修改上层应用就可以使用(那些需要专门 API 的DFS确实有点麻烦)
       4)扩容成本低、支持在线扩容,不影响业务,体系架构可伸缩性极强(官方的case可以扩到70台了!)
       5)体系架构高可用,所有组件无单点故障
       6)文件对象高可用,可设置任意的文件冗余程度(提供比 Raid 10 更高的冗余级别)

7)提供系统负载,将数据读写分配到所有的服务器上,加速读写性能

8)提供诸多高级特性,比如类似Windows的回收站功能、类似JAVA语言的GC(垃圾回收、快照功能等)

9、MooseFS 是 Google Filesystem 的一个 c 实现

10、自带 Web Gui 的监控接口

11、提高随机读或写效率和海量小文件的读写效率(有待进一步证明)

4、应用场景

谈及MooseFS的应用场景,其实就是去谈分布式文件系统的应用场景。

1)大规模高并发的数据存储及访问(小文件、大文件),

2)大规模的数据处理,如日志分析

5、MFS的组件

Master:(元数据服务器)

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

Metalogger:(元数据日志服务器)

负责备份Master服务器的changelog。文件类型为 changelog.*.mfs ,以便在Master出问题时接替其工作

Chunk:(数据存储服务器)

负责连接Master,听从Master调度,提供存储空间,并为客户端提供数据传输

Client:(客户端挂载)

通过FUSE内核接口挂载远程管理服务器(master)上所管理的数据存储服务器,使用起来和本地文件系统一样

MFS工作图解:

3、工作原理

  MooseFS是一个文件系统,因此其最主要的工作就是文件的读写流程,即 MooseFS的主要的两大工作过程。

MFS的读文件流程:

图中 Master Server用三角形表示,Chunk Server用圆形表示,Client 用方形表示。

整个读过程有以下四个步骤:

1)首先client客户端访问主服务器master,获取文件实体的位置等相关信息

2)主服务器master查询缓存记录,把文件实体的位置等相关信息发给client客户端

3)Client客户端根据拿到的信息去访问对应的存储实体数据的服务器(data servers或者 chunk servers)

4)存储实体数据的服务器(data servers或者 chunk servers)把对应的数据返回给Client客户端

从上图,我们还可以看出,当多个MFS客户端读数据的时候,master服务器充当路由为这些客户端分发指路的作用,而数据的返回时由不同的数据服务器直接返回给请求的客户端,这样的模式可以极大的减轻主服务器的系统及网络瓶颈,增加了整个系统的吞吐,很像LVS的DR模式的负载均衡的分发和数据传输的情况。

MFS写文件流程:

整个写过程要分为下面八个步骤:

1)Client客户端访问主服务器master,请求写入数据

2)主服务器master查询缓存记录,如果是新文件,则会联系后面的数据服务器创建对应的chunk对象准备存放文件。

3)数据服务器返回创建对应的chunk对象成功给主服务器

4)主服务器master把文件实体的位置等相关信息发给client客户端。

5)Client客户端访问对应的数据服务器写数据

6)数据服务器之间进行数据同步,互相确认成功

7)数据服务器返回成功写入信息给Client客户端

8)Client客户端回报给主服务器master写入结束


二、MFS安装配置

官网:https://moosefs.com

1、环境

CentOS6.5 x86_64; 各节点时间同步,

node2  192.168.10.2  master

node3  192.168.10.3  metalogger chunk

node4  192.168.10.4  chunk

node1  192.168.10.1  client

2、配置yum源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
[root@Node2 ~]# ls /etc/pki/rpm-gpg/
RPM-GPG-KEY-CentOS-6        RPM-GPG-KEY-CentOS-Security-6
RPM-GPG-KEY-CentOS-Debug-6  RPM-GPG-KEY-CentOS-Testing-6
[root@Node2 ~]# curl "http://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
105  1796  105  1796    0     0   1190      0  0:00:01  0:00:01 --:--:--  1208
[root@Node2 ~]# ls /etc/pki/rpm-gpg/
RPM-GPG-KEY-CentOS-6        RPM-GPG-KEY-CentOS-Security-6  RPM-GPG-KEY-MooseFS
RPM-GPG-KEY-CentOS-Debug-6  RPM-GPG-KEY-CentOS-Testing-6
[root@Node2 ~]# curl "http://ppa.moosefs.com/MooseFS-2-el6.repo" > /etc/yum.repos.d/MooseFS.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
169   169  169   169    0     0    226      0 --:--:-- --:--:-- --:--:--   235
[root@Node2 ~]# ls /etc/yum.repos.d/
CentOS-Base.repo      CentOS-Debuginfo.repo  CentOS-Vault.repo  MooseFS.repo
CentOS-Base.repo.bak  CentOS-Media.repo      epel-6.repo        Zabbix.repo
[root@Node2 ~]# cat /etc/yum.repos.d/MooseFS.repo 
[MooseFS]
name=MooseFS $releasever - $basearch
baseurl=http://ppa.moosefs.com/moosefs-2/yum/el6
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
enabled=1
 
[root@Node2 ~]# yum list|grep -i moosefs
 
moosefs-cgi.i686                            2.0.89-1.rhsysv              MooseFS
moosefs-cgi.x86_64                          2.0.89-1.rhsysv              MooseFS
moosefs-cgiserv.i686                        2.0.89-1.rhsysv              MooseFS
moosefs-cgiserv.x86_64                      2.0.89-1.rhsysv              MooseFS
moosefs-chunkserver.i686                    2.0.89-1.rhsysv              MooseFS
moosefs-chunkserver.x86_64                  2.0.89-1.rhsysv              MooseFS
moosefs-cli.i686                            2.0.89-1.rhsysv              MooseFS
moosefs-cli.x86_64                          2.0.89-1.rhsysv              MooseFS
moosefs-client.i686                         2.0.89-1.rhsysv              MooseFS
moosefs-client.x86_64                       2.0.89-1.rhsysv              MooseFS
moosefs-master.i686                         2.0.89-1.rhsysv              MooseFS
moosefs-master.x86_64                       2.0.89-1.rhsysv              MooseFS
moosefs-metalogger.i686                     2.0.89-1.rhsysv              MooseFS
moosefs-metalogger.x86_64                   2.0.89-1.rhsysv              MooseFS
moosefs-netdump.i686                        2.0.89-1.rhsysv              MooseFS
moosefs-netdump.x86_64                      2.0.89-1.rhsysv              MooseFS
moosefs-pro-cgi.i686                        2.0.89-1.rhsysv              MooseFS
moosefs-pro-cgi.x86_64                      2.0.89-1.rhsysv              MooseFS
moosefs-pro-cgiserv.i686                    2.0.89-1.rhsysv              MooseFS
moosefs-pro-cgiserv.x86_64                  2.0.89-1.rhsysv              MooseFS
moosefs-pro-chunkserver.i686                2.0.89-1.rhsysv              MooseFS
moosefs-pro-chunkserver.x86_64              2.0.89-1.rhsysv              MooseFS
moosefs-pro-cli.i686                        2.0.89-1.rhsysv              MooseFS
moosefs-pro-cli.x86_64                      2.0.89-1.rhsysv              MooseFS
moosefs-pro-client.i686                     2.0.89-1.rhsysv              MooseFS
moosefs-pro-client.x86_64                   2.0.89-1.rhsysv              MooseFS
moosefs-pro-master.i686                     2.0.89-1.rhsysv              MooseFS
moosefs-pro-master.x86_64                   2.0.89-1.rhsysv              MooseFS
moosefs-pro-metalogger.i686                 2.0.89-1.rhsysv              MooseFS
moosefs-pro-metalogger.x86_64               2.0.89-1.rhsysv              MooseFS
moosefs-pro-netdump.i686                    2.0.89-1.rhsysv              MooseFS
moosefs-pro-netdump.x86_64                  2.0.89-1.rhsysv              MooseFS
moosefs-pro-supervisor.i686                 2.0.89-1.rhsysv              MooseFS
moosefs-pro-supervisor.x86_64               2.0.89-1.rhsysv              MooseFS

3、node2上安装master server,CGI ,CLI

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
[root@Node2 ~]# yum install moosefs-cgi   #master服务
 
[root@Node2 ~]# rpm -ql moosefs-master
/etc/mfs/mfsexports.cfg.dist     #mfs被挂接目录及其权限控制配置文件,
/etc/mfs/mfsmaster.cfg.dist      #主配置文件,
/etc/mfs/mfstopology.cfg.dist    #定义MFS网络拓扑结构的配置文件
/etc/rc.d/init.d/moosefs-master
/usr/sbin/mfsmaster
/usr/sbin/mfsmetadump
/usr/sbin/mfsmetarestore
/usr/share/doc/moosefs-master-2.0.89
/usr/share/doc/moosefs-master-2.0.89/NEWS
/usr/share/doc/moosefs-master-2.0.89/README
/usr/share/man/man5/mfsexports.cfg.5.gz
/usr/share/man/man5/mfsmaster.cfg.5.gz
/usr/share/man/man5/mfstopology.cfg.5.gz
/usr/share/man/man8/mfsmaster.8.gz
/usr/share/man/man8/mfsmetadump.8.gz
/usr/share/man/man8/mfsmetarestore.8.gz
/var/lib/mfs
/var/lib/mfs/metadata.mfs.empty
 
[root@Node2 ~]# cd /etc/mfs/
[root@Node2 mfs]# ls
mfsexports.cfg       mfsmaster.cfg       mfstopology.cfg
mfsexports.cfg.dist  mfsmaster.cfg.dist  mfstopology.cfg.dist
 
[root@Node2 ~]# yum install moosefs-cgiserv moosefs-cgi(被moosefs-cgiserv所依赖) 
          #CGI监视接口 被用户用来查看和分析当前MooseFS状态的web-gui
 
[root@Node2 mfs]# rpm -ql moosefs-cgiserv
/etc/rc.d/init.d/moosefs-cgiserv
/usr/sbin/mfscgiserv
/usr/share/doc/moosefs-cgiserv-2.0.89
/usr/share/doc/moosefs-cgiserv-2.0.89/NEWS
/usr/share/doc/moosefs-cgiserv-2.0.89/README
/usr/share/man/man8/mfscgiserv.8.gz
/var/lib/mfs
 
[root@Node2 mfs]# yum install moosefs-cli #MooseFS命令行接口工具允许你查看MooseFS状态信息
[root@Node2 mfs]# rpm -ql moosefs-cli
/usr/bin/mfscli
/usr/share/doc/moosefs-cli-2.0.89
/usr/share/doc/moosefs-cli-2.0.89/NEWS
/usr/share/doc/moosefs-cli-2.0.89/README
/usr/share/man/man1/mfscli.1.gz

主配置文件/etc/mfs/mfsmaster.cfg详解:

注意:此配置文件是网上找编译安装后生成的,内容不完全一样,注意分辨

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@Node2 mfs]# vi /etc/mfs/mfsmaster.cfg
 
WORKING_USER = mfs         # 运行 master server 的用户
# WORKING_GROUP = mfs        # 运行 master server 的组
# SYSLOG_IDENT = mfsmaster   # 是master server在syslog中的标识,也就是说明这是由master serve产生的
# LOCK_MEMORY = 0            # 是否执行mlockall()以避免mfsmaster 进程溢出(默认为0)
# NICE_LEVEL = -19           # 运行的优先级(如果可以默认是 -19; 注意: 进程必须是用root启动)
# EXPORTS_FILENAME = /usr/local/mfs-1.6.27/etc/mfs/mfsexports.cfg   # 被挂载目录及其权限控制文件的存放路径
# TOPOLOGY_FILENAME = /usr/local/mfs-1.6.27/etc/mfs/mfstopology.cfg # mfstopology.cfg文件的存放路径
# DATA_PATH = /usr/local/mfs-1.6.27/var/mfs # 数据存放路径,此目录下大致有三类文件,changelog,sessions和stats;
# BACK_LOGS = 50             # metadata的改变log文件数目(默认是 50)
# BACK_META_KEEP_PREVIOUS = 1     # metadata的默认保存份数(默认为1)
# REPLICATIONS_DELAY_INIT = 300   # 延迟复制的时间(默认是300s)
# REPLICATIONS_DELAY_DISCONNECT = 3600   # chunkserver断开的复制延迟(默认是3600)
# MATOML_LISTEN_HOST = *          #  metalogger监听的IP地址(默认是*,代表任何IP)
# MATOML_LISTEN_PORT = 9419       # metalogger监听的端口地址(默认是9419)
# MATOML_LOG_PRESERVE_SECONDS = 600
# MATOCS_LISTEN_HOST = *          # 用于chunkserver连接的IP地址(默认是*,代表任何IP)
# MATOCS_LISTEN_PORT = 9420       # 用于chunkserver连接的端口地址(默认是9420)
# MATOCL_LISTEN_HOST = *          # 用于客户端挂接连接的IP地址(默认是*,代表任何IP)
# MATOCL_LISTEN_PORT = 9421       # 用于客户端挂接连接的端口地址(默认是9421)
# CHUNKS_LOOP_MAX_CPS = 100000    # chunks的最大回环频率(默认是:100000秒)
# CHUNKS_LOOP_MIN_TIME = 300      # chunks的最小回环频率(默认是:300秒)
# CHUNKS_SOFT_DEL_LIMIT = 10      # 一个chunkserver中soft最大的可删除数量为10个
# CHUNKS_HARD_DEL_LIMIT = 25      # 一个chuankserver中hard最大的可删除数量为25个
# CHUNKS_WRITE_REP_LIMIT = 2      # 在一个循环里复制到一个chunkserver的最大chunk数目(默认是1)
# CHUNKS_READ_REP_LIMIT = 10      # 在一个循环里从一个chunkserver复制的最大chunk数目(默认是5)
# ACCEPTABLE_DIFFERENCE = 0.1     # 每个chunkserver上空间使用率的最大区别(默认为0.01即1%)
# SESSION_SUSTAIN_TIME = 86400    # 客户端会话超时时间为86400秒,即1天
# REJECT_OLD_CLIENTS = 0       # 弹出低于1.6.0的客户端挂接(0或1,默认是0)

该配置文件默认全部都为注释。mfs官方默认这样规定的,每一个注释的配置都是mfs此项配置的默认值。其实,我们linux中很多配置文件的设计风格都是这样子的,比如sshd_config.如果打算更改这些配置文件中某些项的参数,只需要取消注释,并且更改对应的参数即可。

针对master来讲,mfsmaster.cfg的默认配置无需更改即可投入使用。

配置文件/etc/mfs/mfsexports.cfg:

该配置文件制定了哪些客户端可以远程挂接MFS文件系统,以及授予挂载客户端什么样的访问权限。与NFS相似,NFS要共享一个目录时,我们会使用vim /etc/exports命令,

编写共享给谁,所要共享的目录,共享出去的属性这些内容,而mfsexports.cfg的作用与其类似其书写格式如下:

[ip range] [path] [options]

client		Directory			Property
*                 /                 rw,alldirs,maproot=0
client支持格式:ip、ip/netmask、ip/位数掩码、ip-ip、*
client地址可以指定的几种表现形式:
* 所有的ip 地址
n.n.n.n 单个ip 地址
n.n.n.n/b IP 网络地址/位数掩码
n.n.n.n/m.m.m.m IP 网络地址/子网掩码
f.f.f.f-t.t.t.t IP 段 目录部分需要注意两点:
/ 标识MooseFS 根;
. 表示MFSMETA 文件系统 权限部分:
ro 只读模式共享
rw 读写的方式共享
alldirs 许挂载任何指定的子目录
maproot    映射为root,还是指定的用户    
password    指定客户端密码 # Defaults:
#  readonly,maproot=999:999,mingoal=1,maxgoal=9,mintrashtime=0,maxtrashtime=4294967295

我们配置只有192.168.10.0/24网段的主机可以读写模式访问MFS的整个共享结构资源(/)。在配置文件mfsexports.cfg中写入如下信息即可。

1
192.168.10.0/24                 /       rw,alldirs,maproot=0:0

启动moosefs-master:

在 MooseFS 的架构中,Master Server 是不依附于其它几个组件的,它可以单独启动。但是需要注意,其它组件必须要等 Master Server 起来之后才能启动!切记!!!

在通过上面的简单配置之后,我们就可以启动 Master Server 了!

1
2
3
4
5
6
7
8
[root@Node2 mfs]# service moosefs-master start
正在启动 mfsmaster:                                 [确定]
 
[root@Node2 ~]# ss -ntlp|grep mfs
LISTEN     0      100                       *:9419                     *:*      users:(("mfsmaster",6042,8))
LISTEN     0      100                       *:9420                     *:*      users:(("mfsmaster",6042,9))
LISTEN     0      100                       *:9421                     *:*      users:(("mfsmaster",6042,10))
LISTEN     0      50                        *:9425                     *:*      users:(("mfscgiserv",4520,3))

mfsmaster开启三个端口:客户端连接9421端口,监听9422端口;数据节点9420端口

4、node3上安装metalogger server  

前面已经介绍了,Metalogger Server 是 Master Server 的备份服务器。一旦主服务器master宕机失效,我们只要导入备份信息changelogs到元数据文件,备份服务器可直接接替故障的master继续提供服务。

1
2
3
4
5
6
7
8
9
10
11
12
[root@Node3 ~]# yum install moosefs-metalogger 
 
[root@Node3 ~]# rpm -ql moosefs-metalogger
/etc/mfs/mfsmetalogger.cfg.dist
/etc/rc.d/init.d/moosefs-metalogger
/usr/sbin/mfsmetalogger
/usr/share/doc/moosefs-metalogger-2.0.89
/usr/share/doc/moosefs-metalogger-2.0.89/NEWS
/usr/share/doc/moosefs-metalogger-2.0.89/README
/usr/share/man/man5/mfsmetalogger.cfg.5.gz
/usr/share/man/man8/mfsmetalogger.8.gz
/var/lib/mfs

配置文件/etc/mfs/mfsmetalogger.cfg:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
root@Node3 ~]# cd /etc/mfs
[root@Node3 mfs]# ls
mfsmetalogger.cfg  mfsmetalogger.cfg.dist
[root@Node3 mfs]# vi mfsmetalogger.cfg
  
# WORKING_USER = mfs 
# WORKING_GROUP = mfs 
# SYSLOG_IDENT = mfsmetalogger 
# LOCK_MEMORY = 0 
# NICE_LEVEL = -19 
# DATA_PATH = /usr/local/mfs-1.6.27/var/mfs 
# BACK_LOGS = 50 
# BACK_META_KEEP_PREVIOUS = 3 
# META_DOWNLOAD_FREQ = 24           # 元数据备份文件下载请求频率,默认为24小时,即每个一天从元数据服务器下载一个metadata.mfs.back文件。当元数据服务器关闭或者出故障时,metadata.mfs.back文件将小时,那么要恢复整个mfs,则需要从metalogger服务器取得该文件。请注意该文件,它与日志文件在一起,才能够恢复整个被损坏的分布式文件系统。
# MASTER_RECONNECTION_DELAY = 5 
MASTER_HOST = 172.16.100.1       # 这里是需要连接的 mfs master server 的地址
 
#MASTER_PORT = 9419                      # 这里是需要连接的 mfs master server 的端口
# MASTER_TIMEOUT = 60 
# deprecated, to be removed in MooseFS 1.7 
# LOCK_FILE = /var/run/mfs/mfsmetalogger.lock

这个文件中需要修改的是MASTER_HOST变量,这个变量的值是 Master Server 的 IP 地址。如果对 Master Server 做了 host 解析也可以不改任何内容。

这里需要将它修改为如下参数:

1
2
# MASTER_HOST = mfsmaster
 MASTER_HOST = 192.168.10.2

启动metalogger server:

启动 Metalogger Server 之前,一定要确保 Master server 的服务是正常启动的。

1
2
3
4
5
[root@Node3 mfs]# service moosefs-metalogger start
Starting mfsmetalogger:                                    [  OK  ]
[root@Node3 mfs]# ps aux|grep mfs
mfs      12896  0.2  0.2  17628  1116 ?        S<   11:00   0:00 mfsmetalogger start
root     12980  0.0  0.1 103244   856 pts/1    S+   11:04   0:00 grep mfs

我们可以看到它下载一些文件,这些文件就是之前介绍过的Master Server上的文件,我们可以在以下目录看到这些文件。

1
2
[root@Node3 ~]# ls /var/lib/mfs
changelog_ml_back.0.mfs  changelog_ml_back.1.mfs  metadata_ml.mfs.back

5、node4上安装chunk server

       数据存储服务器也被称为 Chunk Server。在 MooseFS 文件系统中,每个 Chunk Server 的配置是完全相同的。因此,这里我们仅以一台 Chunk Server 的安装为例进行演示,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@Node4 ~]# yum install moosefs-chunkserver^C
[root@Node4 ~]# rpm -ql moosefs-chunkserver
/etc/mfs/mfschunkserver.cfg.dist
/etc/mfs/mfshdd.cfg.dist
/etc/rc.d/init.d/moosefs-chunkserver
/usr/sbin/mfschunkserver
/usr/sbin/mfschunktool
/usr/share/doc/moosefs-chunkserver-2.0.89
/usr/share/doc/moosefs-chunkserver-2.0.89/NEWS
/usr/share/doc/moosefs-chunkserver-2.0.89/README
/usr/share/man/man5/mfschunkserver.cfg.5.gz
/usr/share/man/man5/mfshdd.cfg.5.gz
/usr/share/man/man8/mfschunkserver.8.gz
/usr/share/man/man8/mfschunktool.8.gz
/var/lib/mfs

配置文件/etc/mfs/mfschunkserver.cfg:

配置 Chunk Server 需要两个配置文件,分别是 mfschunkserver.cfg 和 mfshdd.cfg 。

其中,mfschunkserver.cfg 是主配置文件,而 mfshdd.cfg 是服务器用来分配给 MFS 使用的空间的配置文件,最好是一个单独的磁盘或者一个raid卷,最低要求是一个分区。

在每个mfs chunk server 上的配置及操作如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@Node4 mfs]# vi mfschunkserver.cfg
 
# WORKING_USER = mfs 
# WORKING_GROUP = mfs 
# SYSLOG_IDENT = mfschunkserver 
# LOCK_MEMORY = 0 
# NICE_LEVEL = -19 
# DATA_PATH = /usr/local/mfs-1.6.27/var/mfs 
# MASTER_RECONNECTION_DELAY = 5 
# BIND_HOST = * 
MASTER_HOST = mfsmaster        # 该地址为 Master Server 的IP地址或者主机名
# MASTER_PORT = 9420 
# MASTER_TIMEOUT = 60 
 
# CSSERV_LISTEN_HOST = *
 
# CSSERV_LISTEN_PORT = 9422   # 该端口用于与其它chunk server之间的通信,主要是数据复制
 
# HDD_CONF_FILENAME = /usr/local/mfs-1.6.27/etc/mfs/mfshdd.cfg 
# HDD_TEST_FREQ = 10 
# deprecated, to be removed in MooseFS 1.7 
# LOCK_FILE = /var/run/mfs/mfschunkserver.lock 
# BACK_LOGS = 50 
# CSSERV_TIMEOUT = 5

在常规的使用过程中,我们只需要修改一个 MASTER_HOST参数,将该参数设置为我们 Master Server 的IP地址或者主机名即可。

配置mfshdd.cfg主配置文件:

mfshdd.cfg该文件用来设置你将 Chunk Server 的哪个目录共享出去给 Master Server进行管理。当然,虽然这里填写的是共享的目录,但是这个目录后面最好是一个单独的分区。分区的相关操作,这里就不占篇幅了。

1
2
3
4
5
6
7
8
[root@Node4 ~]# ls /mogstore/
dev2  lost+found
 
[root@Node4 mfs]# vi mfshdd.cfg        #这里就使用上次mogilefs博文中创建的分区/mogstore
 
/mogstore
 
[root@Node4 mfs]# chown mfs. -R /mogstore/

启动 Chunk Server:

和 Metalogger Server 一样,在启动 chunk servers之前,必须要先确保 Master Server 的服务是正常启动的,否则启动会报错。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@Node4 mfs]# service moosefs-chunkserver restart
Stopping mfschunkserver:                                   [  OK  ]
Starting mfschunkserver:                                   [  OK  ]
[root@Node4 mfs]# ls /mogstore/
00  10  20  30  40  50  60  70  80  90  A0  B0  C0  D0    DF  EF  FF
01  11  21  31  41  51  61  71  81  91  A1  B1  C1  D1    E0  F0  lost+found
02  12  22  32  42  52  62  72  82  92  A2  B2  C2  D2    E1  F1
03  13  23  33  43  53  63  73  83  93  A3  B3  C3  D3    E2  F2
04  14  24  34  44  54  64  74  84  94  A4  B4  C4  D4    E3  F3
05  15  25  35  45  55  65  75  85  95  A5  B5  C5  D5    E4  F4
06  16  26  36  46  56  66  76  86  96  A6  B6  C6  D6    E5  F5
07  17  27  37  47  57  67  77  87  97  A7  B7  C7  D7    E6  F6
08  18  28  38  48  58  68  78  88  98  A8  B8  C8  D8    E7  F7
09  19  29  39  49  59  69  79  89  99  A9  B9  C9  D9    E8  F8
0A  1A  2A  3A  4A  5A  6A  7A  8A  9A  AA  BA  CA  DA    E9  F9
0B  1B  2B  3B  4B  5B  6B  7B  8B  9B  AB  BB  CB  DB    EA  FA
0C  1C  2C  3C  4C  5C  6C  7C  8C  9C  AC  BC  CC  DC    EB  FB
0D  1D  2D  3D  4D  5D  6D  7D  8D  9D  AD  BD  CD  DD    EC  FC
0E  1E  2E  3E  4E  5E  6E  7E  8E  9E  AE  BE  CE  DE    ED  FD
0F  1F  2F  3F  4F  5F  6F  7F  8F  9F  AF  BF  CF  dev2  EE  FE

6、node1安装client

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@Node1 ~]# yum install moosefs-client
 
[root@Node1 ~]# rpm -ql moosefs-client
/etc/mfs/mfsmount.cfg.dist
/usr/bin/mfsappendchunks
/usr/bin/mfscheckfile
/usr/bin/mfsdeleattr
/usr/bin/mfsdelquota
/usr/bin/mfsdirinfo
/usr/bin/mfsfileinfo
/usr/bin/mfsfilepaths
/usr/bin/mfsfilerepair
/usr/bin/mfsgeteattr
/usr/bin/mfsgetgoal
/usr/bin/mfsgetquota
/usr/bin/mfsgettrashtime
/usr/bin/mfsmakesnapshot
/usr/bin/mfsmount
/usr/bin/mfsrgetgoal
/usr/bin/mfsrgettrashtime
/usr/bin/mfsrsetgoal
/usr/bin/mfsrsettrashtime
/usr/bin/mfsseteattr
/usr/bin/mfssetgoal
/usr/bin/mfssetquota
/usr/bin/mfssettrashtime
/usr/bin/mfstools
/usr/share/doc/moosefs-client-2.0.89

挂载mfs文件系统:

如果我们之前设置了密码,这里会提示我们需要输入密码

1
2
3
4
5
6
7
8
root@Node1 ~]# mfsmount /mnt -H 192.168.10.2    # 使用 -p 后面,下面会提示输入密码 
mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root
[root@Node1 ~]# df -TH
Filesystem        Type      Size  Used Avail Use% Mounted on
/dev/sda2         ext4       20G  2.4G   16G  14% /
tmpfs             tmpfs     981M     0  981M   0% /dev/shm
/dev/sda1         ext4      508M   34M  448M   7% /boot
192.168.10.2:9421 fuse.mfs   21G  856M   20G   5% /mnt

特别需要注意的是,所有的MFS 都是挂接同一个元数据服务器master 的IP,而不是其他数据存储服务器chunkserver 的IP

挂载本地后写入文件测试:

1
2
3
root@Node1 mnt]# echo "Hello" > Test
[root@Node1 mnt]# cat Test 
Hello

配置客户端开机自动挂载:

如果需要Client能够在开机的时候自动挂载,我们就需要自动把密码传递进去。mfsmount自带了-o参数,我们可以把密码配置在其后来实现开机自动挂载。

例如:mfsmount /mogstore -H 192.168.10.2 -o mfspassword=anyfish

1
[root@Node1 ~]# echo '/usr/bin/mfsmount /mogstore -H 192.168.10.2 ' >> /etc/rc.local

MooseFS基础和安装的更多相关文章

  1. Linux下一键安装包的基础上安装SVN及实现nginx web同步更新

    Linux下一键安装包的基础上安装SVN及实现nginx web同步更新 一.安装 1.查看是否安装cvs rpm -qa | grep subversion 2.安装 yum install sub ...

  2. 【SpringCloud之pigx框架学习之路 】1.基础环境安装

    [SpringCloud之pigx框架学习之路 ]1.基础环境安装 [SpringCloud之pigx框架学习之路 ]2.部署环境 1.Cmder.exe安装 (1) windows常用命令行工具 下 ...

  3. [ kvm ] 学习笔记 9:WebVirtMgr 基础及安装使用

    目录- 1. 前言- 2. webvirtmgr 简介- 3. webvirtmgr 部署实践    - 3.1 配置 webvirtmgr 主机    - 3.2 kvm node节点配置    - ...

  4. ELK-6.5.3学习笔记–elk基础环境安装

    本文预计阅读时间 13 分钟 文章目录[隐藏] 1,准备工作. 2,安装elasticsearch. 3,安装logstash. 4,安装kibana 以往都是纸上谈兵,毕竟事情也都由部门其他小伙伴承 ...

  5. Django基础之安装配置

    安装配置 一 MVC和MTV模式 著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层:他们之间以一种插件似的,松耦合的方式连接在一起. 模型负责业务对象与数据库的 ...

  6. Node.js系列基础学习----安装,实现Hello World, REPL

    Node.js基础学习 简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一 ...

  7. Linux系统最小化安装之后的系统基础环境安装以及内核优化脚本

    #!/bin/bash #添加epel和rpmforge的外部yum扩展源 cd /usr/local/src wget http://mirrors.ustc.edu.cn/fedora/epel/ ...

  8. Nagios详解(基础、安装、配置文件解析及监控实例)

    一.Nagios基础 1.简介Nagios是一款开源网络监视工具.可监控网络服务(SMTP.POP3.HTTP.NNTP.ICMP.SNMP.FTP.SSH.PING---).监控主机资源.根据需求设 ...

  9. Django 基础一(安装和启动)

    在开始跟着本文学习Django进行Web开发之前你需要有一定的python编程基础,会用一些简单的Linux系统命令.如果你对python一无所知,请先去这个网站学习一下python编程的基础 Lin ...

随机推荐

  1. BootstrapValidator

    一.引入必要文件 <link rel="stylesheet" href="/path/to/bootstrap/css/bootstrap.css"/& ...

  2. quartz做集群配置较短的时间间隔会重复执行任务的问题

    quartz.properties org.quartz.jobStore.misfireThreshold = 60000 这个参数(单位为毫秒)设置了以后就是超时1min的就不执行,小于1min会 ...

  3. material design动画

    这是一篇material design 文档动画部分的学习! Summary: Material Design动画交互 动画速度的3个原则 3种交互方式 如何设计有意义的动画 使人高兴的动画细节 1 ...

  4. express.Router创建模块化路由

    使用 app.route() 创建路由路径的链式路由句柄.由于路径在一个地方指定,这样做有助于创建模块化的路由,而且减少了代码冗余和拼写错误. 先放小实例: app.js var express = ...

  5. es6数组去重复

    var arr=[1,1,2,3,5,7,7,7] arr=Array.from(new Set(arr))

  6. Net编程 详解DataTable用法【转】

    http://www.diybloghome.com/article/16.html DataTable表示一个与内存有关的数据表,可以使用工具栏里面的控件拖放来创建和使用,也可以在编写程序过程中根据 ...

  7. Spark Streaming updateStateByKey和mapWithState源码解密

    本篇从二个方面进行源码分析: 一.updateStateByKey解密 二.mapWithState解密 通过对Spark研究角度来研究jvm.分布式.图计算.架构设计.软件工程思想,可以学到很多东西 ...

  8. 转:让kindle更好的支持pdf

    http://vislab.bjmu.edu.cn/blog/hwangxin/2012/10/read-scanned-pdfs-with-kindlepdfviewer/

  9. Android Exception 11(baidumapsdk(15405): Authentication Error errorcode: 102 uid)

    08-12 16:06:12.622: E/baidumapsdk(15405): Authentication Error errorcode: 102 uid: null appid -1 msg ...

  10. Struts2对于i18n的支持

    struts.xml中可以配置 <constant name="struts.custom.i18n.resources" value="itcast"& ...