一,安装环境安装常用库yum -y install gcc zlib-devel zlib fuse fuse-devel fuse-libs ntp下载,解压mfs :wget http: mirror
在开始配置以前咱们说下实验环境,我本地测试使用了5台机器,一台master,两台chunkserver,两台:client:,还有就是关闭下防火墙,以免影响实验结果:
master:192.168.20.210
chunkserver1:192.168.20.211
chunkserver2:192.168.20.212
client:192.168.20.213
client:192.168.20.214
其实三台机器就可以了,mfs并不严格要求你说master和chunkserver以及client不能跑在同一台器,而实际情况笔者也确实这样试过没啥问题。但是考虑的系统的安全稳定还是建议master单独跑一台,并做好备份,chunkserver和client就可以看具体需求了。
一,安装环境(所有机器都要安装):
安装常用库
yum -y install gcc zlib-devel zlib fuse fuse-devel fuse-libs ntp
下载,解压mfs :
wget http://mirror.cnop.net/moosefs/moosefs-2.0.81-1.tar.gz
或
wget http://mirror2.cnop.net/moosefs/moosefs-2.0.81-1.tar.gz
tar -zxvf moosefs-2.0.81-1.tar.gz
cd moosefs-2.0.81-1
创建mfs用户和组:
useradd mfs -s /sbin/nologin
安装mfs:
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
make && make install
mfs系统说明:
mfs系统配置起来特别简单,下面就由我来向您展示一下mfs的神奇魅力。先简单说一下mfs的目录结构。如果您也和我使用一样的编译参数。那么进入/usr/local/mfs你会发现bin,etc,sbin,share,var几个简洁的目录:
bin:mfs客户端工具的目录
sbin:mfs服务端工具目录
etc:mfs配置文件所在的目录包括master和chunkserver
share:这个就不用说了,帮助文件目录
var:数据文件目录。
二,master配置
第一步做好后进入相关目录,
cd /usr/local/mfs/etc/mfs
用到的文件etc下的mfsmaster.cfg,用到的工具sbin下的mfsmaster,先来看mfsmaster.cfg
# WORKING_USER = mfs
# WORKING_GROUP = mfs
# LOCK_FILE = /var/run/mfs/mfsmaster.pid
# DATA_PATH = /usr/local/mfs/var/mfs
# SYSLOG_IDENT = mfsmaster
# BACK_LOGS = 50
# REPLICATIONS_DELAY_INIT = 300
# REPLICATIONS_DELAY_DISCONNECT = 3600
# MATOCS_LISTEN_HOST = *
# MATOCS_LISTEN_PORT = 9420
# MATOCU_LISTEN_HOST = *
# MATOCU_LISTEN_PORT = 9421
# CHUNKS_LOOP_TIME = 300
# CHUNKS_DEL_LIMIT = 100
# CHUNKS_REP_LIMIT = 15
选项似乎挺多,其实我们第一次可以只关注一句
# MATOCS_LISTEN_HOST = * 改成MATOCS_LISTEN_HOST = 192.168.20.210
去掉#,把*换成master的ip,就这么简单,保存,退出就可以了。这里顺便说一下mfs的配置文件,虽然默认都加着#也就是说不起作用,但是未编辑过的配置文件里记录的参数,也是系统未配置时运行的默认参数,这点注意。
启动master
cd /usr/local/mfs/var/mfs
cp metadata.mfs.empty metadata.mfs
/usr/local/mfs/sbin/mfsmaster
注意:上面cp必须要执行,不然会出现无法找到metadata.mfs文件提示,Metadata记录文件的大小、文件的属性、文件的位置,也包括非规则文件的系统,如目录、sockets、管道和设备。
之后就可以去系统日志看下master的运行情况。
停止master的指令
/usr/local/mfs/sbin/mfsmaster stop
小技巧:如果觉得每次都输这么长的命令麻烦的话,可以把它加入到path:
export PATH=/usr/local/mfs/sbin:/usr/local/mfs/sbin:$PATH
以后再控制master直接用mfsmaster或者mfsmaster -s是不是很方便?
开机启动我们可以把下面这条加到/etc/rc.local里(根据实际情况添哟):
/usr/local/mfs/sbin/mfsmaster
三,chunkserver配置(实际保存数据的服务器)
安装软件,不再陈述,请参考第一步,这里以其中一台192.168.20.211为例用到的文件etc下的mfschunkserver.cfg和mfshdd.cfg(软件安装好后没有相关文件可拷贝同目录下的disk对应文件重新命名下) 先来看mfschunkserver.cfg:
# WORKING_USER = mfs
# WORKING_GROUP = mfs
# DATA_PATH = /usr/local/mfs/var/mfs
# LOCK_FILE = /var/run/mfs/mfschunkserver.pid
# SYSLOG_IDENT = mfschunkserver
# BACK_LOGS = 50
# MASTER_RECONNECTION_DELAY = 30
# MASTER_HOST = mfsmaster
# MASTER_PORT = 9420
# MASTER_TIMEOUT = 60
# CSSERV_LISTEN_HOST = *
# CSSERV_LISTEN_PORT = 9422
# CSSERV_TIMEOUT = 60
# CSTOCS_TIMEOUT = 60
# HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg
选项比mfsmaster.cfg不少,不过不怕,我们只关心下面一行:
# MASTER_HOST = mfsmaster 改成MASTER_HOST = 192.168.20.210
再来看mfshdd.cfg。顾名思义就是mfs的硬盘配置。
/mnt/hd1
/mnt/hd2
/mnt/hd3
/mnt/hd4
把这四行都删除了吧,因为在我们机器上不存在。这里我只写了一行/data,这个分区在我机器上是一块单独的硬盘,专门用来存放数据的。
记得重新定义一下/data的权限哟,要不mfs操作不了。
chown -R mfs.mfs /data
启动chunkserver
/usr/local/mfs/sbin/mfschunkserver
四,配置客户端client
客户端严格来说,已经算不上配置了,充其量也就是一个应用。客户端可以是任意一台需要使用分布式系统,并且安装了mfsmount的服务器。对于客户端来说mfs只是挂载方式不一样,挂载完了和普通的硬盘分区没啥区别。到底怎么挂载呢?
这里以其中一台192.168.20.213为例,安装mfs软件这里也不再陈述,请参考第一步,用到的命令为mfsmount,这个工具位于bin目录下。
# mkdir /data
#/usr/local/mfs/bin/mfsmount /data -H 192.168.20.210
mfsmount这个命令常用的参数就两个:
-h指定服务器。
-w指定本地挂载目录。
我们可以把下面这条加到/etc/rc.local,让其开机挂载:
/usr/local/mfs/bin/mfsmount /data -H 192.168.20.210
同样的方式挂载另外一台192.168.20.214机器。
以后就可以对213上面/data这个目录进行正常的读写了,你所写入的任何东东都会分布到其它多个chunkserver的机器上,以保证数据的安全性。
在/usr/local/mfs/bin目录还有一些其它的工具,帮你了解mfs运行情况,并设定mfs,有时间可以多看下。