欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

分布式文件系统moosefs

程序员文章站 2024-03-08 13:49:46
...

一。原理介绍

   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下载文件

      分布式文件系统moosefs

   写原理

     客户端挂载管理服务器 客户端请求管理服务器 申请chunk server的写入权利  管理服务器 申请某台chunk server 并且创建好快数据 成功后

返回chunk server对应的ip和端口  连接chunk server 写入文件 成功后发送成功消息给管理服务器 确认上传成功

     分布式文件系统moosefs


二。安装配置

  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
     查看所有安装的文件
[aaa@qq.com ~]# 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 表示客户端连接必须出示的密码
尝试启动 
[aaa@qq.com 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.
[aaa@qq.com 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
[aaa@qq.com mfs]# systemctl start moosefs-master.service 

再次尝试启动

[aaa@qq.com mfs]# systemctl stop moosefs-master.service 
[aaa@qq.com mfs]# systemctl start moosefs-master.service 
[aaa@qq.com 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
   查看所有安装的文件

[aaa@qq.com ~]# 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
尝试启动

[aaa@qq.com mfs]# systemctl start moosefs-metalogger 
[aaa@qq.com 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

查看所有安装文件

[aaa@qq.com ~]# 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的操作权限

[aaa@qq.com mfs]# mkdir /data -p
[aaa@qq.com mfs]# chown mfs -R /data
启动chunkserver

[aaa@qq.com mfs]# service moosefs-chunkserver start
Redirecting to /bin/systemctl restart  moosefs-chunkserver.service
[aaa@qq.com 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目录下查看发现出现很多文件

[aaa@qq.com mfs]# cd /data
[aaa@qq.com 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

[aaa@qq.com mnt]# hello.txt
total 1
-rw-r--r-- 1 root root 6 Aug 30 06:42 hello.txt