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_HOST\MASTER_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_HOST\MASTER_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
CentOS x 64 MooseFS 学习的更多相关文章
- 将.NET Core Web Api发布到Linux(CentOS 7 64)
将.NET Core(2.1) Web Api发布到Linux(CentOS 7 64) 近来在学习linux相关的一些东西,然后正巧想试一下把core的应用程序发布到Linux,毕竟跨平台.尝试一下 ...
- Directx11教程(64) tessellation学习(6)-PN Triangles
原文:Directx11教程(64) tessellation学习(6)-PN Triangles 前面我们用tessellation细分三角形或者四边形,产生的细分点都是在三角形或四边形 ...
- 使用VMWare虚拟机创建CentOS版本号的Linux学习环境(每一步都有截图与说明)
学习Android开发.假设不学习Linux的基本使用,总感觉心里过意不去,由于毕竟Android还是搭载在Linux的基础之上的. 因此.学习一种Linux系统的基本操作.对我们以后的学习还是非常有 ...
- centos 7 64位虚机上android4环境运行
场景 现在的开发大多是在linux的虚拟机上进行,现在有些工作和android有关,因此初步尝试了一下是否可以和目前的场景进行统一. 系统是在vmware workstaion上的centos 7的6 ...
- CentOS 7 64位的安装流程
若出现以下不支持虚拟机的问题: 表示虚拟机检测到CPU支不支持虚拟化,要去BIOS里设置虚拟化技术设置为enabled:重启电脑-按"F1或Fn+F1"-进入BIOS主界面-移至S ...
- MooseFS学习-概述
MFS(MooseFS)是一个容错的.网络分布式文件系统,是GFS的开源实现.它把数据分散在多个物理机上,对外展现为一个整体资源. 支持的功能 Unix的通用文件系统功能:目录树:记录POSIX文件属 ...
- INSTALLING QUARTUS II V.13.1 64 BIT ON RHEL/CENTOS 6 64 BIT
http://www.digitalsolutionslab.com/installing-quartus-ii-v-13-1-64-bit-on-rhelcentos-6-64-bit/ I hav ...
- 第64章 学习 - Identity Server 4 中文文档(v1.0.0)
以下是一些在线,远程和课堂培训选项,以了解有关ASP.NET Core Identity和IdentityServer4的更多信息. 64.1 现代应用程序的身份和访问控制(使用ASP.NET Cor ...
- CentOS,crontab的学习、使用、问题解决记录
参考:http://blog.csdn.net/luanwpp/article/details/7490871 参考: http://mp.weixin.qq.com/s?src=11&tim ...
随机推荐
- 详细的SQL中datediff用法
DATEDIFF 函数 [日期和时间] 功能返回两个日期之间的间隔. 语法DATEDIFF ( date-part, date-expression-1, date-expression-2 ) da ...
- 转 由一次磁盘告警引发的血案:du 和 ls 的区别
如果你完全不明白或者完全明白图片含义, 那么你不用继续往下看了. 否则, 这篇文章也许正是你需要的. 背景 确切地说,不是收到的自动告警短信或者邮件告诉我某机器上的磁盘满了,而是某同学人肉发现该机器写 ...
- [maven] 新建项目一直提示loading archetype list
Maven's JRE is running out of memory. Under Build > Build Tools > Maven > Importing, set &q ...
- Vs2010 WPF 项目打包
[转]图解WPF程序打包全过程 首先打开已经完成的工程,如图: 下面开始制作安装程序包. 第一步:[文件]——[新建]——[项目]——安装项目. 名称——可以自己根据要求修改. 位置——是指你要制作的 ...
- 如何使用Android中的OpenGL ES媒体效果
引自:http://www.2cto.com/kf/201506/404366.html Android的媒体效果框架允许开发者可以很容易的应用多种令人印象深刻的视觉效果到照片或视频之上.作为这个媒体 ...
- sql trim()函数去掉两头空格
1.sql trim()函数去掉两头空格 sql语法中没有直接去除两头空格的函数,但有ltrim()去除左空格rtrim()去除右空格. 合起来用就是sql的trim()函数,即select ltri ...
- UIViewContentMode 图文解说
在iOS应用开发中我们常常要对视图的contentMode属性进行设置,尤其在使用UIImageView视图时设置这个属性的概率很高.我们知道contentMode的类型是UIViewContentM ...
- HTML5编程之旅系列一:HTML5 Geolocation 初探
让我们假设这样一个场景,有一个web应用程序,它可以向用户提供附近不远处某商场的打折优惠信息.使用HTML5 Geolocation API(地理定位 API),可以请求用户共享他们的位置信息. HT ...
- 编译hadoop2.4
摘自 http://www.aboutyun.com/thread-8130-1-1.html.http://www.dataguru.cn/forum.php?mod=viewthread& ...
- pat L2-006. 树的遍历
L2-006. 树的遍历 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历 ...