zoukankan      html  css  js  c++  java
  • 分布式文件系统moosefs

    一。原理介绍

       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
























           


  • 相关阅读:
    C语言之setjmp
    指针和数组的千丝万缕(二)
    函数和指针的运用
    程序员的几个好的博客地址
    C语言之setjmp
    指针和数组的千丝万缕(二)
    指针和数组的千丝万缕(一)
    函数和指针的运用
    指针和数组的千丝万缕(一)
    poj3300
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9331192.html
Copyright © 2011-2022 走看看