分布式文件系统MFS(moosefs)实现存储共享(第二版)

分布式文件系统MFS(moosefs)实现存储共享(第二版) 
作者:田逸([email protected])
 
由于用户数量的不断攀升,我对访问量大的应用实现了可扩展、高可靠的集群部署(即 
lvs+keepalived 的方式),但仍然有用户反馈访问慢的问题。通过排查个服务器的情况,发现 
问题的根源在于共享存储服务器NFS。在我这个网络环境里,N 个服务器通过nfs 方式共享 
一个服务器的存储空间,使得NFS 服务器不堪重负。察看系统日志,全是nfs 服务超时之 
类的报错。一般情况下,当nfs 客户端数目较小的时候,NFS 性能不会出现问题;一旦NFS 
服务器数目过多,并且是那种读写都比较频繁的操作,所得到的结果就不是我们所期待的。 
下面是某个集群使用nfs 共享的示意图: 
image 这种架构除了性能问题而外,还存在单点故障,一旦这个NFS 服务器发生故障,所有靠共 
享提供数据的应用就不再可用,尽管用rsync 方式同步数据到另外一个服务器上做nfs 服务 
的备份,但这对提高整个系统的性能毫无帮助。基于这样一种需求,我们需要对nfs 服务器 
进行优化或采取别的解决方案,然而优化并不能对应对日益增多的客户端的性能要求,因此 
唯一的选择只能是采取别的解决方案了;通过调研,分布式文件系统是一个比较合适的选择。 
采用分布式文件系统后,服务器之间的数据访问不再是一对多的关系(1 个NFS 服务器, 
多个NFS 客户端),而是多对多的关系,这样一来,性能大幅提升毫无问题。 
到目前为止,有数十种以上的分布式文件系统解决方案可供选择,如lustre,hadoop,Pnfs 等等。 
我尝试了PVFS,hadoop,moosefs 这三种应用,参看了lustre、KFS 等诸多技术实施方法,最 
后我选择了moosefs(以下简称MFS)这种分布式文件系统来作为我的共享存储服务器。为 
什么要选它呢?我来说说我的一些看法: 
1、 实施起来简单。MFS 的安装、部署、配置相对于其他几种工具来说,要简单和容易得多。 
看看lustre 700 多页的pdf 文档,让人头昏吧。 
2、 不停服务扩容。MFS 框架做好后,随时增加服务器扩充容量;扩充和减少容量皆不会影 
响现有的服务。注:hadoop 也实现了这个功能。 
3、 恢复服务容易。除了MFS 本身具备高可用特性外,手动恢复服务也是非常快捷的,原 
因参照第1 条。 
4、 我在实验过程中得到作者的帮助,这让我很是感激。 
MFS特性(根据官方网站翻译) 
★ 高可靠性(数据能被分成几个副本存储在不同的计算机里) 
★ 通过增加计算机或增加新的硬盘动态扩充可用磁盘空间 
★ 可以设置删除文件的空间回收时间 
[root@mysql-bk serydir]# mfsgettrashtime bind-9.4.0.tar.gz 
bind-9.4.0.tar.gz: 600 
文件被删除10 分钟后(600 秒),才真正删除文件,回收磁盘空间。 
★ 为文件创建快照 
MFS文件系统的组成 
1、 元数据服务器。在整个体系中负责管理管理文件系统,目前MFS 只支持一个元数据服 
务器master,这是一个单点故障,需要一个性能稳定的服务器来充当。希望今后MFS 
能支持多个master 服务器,进一步提高系统的可靠性。 
2、 元数据日志服务器。备份master 服务器的变化日志文件,文件类型为changelog_ml.*.mfs。 
当元数据服务器数据丢失或者损毁,可从日志服务器取得文件进行恢复。 
3、 数据存储服务器chunkserver。真正存储用户数据的服务器。存储文件时,首先把文件分 
成块,然后这些块在数据服务器chunkserver 之间复制(复制份数可以手工指定,建议 
设置副本数为3)。数据服务器可以是多个,并且数量越多,可使用的“磁盘空间”越大, 
可靠性也越高。 
4、 客户端。使用MFS 文件系统来存储和访问的主机称为MFS 的客户端,成功挂接MFS 
文件系统以后,就可以像以前使用NFS 一样共享这个虚拟性的存储了。 
元数据服务器安装和配置 
元数据服务器可以是linux,也可以是unix,你可以根据自己的使用习惯选择操作系统,在我的 
环境里,我是用freebsd 做为MFS 元数据的运行平台。GNU 源码,在各种类unix 平台的安装 
都基本一致。 
(一) 安装元数据服务 
1、下载GNU 源码 
wget http://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.11/mfs-1.6.11.tar.gz 
2、解包 tar zxvf mfs-1.6.11.tar.gz 
3、切换目录 cd mfs-1.6.11 
4、创建用户 useradd mfs –s /sbin/nologin 
5、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs 
6、编译安装 make ; make install 
(二) 配置元数据服务 
元数据服务器的配置文件被放置于安装目录/usr/local/mfs/etc。与mfs-1.5.12 版本不同的是: 
mfs-1.6.x 版安装完成只有模版文件,其后缀形如mfsmaster.cfg.dist。为了使mfs master 正常 
工作,需要两个配置文件mfsmaster.cfg 及mfsexports.cfg,前者为主配置文件,后者为权限控 
制文件(mfs 客户端挂接时使用)。 
( 1 ) 主配置文件mfsmaster.cfg, 可直接从模版文件拷贝而来, 打开这个配置文件 
/usr/local/mfs/etc/mfsmaster.cfg,看看都有哪些内容: 
# WORKING_USER = mfs 
# WORKING_GROUP = mfs 
# SYSLOG_IDENT = mfsmaster 
# LOCK_MEMORY = 0 
# NICE_LEVEL = -19 
# EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg 
# DATA_PATH = /usr/local/mfs/var/mfs 
# BACK_LOGS = 50 
# REPLICATIONS_DELAY_INIT = 300 
# REPLICATIONS_DELAY_DISCONNECT = 3600 
# MATOML_LISTEN_HOST = * 
# MATOML_LISTEN_PORT = 9419 
# MATOCS_LISTEN_HOST = * 
# MATOCS_LISTEN_PORT = 9420 
# MATOCU_LISTEN_HOST = * 
# MATOCU_LISTEN_PORT = 9421 
# CHUNKS_LOOP_TIME = 300 
# CHUNKS_DEL_LIMIT = 100 
# CHUNKS_WRITE_REP_LIMIT = 1 
# CHUNKS_READ_REP_LIMIT = 5 
# REJECT_OLD_CLIENTS = 0 
# deprecated, to be removed in MooseFS 1.7 
# LOCK_FILE = /var/run/mfs/mfsmaster.lock 
尽管每行都被注释掉了,但它们却是配置文件的默认值,要改变这些值,需要取消注释,然 
后明确指定其取值。接下来说明一下其中一些项目的含义。 
◆ EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg 权限控制文件的存放位 
置。 
◆ DATA_PATH = /usr/local/mfs/var/mfs 数据存放路径,只元数据的存放路径。那么这 
些数据都包括哪些呢?进目录看看,大致分3 种类型的文件: 
这些文件也同样要存储在其他数据存储服务器的相关目录。 
◆ MATOCS_LISTEN_PORT = 9420 MATOCS--master to chunkserver,即元数据服务器 
使用9420 这个监听端口来接受数据存储服务器chunkserver 端的连接。 
◆ MATOML_LISTEN_PORT = 9419 MATOML---master to metalogger,用于备份元数据 
服务器的变化日志。注:Mfs-1.5.12 以前的版本没有这个项目。 
◆ MATOCU_LISTEN_PORT = 9421 元数据服务器在9421 端口监听,用以接受客户端 
对MFS 进行远程挂接(客户端以mfsmount 挂接MFS) 
◆ 其他部分看字面意思都不难理解。还有几个与时间有关的数值,其单位是秒。 
这个配置文件,不必做修改就能工作了。 
(2)配置文件/usr/local/mfs/etc/mfsexports.cfg,也可直接从模版文件复制而来。这个文件的内 
容,十分类似NFS 服务器的exports 文件.实际配置时,可参照这个文件的默认行来修改以 
满足自己的应用需求.我的mfsexports.cfg 文件的内容为: 
192.168.93.0/24 / rw 
(3)复制文件 
cp /usr/local/mfs/var/mfs/metadata.mfs.empty /usr/local/mfs/var/mfs/metadata.mfs 
这是一个8 字节的文件,为mfs-1.6.x 新增项目。 

你可能感兴趣的:(centos,MFS,moosefs,老田)