zoukankan      html  css  js  c++  java
  • CentOS x 64 MooseFS 学习

    一、MFS 简介....

     MooseFS(Moose File System,mfs)是一种分布式文件系统,它将数据分布在网络中的

    不同服务器上,支持FUSE,客户端可以作为一个 普通的Unix 文件系统使用MooseFS。

    MooseFS中共有四种角色:

    1. 主控服务器master server、 ( 主控服务器负责各个存储块服务器的管理、文件读写调度、文件空间回收以及恢复、多节点拷贝。)

    2. 元数据日志服务器metalogger server、( 元数据日志服务器负责备份主控服务器的元数据、变化日志文件,文件类型为changelog_ml.*.mfs,以便在主控服务器出问题的时候可以恢复。)

    3. 存储块服务器chunkserver、( 存储块服务器负责提供存储空间,并为客户提供数据传输。)

    4. 客户端client。( 客户端则通过fuse挂接主控服务器上所管理的存储块服务器,可以像操作本地文件一样操作MooseFS中的文件。)

    二、环境架构 :   CentOS 5.8  x64   *   3

    CentOS 5.8 x64   10.3.0.101   ---  主控服务器 master server

    CentOS 5.8 x64   10.3.0.102   ---  元数据日志服务器metalogger server                                     ---  存储块服务器chunkserver

                                  ---   备份主控服务器

    CentOS 5.8 x64   10.3.0.103   ---  客户端client。

    Keepalived       10.3.0.110   ---  虚拟IP  ( VIP )

    三、安装配置MooseFS 

    1、在http://www.moosefs.org/download.html下载软件 Version: 1.6.26

    wget http://pro.hit.gemius.pl/hitredir/id=p4CVHPOzkVa0JJIK.m0Ee6dyHZEgoQb1KaiPmVK29EX.M7/url=moosefs.org/tl_files/mfscode/mfs-1.6.26.tar.gz

    2、安装 MFS 所需的支持 fuse 开发包   

    yum -y install fuse*

    或者下载源码包安装

    http://sourceforge.net/projects/fuse/files/fuse-2.X/ )

    3、在 主控、存储块服务器、元数据日志服务器安装 MFS

    创建用户、组     

    groupadd mfs    

    useradd -g mfs mfs

    tar xvf mfs-1.6.26.tar.gz

    cd mfs-1.6.26

    ./configure --prefix=/opt/local/mfs --with-default-user=mfs --with-default-group=mfs

    make && make install

    4、客户端MFS安装

    groupadd mfs    

    useradd -g mfs mfs

    tar xvf mfs-1.6.26.tar.gz

    cd mfs-1.6.26

    ./configure --prefix=/opt/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount

    make && make install

    ------------------------------------------------------------------------

    (出现 configure: error: zlib development library not found ) 

    在 http://zlib.net/  下载 zlib 编译安装

    ./configure   

    make && make install 

    -------------------------------------------------------------------------

    5、 配置MFS  

    5.1、 配置 启动 主控服务 ( 10.3.0.101 )

    主控服务器、存储块服务器、元数据日志服务器分别使用不同的配置文件。配置文件默认存放目录是安装目录下的etc目录

    cd /opt/local/mfs/etc

    主控服务器使用的配置文件是mfsmaster.cfg, 将mfsmaster.cfg.dist改名

    注释掉的信息是当前的默认值,使用这些默认值就可以正常运行。

    cp mfsmaster.cfg.dist mfsmaster.cfg

    主控服务器也用到了mfsexports.cfg文件,指定了哪些客户端机器可以远程挂载MooseFS文件系统、具有什么权限。

    cp mfsexports.cfg.dist mfsexports.cfg

    vi mfsexports.cfg

    只需要在在文件里,添加这一行

    10.3.0.0/24 / rw,alldirs,maproot=0,password=123456

    表明 10.3.0.0 ~10.3.0.255 网段的机器都可以挂载MooseFS文件系统,具有读写、

    挂载任意指定的子目录权限、自动映射为root用户。

    IP地址有几种表现形式:所有ip,单个ip,IP网络地址/位数掩码,IP网络地址/子网掩码,ip段范围。

    权限部分中:

    ro 只读模式共享,rw 读写方式共享;

    alldirs 许挂载任何指定的子目录;

    maproot 映射为root或者其他的用户;

    password 指定客户端密码。

    在默认数据目录/opt/local/mfs/var/mfs下,安装时会产生一个空的元数据文件metadata.mfs.empty,根据这个文件复制出初始的元数据文件metadata.mfs:

    cp metadata.mfs.empty  metadata.mfs

    修改完以后,就可以启动 主控服务 了.....

    /opt/local/mfs/sbin/mfsmaster start  

    -----------------------------------------------------------------------

    working directory: /opt/local/mfs/var/mfs

    lockfile created and locked

    initializing mfsmaster modules ...

    loading sessions ... ok

    sessions file has been loaded

    exports file has been loaded

    mfstopology configuration file (/opt/local/mfs/etc/mfstopology.cfg) not found - using defaults

    loading metadata ...

    loading objects (files,directories,etc.) ... ok

    loading names ... ok

    loading deletion timestamps ... ok

    loading chunks data ... ok

    checking filesystem consistency ... ok

    connecting files and chunks ... ok

    all inodes: 1

    directory inodes: 1

    file inodes: 0

    chunks: 0

    metadata file has been loaded

    stats file has been loaded

    master <-> metaloggers module: listen on *:9419

    master <-> chunkservers module: listen on *:9420

    main master server module: listen on *:9421

    mfsmaster daemon initialized properly

    -----------------------------------------------------------------------

    主控master服务运行后,会在数据目录/opt/local/mfs/var/mfs 下产生元数据备份文件metadata.mfs.back、日志文件changelog.*.mfs、sessions.mfs文件等,默认保留前50小时的日志,即mfsexports.cfg中BACK_LOGS的设置的值。

    主控master服务每小时会把changelog.*.mfs文件合并到元数据文件中。

    5.2、 配置 启动 元数据日志服务 (10.3.0.102)  备份master

    ----------------------------------------------------------------------

    将文件修改

    cp mfsmaster.cfg.dist mfsmaster.cfg

    cp mfsexports.cfg.dist mfsexports.cfg

    vi mfsexports.cfg

    只需要在在文件里,添加这一行

    10.3.0.0/24 / rw,alldirs,maproot=0,password=123456

    ----------------------------------------------------------------------

    修改以上文件,作为备份master 使用...

       元数据日志服务器中使用的配置文件是mfsmetalogger.cfg,可以将/opt/local/mfs /etc下的mfsmetalogger.cfg.dist改名,其中注释掉的信息是当前的默认值。要注意的是,其中的MASTER_HOSTMASTER_PORT指定了主控服务器的位置、端口,需要修改为正确的。默认MASTER_HOST是mfsmaster。先修改/etc/hosts文件,增加一行

    cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

    10.3.0.110 mfsmaster

    然后就可以启动 metalogger服务 了..

    /opt/local/mfs/sbin/mfsmetalogger start

    ------------------------------------------------------------------------

    working directory: /opt/local/mfs/var/mfs

    lockfile created and locked

    initializing mfsmetalogger modules ...

    mfsmetalogger daemon initialized properly

    ------------------------------------------------------------------------

    启动后,可以看到默认数据目录/opt/local/mfs/var/mfs下会复制主控服务器的元数据备份文件metadata_ml.mfs.back、日志文件changelog_ml_back.*.mfs、sessions_ml.mfs文件

    另外,可以把mfsmetalogger.cfg文件中的META_DOWNLOAD_FREQ设置成1,即每小时复制一次metadata.mfs.back文件,减少恢复的延迟时间。

    vi mfsmetalogger.cfg 

    # META_DOWNLOAD_FREQ = 24 修改为

      META_DOWNLOAD_FREQ = 1 

    然后重新启动 /opt/local/mfs/sbin/mfsmetalogger restart

    -----------------------------------------------------------------

    working directory: /opt/local/mfs/var/mfs

    sending SIGTERM to lock owner (pid:10259)

    waiting for termination ... terminated

    initializing mfsmetalogger modules ...

    mfsmetalogger daemon initialized properly

    -------------------------------------------------------------------

    5.3、配置 启动 存储块服务 (10.3.0.102)

    存储块服务器中使用的配置文件是mfschunkserver.cfg,将/opt/local/mfs/etc下的mfschunkserver.cfg.dist改名,其中注释掉的信息是当前的默认值。要注意的是,其中的MASTER_HOSTMASTER_PORT指定了主控服务器的位置、端口,需要修改为正确的。默认MASTER_HOST是mfsmaster,先修改/etc/hosts文件,增加一行

    cp mfschunkserver.cfg.dist mfschunkserver.cfg

    然后我们 创建一个用于存放数据的目录,并授予权限

    mkdir -p /opt/data/mfschunk1

    chown -R mfs:mfs /opt/data/mfs

    另外,mfschunkserver.cfg中指定了共享硬盘使用的配置文件mfshdd.cfg,修改/opt/local/mfs/etc下的mfshdd.cfg.dist名字。在里面添加刚才配置的目录

    cp mfshdd.cfg.dist mfshdd.cfg

    vi mfshdd.cfg  

    添加

    /opt/data/mfschunk1

    存储块服务器中共享的硬盘应当只供mfs使用,以便mfs能正确的管理它的自由空间。

    更改完成以后就可以启动存储块服务器了

    /opt/local/mfs/sbin/mfschunkserver start

    -----------------------------------------------------------------------

    working directory: /opt/local/mfs/var/mfs

    lockfile created and locked

    initializing mfschunkserver modules ...

    hdd space manager: path to scan: /opt/data/mfs/

    hdd space manager: start background hdd scanning (searching for available chunks)

    main server module: listen on *:9422

    no charts data file - initializing empty charts

    mfschunkserver daemon initialized properly

    ------------------------------------------------------------------------

    5.4、配置 客户端 ..(10.3.0.103)

    修改/etc/hosts文件,增加一行

    vi /etc/hosts

    10.3.0.110 mfsmaster

     

    创建一个作为挂载点的目录,使用mfsmount命令挂载,挂载到本地..

    mkdir -p /opt/data/mfs

    挂载

    /opt/local/mfs/bin/mfsmount /opt/data/mfs -H mfsmaster

    参数:

    -H 为挂载整个mfs目录

    -P 指定实际使用的端口

    -S 指定挂载的子目录

    5.5、安装配置keepalived   主从灾备切换( 10.3.0.110 ) 虚拟IP

       使用keepalived,监控主控服务器,当主控服务器10.3.0.101上的mfsmaster服务挂掉,服务器宕机时,自动切换到元数据日志服务器10.3.0.102 上继续服务。

    在主控服务器   与  元数据日志服务器   下载 keepalived    

    http://www.keepalived.org/download.html  下载最新版

    wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz

    tar zxvf keepalived-1.2.7.tar.gz 

    cd keepalived-1.2.7

    ./configure --prefix=/

    make && make install

    配置为系统服务,并且开机自动启动.

    ---------------------------------------------------------------------

    chmod +x /etc/rc.d/init.d/keepalived  

    chkconfig --add keepalived  

    chkconfig --level 21 keepalived on 

    --------------------------------------------------------------------

    配置文件在/etc/keepalived/keepalived.conf

    修改配置文件 keeplived.conf

    vi /etc/keepalived/keepalived.conf

    主控服务器10.3.0.101 上的配置文件是,每两秒钟使用脚本检测mfsmaster运行情况,发现运行失败,就停止keepaled服务。

    -------------------------------------------------------------------------

    ! Configuration File for keepalived  

    global_defs {  

       router_id LVS_STTD  

    }  

    vrrp_script check_run {  

       script "/opt/local/mfs/keepalived_check_mfsmaster.sh"  

       interval 2  

    }  

    vrrp_sync_group VG1 {  

        group {  

              VI_1  

        }  

    }  

    vrrp_instance VI_1 {  

        state MASTER  

        interface eth0  

        virtual_router_id 88  

        priority 100  

        advert_int 1  

        nopreempt  

        authentication {  

            auth_type PASS  

            auth_pass 1111  

        }  

        track_script {  

            check_run  

        }  

        virtual_ipaddress {  

            10.3.0.110 

        }  

    }  

    -------------------------------------------------------------------------

    /opt/local/mfs/keepalived_check_mfsmaster.sh  

    #脚本,如mfsmaster未运行,则停止keepalived服务  

    vi /opt/local/mfs/keepalived_check_mfsmaster.sh

    -------------------------------------------------------------------------

    #!/bin/sh  

    CHECK_TIME=2 

    mfspath=" /opt/local/mfs/sbin/mfsmaster" 

    function check_mfsmaster () {  

    ps -ef | grep mfsmaster | grep "/opt/local/mfs/sbin/mfsmaster" | grep -v "grep"  

        if [ $? = 0 ] ;then  

            MFS_OK=1 

        else  

            MFS_OK=0 

        fi  

        return $MFS_OK  

    }  

    while [ $CHECK_TIME -ne 0 ]  

    do  

            let "CHECK_TIME -= 1"  

            check_mfsmaster  

            if [ $MFS_OK = 1 ] ; then  

                    CHECK_TIME=0 

                    exit 0  

            fi  

            if [ $MFS_OK -eq 0 ] &&  [ $CHECK_TIME -eq 0 ] ;then  

                    /etc/init.d/keepalived stop  

                    exit 1  

            fi  

    done 

    ------------------------------------------------------------------------

    授权..

    chmod +x /opt/local/mfs/keepalived_check_mfsmaster.sh

    元数据日志服务器 10.3.0.102 上keepalved配置

    vi /etc/keepalived/keepalived.conf

    -------------------------------------------------------------------------

    ! Configuration File for keepalived  

    global_defs {  

       router_id LVS_STTD  

    }  

    vrrp_sync_group VG1 {  

        group {  

              VI_1  

        }  

    notify_master "/opt/local/mfs/keepalived_notify.sh master"  

    notify_backup "/opt/local/mfs/keepalived_notify.sh backup"  

    }  

    vrrp_instance VI_1 {  

        state BACKUP  

        interface eth0  

        virtual_router_id 88  

        priority 80  

        advert_int 1  

        authentication {  

            auth_type PASS  

            auth_pass 1111  

        }  

        virtual_ipaddress {  

            10.3.0.110 

        }  

    }  

    -------------------------------------------------------------------------

    创建脚本文件 /opt/local/mfs/keepalived_notify.sh

    vi /opt/local/mfs/keepalived_notify.sh

    ------------------------------------------------------------------------

    #!/bin/bash  

    MFS_HOME=/opt/local/mfs  

    MFSMARSTER=${MFS_HOME}/sbin/mfsmaster  

    MFSMETARESTORE=${MFS_HOME}/sbin/mfsmetarestore  

    MFS_DATA_PATH=${MFS_HOME}/var/mfs  

    function backup2master(){  

    $MFSMETARESTORE -m ${MFS_DATA_PATH}/metadata.mfs.back -o ${MFS_DATA_PATH}/metadata.mfs $MFS_DATA_PATH/changelog_ml*.mfs  

    $MFSMARSTER start  

    }  

    function master2backup(){  

    $MFSMARSTER stop  

    /opt/local/mfs/sbin/mfsmetalogger start  

    }  

    function ERROR(){  

    echo "USAGE: keepalived_notify.sh master|backup "  

    }  

    case $1 in  

            master)  

            backup2master  

            ;;  

            backup)  

            master2backup  

            ;;  

            *)  

            ERROR  

            ;;  

    esac 

    ------------------------------------------------------------------------

    授权 

    chmod +x /opt/local/mfs/keepalived_notify.sh 

  • 相关阅读:
    DataTable的一些使用技巧
    Linux下使用Mysql
    【Cocos2d-X开发学习笔记】第28期:游戏中音乐和音效的使用
    HDU 4669 Mutiples on a circle (DP , 统计)
    面试经典-设计包含min函数的栈
    最大熵模型
    这篇文章关于两阶段提交和Paxos讲的很好
    【读书笔记】神经网络与深度学习
    这个对协程的分析不错
    sendfile学习
  • 原文地址:https://www.cnblogs.com/jicki/p/5546895.html
Copyright © 2011-2022 走看看