2013年4月2日星期二

MFS How to?

MFS Master Install:

yum install fuse-devel zlib-devel
cd /usr/local/src
wget http://www.myciscolab.net/sources/mfs-1.6.25-1.tar.gz
tar xzvf mfs-1.6.25-1.tar.gz
cd mfs-1.6.25
useradd -u 1011 mfs -s /sbin/nologin
./configure --prefix=/usr/local/mfs-1.6.25 --with-default-user=mfs --with-default-group=mfs
make
make install
ln -s /usr/local/mfs-1.6.25 /usr/local/mfs
cd /usr/local/mfs/etc
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsexports.cfg.dist mfsexports.cfg
cd ../var/mfs
cp metadata.mfs.empty metadata.mfs
echo 'export PATH=$PATH:/usr/local/mfs/bin/:/usr/local/mfs/sbin/' > /etc/profile.d/mfs.sh
chmod a+x /etc/profile.d/mfs.sh
source /etc/profile.d/mfs.sh
chown -R mfs:mfs /usr/local/mfs-1.6.25
mfsmaster start
netstat -antuelp | grep 9420
mfscgiserv // http 9425 查看

mfsmaster[2716]: open files limit: 5000

MFSLogger Install
# 安装方式跟master一样,然后进入目录:
cd /usr/local/mfs/etc
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

MFSChunkServer Install

yum install -y zlib-devel fuse-devel
cd /usr/local/src
wget http://www.myciscolab.net/sources/mfs-1.6.25-1.tar.gz
tar xzvf mfs-1.6.25-1.tar.gz
useradd -u 1011 mfs -s /sbin/nologin
cd mfs-1.6.25
./configure --prefix=/usr/local/mfs-1.6.25 --with-default-user=mfs --with-default-group=mfs
make
make install
ln -s /usr/local/mfs-1.6.25 /usr/local/mfs
chown -R mfs:mfs /usr/local/mfs-1.6.25
cd /usr/local/mfs/etc
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
mkdir /mfsdata
chown -R mfs:mfs /mfsdata
vi /usr/local/mfs/etc/mfschunkserver.cfg // 配置master地址
vi /usr/local/mfs/etc/mfshdd.cfg // 配置哪些文件夹可用于装文件
echo 'export PATH=$PATH:/usr/local/mfs/bin/:/usr/local/mfs/sbin/' > /etc/profile.d/mfs.sh
chmod a+x /etc/profile.d/mfs.sh
source /etc/profile.d/mfs.sh
/usr/local/mfs/sbin/mfschunkserver start
netstat -antuelp | grep 9422

MFS Client Install
yum install fuse fuse-devel zlib-devel -y
yum install -y wget
yum groupinstall -y "Development Tools"
modprobe fuse
cd /usr/local/src
wget http://www.myciscolab.net/sources/mfs-1.6.25-1.tar.gz
wget http://www.myciscolab.net/sources/mfs-1.6.25-1.tar.gz
tar xzvf mfs-1.6.25-1.tar.gz
cd mfs-1.6.25
useradd -u 1011 mfs -s /sbin/nologin
./configure --prefix=/usr/local/mfs-1.6.25 --with-default-user=mfs --with-default-group=mfs --enable-mfsmount
make
make install
ln -s /usr/local/mfs-1.6.25 /usr/local/mfs
echo 'export PATH=$PATH:/usr/local/mfs/bin/:/usr/local/mfs/sbin/' > /etc/profile.d/mfs.sh
chmod a+x /etc/profile.d/mfs.sh
source /etc/profile.d/mfs.sh

MFS Client Mount
mkdir /mnt/mfs
mfsmount /mnt/mfs/ -H 192.168.1.82
mkdir /mnt/mfsmetadata
mfsmount -m /mnt/mfsmeta -H 192.168.1.82
mfssetgoal -r 3 /mnt/mfs



MFS Test

# 挂载
mkdir /root/mfs
mfsmount -H 192.168.50.193 /root/mfs
# 使用dd命令测试
nohup dd if=/dev/zero of=/root/mfsoutput3.img bs=1M count=1M &

MFS Recovery

mfsmetarestore -a
mfsmetastore -m metadata.mfs.back -o metadata.mfs changelog_m1.*.mfs

MFS Server Backup Script

#!/bin/bash
cd /root/backups/mfs
rm -f mfs.tar.gz.5
mv mfs.tar.gz.4 mfs.tar.gz 5
mv mfs.tar.gz.3 mfs.tar.gz.4
mv mfs.tar.gz.2 mfs.tar.gz.3
mv mfs.tar.gz.1 mfs.tar.gz.2
mv mfs.tar.gz mfs.tar.gz.1
#/bin/tar czvf "/root/backups/mfs/`date +%Y%m%d%H%M`.tar.gz" /usr/local/mfs/mfs-1.6.25/var/mfs
/bin/tar czvf "/root/backups/mfs/mfs.tar.gz" /usr/local/mfs/var/mfs

# crontab
*/10 * * * * /root/backups/mfs/mfsbackup.sh

Nagios Monitor MFS
nagios 配置:
文件 nrpe.cfg 添加如下一行
command[check_mfs]=/usr/local/nagios/libexec/check_mfs $ARG1$

定义服务的时候的配置
define service {
use centos-service
host_name 192.168.199.69_n69.l99.com
service_description CheckMFS
check_command check_nrpe1!check_mfs!M  // M: Master; C: Chunk; L: Logger
normal_check_interval 2
contact_groups centos-admins
notifications_enabled 1
}

文件/usr/local/nagios/libexec/check_mfs 内容如下

#!/bin/bash
# ===========================================================================================================
#
# MFS status check plugins for nagios
#
# Written by    : liu yunfeng
# Release       : 1.0
# Create Date   : 2010-05-18
# Description   : Nagios plugins (script) to check MFS status 
# Modified by : Jacky.W
# Release : 2.0
# Create Date : 2012-11-28
# ===========================================================================================================
# Nagios return codes

STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3

# Get Master server Process
Master() {
    MFS_PID=`ps -ef | grep mfsmaster | grep -v "grep" | awk '{print $2}'`
    if [ "${MFS_PID}" = "" ];then
        echo "ERROR : MFS Master Server does not start!"
        exit $STATE_CRITICAL
    else 
    echo "OK : MFS Master Server Running OK @ $MFS_PID!"
    exit $STATE_OK
fi
}

# Get chunker server Process
Chunker() {
    MFS_PID=`ps -ef | grep mfschunkserver | grep -v "grep" | awk '{print $2}'`
    if [ "${MFS_PID}" = "" ];then
        echo "ERROR : MFS ChunkServer does not start"
        exit $STATE_CRITICAL
    else
    echo "OK : MFS ChunkServer is Running OK @ $MFS_PID!"
    exit $STATE_OK
fi
}


# Get Disk Used
Disk_used(){
    Disk_used=`df -h | grep ${mountpoint} |awk '{print $4}'`
    if [ ${Disk_used%\%} -ge ${warningdiskused} -a ${Disk_used%\%} -lt ${criticaldiskused} ];then
        echo "Waring :mfs disk used Rate is "${Disk_used}""
        exit $STATE_WARNING
    elif [ ${Disk_used%\%} -ge ${criticaldiskused} ];then
        echo "CRITICAL :mfs disk used Rate is "${Disk_used}""
        exit $STATE_CRITICAL
    elif [ "${Disk_used%\%}" = "" ];then
        echo "CRITICAL :mfs client not mount on"
        exit $STATE_CRITICAL
    else 
        echo "OK : MFS client mount on and disk used rate is "${Disk_used}" , Everything is OK!"
        exit $STATE_OK
    fi
}

#Get metalogger server Process
Metalogger() {
    MFS_PID=`ps -ef | grep mfsmetalogger | grep -v "grep" | awk '{print $2}'`
    if [ "${MFS_PID}" = "" ];then
        echo "ERROR : mfs mfsmetalogger does not start"
        exit $STATE_CRITICAL
    else
        echo "OK : mfs master mfsmetalogger running OK!"
        exit $STATE_OK
    fi
}

# Functions plugin usage

print_usage()
{
    echo ""
    echo " M MFS master server status "
    echo " C MFS chunker server status "
    echo " U MFS client disk used Rate "
    echo " L MFS metalogger server status "
    echo " h Show this page "
    echo ""
    echo " Usage1 : check_mfs M mfsmasterpath"
    echo "    Example : check_mfs M /usr/local/mfs"
    echo " Usage2 : check_mfs.sh C mfschunkpath"
    echo "    Example : check_mfs C /usr/local/mfs"
    echo " Usage3 : check_mfs U mountpoint warningrate criticalrate"
    echo "    Example : check_mfs U /mnt/mfs 60 80"
    echo " Usage4 : check_mfs L mfsmetaloggerpath"
    echo "    Example : check_mfs L /usr/local/mfs"
    echo "    Example : check_mfs h"
    echo ""
    exit 0
}

#if [ $# -eq 0 ]; then
#{
#   print_usage;
#    exit $STATE_UNKNOWN;
#}
#fi

# Parse parameter
while [ $# -gt 0 ]
do
    case "$1" in 
    -h | --help)
        print_usage
        exit $STATE_OK
    ;; 
    M | --master)
        mfspath=${2:-"/usr/local/mfs"}
        Master
    ;;
    C | --chunker)
        mfspath=${2:-"/usr/local/mfs"}
        Chunker
    ;;
    U | --usedwarning)
        mountpoint=${2:-"/mfsdata"}
        warningdiskused=${3:-"75"}
        criticaldiskused=${4:-"85"}
        Disk_used
    ;;
    L | --metalogger)
        mfspath=${2:-"/usr/local/mfs"}
        Metalogger
    ;;
    *)      
        echo "Unknown argement: $1"
        exit $STATE_UNKNOWN
    ;;
    esac
shift
done

MFS 1TB 千兆互联实验结果

[root@localhost mfsdata]# dd if=/dev/zero of=./1TB bs=1M count=1M
记录了1048576+0 的读入
记录了1048576+0 的写出
1099511627776字节(1.1 TB)已复制,10370.4 秒,106 MB/





没有评论:

发表评论