MooseFS

 

MooseFS是一种分布式文件系统,其文件系统结构包括以下四种角色:

1、管理服务器managing server (master)

2、元数据日志服务器Metalogger server(Metalogger)

3、数据存储服务器data servers (chunkservers)

4、客户机挂载使用client computers

各角色的作用:

管理服务器:主要对各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝

元数据日志服务器: 主要负责备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在master server出问题的时候接替其进行工作

数据存储服务器:主要负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输。

客户端: 通过fuse内核接口挂接远程管理服务器上所管理的数据存储服务器。

 

在此我看了官方文档才按着官方文档做了一个小实验,也算是对MooseFS了解一下。在此安装moosefs在同一台主机上,虽然有悖分布式文件系统,但是此处只是测试。把MooseFS安装到同一台物理主机上,在这里,并不推荐将备份服务器也安装到这台服务器上(IP:192.168.1.118)。官网上说为了挂接基MooseFS分布式文件客户端主机必须安装fuse软件包官方推荐fuse版本至少在2.6。如果系统没有安装fuse必须手动对其进行安装。在此按照官网上的来做。从源码进行编译安装我们从http://sourceforge.net/project/fuse/取得安装源码。

[root@localhost ~]# tar xf fuse-2.9.3.tar.gz -C /usr/src/

[root@localhost ~]# cd /usr/src

[root@localhost src]# ls

debug  fuse-2.9.3  kernels

[root@localhost fuse-2.9.3]# ./configure

[root@localhost fuse-2.9.3]# make

[root@localhost fuse-2.9.3]# make install

在官网上获得moosefs源码包,解压之后,编译安装。

[root@localhost moosefs-2.0.60]# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs

[root@localhost moosefs-2.0.60]# make

[root@localhost moosefs-2.0.60]# make install

在以上安装的过程中会报缺少依赖包,在此都一一装上。

 

moosefs chunk使用专门磁盘分区是非常必要的-,这样做的好处是便于管理剩余空间。moosefs并不考虑其剩余空间能被另作他用。官网上显示:如果没有单独创建文件系统的条件,可以在文件创建一个文件系统。为了完成测试,我们准备两个G的文件(文件位于目录/storage/mfschunks),并在其上创建文件系统。把他们格式化为ext3,分别挂载在/mnt/mfschunks1和/mnt/mfschunks2.以下具体操作步骤

挂载第一个文件系统

 1、创建目录

[root@localhost ~]# mkdir -p /storage/mfschunks

 2、创建镜像文件mfschunks1

[root@localhost ~]# dd if=/dev/zero of=/storage/mfschunks/mfschunks1 bs=1024 count=1 seek=$((2*1024*1024-1))

 3、创建文件系统

[root@localhost ~]# mkfs -t ext3 /storage/mfschunks/mfschunks1

 4、创建挂接点

[root@localhost ~]# mkdir -p /mnt/mfschunks1

 5、挂接文件系统

[root@localhost ~]# mount -t ext3 -o loop /storage/mfschunks/mfschunks1 /mnt/mfschunks1

挂载第二个文件系统

 1、创建目录

[root@localhost ~]# mkdir -p /storage/mfschunks

 2、创建镜像文件mfschunks1

[root@localhost ~]# dd if=/dev/zero of=/storage/mfschunks/mfschunks2 bs=1024 count=1 seek=$((2*1024*1024-1))

 3、创建文件系统

[root@localhost ~]# mkfs -t ext3 /storage/mfschunks/mfschunks2

 4、创建挂接点

[root@localhost ~]# mkdir -p /mnt/mfschunks2

 5、挂接文件系统

[root@localhost ~]# mount -t ext3 -o loop /storage/mfschunks/mfschunks2 /mnt/mfschunks2

 

启动chunk server之前,要确保mfs有权限读写将要被挂接的分区

[root@localhost ~]# chown -R mfs.mfs /mnt/mfschunks1

[root@localhost ~]# chown -R mfs.mfs /mnt/mfschunks2

 

还需要修改一下/etc/mfs/的配置文件,将.dist去掉就可以了。

[root@localhost etc]# cp mfs/mfsexports.cfg.dist mfs/mfsexports.cfg

[root@localhost etc]# cp mfs/mfsmaster.cfg.dist mfs/mfsmaster.cfg

[root@localhost etc]# cp mfs/mfschunkserver.cfg.dist mfs/mfschunkserver.cfg

[root@localhost etc]# cp mfs/mfshdd.cfg.dist mfs/mfshdd.cfg

在此对以上配置文件说明一下,mfsexports.cfg和mfsmaster.cfg为主控服务master配置文件;mfschunkserver.cfg与mfshdd.cfg为chunk server配置文件。在mfsexports.cfg配置文件内可以修改一些项来给客户端访问权限,如在此处可以配置文件内修改192.168.1.0/24   /   rw,alldirs,maproot=0 表示允许192.168.1.0/24这个网段访问。有关chunkserver的配置文件在mfshdd.cfg内添加/mnt/mfschunks1和/mnt/mfschunks2两项。

 

要想让moosefs的master运行还需要一个文件在/var/lib/mfs之下将metadata.mfs.empty改成,metadata.mfs

[root@localhost mfs]# cd /var/lib/mfs

[root@localhost mfs]# ls

metadata.mfs.empty

[root@localhost mfs]# cp metadata.mfs.empty metadata.mfs

[root@localhost mfs]#

在hosts文件可添加

[root@localhost ~]# vim /etc/hosts

192.168.1.118  mfsmaster

 

运行master server,CGI监控以及chunk server。

[root@localhost ~]# /usr/sbin/mfsmaster start

[root@localhost ~]# /usr/sbin/mfscgiserv

[root@localhost ~]# /usr/sbin/mfschunkserver start

查看一下9425端口是否启动,访问http://192.168.1.118:9425