一、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源
[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
[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详解:
注意:此配置文件是网上找编译安装后生成的,内容不完全一样,注意分辨
[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中写入如下信息即可。
192.168.10.0/24 / rw,alldirs,maproot=0:0
启动moosefs-master:
在 MooseFS 的架构中,Master Server 是不依附于其它几个组件的,它可以单独启动。但是需要注意,其它组件必须要等 Master Server 起来之后才能启动!切记!!!
在通过上面的简单配置之后,我们就可以启动 Master Server 了!
[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继续提供服务。
[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:
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 解析也可以不改任何内容。
这里需要将它修改为如下参数:
# MASTER_HOST = mfsmaster MASTER_HOST = 192.168.10.2
启动metalogger server:
启动 Metalogger Server 之前,一定要确保 Master server 的服务是正常启动的。
[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上的文件,我们可以在以下目录看到这些文件。
[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 的安装为例进行演示,
[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 上的配置及操作如下:
[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进行管理。当然,虽然这里填写的是共享的目录,但是这个目录后面最好是一个单独的分区。分区的相关操作,这里就不占篇幅了。
[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 的服务是正常启动的,否则启动会报错。
[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
[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文件系统:
如果我们之前设置了密码,这里会提示我们需要输入密码
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
挂载本地后写入文件测试:
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
[root@Node1 ~]# echo '/usr/bin/mfsmount /mogstore -H 192.168.10.2 ' >> /etc/rc.local