一。原理介绍
1>简单介绍
MooseFS是一种分布式文件系统,MooseFS文件系统结构包括以下四种角色:
1 管理服务器managing server (master) 用于管理协调服务器之间正常工作
2 元数据日志服务器Metalogger server(Metalogger) 管理服务器备份服务器 定时同步管理服务器的元数据
3 数据存储服务器data servers (chunkservers) 用于存储数据 可以多台 每个文件可能在不同服务器间拷贝
4 客户机挂载使用client computers 客户机挂载管理服务器后 用户使用系统习惯来操作文件
2>特性及原理
对文件的操作类似unix文件的操作 支持以下特性
>mfs是一个分层的目录树结构
>存储支持POSIX标准的文件属性(权限,最后访问和修改时间)
>支持特殊的文件,如:块设备,字符设备,管道和套接字,链接文件(符号链接和硬链接)
>支持基于IP地址和密码的方式访问文件系统
分布式特性:
>高可靠性
每一份数据可以设置多个副本(多份数据),并可以存储在不同的主机上
>高可扩展性
可以很轻松的通过增加主机磁盘容量或增加主机数量来动态扩展整个文件系统的存储量
>高可容错性
我们可以通过对mfs进行系统设置,实现当数据文件被删除后的一段时间内,依然存放于主机的回收站中,以备误删恢复数据
>高数据一致性
即便文件被写入/访问时,我们依然可以完成对文件的一致性快照
架构原理
读原理 客户端挂载管理服务器 读取文件 发送请求给管理服务器 文件位于哪个chunk server(数据服务器) 管理服务器返回chunk server的
ip和端口信息 client连接chunk server下载文件
写原理
客户端挂载管理服务器 客户端请求管理服务器 申请chunk server的写入权利 管理服务器 申请某台chunk server 并且创建好快数据 成功后
返回chunk server对应的ip和端口 连接chunk server 写入文件 成功后发送成功消息给管理服务器 确认上传成功
二。安装配置
1》模拟环境
linux版本:centos7 mfs版本:moosefs2
master server 192.168.58.144
Metaloggers 192.168.58.145
chunk server 192.168.58.146
chunk server 1 192.168.58.147
client 192.168.58.145
2》安装配置(参考https://moosefs.com/download/centosfedorarhel.html)
》》公共配置(所有机器都需要安装)
获取yum 源公钥
curl "http://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
获取镜像源repo
curl "http://ppa.moosefs.com/MooseFS-2-el7.repo" > /etc/yum.repos.d/MooseFS.repo
》》master server(192.168.58.144)安装和配置
yum install moosefs-master moosefs-cli moosefs-cgi moosefs-cgiserv
查看所有安装的文件[root@bogon ~]# rpm -ql moosefs-master
/etc/mfs/mfsexports.cfg.dist /etc下为所有的配置文件
/etc/mfs/mfsmaster.cfg.dist
/etc/mfs/mfstopology.cfg.dist
/usr/lib/systemd/system/moosefs-master.service
/usr/sbin/mfsmaster /user/sbin下为启动的命令
/usr/sbin/mfsmetadump
/usr/sbin/mfsmetarestore
/usr/share/doc/moosefs-master-2.0.91
/usr/share/doc/moosefs-master-2.0.91/NEWS
/usr/share/doc/moosefs-master-2.0.91/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 表示元数据 就是哪些文件存在哪些chunkserver的配置信息
配置文件mfsmaster.cfg 为master主配置文件 用于配置master的端口及其他连接信息 默认所有参数都被注释 注释的值是默认的值
具体意义 参考(https://moosefs.com/Content/Downloads/moosefs-2-0-users-manual.pdf 章节6)
# 默认的工作用户 默认安装master server 该用户以创建 如果没有使用 groupadd mfs, useradd -g mfs -s /usr/sbin/nologin mfs
WORKING_USER = mfs
# 默认的工作用户组
WORKING_GROUP = mfs
#允许挂载的权限文件
EXPORTS_FILENAME = /etc/mfs/mfsexports.cfg
#和metalogger通信的端口
MATOML_LISTEN_PORT = 9419
#和chunkserver通信的端口
MATOCS_LISTEN_PORT = 9420
#和client通信的端口
MATOCL_LISTEN_PORT = 9421
#客户端未操作的超时时间
SESSION_SUSTAIN_TIME = 86400
配置文件mfsexports.cfg 为客户端允许挂载访问的权限控制
# 允许任何ip访问 chunk下数据 除了 "meta".
* / rw,alldirs,maproot=0:0
# 允许所有ip访问所有的meta
* . rw
一般格式为
【允许访问的ip】 【访问的路径】 【可选参数】
允许的ip格式参考 more mfsexports.cfg的注释
访问的路径 /表示数据的根目录 .表示meta文件
可选参数 rw表示可写可读 alldirs表示所有的子目录都允许被挂载 maproot=用户名:组名 表示对应组
下的用户拥有root的权限 password=TEXT 表示客户端连接必须出示的密码
尝试启动 [root@bogon mfs]# service moosefs-master start
Redirecting to /bin/systemctl start moosefs-master.service
Job for moosefs-master.service failed because the control process exited with error code. See "systemctl status moosefs-master.service" and "journalctl -xe" for details.
[root@bogon mfs]# systemctl status moosefs-master.service
● moosefs-master.service - MooseFS Master server
Loaded: loaded (/usr/lib/systemd/system/moosefs-master.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Wed 2017-08-30 05:36:41 PDT; 19s ago
Process: 31099 ExecStart=/usr/sbin/mfsmaster start (code=exited, status=1/FAILURE)
Aug 30 05:36:41 bogon mfsmaster[31101]: exititng ...
Aug 30 05:36:41 bogon mfsmaster[31101]: process exited successfully (status:1)
Aug 30 05:36:41 bogon mfsmaster[31099]: loading metadata ...
Aug 30 05:36:41 bogon mfsmaster[31099]: can't find metadata.mfs - try using option '-a'
Aug 30 05:36:41 bogon mfsmaster[31099]: init: metadata manager failed !!!
Aug 30 05:36:41 bogon mfsmaster[31099]: error occurred during initialization - exiting
Aug 30 05:36:41 bogon systemd[1]: moosefs-master.service: control process exited, code=exited status=1
Aug 30 05:36:41 bogon systemd[1]: Failed to start MooseFS Master server.
Aug 30 05:36:41 bogon systemd[1]: Unit moosefs-master.service entered failed state.
Aug 30 05:36:41 bogon systemd[1]: moosefs-master.service failed.
可以看到其中 can't find metadata.mfs - try using option '-a'将 /var/lib/mfs/metadata.mfs.empty 修改名称为 /var/lib/mfs/metadata.mfs 即可
mv /var/lib/mfs/metadata.mfs.empty /var/lib/mfs/metadata.mfs
[root@bogon mfs]# systemctl start moosefs-master.service
再次尝试启动
[root@bogon mfs]# systemctl stop moosefs-master.service
[root@bogon mfs]# systemctl start moosefs-master.service
[root@bogon mfs]# netstat -nlp | grep 94
tcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN 31174/mfsmaster
tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN 31174/mfsmaster
tcp 0 0 0.0.0.0:9421 0.0.0.0:* LISTEN 31174/mfsmaster
》》metalogger server(192.168.58.145)安装和配置
yum install moosefs-metalogger
查看所有安装的文件
[root@bogon ~]# rpm -ql moosefs-metalogger
/etc/mfs/mfsmetalogger.cfg.dist
/usr/lib/systemd/system/moosefs-metalogger.service
/usr/sbin/mfsmetalogger
/usr/share/doc/moosefs-metalogger-2.0.91
/usr/share/doc/moosefs-metalogger-2.0.91/NEWS
/usr/share/doc/moosefs-metalogger-2.0.91/README
/usr/share/man/man5/mfsmetalogger.cfg.5.gz
/usr/share/man/man8/mfsmetalogger.8.gz
/var/lib/mfs
配置文件mfsmetalogger.cfg 为metalogger配置文件 用于连接master server的信息
# 默认的工作用户
WORKING_USER = mfs
# 默认的工作用户组
WORKING_GROUP = mfs
# mfs master server的ip或者主机名
# MASTER_HOST = 192.168.58.144
# 连接 master_server的端口
# MASTER_PORT = 9419
尝试启动
[root@bogon mfs]# systemctl start moosefs-metalogger
[root@bogon mfs]# ps -ef | grep mfs
mfs 9776 1 0 04:07 ? 00:00:00 /usr/sbin/mfsmetalogger start
root 9780 8490 0 04:07 pts/0 00:00:00 grep --color=auto mfs
》》chunk server(192.168.58.146,192.168.58.147两台服务器执行相同操作)安装和配置
yum install moosefs-chunkserver
查看所有安装文件
[root@bogon ~]# rpm -ql moosefs-chunkserver
/etc/mfs/mfschunkserver.cfg.dist
/etc/mfs/mfshdd.cfg.dist
/usr/lib/systemd/system/moosefs-chunkserver.service
/usr/sbin/mfschunkserver
/usr/sbin/mfschunktool
/usr/share/doc/moosefs-chunkserver-2.0.91
/usr/share/doc/moosefs-chunkserver-2.0.91/NEWS
/usr/share/doc/moosefs-chunkserver-2.0.91/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
配置文件mfschunkserver.cfg 为chunk主配置文件 用于配置和master通信的信息
# 默认的工作用户 默认安装chunk server 该用户已创建 如果没有使用 groupadd mfs, useradd -g mfs -s /usr/sbin/nologin mfs
WORKING_USER = mfs
# 默认的工作用户组
WORKING_GROUP = mfs
# MooseFS master 主机名或者ip
MASTER_HOST = 192.168.58.144
# MooseFS master 端口和master配置的一致
MASTER_PORT = 9420
#和master连接超时时间
# MASTER_TIMEOUT = 10
#mfshdd.cfg配置文件的位置
HDD_CONF_FILENAME = /etc/mfs/mfshdd.cfg
配置文件mfshdd.cfg 为chunk存储配置文件 用于将某个分区或者目录共享给master 用于存储文件
/data 表示/data就是用于存储文件目录
执行创建目录 给mfs用户 /data的操作权限
[root@bogon mfs]# mkdir /data -p
[root@bogon mfs]# chown mfs -R /data
启动chunkserver
[root@bogon mfs]# service moosefs-chunkserver start
Redirecting to /bin/systemctl restart moosefs-chunkserver.service
[root@bogon mfs]# ps -ef | grep mfs
mfs 6766 1 1 20:20 ? 00:00:00 /usr/sbin/mfschunkserver start
root 6776 2614 0 20:20 pts/0 00:00:00 grep --color=auto mfs
到data目录下查看发现出现很多文件
[root@bogon mfs]# cd /data
[root@bogon data]# ll
total 0
drwxr-x--- 2 mfs mfs 6 Sep 10 20:20 00
drwxr-x--- 2 mfs mfs 6 Sep 10 20:20 01
drwxr-x--- 2 mfs mfs 6 Sep 10 20:20 02
drwxr-x--- 2 mfs mfs 6 Sep 10 20:20 03
drwxr-x--- 2 mfs mfs 6 Sep 10 20:20 04
drwxr-x--- 2 mfs mfs 6 Sep 10 20:20 05
drwxr-x--- 2 mfs mfs 6 Sep 10 20:20 06
drwxr-x--- 2 mfs mfs 6 Sep 10 20:20 07
》》client(192.168.58.145 )安装和配置yum install moosefs-client
yum install fuse 用于挂载
挂载并且测试
确保四台机器防火墙已关闭
service iptables stop
systemctl stop firewalld
iptables --flush
挂载 测试添加文件
mfsmount /mnt -H 192.168.58.144
cd /mnt
echo hello > a.txt
[root@bogon mnt]# hello.txt
total 1
-rw-r--r-- 1 root root 6 Aug 30 06:42 hello.txt