centos6.3配置MFS服务器

1、简介php

MooseFS(Moose File System,mfs)是一种分布式文件系统,它将数据分布在网络中的不一样服务器上,支持FUSE(用户空间文件系统Filesystem in Userspace,简称FUSE),客户端挂载后能够做为一个 普通的Unix 文件系统使用MooseFS。
MooseFS中共有四种角色: 主控服务器 master server、 主控备份服务器 metalogger server、 存储块服务器 chunkserver、 客户端主机 client。
html

主控服务器  负责各个存储服务器的管理、文件读写调度、文件空间回收以及恢复、多节点拷贝。
主控备份服务器  负责备份主控服务器的元数据、变化日志文件,文件类型为changelog_ml.*.mfs,以便在主控服务器出问题的时候能够恢复。
存储块服务器  负责提供存储空间,并为客户提供数据传输。
客户端则经过fuse挂接主控服务器上所管理的存储块服务器,能够像操做本地文件同样操做MooseFS文件系统中的文件。sql

2、NFS和MFS比较

一、NFS的缺陷

NFS虽然使用简单,但当NFS客户端访问量大时,经过NFS方式共享一个服务器的存储空间,使得NFS服务器不堪重负,而且执行读写都比较频繁的操做会出现意外的错误,对于高可靠的集群部署是有挑战的。vim


二、MFS


分布式文件系统服务器之间的数据访问再也不是一对多的关系(1个NFS服务器,多个NFS客户端),而是多对多的关系,这样一来,性能大幅提高毫无问题。moosefs分布式文件系统,实施起来简单、不中止服务扩容、恢复服务容易,由于做为共享存储服务器是个不错的选择。浏览器

MooseFS 读写流程图:安全

MFS的官方网站: http://www.moosefs.org/download.html 。  ruby

上面有详细的MFS简介和MooseFS分布式文件系统安装向导以及MFS。bash

3、详解

一、得到二进制包

先将 mfs-1.6.25-1.tar.gz 重命名为 mfs-1.6.25.tar.gz
服务器

#yum install fuse-devel pkgconfig zlib-devel    //build源码包须要的依赖
网络

#rpmbuild -ta mfs-1.6.25.tar.gz

会生成6个rpm二进制安装包(其中debuginfo调试时使用):

也能够经过tar zxvf mfs-1.6.25-1.tar.gz  解压,使用./configure、make、make install安装(具体参考 安装向导 )。

二、 主控服务器master server

(1) 安装

#rpm -ivh mfs-master-1.6.25-1.x86_64.rpm    //安装

#rpm -ql mfs-master                //查询安装的文件路径,能够查看全部的安装文件,便于修改

/etc/mfsexports.cfg.dist
/etc/mfsmaster.cfg.dist
/etc/mfstopology.cfg.dist
/usr/sbin/mfsmaster
/usr/sbin/mfsmetadump
/usr/sbin/mfsmetarestore
/usr/share/doc/mfs-master-1.6.25/usr/share/doc/mfs-master-1.6.25/NEWS
/usr/share/doc/mfs-master-1.6.25/README
/usr/share/doc/mfs-master-1.6.25/UPGRADE
/usr/share/man/man5/mfsexports.cfg.5.gz
/usr/share/man/man5/mfsmaster.cfg.5.gz
/usr/share/man/man5/mfstopology.cfg.5.gz
/usr/share/man/man7/mfs.7.gz
/usr/share/man/man7/moosefs.7.gz
/usr/share/man/man8/mfsmaster.8.gz
/usr/share/man/man8/mfsmetarestore.8.gz
/var/lib/mfs
/var/lib/mfs/metadata.mfs.empty

(2) 复制样例文件,以获得 master 所需的配置文件  


#cp mfsmaster.cfg.dist mfsmaster.cfg

#cp mfstopology.cfg.dist mfstopology.cfg

#cp mfsexports.cfg.dist mfsexports.cfg

若是咱们打算更改这些配置文件中的某些项目的值,则须要打开特定配置文件相关文本行前的 注释 , 而后修改跟随其后的值。由于被注释掉的行,便是 MooseFS 内置的缺省值。  

Mfsmaster.cfg 配置文件包含主控服务器 master 相关的设置,想查看 该配置文件 更多信息使用 命令 man mfsmaster.cfg。

mfsexports.cfg 指定那些客户端主机能够远程挂接 MooseFS 文件系统,  以及授予  挂接客户端什么样的访问权限。  例如  指定只有 192.168.40.x 网段的主机能够以读写模式访问 MooseFS 的整个共享结构资源(/),在 配置文件 mfsexports.cfg 文件的第二行改成或添加:    

(注:能够挂在根/目录下的子目录,配置文件加上192.168.40.0/24  /test  rw,alldirs,maproot=0,password=test,注意test目录是在根目录已经建立好的子目录,而且挂载时使用 mfsmount /mnt/client -H mfsmaster -o mfssubfolder=/test -p,不然会出现mfsmaster register error: Permission denied的错误。)

# Allow everything but "meta".#*                      /       rw,alldirs,maproot=0192.168.40.0/24 / rw,alldirs,maproot=0
192.168.40.0/24 . rw

二进制文件 metadata 和文本文件 changelog 将被保存在目录/var/lib/mfs, 安装 master 时,会自动生成一个名为 metadata.mfs.empty 的元数据文件 metadata,该文件是空的。MooseFS master 运必须有文件 metadata.mfs,这个文件是从 metadata.mfs.empty 更名而来。

# cd /var/lib/mfs

#cp metadata.mfs.empty metadata.mfs   // MooseFS master 运行之后,metadata.mfs 文件大小将发生变,不会为空文件。

(3)  绑定主机名 mfsmaster 与 ip (每一个节点都需 绑定 )     修改/etc/hosts 文件,以绑定主机名 mfsmaster 与 ip 地址:

192.168.40.125       mfsmaster

(4)安装 CGI  

为了监控 MooseFS 当前运行状态,能够安装运行 CGI 监控服务 用浏览器查看整个MooseFS 的运行状况。

#rpm -ivh mfs-cgi-1.6.25-1.x86_64.rpm

#rpm -ql mfs-cgi

(5)启动

# /usr/sbin/mfsmaster start  

会出现问题:

working directory: /var/lib/mfs
can't create lockfile in working directory: EACCES (Permission denied)

主要是没有设置   运行用户    

和运行组,添加用户(安装完成后配置文件没有改动),也可使用

nobody:nobody。              

# groupadd mfs              // 添加 mfs 组      

#useradd -g mfs mfs     // 新增系统用户mfs      

#chown -R mfs.mfs /var/lib/mfs          //设置文件所属用户和组(也能够直接指定用户和组,不须要从新建立)

#vim /etc/mfsmaster.cfg

WORKING_USER = mfs
 WORKING_GROUP = mfs# SYSLOG_IDENT = mfsmaster# LOCK_MEMORY = 0

而后正常启动!

# /usr/sbin/mfscgiserv start      

会打不开网页,这是由于cgi文件没有可执行权限

#chmod +x /usr/share/mfscgi/*.cgi

而后启动  ,在浏览器地址栏输入 http://192.168.40.125:9425 便可查看 master 的运行状况(这时不能看见 chunk server 的数据 )。  


三、 备份服务器Backup server(metalogger)

(1) 安装

        安装     备份服务器metalogger的主机在性能上应该比 master 强大(至少有更多的内存),一旦主控服务器 master 失效,只要导入 changelogs 到元数据文件,备份服务器 metalogger 将能接替发生故障的 master,行使管理服务器的职能。

       若 备份服务器        单独安装,须要安装fuse-devel和修改vim /etc/hosts添加192.168.40.125 mfsmaster。 添加mfs用户和组,也可指定到其余用户,或使用nobody:nobody。          

#rpm -ivh mfs-metalogger-1.6.25-1.x86_64.rpm

#rpm -ql mfs-metalogger

#cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

#vim mfsmetalogger.cfg(不修改会出现Permission denied)    

WORKING_USER = mfs
 WORKING_GROUP = mfs

接着运行备份服务 mfsmetaloger:

#usr/sbin/mfsmetalogger start

在生产环境里应当设置自动启动脚本,以便操做系统从新启动时MooseFSmfsmetalogger 服务也能自动运行。

四、 存储块服务器chunk server

(1) 安装

若在其余主机上单独安装chunkserver须要安装 fuse-devel,并添加mfs用户和组(可指定到其余用户)

#rpm -ivh mfs-chunkserver-1.6.25-1.x86_64.rpm    //安装

#rpm -ql mfs-chunkserver      //查询安装的文件路径,能够查看全部的安装文件,便于修改

(2) 准备 chunk server 服务所需的配置文件

#cp mfschunkserver.cfg.dist mfschunkserver.cfg

#cp mfshdd.cfg.dist mfshdd.cfg

 #vim /etc/   mfschunkserver.cfg (想了解配置文件mfschunkserver.cfg更详细的信息,请查看手册页man mfschunkserver.cfg                )      

WORKING_USER = mfs
 WORKING_GROUP = mfs

(3)创建共享点

在配置文件 mfshdd.cfg 中 , 给出了用于客户端挂接 MooseFS 分布式文件系统根分区所 使用的共享空间位置。 建议在 chunk server 上划分单独的空间新建一个设备挂载点做为储存点专门给 MooseFS 使用 , 这样作的好处是便于管理剩余空间 。

此处 假定要使用两个共享点/mnt/mfschunks1 和/mnt/mfschunks2 ,在 mfshdd.cfg 加入下面的文本行 :

# mount points of HDD drives##/mnt/hd1#/mnt/hd2#etc./mnt/mfschunks1
/mnt/mfschunks2

在启动 chunk server 前,需确保用户 mfs 有权限读写将要被挂接的分区(由于 chunk server 运行时要在此建立一个.lock 的文件)。不然出现如下错误:

hdd space manager: can't create lock file '/mnt/mfschunks1/.lock': EACCES (Permission denied)
init: hdd space manager failed !!!

#chown -R mfs:mfs /mnt/mfschunks1

#chown -R mfs:mfs /mnt/mfschunks2

(注:如果单独与 master     的机器,还需执行 chown -R mfs:mfs      /var/lib/mfs和修改 /etc/hosts 添加 192.168.40.125 mfsmaster。 )

(4) 开始启动 chunk server

#/usr/sbin/mfschunkserver start

再经过浏览器访问 http://192.168.40.125:9425就能够看到 MooseFS 系统的所有信息,包括主控 master 和存储服务 chunkserver 。

(5)MooseFS chunk 以独占方式使用专门磁盘分区

在上述操做过程当中不须要这部分的内容,此部分是在实际应用环境下,将chunk server用专门磁盘分区做为 设备挂载点,这样作是不要的,便于管理剩余空间,由于MooseFS 并不考虑其剩余空间能被另做他用。      

若是没有单首创建文件系统的条件,能够在文件中建立一个文件系统,在此准备两个 2GB 的文件(文件位于目录/var/lib/mfs/下,也能够放在其余目录下),并在其上建立文件系统,把他们格式化为 ext3,分别挂接在/mnt/mfschunks1 和/mnt/mfschunks2。

操做步骤: 挂接第一个文件系统

一、建立镜像文件mfschunks1

#dd if=/dev/zero of= /var/lib/mfs/       mfschunks1 bs=1024 count=1 seek=$((2*1024*1024-1))

二、建立文件系统

##mkfs -t ext3 /var/lib/mfs/       mfschunks1  

三、建立挂接点

#mkdir -p /mnt/mfschunks1

四、挂接文件系统

#mount -t ext3 -o loop /var/lib/mfs/       mfschunks1 /mnt/mfschunks1  

挂接第二个文件系统的步骤与上面相同,# mount -t ext3 -o loop /var/lib/mfs/       mfschunks2 /mnt/mfschunks2    

在启动 chunk server 前,需确保用户 mfs 有权限读写将要被挂接的分区(由于 chunk server 运行时要在此建立一个.lock 的文件):

#chown -R mfs:mfs /mnt/mfschunks1

#chown -R mfs:mfs /mnt/mfschunks2          

五、 客户端主机client  


为了挂接基于 MooseFS 分布式文件,客户端主机必须安装 FUSE 软件包( fuse 版本号至少

2.6,推荐使用版本号大于 2.7.2 的 fuse),#yum install fuse。

安装客户端软件 mfsmount:

#rpm -ivh mfs-client-1.6.25-1.x86_64.rpm

(客户端若单独安装,须要安装fuse-devel和修改vim /etc/hosts添加192.168.40.125 mfsmaster。)

#cp /etc/mfsmount.cfg.dist /etc/mfsmount.cfg

假定客户端的挂接点是/mnt/mfs,将如下面的指令来使用 MooseFS 分布式共享文件系统:
一、 建立挂接点
#mkdir -p  /mnt/ mfs  
二、开始挂接操做
#/usr/bin/mfsmount /mnt/  mfs   -H mfsmaster

有时会出现mfsmaster register error: Permission denied:

是由于 mfsmaster的配置文件和挂载目录 不一致的缘由, vim /etc/mfsexports.cfg  

# Allow everything but "meta".#*                      /       rw,alldirs,maproot=0192.168.40.0/24 /test rw,alldirs,maproot=0

master的挂载配置文件中  容许挂载的目录是 /test  ,若用户# mfsmount /mnt  -H mfsmaster (不加 -o mfssubfolder       默认是挂载/)挂载  根/目录会挂载不上,能够修改 mfsexports.cfg配置文件为/,再进行挂在就没问题了。                    

192.168.40.0/24 / rw,alldirs,maproot=0

 

# /usr/sbin/mfsmaster restart


有时挂载目录有内容,提示error in fuse_mount,可使用 -o nonempty 选项挂载。

# mfsmount /mnt/mfs -H mfsmaster -o nonempty

三、挂载meta文件系统

首先保证 mfsexports.cfg  文件中加入:

# Allow "meta".*       .       rw

而后执行:

#mfsmount -m / mnt/mfs -H mfsmaster

能够不挂载MFS META文件系统,挂载该系统主要是为了恢复被误删除的文件。

四、查看分区

执行命令 df -h | grep mfs 检查分区状况:

mfsmaster:9421        102G  256K  102G   1% /mnt/mfs

六、 使用

(1)备份

#cd /mnt/mfs

#mkdir dir1

#mkdir dir2

默认mfs将储存的文件只储存在一个节点上(master选取的)。

设置储存在储存块dir2上的文件储存在两个节点上,作一个备份,系统会自动将数据同步到选定的节点上,这样达到里备份的效果 。

因master和trunk服务器在同一台机器上,  即使设定了 goal=2 来到达保存两个副本但  看到的只是一个副本而已,  尽管有两个trunk挂在点,但 它只是一个 chunk server。    

设置文件副本数量,通常以3份为佳。

#mfssetgoal -r 3 /mnt/mfs

#mfsgetgoal /mnt/mfs/

#/mnt/mfs :  3

(2)设置删除文件的空间回收时间

#mfsgettrashtime dir2/passwd

dir2/passwd: 86400

#mfssettrashtime 300 /mnt/mfs

获取删除 dir2/passwd后在回收站中保存的时间,防止用户误删,这个数字不能设置的过高也不能过低,通常设置为300(5分钟)。

(3)查看目录信息

# mfsdirinfo -H /mnt/mfs  

(4)数据恢复

二进制文件 metadata 和文本文件 changelog 将被保存在目录/var/lib/mfs

执行数据恢复操做,其命令为:mfsmetarestore -m metadata.mfs.back -o metadata.mfs changelog_ml.*.mfs 恢复成功后再执行启动新的 master  服务操做。

(5) 中止 MooseFS  

为了安全中止 MooseFS 集群, 建议执行以下的步骤:      
在全部客户端用 unmount 命令先卸载文件系统(本例将是: umount /mnt/mfs)
中止 chunk server 进程: /usr/sbin/mfschunkserver stop
中止 metalogger 进程: /usr/sbin/mfsmetalogger stop
中止主控 master server 进程: /usr/sbin/mfsmaster stop

4、总结

(1)使用configre、make、make install的方式能够参考官方文档,具体参数和配置都给的很详细,  官方网站 http://www.moosefs.org/download.html  。

(2) 集群部署还须要进一步强化,数据恢复及其余关于MooseFS的内容之后会更新。

(3)MooseFS 命令的使用方法: http://www.moosefs.org/reference-guide.html#using-moosefs 。    

(4)上述的安装包和参考文档已上传到csdn上,须要下载的能够点击 http://download.csdn.net/detail/taiyang1987912/8229595

相关文章
相关标签/搜索