一.环境介绍
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.-.tar.gz
$ cd cd mfs-1.6.
$ ./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 /etc/init.d/mfsmaster
$ chmod /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= * . 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: -
#
# 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
[ -x "/usr/sbin/mfsmaster" ] || exit
[ -r "/etc/mfs/mfsexports.cfg" -o -r "/etc/mfs/mfsexports.cfg" ] || exit RETVAL=
prog="mfsmaster" start () {
echo -n $"Starting $prog: "
daemon $prog $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq ] && touch /var/lock/subsys/$prog
return $RETVAL
} stop () {
echo -n $"Stopping $prog: "
$prog stop $OPTIONS || killproc $prog >/dev/null >&
RETVAL=$?
echo
[ $RETVAL -eq ] && 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=
esac exit $RETVAL
   $ touch /usr/local/mfs/var/mfs/.mfscgiserv.lock
$ chmod /usr/local/mfs/var/mfs/.mfscgiserv.lock
   $ vi /etc/init.d/mfscgiserv
#!/bin/bash
#
# Init file for the MooseFS CGI monitor service
#
# chkconfig: -
#
# 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
[ -x "/usr/sbin/mfscgiserv" ] || exit RETVAL=
prog="mfscgiserv" start () {
echo -n $"Starting $prog: "
daemon --user $MFSCGISERV_USER $prog $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq ] && touch /var/lock/subsys/$prog
return $RETVAL
} stop () {
echo -n $"Stopping $prog: "
$prog stop $OPTIONS || killproc $prog >/dev/null >&
RETVAL=$?
echo
[ $RETVAL -eq ] && 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=
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.-.tar.gz
$ cd mfs-1.6.
$ ./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 /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: -
#
# 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
[ -x "/usr/sbin/mfsmetalogger" ] || exit RETVAL=
prog="mfsmetalogger" start () {
echo -n $"Starting $prog: "
daemon $prog $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq ] && touch /var/lock/subsys/$prog
return $RETVAL
} stop () {
echo -n $"Stopping $prog: "
$prog stop $OPTIONS || killproc $prog >/dev/null >&
RETVAL=$?
echo
[ $RETVAL -eq ] && 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=
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.-.tar.gz
$ cd mfs-1.6.
$ ./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 /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= count= seek=$((**-))
$ 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= count= seek=$((**-))
$ 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: -
#
# 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
[ -x "/usr/sbin/mfschunkserver" ] || exit
[ -r "/etc/mfs/mfshdd.cfg" -o -r "/etc/mfs/mfshdd.cfg" ] || exit RETVAL=
prog="mfschunkserver" start () {
echo -n $"Starting $prog: "
daemon $prog $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq ] && touch /var/lock/subsys/$prog
return $RETVAL
} stop () {
echo -n $"Stopping $prog: "
$prog stop $OPTIONS || killproc $prog >/dev/null >&
RETVAL=$?
echo
[ $RETVAL -eq ] && 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=
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..tar.gz
$ cd fuse-2.8.
$ ./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

  

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

$ cd /usr/local/src/
$ tar zxvf mfs-1.6.-.tar.gz
$ cd mfs-1.6.
$ ./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  #创建目录
[root@localhost mfs]# mfssetgoal /mnt/mfs/ #设置副本份数
/mnt/mfs/:
  
[root@localhost mfs]# mfsgetgoal -r /mnt/mfs/ #查看副本数
/mnt/mfs/:
directories with goal :
[root@localhost mfs]# mfssettrashtime -r  /mnt/mfs/ #设置延迟删除时间
/mnt/mfs/:
inodes with trashtime changed:
inodes with trashtime not changed:
inodes with permission denied: [root@localhost mfs]# mfsgettrashtime -r /mnt/mfs/ #查看延迟删除时间
/mnt/mfs/:
directories with trashtime :

  

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

#查看日志,默认打印在/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都要保持良好的状态。

Centos 安装 Moosefs文件系统的更多相关文章

  1. centos安装redis及php-redis扩展

    centos安装redis及php-redis扩展  Linux, WEB 七162012 今天公司同事要求在测试机上安装redis,并且要求让php安装上redis的扩展,redis是一个key-v ...

  2. Centos下MooseFS(MFS)分布式存储共享环境部署记录

    分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连,分布式文件系统的实际基于客户机/服务器模式.目前 ...

  3. centos 安装 和 linux 简单命令

    1. centos 安装 参照:https://www.cnblogs.com/tiger666/articles/10259102.html 安装过程注意点: 1. 安装过程中的选择安装Basic ...

  4. MFS - MooseFS 文件系统

    MFSMooseFS 文件系统 可以实现RAID 功能:节约成本 实现在线扩展:是一种半分布式文件系统. 一.MFS文件系统的组成 1.mfsmaster 元数据服务器. 在整个体系中负责管理管理文件 ...

  5. linux起源及centos安装

    第1章 Linux介绍 1.1 什么是操作系统 是一个人与计算机硬件的中介 Linux:内核+shell+扩展软件  操作系统,英文名称Operating System,简称OS,是计算机系统中必不可 ...

  6. linux学习(一)-----vm、centos安装

    安装vm和Centos 1)先安装 virtual machine ,vm12 2)再安装 Linux (CentOS 6.8) 3)原理示意图,这里我们画图说明一下 VM 和 CentOS 的关系. ...

  7. CentOS安装配置Hadoop 1.2.1(伪分布模式)

    CentOS安装配置Hadoop1.2.1 1.下载安装文件 下载2个安装文件 JAVA环境:jdk-6u21-linux-i586.bin Hadoop环境:hadoop-1.2.1.tar.gz ...

  8. CentOS安装gitlab,gerrit,jenkins并配置ci流程

    CentOS安装gitlab,gerrit,jenkins并配置ci流程 By Wenbin juandx@163.com 2016/4/9 这是我参考了网上很多的文档,配置了这三个软件在一个机器上, ...

  9. 【推荐】CentOS安装Subversion-1.8.11+HTTP协议支持配置

    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. 我们需要搭建一个自己的SVN服务器. 此外,搭建好的SVN服务器除了需要支持svn协议外,最好还需要支持HTTP协议和HTTPS协 ...

随机推荐

  1. [bzoj 2463]谁能赢呢?(博弈论)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2463 分析:因为都是按最优策略,所以棋盘肯定都能走满,于是胜负关系就是判断n*n的奇偶 ...

  2. 网卡MAC地址异常会导致无接受数据包,表现为只有发送没有接收

    遇到一个诡异的问题,一块4口博通千兆网卡中两个正常,两个怎么都没有接受,但是博通的程序网卡自检没有任何问题,最后发现是MAC地址的原因.需要将地址改为正常MAC方可正常通讯. 感觉应该是交换机丢弃了M ...

  3. 分布式数据库中间件DDM的实现原理

    随着数据量不断增大,传统的架构模式难以解决业务量不断增长所带来的问题,特别是在业务成线性.甚至指数级上升的情况.此时我们不得不通过水平扩展,把数据库放到不同服务器上来解决问题,也就是我们说的数据库中间 ...

  4. 关于C语言指针的一些新认识(1)

    Technorati 标签: 指针,数组,汇编,C语言 前言 指针是C语言的精华,但我对它一直有种敬而远之的感觉,因为一个不小心就可能让你的程序陷入莫名其妙的麻烦之中.所以,在处理字符串时,我总是能用 ...

  5. nyoj27水池数目 (DFS)

    题目27 题目信息 执行结果 本题排行 pid=27" style="text-decoration:none; color:rgb(55,119,188)">讨论 ...

  6. 浅析Linux字符设备驱动程序内核机制

    前段时间在学习linux设备驱动的时候,看了陈学松著的<深入Linux设备驱动程序内核机制>一书. 说实话.这是一本非常好的书,作者不但给出了在设备驱动程序开发过程中的所须要的知识点(如对 ...

  7. 大写金额换算器iOS版源码

    大写金额换算器iOS版源码 人民币金额大写转换器输入数字就可以转换成相应的人民币大写金额,操作很easy,需一键点击,就可以复制. 是財务办公人员必备的小工具. 银行.单位和个人填写的各种票据和结算凭 ...

  8. 《Head First 设计模式》学习笔记——代理模式

    设计模式 代理模式:为还有一个对象提供一个替身或占位符以控制对这个对象的訪问. 使用代理模式创建代表对象,让代表对象控制某对象的訪问,被代理的对象能够使远程的对象(远程代理).创建开销大的对象(虚拟代 ...

  9. 深入理解7816(3)-----关于T=0 【转】

    本文转载自:http://blog.sina.com.cn/s/blog_4df8400a0102vcyp.html 深入理解7816(3)-----关于T=0 卡片和终端之间的数据传输是通过命令响应 ...

  10. WCF Odata 开放数据协议应用

    OData简介 说起 WCF Data Service ,不得不说的是 OData.对于一个标准的 Web 服务,它往往会提供了一些功能,比如说:订货.退货这些,然后使用者通过HTTP协议来使用这些功 ...