CentOS 6.1 x64部署MFS

CentOS 6.1 x64部署MFS


                                                                时间:2012-8-2
                                                                  QQ群:18731199

简介:
MooseFS(Moose File System,mfs)是一种分布式文件系统,它将数据分布在网络中的不同服务器上,支持FUSE,客户端挂载后可以作为一个 普通的Unix 文件系统使用MooseFS。
MooseFS中共有四种角色:元数据服务器master server、元数据日志服务器metalogger server、存储服务器chunkserver、客户端client。
元数据服务器负责各个存储服务器的管理、文件读写调度、文件空间回收以及恢复、多节点拷贝。
元数据日志服务器负责备份主控服务器的元数据、变化日志文件,文件类型为changelog_ml.*.mfs,以便在主控服务器出问题的时候可以恢复。
存储服务器负责提供存储空间,并为客户提供数据传输。
客户端则通过fuse挂接主控服务器上所管理的存储块服务器,可以像操作本地文件一样操作MooseFS文件系统中的文件。
以下是来自官方的MFS工作方式图解:


一、配置思路

1、自1.6.5之后,MooseFS提供了metalogger服务,默认每24小时自动获得主控服务器的所有元数据和更改日志,可以作为备份主控。
2、利用脚本在元数据和元数据日志服务器之间执行服务检测如果发现元数据服务器故障,metalogger服务器将接管master提供服务;提供服务的IP为虚拟IP,在故障出现后metalogger将接管虚拟IP地址;
二、实验环境:
系统:全部选用CentOS6.1 x64系统,为了更加快捷的安装过程中所依赖的库先配置好yum、编译环境
实验服务器信息:
提供服务的虚拟IP:        10.103.9.3
master                                10.103.9.4
metalogger                        10.103.9.5
chunkserver                        10.103.9.20
chunkserver1                        10.103.9.21
client                                10.103.9.30

三、安装MooseFS集群
到官网下载程序:http://www.moosefs.org/download.html
使用的版本为: 1.6.25
1、master安装
安装依赖包
[root@mfsm-9-4 tmp]#yum -y install zlib-devel
添加mfs用户、组
[root@mfsm-9-4 tmp]# useradd mfs
[root@mfsm-9-4 tmp]# yum -y install fuse fuse-devel
解压
[root@mfsm-9-4 tmp]# tar xvf mfs-1.6.25.tar.gz
[root@mfsm-9-4 tmp]# cd mfs-1.6.25
[root@mfsm-9-4 mfs-1.6.25]# ./configure --prefix=/usr/local/mfsm \
> --with-default-user=mfs \
> --with-default-group=mfs \
> --disable-mfschunkserver \
> -- --mandir=/usr/share/man/
注解:
--prefix=/usr/local/mfsm 指定程序安装目录
--with-default-user=mfs  指定运行程序的默认用户
--with-default-group=mfs 指定运行程序的默认组
--disable-mfschunkserver 不安装mfschunkserver
--mandir=/usr/share/man/        man文件安装路径
[root@mfsm-9-4 mfs-1.6.25]# make && make install
为了方便使用配置环境变量,标红部分
[root@mfsm-9-4 ~]# vim ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATHHOME/bin:/usr/local/mfsm/sbin/

export PATH
[root@mfsm-9-4 ~]# source ~/.bash_profile
master是MooseFS的核心,应当安装在具有高稳定性、高配置的服务器上。最关键的是内存要足够大,MooseFS对内存的要求与存放的文件个数有关。按照官方的数据,存储块服务器上的1百万文件,主控服务器需要300M内存存放相关的信息。硬盘也要大,受存储块服务器上文件、块的个数(影响元数据文件大小)、文件变更数(影响changelog)的影响;2500万文件、50小时的变更日志需要20G空间。对CPU也有较高的要求,受MooseFS中文件的操作频率影响。
2、metalogger安装
安装依赖包
[root@mfsm-9-5 tmp]#yum -y install zlib-devel fuse fuse-devel
添加mfs用户、组
[root@mfsm-9-5 tmp]# useradd mfs
解压
[root@mfsm-9-5 tmp]# tar xvf mfs-1.6.25.tar.gz
[root@mfsm-9-5 tmp]# cd mfs-1.6.25
[root@mfslog-9-5 mfs-1.6.25]# ./configure --prefix=/usr/local/mfslog \
> --with-default-user=mfs \
> --with-default-group=mfs \
> --disable-mfschunkserver \
> -- --mandir=/usr/share/man/

注解:同master
安装
[root@mfsm-9-5 mfs-1.6.25]# make && make install
配置环境变量
[root@mfsm-9-5 ~]# vim ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
       . ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATHHOME/bin:/usr/local/mfslog/sbin/
export PATH
[root@mfsm-9-5 ~]# source ~/.bash_profile
10.103.9.5元数据日志服务器的同时,也是备份主控服务器,使用跟主控服务器相同的配置。
        3、chunkserver安装
安装依赖包
[root@mfsm-9-20 tmp]#yum -y install zlib-devel
添加mfs用户、组
[root@mfsm-9-20 tmp]# useradd mfs
解压
[root@mfsm-9-20 tmp]# tar xvf mfs-1.6.25.tar.gz
[root@mfsm-9-20 tmp]# cd mfs-1.6.25
config.guess  config.sub    configure     
[root@mfs-d-9-20 mfs-1.6.25]# ./configure --prefix=/usr/local/mfsd \
> --with-default-user=mfs \
> --with-default-group=mfs \
> --disable-mfsmaster \
> --disable-mfsmount \
> --disable-mfscgi \
> --disable-mfscgiserv 
> -- --mandir=/usr/share/man/
注解:
--disable-*为不安装部分
[root@mfs-d-9-20 mfs-1.6.25]# make && make install
配置环境变量
PATH=$PATHHOME/bin:/usr/local/mfsd/sbin/
[root@mfs-d-9-20 mfs-1.6.25]# source ~/.bash_profile
另外一台chunkserver同上安装即可
存储服务器应当提供1G以上的可用空间,为了更方便的管理chunkserver空间,加入MFS集群的空间最好是单独的分区。
四、配置MooseFS集群
1、master配置
安装完master配置文件在/usr/local/mfsm/etc(--prefix=/usr/local/mfsm定义)
里面有master的默认配置文件:mfsmaster.cfg.dist和权限控制文件mfsexports.cfg.dist
[root@mfsm-9-4 etc]# mv mfsmaster.cfg.di3st mfsmaster.cfg
[root@mfsm-9-4 etc]# mv mfsexports.cfg.dist mfsexports.cfg
mfsmaster.cfg详解
[root@mfsm-9-4 etc]# vim mfsmaster.cfg
# WORKING_USER = mfs   #运行mfs的用户#
# WORKING_GROUP = mfs                #运行mfs的组账户#
# SYSLOG_IDENT = mfsmaster        #master server 在syslog中的标识,说明是由master serve 产生的#
# LOCK_MEMORY = 0                #是否执行mlockall()以避免mfsmaster 进程溢出(默认为0)
# NICE_LEVEL = -19                #运行的优先级(如果可以默认是-19; 注意: 进程必须是用root启动)
# EXPORTS_FILENAME = /usr/local/mfsm/etc/mfsexports.cfg                #权限控制文件存放的路径
# TOPOLOGY_FILENAME = /usr/local/mfsm/etc/mfstopology.cfg #这是1.6.24增加的新功能,用于运行那些chunkserver允许加入集群?
# DATA_PATH = /usr/local/mfsm/var/mfs #数据存放路径,此目录下大致有三类文件,changelog,sessions和stats;
# BACK_LOGS = 50 #metadata 的改变log 文件数目(默认是50) #
# REPLICATIONS_DELAY_INIT = 300 延迟复制的时间(默认是300s)
# REPLICATIONS_DELAY_DISCONNECT = 3600 #chunkserver 断开的复制延迟(默认是3600);
# MATOML_LISTEN_HOST = * # metalogger 监听的IP 地址(默认是*,代表任何IP)
# MATOML_LISTEN_PORT = 9419 #metalogger 监听的端口地址(默认是9419)
# MATOCS_LISTEN_HOST = * #用于chunkserver 连接的IP 地址(默认是*,代表任何IP)
# MATOCS_LISTEN_PORT = 9420 #用于chunkserver 连接的端口地址(默认是9420)
# MATOCL_LISTEN_HOST = * #用于客户端挂接连接的IP 地址(默认是*,代表任何IP)
# MATOCL_LISTEN_PORT = 9421 #用于客户端挂接连接的端口地址(默认是9421)
# CHUNKS_LOOP_CPS = 100000
# CHUNKS_LOOP_TIME = 300 # chunks 的回环频率(默认是:300 秒)
# CHUNKS_SOFT_DEL_LIMIT = 10 # 
# CHUNKS_HARD_DEL_LIMIT = 25
# CHUNKS_WRITE_REP_LIMIT = 2
# CHUNKS_READ_REP_LIMIT = 10
# REJECT_OLD_CLIENTS = 0 #弹出低于1.6.0 的客户端挂接(0 或1,默认是0)
# deprecated: CHUNKS_DEL_LIMIT - use CHUNKS_SOFT_DEL_LIMIT instead
# deprecated, to be removed in MooseFS 1.7
# LOCK_FILE = /var/run/mfs/mfsmaster.lock #lock文件的路径
注:以#注释的即为默认值,master配置文件保持默认即可

mfsexports.cfg 权限控制文件的配置
10.103.9.0/24   /       rw,alldirs,maproot=0,password=123456
该文件每一个条目分为三部分:
第一部分:客户端的ip 地址
第二部分:被挂接的目录
第三部分:客户端拥有的权限

1)
地址可以指定的几种表现形式:
* 所有的ip 地址
n.n.n.n 单个ip 地址
n.n.n.n/b IP 网络地址/位数掩码
n.n.n.n/m.m.m.m IP 网络地址/子网掩码
f.f.f.f-t.t.t.t IP 段

2)
目录部分需要注意两点:
/ 标识MooseFS 根;
. 表示MFSMETA 文件系统

3)
权限部分:
ro 只读模式共享
rw 读写的方式共享
alldirs 许挂载任何指定的子目录
maproot 映射为root,还是指定的用户
password 指定客户端密码
启动master server
master server 可以单独启动(所谓单独启动就是在没有数据存储服务器、log服务器(chunkserver、metalogger)的时候也可以启动,但是不能存储数据,chunkserver 启动后会自动加入)。安装配置完MFSM 后,cp 一个metadata即可启动它。
# cp /usr/local/mfsm/var/mfs/metadata.mfs.empty /usr/local/mfsm/var/mfs/metadata.mfs
[root@mfsm-9-4 etc]# mfsmaster start #已经配置好环境变量
或者
[root@mfsm-9-4 mfs]# /usr/local/mfsm/sbin/mfsmaster start
[root@mfsm-9-4 mfs]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:9419                0.0.0.0:*                   LISTEN      31818/mfsmaster     
tcp        0      0 0.0.0.0:9420                0.0.0.0:*                   LISTEN      31818/mfsmaster     
tcp        0      0 0.0.0.0:9421                0.0.0.0:*                   LISTEN      31818/mfsmaster

停止master server
禁止用kill来停止服务,利用mfsmaster �Cs 或者 mfsmaster stop来安全停止master serve
因为要提供容灾,所以对客户端和其他服务器使用的地址为虚拟IP10.103.9.3
#ifconfig eth0:1 10.103.9.3 netmask 255.255.255.0
master server监控平台
[root@mfsm-9-4 ~]# mfscgiserv start
或者
[root@mfsm-9-4 ~]# /usr/local/mfsm/sbin/mfscgiserv start
启动后,在浏览器里输入:http://10.103.9.3:9425
2、metalogger配置
安装完metalogger配置文件在/usr/local/mfslog/etc(--prefix=/usr/local/mfsm定义)
此服务只有一个配置文件:mfsmetalogger.cfg
#cd /usr/local/mfslog/etc
# mv mfsmetalogger.cfg.dist mfsmetalogger.cfg
配置文件详解(相同部分请参考master配置文件):
# vim mfsmetalogger.cfg 
# WORKING_USER = mfs
# WORKING_GROUP = mfs
# SYSLOG_IDENT = mfsmetalogger
# LOCK_MEMORY = 0
# NICE_LEVEL = -19
# DATA_PATH = /usr/local/mfslog/var/mfs
# BACK_LOGS = 50
# META_DOWNLOAD_FREQ = 24        #元数据备份文件下载请求频率。默认为24小时,即每隔24小时从元数据服务器(MASTER)下载一个metadata.mfs.back 文件。当元数据服务器关闭或者出故障时,matedata.mfs.back 文件将消失,那么要恢复整个mfs,则需从metalogger 服务器取得该文件。请特别注意这个文件,它与日志文件一起,才能够恢复整个被损坏的分布式文件系统。
# MASTER_RECONNECTION_DELAY = 5
# MASTER_HOST = mfsmaster #mfsmaster地地址信息,或者可以是Master 的IP,当使用名字的时候请确定能否正确解析
# MASTER_PORT = 9419 #连接master的端口
# MASTER_TIMEOUT = 60 
# deprecated, to be removed in MooseFS 1.7
# LOCK_FILE = /var/run/mfs/mfsmetalogger.lock

需要修改的地方:
# META_DOWNLOAD_FREQ = 1 #下载频率设置为没一小时
META_DOWNLOAD_FREQ = 1  #注意得去掉#
绑定hosts
#echo "10.103.9.3 mfsmaster"  >> /etc/hosts 
启动metalogger服务
[root@mfslog-9-5 etc]# mfsmetalogger start         #同样需要配置好环境变量#
working directory: /usr/local/mfslog/var/mfs
lockfile created and locked
initializing mfsmetalogger modules ...
mfsmetalogger daemon initialized properly
或者
[root@mfslog-9-5 etc] /usr/local/mfslog/sbin/mfsmetalogger start
检查:
[root@mfslog-9-5 etc]# ps -ef|grep mfs
mfs      31159     1  0 12:17 ?        00:00:00 mfsmetalogger start
root@mfslog-9-5 etc]# lsof -i:9419
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mfsmetalo 31159  mfs    6u  IPv4  33247      0t0  TCP 10.103.9.5:41142->mfsmaster:9419 (ESTABLISHED)

停止metalogger服务
[root@mfslog-9-5 etc]# mfsmetalogger stop
或者
[root@mfslog-9-5 etc]# /usr/local/mfslog/sbin/mfsmetalogger stop

3、chunkserver 配置
安装完chunkserver配置文件在/usr/local/mfsd/etc/(--prefix=/usr/local/mfsm定义)
此服务只有两个配置文件:主配置文件mfschunkserver.cfg 和共享控制文件mfshdd.cfg
#cd /usr/local/mfsd/etc/
[root@mfs-d-9-20 etc]# mv mfschunkserver.cfg.dist mfschunkserver.cfg  
[root@mfs-d-9-20 etc]# mv mfshdd.cfg.dist mfshdd.cfg
[root@mfs-d-9-20 etc]# vim mfschunkserver.cfg
# WORKING_USER = mfs
# WORKING_GROUP = mfs
# SYSLOG_IDENT = mfschunkserver
# LOCK_MEMORY = 0
# NICE_LEVEL = -19
# DATA_PATH = /usr/local/mfsd/var/mfs
# MASTER_RECONNECTION_DELAY = 5
# BIND_HOST = *
# MASTER_HOST = mfsmaster                #master的地址,可以是主机名或者IP
# MASTER_PORT = 9420
# MASTER_TIMEOUT = 60
# CSSERV_LISTEN_HOST = *
# CSSERV_LISTEN_PORT = 9422        #这个监听端口用于与其它数据存储服务器间的连接,通常是数据复制
# HDD_CONF_FILENAME = /usr/local/mfsd/etc/mfshdd.cfg #共享配置文件
# HDD_TEST_FREQ = 10
# deprecated, to be removed in MooseFS 1.7
# LOCK_FILE = /var/run/mfs/mfschunkserver.lock
# BACK_LOGS = 50
# CSSERV_TIMEOUT = 5
主配置文件默认即可
[root@mfs-d-9-20 etc]# vim mfshdd.cfg
/mfs    #提供共享的分区,为了更好的控制共享空间最好是独立磁盘或者分区
如果没有预先预留好专用磁盘或者分区,也可以使用一下方法:
创建一个10G        的空文件
[root@mfs-d-9-20 ~]# dd if=/dev/zero of=/var/mfsd bs=1024M count=10
在创建的空文件上创建文件系统
[root@mfsd1-9-20 ~]# mkfs.ext4 /var/mfsd 
mke2fs 1.41.12 (17-May-2010)
/var/mfsd is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
创建挂载点
[root@mfsd1-9-20 ~]# mkdir /mfs
挂载
[root@mfsd1-9-21 ~]# mount -o loop /var/mfsd /mfs/
查看
[root@mfsd1-9-21 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              20G  1.2G   18G   6% /
tmpfs                 244M     0  244M   0% /dev/shm
/dev/sda1              97M   27M   66M  29% /boot
/dev/sdb1              20G  180M   19G   1% /home
/dev/sda6             2.0G   68M  1.9G   4% /tmp
/dev/sda3              20G   11G  8.5G  55% /var
/var/mfsd             9.9G  151M  9.2G   2% /mfs
赋权给mfs
[root@mfsd1-9-20 etc]# chown mfs:mfs -R /usr/local/mfsd/var/   
[root@mfsd1-9-20 etc]# chown mfs:mfs /mfs/
绑定Hosts解析
[root@mfsd1-9-20etc]# echo "10.103.9.3 mfsmaster" >> /etc/hosts
另外一天以同样的方法配置好
启动mfs chunkserver服务
[root@mfsd1-9-20 etc]# mfschunkserver start  #配置好环境变量
或者
[root@mfsd1-9-20 etc]# /usr/local/mfsd/sbin/mfschunkserver start
working directory: /usr/local/mfsd/var/mfs
lockfile created and locked
initializing mfschunkserver modules ...
hdd space manager: scanning folder /mfs/ ...
hdd space manager: scanning complete
hdd space manager: /mfs/: 0 chunks found
hdd space manager: scanning complete
main server module: listen on *:9422
no charts data file - initializing empty charts
mfschunkserver daemon initialized properly
查看是否启动成功
[root@mfsd1-9-20 etc]# netstat �Cnltp 
停止mfs chunkserver服务
[root@mfsd1-9-20 etc]# mfschunkserver stop
sending SIGTERM to lock owner (pid:3130)
waiting for termination ... terminated
或者
[root@mfsd1-9-20 etc]# /usr/local/mfsd/sbin/mfschunkserver stop
4、MFS client 的安装与使用
[root@mfsc-9-30]# yum -y install fuse fuse-devel
解压下载好的源代码
[root@mfsc-9-30 tmp]# tar xvf mfs-1.6.25.tar.gz
[root@mfsc-9-30 tmp]# cd mfs-1.6.25
[root@mfsc-9-30 ~]# ./configure --prefix=/usr/local/mfsc \
> --with-default-user=mfs \
> --with-default-group=mfs \
> --disable-mfsmaster \
> --disable-mfschunkserver \
> --disable-mfscgi \
> --disable-mfscgiserv \
> --mandir=/usr/share/man
[root@mfsc-9-30 ~]# make && make install
配置环境变量:
[root@mfsc-9-30 ~]# vim ~/.bash_profile 
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATHHOME/bin:/usr/local/mfsc/bin
export PATH
[root@mfsc-9-30 ~]# source ~/.bash_profile
[root@mfsc-9-30 ~]# echo "10.103.9.3 mfsmaster" >> /etc/hosts
[root@mfsc-9-30 ~]# mfsmount /mnt/ -H mfsmaster
mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root
注:挂载点需要是个空目录,否则挂载不成功
四、MooseFS master恢复
备用master服务器使用log服务器代替,从master把mfsmaster.cfg、mfsexports.cfg个配置文件放在/usr/local/mfslog/etc/下
另外把mfsmetalogger.cfg文件中的META_DOWNLOAD_FREQ设置成1,即每小时复制一次metadata.mfs.back文件,减少恢复的延迟时间。
        当master失效时,在log服务器上执行以下操作,进行恢复:
[root@mfslog-9-5]mfsmetarestore �Ca 
[root@mfslog-9-5] ifconfig eth0:1 10.103.9.3 netmask 255.255.255.0
[root@mfslog-9-5]mfsmaster start


你可能感兴趣的:(server,服务器,master,客户端,回收)