MooseFS是一种Linux下的开源半分布式文件系统,以下简称为MFS。目前许多企业都在使用它。它之所以使用如此广泛是因为有如下优点:
安装和配置简单方便
可靠性高(数据的多个拷贝被存储在多个不同的服务器上)
通过添加新的服务器或硬盘就可以实现容量的动态扩展
删除的数据可在一定时间内保留(类似windows里面的回收站机制,数据保留时间需要配置)
以上优点不难看出,MFS虽然是开源的,但是它功能上不逊色于专业的存储系统。下面我们来具体学习安装和配置MFS。
整个文件系统包括如下几个角色:
管理服务器-Master Server
元数据日志服务器-Metalogger Server
数据存储服务器-Chunk Server
客户端-Client
每个角色的作用如下:
准备工作
准备服务器:
OS: Centos 5.8 x86_64
管理服务器:192.168.0.201
元数据日志服务器:192.168.0.202
数据存储服务器:192.168.0.203
数据存储服务器:192.168.0.204
客户端:192.168.0.205
下载安装包:
wget http://pro.hit.gemius.pl/hitredir/id=p4CVHPOzkVa0JJIK.m0Ee6dyHZEgoQb1KaiPmVK29EX.M7/url=moosefs.org/tl_files/mfscode/mfs-1.6.26.tar.gz
添加相关用户与用户组:
groupadd mfs
useradd -g mfs mfs -s /sbin/nologin
编译安装MFS
整个MFS安装很简单,只有如下几步。
tar zxvf mfs-1.6.26.tar.gz
cd mfs-1.6.26
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount
make
make install
注意客户端部分在安装之前,需要查看是否安装了fuse。没有安装请执行如下部分:
yum install fuse
yum install fuse-devel
配置使用
管理服务器(192.168.0.201):
mfsmaster.cfg的配置
cd /usr/local/mfs/etc
cp mfsmaster.cfg.dist mfsmaster.cfg
vim mfsmaster.cfg
mfsmaster.cfg文件内容如下,
带#号的均为默认配置,不带#号的需手工配置。
# WORKING_USER = mfs 运行mfsmaster的用户
# WORKING_GROUP = mfs 运行mfsmaster的组
# SYSLOG_IDENT = mfsmaster 是Master Server在syslog中的标识
# LOCK_MEMORY = 0 是否执行mlockall()以避免mfsmaster进程溢出
# NICE_LEVEL = -19 运行的优先级
# EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg 被挂接目录及其权限控制文件的存放路径
# TOPOLOGY_FILENAME = /usr/local/mfs/etc/mfstopology.cfg
# DATA_PATH = /usr/local/mfs/var/mfs 数据存放路径,存放了三类文件,changelog、sessions、stats
# BACK_LOGS = 50 元数据的改变日志文件数量
# BACK_META_KEEP_PREVIOUS = 1
# REPLICATIONS_DELAY_INIT = 300 延迟复制时间
# REPLICATIONS_DELAY_DISCONNECT = 3600 Chunk Server断开复制的延时
# MATOML_LISTEN_HOST = * 元数据日志服务器监听的IP地址
# MATOML_LISTEN_PORT = 9419 元数据日志服务器监听的端口地址
# MATOCS_LISTEN_HOST = * 用于Chunk Server连接的IP地址
# MATOCS_LISTEN_PORT = 9420 用于Chunk Server连接的端口地址
# MATOCL_LISTEN_HOST = * 用于客户端挂接连接的IP地址
# MATOCL_LISTEN_PORT = 9421 用于客户端挂接连接的端口地址
# CHUNKS_LOOP_CPS = 100000
# CHUNKS_LOOP_TIME = 300 chunks的回环频率
# CHUNKS_SOFT_DEL_LIMIT = 10
# CHUNKS_HARD_DEL_LIMIT = 25
# CHUNKS_WRITE_REP_LIMIT = 2 在一个循环里复制到一个Chunk Server的最大chunks数目
# CHUNKS_READ_REP_LIMIT = 10 在一个循环里从一个Chunk Server中复制的最大chunks数目
# REJECT_OLD_CLIENTS = 0 弹出低版本的客户端挂接
# deprecated:
# CHUNKS_DEL_LIMIT - use CHUNKS_SOFT_DEL_LIMIT instead
# LOCK_FILE - lock system has been changed, and this optionis used onlyto search for old lockfile
mfsexports.cfg的配置
cd /usr/local/mfs/etc
cp mfsexports.cfg.dist mfsexports.cfg
vim mfsexports.cfg
mfsexports.cfg文件的内容如下:
该配置文件中每个条目分为三部分,客户端IP地址、挂接的目录、客户端拥有的权限。默认带#号的配置是不生效的。
* / rw,alldirs,maproot=0
#192.168.1.0/24 / rw,alldirs,maproot=0,password=passcode
#10.0.0.0-10.0.0.5 /test rw,maproot=nobody,password=test
#10.1.0.0/255.255.0.0 /public rw,mapall=1000:1000
#10.2.0.0/16 / rw,alldirs,maproot=0,mintrashtime=2h30m,maxtrashtime=2w
复制元数据文件
cd /usr/local/mfs/var/mfs/
mv metadata.mfs.empty metadata.mfs
与管理服务器相关的命令:
启动命令:/usr/local/mfs/sbin/mfsmaster start
安全停止命令:/usr/local/mfs/sbin/mfsmaster �Cs
更多帮助信息:/usr/local/mfs/sbin/mfsmaster �Ch
元数据日志服务器(192.168.0.202):
mfsmetalogger.cfg的配置
cd /usr/local/mfs/etc
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
vim mfsmetalogger.cfg
mfsmetalogger.cfg文件的内容如下:
带#号的均为默认配置,不带#号的需手工配置。
# WORKING_USER = mfs
# WORKING_GROUP = mfs
# SYSLOG_IDENT = mfsmetalogger
# LOCK_MEMORY = 0
# NICE_LEVEL = -19
# DATA_PATH = /usr/local/mfs/var/mfs
# BACK_LOGS = 50
# BACK_META_KEEP_PREVIOUS = 3
# META_DOWNLOAD_FREQ = 24 元数据备份文件下载请求频率,默认是24小时。
# MASTER_RECONNECTION_DELAY = 5
MASTER_HOST = 192.168.0.201 此处需要修改为Master Server的IP
# MASTER_PORT = 9419
# MASTER_TIMEOUT = 60
# deprecated, to be removed in MooseFS 1.7
# LOCK_FILE = /var/run/mfs/mfsmetalogger.lock
与元数据日志服务器相关的命令:
启动命令:/usr/local/mfs/sbin/mfsmetalogger start
安全停止命令:/usr/local/mfs/sbin/mfsmetalogger �Cs
更多帮助信息:/usr/local/mfs/sbin/mfsmetalogger �Ch
数据存储服务器(192.168.0.203和192.168.0.204):
mfschunkserver.cfg的配置
cd /usr/local/mfs/etc
cp mfschunkserver.cfg.dist mfschunkserver.cfg
vim mfschunkserver.cfg
mfschunkserver.cfg文件的内容如下:
带#号的均为默认配置,不带#号的需手工配置。
# WORKING_USER = mfs
# WORKING_GROUP = mfs
# SYSLOG_IDENT = mfschunkserver
# LOCK_MEMORY = 0
# NICE_LEVEL = -19
# DATA_PATH = /usr/local/mfs/var/mfs
# MASTER_RECONNECTION_DELAY = 5
# BIND_HOST = *
MASTER_HOST = 192.168.0.201 元数据服务器的名称或地址,可以是主机名或IP地址
MASTER_PORT = 9420
# MASTER_TIMEOUT = 60
# CSSERV_LISTEN_HOST = *
# CSSERV_LISTEN_PORT = 9422 该端口用于与其他数据存储服务器间的连接,通常是数据复制。
# HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg 分配给MFS使用的磁盘空间配置文件的位置。
# 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
mfshdd.cfg的配置
cd /usr/local/mfs/etc
cp mfshdd.cfg.dist mfshdd.cfg
vim mfshdd.cfg
mfshdd.cfg文件的内容如下:
/data
上面的/data是一个MFS分区,需要将此分区的属主改为mfs。
chown �CR mfs.mfs /data
与数据存储服务器相关的命令:
启动命令:/usr/local/mfs/sbin/mfschunkserver start
安全停止命令:/usr/local/mfs/sbin/mfschunkserver �Cs
更多帮助信息:/usr/local/mfs/sbin/mfschunkserver �Ch
客户端(192.168.0.205):
创建挂接点
mkdir �Cp /data/mfs
挂载MFS的命令
/usr/local/mfs/bin/mfsmount /data/mfs -H 192.168.0.201
查看挂载情况:
查看挂载信息:
卸载MFS挂载:
umount /data/mfs
查看更多帮助信息:
/usr/local/mfs/bin/mfsmount �Ch