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 

原文地址:https://www.cnblogs.com/jicki/p/5546895.html