一、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