MooseFS正式的推出是在2008-05-30,到2009-10-12为止,最新的版本是1.5.12。
mooseFS是一款网络分布式文件系统。它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源。MFS也像其他类unix文件系统一样,包含了层级结构(目录树),存储着文件属性(权限,最后访问和修改时间),可以创建特殊的文件(块设备,字符设备,管道,套接字),符号链接,硬链接。
mooseFS系统的组成
1.master(元数据服务器)
master负责在整个系统中管理数据。是整个系统的维护者。但是它有个弱点就是master只有一个!也就是说如果master坏掉,整个系统将停止工作!不过这算不上致命弱点,因为我们做好数据备份以后,恢复master是很简单的事。
2.chunkserver(数据存储服务器)
chunkserver是mfs系统中的数据存储者。真正的用户数据按照算法被分成chunk,并分发到各个chunkserver上。这样就保证了数据的安全性。
3.client
凡是使用mfs文件系统的机器都可以被称为client。client是mfs系统的使用者。当client把mfs文件系统挂载到本机以后,它可以像使用一个普通的磁盘分区一样,来使用mfs。
试验环境
本文只介绍moosefs的部署与应用,出于试验的目的,并没有考虑性能因素,因此所有的服务器均使用虚拟机来实现。以后有机会做单独的物理服务器,然后对其性能进行测试。
拓扑图
备注:
(1) chunkserver1-4 均添加了一块虚拟的磁盘sda(磁盘空间一定要大于1G,我这里设置了4G),挂载到系统的/data下。所有服务器均升级内核为2.6.18-164本版,为什么要升级内核,下文会有介绍。
(2) 所有服务器均安装了完整版的mfs组件
安装与配置
安装mfs的前提条件
由于mfs的客户端程序也就是加载mfs磁盘系统的命令是使用fuse编写的,因此只要是想挂载mfs的服务器,必要的前提条件就是先安装fuse,这样编译mfs的时候才能顺利通过。另外一点需要注意:linux 2.6.18-164.e15 版本的linux内核中已经内置了fuse模块。但在该版本之前的linux内核中是不包含这个模块的。另fuse 从2.8.0-pre1 版本的源码包中去掉了fuse系统模块的源码部分,原因就是上一点提到的。这样我们在编译安装当前最新版本的fuse(2.8以上版本) 且正在使用的linux内核版本低于2.6.18-164.e15版本,则系统中是不包含fuse模块的。
解决的方法:
1、升级系统内核为2.6.18-164版本
为了方便起见直接利用yum升级系统内核即可。yum install kernel
安装成功后需重启系统
2、使用fuse 2.7x版本编译安装
该版本的fuse中包含了linux内核需要的fuse模块,配置编译选项时指定 –enable-kernel-module 选项,make的时候就会编译相应的fuse模块,make intall会将fuse.ko复制到 /lib/modules/`uname -r`/kernel/fs/fuse/ 目录下 安装后利用
# modprobe -l | grep fuse
/lib/modules/2.6.18-128.el5xen/kernel/fs/fuse/fuse.ko
查看是否正常安装
3、利用yum安装当前内核版本的fuse模块
yum install -y dkms-fuse dkms
安装fuse
如果只编译元数据服务端或数据存储服务端的话是没有必要安装fuse的。只有mfsmount需要fuse支持(编译时需要fuse的开发包,使用mfsmount挂载时需要fuse.ko系统模块)。可以使用源码或yum两种方式安装fuse
1、源码安装
# wget
# tar -xvzf fuse-2.8.1.tar.gz
# cd fuse-2.8.1
# ./configure –prefix=/usr/ –libdir=/usr/lib64
# make && make install
由于我系统为64位,因此在编译fuse时将lib目录定为/usr/lib64。这样在下面编译安装mfs时就不会因为找不到fuse的lib文件报错了。
2、yum安装
# yum install -y fuse fuse-devel
安装mfs
# useradd mfs -s /sbin/nologin
# ./configure –prefix=/usr/local/mfs –with-default-user=mfs –with-default-group=mfs –enable-mfsmount
# make && make install
查看安装后目录结构
# ll /usr/local/mfs/
total 20
drwxr-xr-x 2 root root 4096 Oct 14 15:14 bin
drwxr-xr-x 2 root root 4096 Oct 14 12:13 etc
drwxr-xr-x 2 root root 4096 Oct 14 15:14 sbin
drwxr-xr-x 3 root root 4096 Oct 14 12:13 share
drwxr-xr-x 3 root root 4096 Oct 14 12:13 var
bin – 客户端工具
etc – 元数据服务器,数据存储服务器的配置文件都放在该目录中
sbin – 元数据服务器端程序mfsmaster、数据存储服务器端服务程序mfschunkserver
share – 文档
var – 元数据目录(可在配置文件中自定义到其他目录)
配置master(元数据服务器)
IP:192.168.108.108
[root@master~]#vi/usr/local/mfs/etc/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=192.168.108.108
#MATOCS_LISTEN_PORT=9420
#MATOCU_LISTEN_HOST=*
#MATOCU_LISTEN_PORT=9421
#CHUNKS_LOOP_TIME=300
#CHUNKS_DEL_LIMIT=100
#CHUNKS_REP_LIMIT=15