编者按:现在,有大量的企业采用共享存储服务器NFS的方式,来对应用数据进行网络存储,但这存在性能瓶颈和单点故障的问题,于是,分布式文件存储管理系统开始流行起来。本文为大家推荐了开源的分布式文件系统MFS,相信对大家有所帮助。
分布式文件系统MFS(moosefs) 实现存储共享剖析(上)
分布式文件系统MFS(moosefs) 实现存储共享剖析(中)
分布式文件系统MFS(moosefs) 实现存储共享剖析(下)
元数据服务器安装和配置
元数据服务器可以是linux,也可以是unix,你可以根据自己的使用习惯选择操作系统,在我的环境里,我是用freebsd做为MFS元数据的运行平台。GNU源码,在各种类unix平台的安装都基本一致。
(一) 安装元数据服务
1、下载GNU源码 wget http://www.moosefs.com/files/mfs-1.5.12.tar.gz
2、解包 tar zxvf mfs-1.5.12.tar.gz
3、切换目录 cd mfs-1.5.12
4、创建用户 useradd mfs -s /sbin/nologin
5、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
6、编译安装 make ; make install
(二) 配置元数据服务
元数据服务器的配置文件是mfsmaster.cfg,我在安装MFS时指定了前缀,因此这个文件的位置在/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 = *
# MATOCS_LISTEN_PORT = 9420
# MATOCU_LISTEN_HOST = *
# MATOCU_LISTEN_PORT = 9421
# CHUNKS_LOOP_TIME = 300
# CHUNKS_DEL_LIMIT = 100
# CHUNKS_REP_LIMIT = 15
尽管每行都被注释掉了,但它们却是配置文件的默认值,要改变这些值,需要取消注释,然后明确指定其取值。接下来说明一下其中一些项目的含义。
◆ LOCK_FILE = /var/run/mfs/mfsmaster.pid 文件锁所在的位置,它的功能是避免启动多次启动同一个守护进程。由于系统中本来不存在目录 /var/run/mfs,因此需要手动创建 mkdir /var/run/mfs,然后更改其属主 chown -R mfs:mfs /var/run/mfs 这样MFS 服务就能对这个目录有创建/写入 mfsmaster.pid 文件的权限了。
◆ DATA_PATH = /usr/local/mfs/var/mfs 数据存放路径,只元数据的存放路径。那么这些数据都包括哪些呢?进目录看看,大致分3种类型的文件:
这些文件也同样要存储在其他数据存储服务器的相关目录。
◆ MATOCS_LISTEN_PORT = 9420 MATOCS--master to chunkserver,即元数据服务器使用9420这个监听端口来接受数据存储服务器chunkserver端的连接。
◆ MATOCU_LISTEN_PORT = 9421 元数据服务器在9421端口监听,用以接受客户端对MFS进行远程挂接(客户端以mfsmount挂接MFS)
◆ 其他部分看字面意思都不难理解。还有几个与时间有关的数值,其单位是秒。
这个配置文件,不必做修改就能工作了。
(三) 元数据服务器master启动
元数据服务器可以单独启动,即使没有任何数据存储服务器(chunkserver)也是能正常工作的,因此当我们安装配置完MFS后,即可启动它。执行命令 /usr/local/mfs/sbin/mfsmaster start ,如果没有意外,元数据库服务器就应该作为一个守护进程运行起来。现在我们可以通过3个方面来检查一下MFS master的运行状况:
1、 检查进程
2、 检查网络状态
3、 检查系统日志
MFS的日志会直接写入系统日志。当我们增加数据存储服务器(chunkserver)或数据存储服务器(chunkserver)处故障时,都能在系统日志找到这些记录。注意,这个日志跟元数据变化日志不是一回事情。
(四)、关闭元数据服务器
关闭元数据服务器,务必使用 /usr/local/mfs/sbin/mfsmaster -s 这种方式,如果直接使用kill杀死进程,将导致下次启动时出现找不到相关文件,而不能正常启动服务器。这个一定要谨慎。当然,如果发生了这个事情,还是可以通过 mfsmetastore 来恢复的。
数据存储chunkserver服务器的安装配置
数据存储服务器chunkserver也是可以运行在各种类unix平台的,因此不再多说。一个MFS环境到底能集群多少服务器,作者的说法是上PB容量,个人建议,最好3台以上;并且专门用来做存储,不要把它跟master搞到一个机器(理论上没问题,实现也是可以的,但这不是一个好策略)。因为每个数据存储服务器的安装和配置都是相同的,所以只需按照一个服务器的操作就可以了。
(一)、安装数据存储服务器 chunkserver
1、下载GNU源码 wget http://www.moosefs.com/files/mfs-1.5.12.tar.gz
2、解包 tar zxvf mfs-1.5.12.tar.gz
3、切换目录 cd mfs-1.5.12
4、创建用户 useradd mfs -s /sbin/nologin
5、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
6、编译安装 make ; make install
(二)配置数据存储服务器chunkserver
数据存储服务器有2个配置服务器需要修改,一个是主配置文件 mfschunkserver.cfg ,另一个配置文件是 mfshdd.cfg。每个服务器用来分配给 MFS使用的空间最好是一个单独的硬盘或者一个raid卷,最低要求是一个分区。作者举的例子是创建一个大文件,然后挂接在本地,这不好,只能用来做实验了。
1、修改配置文件 /usr/local/mfs/etc/mfschunkserver.cfg。下面是修改了的配置文件:
#WORKING_USER = mfs
#WORKING_GROUP = mfs
# DATA_PATH = /usr/local/mfs/var/mfs
# LOCK_FILE = /var/run/mfs/mfschunkserver.pid
# SYSLOG_IDENT = mfschunkserver
# BACK_LOGS = 50
# MASTER_RECONNECTION_DELAY = 30
MASTER_HOST = 192.168.0.19
MASTER_PORT = 9420
# MASTER_TIMEOUT = 60
# CSSERV_LISTEN_HOST = *
# CSSERV_LISTEN_PORT = 9422
# CSSERV_TIMEOUT = 60
# CSTOCS_TIMEOUT = 60
# HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg
这个配置文件里,没有注释符号"#"就是被修改过的项了,接下来是里面某些项的含义说明:
◆ MASTER_HOST = 192.168.0.19 元数据服务器的名称或地址,可以是主机名,也可以是ip地址,只要数据存储服务器能访问到元数据服务器就行。
◆ LOCK_FILE = /var/run/mfs/mfschunkserver.pid 与元数据服务器master的处理完全相同.
◆ CSSERV_LISTEN_PORT = 9422 CSSERV-chunkserver,这个监听端口用于与其它数据存储服务器间的连接,通常是数据复制。
◆ HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg 分配给MFS使用的磁盘空间配置文件的位置。
2、修改配置文件/usr/local/mfs/etc/mfshdd.cfg。在我的服务器上,只有一个1T的SATA硬盘,分了一个800G容量的分区来做为MFS存储服务的组成部分。为了使mfs拥有写目录的权限,需要修改目录的属主。我的服务器的分区挂接点是 /data , 用 chown -R mfs:mfs /data 把属主改变。因为我的每个服务器只需贡献一个分区做为MFS,因此配置文件只需要如下一行内容就可以了:
/data
这个文件默认情况下有好几行,我们最好把它删掉,因为按常规情况用注释符号"#"好像不起作用。
(四) 启动数据存储服务器chunkserver
在数据存储服务器chunkserver执行命令 /usr/local/mfs/sbin/mfschunkserver start 启动数据存储守护进程.通过以下几种方式来检查chunkserver的运行状态.
1、 查看进程 ps aux | grep mfschunkserver
2、 查看网络状态,正常情况下应该看见9422处于监听状态,如果有其他数据存储服务器chunkserver在同一个元数据服务器master管理下运行的话,应该能看见其他chunkserver跟本机的连接情况:
3、 查看元数据服务器的系统日志,可以看见新增的数据存储服务器chunkserver被加入。
tail -f /var/log/messages
Mar 27 14:28:00 mfs-ctrl mfsmaster[29647]: server 3 (192.168.0.71): usedspace: 65827913728 (61 GB), totalspace: 879283101696 (818 GB), usage: 7.49%
(五) 关闭数据存储服务器
跟元数据服务器master相似,执行命令 /usr/local/mfs/sbin/mfschunkserver -s , chunkserver服务就停下来了。为了使系统重启过程能自动启动chunkserver 服务,可以通过在/etc/rc.local文件追加行 /usr/local/mfs/sbin/mfschunkserver start 来达到这个目的(master的自动重启处理也可同样处理)。