zoukankan      html  css  js  c++  java
  • Centos 安装 Moosefs文件系统

    一.环境介绍
    Moosefs master:192.168.55.148
    Moosefs Metalogger:192.168.55.149
    Moosefs Chunk-01:192.168.55.150
    Moosefs Chunk-02:192.168.55.151

    Moosefs Client:192.168.55.152

     二.安装

    #########################################################
    1) master安装

    $ yum install -y wget gcc zlib zlib-devel
    $ cd /usr/local/src
    
    $ groupadd mfs
    $ useradd -g mfs mfs -s /sbin/nologin -M
    
    $ wget http://www.moosefs.org/tl_files/mfscode/mfs-1.6.27-1.tar.gz
    $ tar zxvf mfs-1.6.27-1.tar.gz
    $ cd cd mfs-1.6.27
    $ ./configure --prefix=/usr/local/mfs 
    --with-default-user=mfs 
    --with-default-group=mfs 
    --disable-mfschunkserver 
    --disable-mfsmount
    $ make
    $ make install
    $ cp rpm/rh/mfsmaster.init /etc/init.d/mfsmaster
    $ cp rpm/rh/mfscgiserv.init /etc/init.d/mfscgiserv
    $ chmod 755 /etc/init.d/mfsmaster
    $ chmod 755 /etc/init.d/mfscgiserv
    
    $ ln -s /usr/local/mfs/sbin/mfsmaster /usr/sbin/
    $ ln -s /usr/local/mfs/sbin/mfscgiserv /usr/sbin/
    $ ln -s /usr/local/mfs/etc/mfs /etc/mfs
    
    $ cd /usr/local/mfs/etc/mfs
    $ cp mfsmaster.cfg.dist mfsmaster.cfg
    $ cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
    $ cp mfsexports.cfg.dist mfsexports.cfg
    $ cp mfstopology.cfg.dist mfstopology.cfg
    [root@localhost mfs]# more mfsexports.cfg | grep -v "^#"
    *    /    rw,alldirs,maproot=0
    
    *    .    rw
    $ cd /usr/local/mfs/var/mfs/
    $ cp metadata.mfs.empty metadata.mfs
    
    $ vi /etc/hosts
    1921.68.55.148 mfsmaster
    $ vi /etc/init.d/mfsmaster 
    #!/bin/bash
    #
    # Init file for the MooseFS master service
    #
    # chkconfig: - 92 84
    #
    # description: MooseFS master
    #
    # processname: mfsmaster
    # config: @sysconfdir@/mfsmaster.cfg
    
    # Source function library.
    . /etc/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    
    # Check that networking is up.
    [ "${NETWORKING}" == "no" ] && exit 0
    [ -x "/usr/sbin/mfsmaster" ] || exit 1
    [ -r "/etc/mfs/mfsexports.cfg" -o -r "/etc/mfs/mfsexports.cfg" ] || exit 1
    
    RETVAL=0
    prog="mfsmaster"
    
    start () {
    echo -n $"Starting $prog: "
    daemon $prog $OPTIONS
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
    return $RETVAL
    }
    
    stop () {
    echo -n $"Stopping $prog: "
    $prog stop $OPTIONS || killproc $prog >/dev/null 2>&1
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
    return $RETVAL
    }
    
    restart () {
    stop
    start
    }
    
    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    restart|reload)
    restart
    ;;
    condrestart)
    [ -e /var/lock/subsys/$prog ] && restart
    RETVAL=$?
    ;;
    status)
    status $prog
    RETVAL=$?
    ;;
    *)
    echo $"Usage: $0 {start|stop|restart|condrestart|status}"
    RETVAL=1
    esac
    
    exit $RETVAL
      
    
     
    
    $ touch /usr/local/mfs/var/mfs/.mfscgiserv.lock
    $ chmod 777 /usr/local/mfs/var/mfs/.mfscgiserv.lock
      
    
    $ vi /etc/init.d/mfscgiserv 
    #!/bin/bash
    #
    # Init file for the MooseFS CGI monitor service
    #
    # chkconfig: - 93 83
    #
    # description: MooseFS CGI server
    #
    # processname: mfscgiserv
    
    # Source function library.
    . /etc/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    MFSCGISERV_USER=nobody
    
    # Source initialization configuration.
    
    # Check that networking is up.
    [ "${NETWORKING}" == "no" ] && exit 0
    [ -x "/usr/sbin/mfscgiserv" ] || exit 1
    
    RETVAL=0
    prog="mfscgiserv"
    
    start () {
    echo -n $"Starting $prog: "
    daemon --user $MFSCGISERV_USER $prog $OPTIONS
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
    return $RETVAL
    }
    
    stop () {
    echo -n $"Stopping $prog: "
    $prog stop $OPTIONS || killproc $prog >/dev/null 2>&1
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
    return $RETVAL
    }
    
    restart () {
    stop
    start
    }
    
    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    restart|reload)
    restart
    ;;
    condrestart)
    [ -e /var/lock/subsys/$prog ] && restart
    RETVAL=$?
    ;;
    status)
    status $prog
    RETVAL=$?
    ;;
    *)
    echo $"Usage: $0 {start|stop|restart|condrestart|status}"
    RETVAL=1
    esac
    
    exit $RETVAL

      

    $ /etc/init.d/mfsmaster
    $ /etc/init.d/mfscgiserv start
    $ chkconfig --add mfsmaster
    $ chkconfig -add mfscgiserv
    $ chkconfig mfsmaster on
    $ chkconfig mfscgiserv on


    #################################################################
    2)Metalogger Server install

    $ yum install -y wget gcc zlib zlib-devel
    $ cd /usr/local/src/
    
    $ groupadd mfs
    $ useradd -g mfs mfs -s /sbin/nologin -M
    
    
    $ tar zxvf mfs-1.6.27-1.tar.gz
    $ cd mfs-1.6.27
    $ ./configure --prefix=/usr/local/mfs 
    --with-default-user=mfs 
    --with-default-group=mfs 
    --disable-mfschunkserver 
    --disable-mfsmount
    $ make
    $ make install
    $ ln -s /usr/local/mfs/sbin/mfsmetalogger /usr/sbin/
    $ ln -s /usr/local/mfs/etc/mfs /etc/mfs
    
    $ cp rpm/rh/mfsmetalogger.init /etc/init.d/mfsmetalogger
    $ chmod 755 /etc/init.d/mfsmetalogger
    
    
    $ cd /usr/local/mfs/etc/mfs/
    $ cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
    
    $ vi /etc/hosts
    $ 192.168.55.149 mfsmaster
    $ vi /etc/init.d/mfsmetalogger 
    #!/bin/bash
    #
    # Init file for the MooseFS metalogger service
    #
    # chkconfig: - 92 84
    #
    # description: MooseFS metalogger
    #
    # processname: mfsmetalogger
    # config: @sysconfdir@/mfsmetalogger.cfg
    
    # Source function library.
    . /etc/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    # Source initialization configuration.
    #[ -r "/usr/sbin/mfsmetalogger" ] && . /usr/sbin/mfsmetalogger
    
    # Check that networking is up.
    [ "${NETWORKING}" == "no" ] && exit 0
    [ -x "/usr/sbin/mfsmetalogger" ] || exit 1
    
    RETVAL=0
    prog="mfsmetalogger"
    
    start () {
    echo -n $"Starting $prog: "
    daemon $prog $OPTIONS
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
    return $RETVAL
    }
    
    stop () {
    echo -n $"Stopping $prog: "
    $prog stop $OPTIONS || killproc $prog >/dev/null 2>&1
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
    return $RETVAL
    }
    
    restart () {
    stop
    start
    }
    
    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    restart|reload)
    restart
    ;;
    condrestart)
    [ -e /var/lock/subsys/$prog ] && restart
    RETVAL=$?
    ;;
    status)
    status $prog
    RETVAL=$?
    ;;
    *)
    echo $"Usage: $0 {start|stop|restart|condrestart|status}"
    RETVAL=1
    esac
    
    exit $RETVAL
      
    
     
    
    $ chkconfig --add mfsmetalogger
    $ chkconfig mfsmetalogger on

    ############################################################
    3) Chunk Server install

    $ yum install -y wget gcc zlib zlib-devel
    $ cd /usr/local/src/
    $ groupadd mfs
    $ useradd -g mfs mfs -s /sbin/nologin -M
    
    $ tar zxvf mfs-1.6.27-1.tar.gz
    $ cd mfs-1.6.27
    $ ./configure --prefix=/usr/local/mfs 
    --with-default-user=mfs 
    --with-default-group=mfs 
    --disable-mfsmaster
    $ make
    $ make install
    $ ln -s /usr/local/mfs/etc/mfs /etc/mfs
    $ ln -s /usr/local/mfs/sbin/mfschunkserver /usr/sbin/
    $ cp rpm/rh/mfschunkserver.init /etc/init.d/mfschunkserver
    $ chmod 755 /etc/init.d/mfschunkserver
    $ cd /usr/local/mfs/etc/mfs
    $ cp mfshdd.cfg.dist mfshdd.cfg
    $ cp mfschunkserver.cfg.dist mfschunkserver.cfg
    #创建2个挂载磁盘
    $ mkdir -p /storage/mfschunks
    $ dd if=/dev/zero of=/storage/mfschunks/mfschunks1 bs=1024 count=1 seek=$((2*1024*1024-1))
    $ mkfs -t ext4 /storage/mfschunks/mfschunks1
    $ mkdir -p /mnt/mfschunks1
    $ mount -t ext4 -o loop /storage/mfschunks/mfschunks1 /mnt/mfschunks1
    
    
    $ dd if=/dev/zero of=/storage/mfschunks/mfschunks2 bs=1024 count=1 seek=$((2*1024*1024-1))
    $ mkfs -t ext4 /storage/mfschunks/mfschunks2
    $ mkdir -p /mnt/mfschunks2
    $ mount -t ext4 -o loop /storage/mfschunks/mfschunks2 /mnt/mfschunks2
    
    $ chown -R mfs:mfs /mnt/mfschunks1 /mnt/mfschunks2

     

    #编辑添加挂载分区
    $ vi /etc/mfs/mfshdd.cfg
    # mount points of HDD drives
    #
    #/mnt/hd1
    #/mnt/hd2
    #etc.
    
    /mnt/mfschunks1
    /mnt/mfschunks2
    #写入hosts
    $ vi /etc/hosts
    192.168.55.148 mfsmaster
    $ vi /etc/init.d/mfschunkserver 
    #!/bin/bash
    #
    # Init file for the MooseFS chunkserver service
    #
    # chkconfig: - 93 83
    #
    # description: MooseFS chunkserver
    #
    # processname: mfschunkserver
    # config: @sysconfdir@/mfschunkserver.cfg
    
    # Source function library.
    . /etc/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    # Source initialization configuration.
    #[ -r "/usr/sbin/mfschunkserver" ] && . /usr/sbin/mfschunkserver
    
    # Check that networking is up.
    [ "${NETWORKING}" == "no" ] && exit 0
    [ -x "/usr/sbin/mfschunkserver" ] || exit 1
    [ -r "/etc/mfs/mfshdd.cfg" -o -r "/etc/mfs/mfshdd.cfg" ] || exit 1
    
    RETVAL=0
    prog="mfschunkserver"
    
    start () {
    echo -n $"Starting $prog: "
    daemon $prog $OPTIONS
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
    return $RETVAL
    }
    
    stop () {
    echo -n $"Stopping $prog: "
    $prog stop $OPTIONS || killproc $prog >/dev/null 2>&1
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
    return $RETVAL
    }
    
    restart () {
    stop
    start
    }
    
    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    restart|reload)
    restart
    ;;
    condrestart)
    [ -e /var/lock/subsys/$prog ] && restart
    RETVAL=$?
    ;;
    status)
    status $prog
    RETVAL=$?
    ;;
    *)
    echo $"Usage: $0 {start|stop|restart|condrestart|status}"
    RETVAL=1
    esac
    
    exit $RETVAL
    $ chkconfig --add mfschunkserver
    $ chkconfig mfschunkserver on


    ###############################################
    4) Client install

    $ yum install -y wget gcc zlib zlib-devel
    
    $ cd /usr/local/src/
    $ groupadd mfs
    $ useradd -g mfs mfs -s /sbin/nologin -M
    
    $ wget http://nchc.dl.sourceforge.net/project/buluoos/0.2/src/fuse-2.8.5.tar.gz
    $ tar zxvf fuse-2.8.5.tar.gz
    $ cd fuse-2.8.5
    $ ./configure
    $ make && make install
    $ echo 'export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH' >>/etc/profile
    $ source /etc/profile
    
    $ lsmod |grep fuse
    fuse 73530 0

      

    #################################
    #lsmod |grep fuse #检查fuse是否加载到内核,若没有,执行下面命令
    #modprobe fuse&&lsmod |grep fuse
    ###############################

    $ cd /usr/local/src/
    $ tar zxvf mfs-1.6.27-1.tar.gz
    $ cd mfs-1.6.27
    $ ./configure --prefix=/usr/local/mfs 
    --with-default-user=mfs 
    --with-default-group=mfs 
    --$ disable-mfsmaster 
    --disable-mfschunkserver
    $ make
    $ make install
    $ ln -s /usr/local/mfs/bin/* /usr/sbin/
    $ vi /etc/hosts
    192.168.1.1 mfsmaster
    
    
    $ mkdir -p /mnt/mfs
    $ /usr/local/mfs/bin/mfsmount /mnt/mfs -H mfsmaster
    
    $ df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root 11G 948M 8.8G 10% /
    tmpfs 116M 0 116M 0% /dev/shm
    /dev/sda1 485M 32M 428M 7% /boot
    mfsmaster:9421 6.3G 0 6.3G 0% /mnt/mfs
    

      

    ###TEST###
    write:
    time dd if=/dev/zero of=/mnt/mfs/test500m bs=1024k count=500
    500+0 records in
    500+0 records out
    524288000 bytes (524 MB) copied, 6.14798 s, 85.3 MB/s

    real 0m6.173s
    user 0m0.001s
    sys 0m0.973s

    read:
    time dd if=/mnt/mfs/test500m of=/dev/null

      

    [root@localhost mfs]# mkdir 10 #创建目录
    [root@localhost mfs]# mfssetgoal 2 /mnt/mfs/10 #设置副本份数
    /mnt/mfs/10: 2
      
    [root@localhost mfs]# mfsgetgoal -r /mnt/mfs/10 #查看副本数
    /mnt/mfs/10:
    directories with goal 2 : 1
    [root@localhost mfs]# mfssettrashtime -r 0 /mnt/mfs/10 #设置延迟删除时间
    /mnt/mfs/10:
    inodes with trashtime changed: 1
    inodes with trashtime not changed: 0
    inodes with permission denied: 0
    
    [root@localhost mfs]# mfsgettrashtime -r /mnt/mfs/10 #查看延迟删除时间
    /mnt/mfs/10:
    directories with trashtime 0 : 1

      

    [root@localhost mfs]# mfscheckfile /mnt/mfs/10/d.jpg #查看文件副本数
    /mnt/mfs/10/d.jpg:
    chunks with 2 copies: 1
      
    
    [root@localhost mfs]# mfsfileinfo /mnt/mfs/10/d.jpg #查看文件储存详细信息
    /mnt/mfs/10/d.jpg:
    chunk 0: 00000000000000C5_00000001 / (id:197 ver:1)
    copy 1: 192.168.55.150:9422
    copy 2: 192.168.55.151:9422
    [root@localhost mfs]# mfsdirinfo /mnt/mfs/10
    /mnt/mfs/10/:
    inodes: 2
    directories: 1
    files: 1
    chunks: 1
    length: 186050
    size: 201728
    realsize: 403456



    #查看日志,默认打印在/var/log/messages下面
    tail -f /var/log/messages

    #故障切换(来自网络中总结)
    (1)metalogger服务器中需要备份master的两个配置文件,由于配置文件不是经常变化,因此通过定时脚本进行文件同步即可。

    (2)当metalogger没有下载metadata之前,不能使用期接管master。此时metarestore程序会运行失败。

    (3)metarestore程序是根据metalogger中定期下载的metadata和changelog来恢复master挂掉时刻master所记录的整个mfs的信息。


    metalogger的注意事项

    1、部署metalogger的服务器的open files数目必须大于或者等于5000,

    2、metalogger在启动时不会下载metadata,而是等到第一个下载周期的下载时间点时再去下载,metalogger下载metadata的时间点是每小时的10分30秒,时间间隔是1小时的整数倍。

    3、metalogger不是在启动的时候就取下载metadata,而是必须等到下载时间点(2中所述)才会去下载。也就是说,metalogger为确保正确性,要在启动后最少一个小时以内master和metalogger都要保持良好的状态。

  • 相关阅读:
    centos7 rabbitmq系统部署
    socket粘包、断包、校验
    C#对象、文件与二进制串(byte数组)之间的转换
    Windows Error Code
    C#之Socket断线和重连
    BitConverter 整数和十六进制互转
    DateTime还是DateTimeOffset?Now还是UtcNow?
    WebAPI 跨域
    Console Owin 跨域解决
    2019.12.17 Arcgis10.1许可到期解决方法
  • 原文地址:https://www.cnblogs.com/caoguo/p/4793424.html
Copyright © 2011-2022 走看看