MooseFS是一种分布式文件系统,MooseFS文件系统结构包括以下四种角色:
1 管理服务器managing server (master)
负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝
2 元数据日志服务器Metalogger server(Metalogger)
负责备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在master server出问题的时候接替其进行工作
3 数据存储服务器data servers (chunkservers)
负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输.
4 客户机挂载使用client computers(需要FUSE支持)
通过fuse内核接口挂接远程管理服务器上所管理的数据存储服务器,.看起来共享的文件系统和本地unix文件系统使用一样的效果.
一般架构如下:
MFS的读数据过程:
MFS的写数据过程:
实验环境如下:
master:10.1.1.175
metalogger:10.1.1.40
chunkserver:10.1.1.173/10.1.1.176
client:10.1.1.174
mfs版本:mfs-1.6.19.tar.gz
master server 的安装:
在安装maste server服务器时我们可以取消安装chunkserver和客户端安装,具体步骤如下:
useradd -s /bin/nologin mfs tar zxvf mfs-1.6.19.tar.gz cd mfs-1.6.19 ./configure --prefix=/usr/local/mfs --with-default-user=mfs \ --with-default-group=mfs --sysconfdir=/etc/mfs \ --localstatedir=/var/lib --disable-mfsmount --disable-mfschunkserver make&&make install
安装成功后在/etc/mfs目录下会有以.dist结尾的文件,由于我们这台机器做master所以需要两个文件mfsexports.cfg和 mfsmaster.cfg,所有配置文件的值都是被注释掉的,他们是默认生效的,如果要修改去掉注释修改即可。
mfsmaster.cfg是主配置文件
vi mfsmaster.cfg #运行master的用户 # WORKING_USER = mfs #运行master的组 # WORKING_GROUP = mfs #master server在syslog中的标示,表示是由master产生 # SYSLOG_IDENT = mfsmaster #是否执行mlockall,以避免master进程溢出 # LOCK_MEMORY = 0 #进程优先级,默认是-19时必须以root启动 # NICE_LEVEL = -19 #被挂载目录配置文件的位置 # EXPORTS_FILENAME = /etc/mfs/mfsexports.cfg #数据存放路径,有sessions,stats,metadata,changelog等日志 # DATA_PATH = /var/lib/mfs #metadata更改的log文件数目 # BACK_LOGS = 50 #延迟复制时间 # REPLICATIONS_DELAY_INIT = 300 #chunkserver断开的复制延迟 # REPLICATIONS_DELAY_DISCONNECT = 3600 #metalog监听的ip地址和端口 # MATOML_LISTEN_HOST = * # MATOML_LISTEN_PORT = 9419 #用于chunkserver连接的ip地址和端口 MATOCS_LISTEN_HOST = 10.1.1.175 # MATOCS_LISTEN_PORT = 9420 #用于客户端挂载的ip地址和端口 MATOCU_LISTEN_HOST = 10.1.1.175 # MATOCU_LISTEN_PORT = 9421 #chunk的回环频率 # CHUNKS_LOOP_TIME = 300 #chunk在loop中被删除的最大延迟时间 # 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
mfsexports.cfg 对被挂载目录权限的设置
vi mfsexports.cfg # Allow everything but "meta". 10.1.1.0/24 / rw,alldirs,maproot=0 # Allow "meta". 10.1.1.0/24 . rw #* / ro #192.168.1.0/24 / rw #192.168.1.0/24 / rw,alldirs,maproot=0,password=passcode #10.0.0.0-10.0.0.5 /test rw,maproot=nobody,password=test #10.1.0.0/255.255.0.0 /public rw,mapall=1000:1000
第一部分为客户端ip地址
可以有多种显示方式
第二部分为被挂载目录
/ 表示moosefs的跟
* 表示mfsmeta文件系统
第三部分为用户权限
ro 只读模式
rw 读写模式
alldirs 允许挂载任何指定的子目录
maproot 映射为root用户
passwd 指定客户端密码
开始启动master server
由于我们安装时指定了--localstatedir=/var/lib ,所以metadata和changelog都保存在/var/lib/mfs下面,在第一次安装master server时会生成一个metadata.mfs.empty文件,他是空的,master运行必须有metadata.mfs,所以只要改变metadata.mfs.empty的名字即可。
进入/usr/local/mfs/sbin目录:
启动之后查看master进程:
注意:在关闭master server不要使用kill命令,使用./mfsmaster -s 关闭即可。
metalogger的安装:
在安装metalogger时我们可以取消安装chunkserver和客户端安装,一旦master server故障,导入changelogs,metalogger服务器便可以替代master server,安装方法和master server方法一样:
useradd -s /bin/nologin mfs tar zxvf mfs-1.6.19.tar.gz cd mfs-1.6.19 ./configure --prefix=/usr/local/mfs --with-default-user=mfs \ --with-default-group=mfs --sysconfdir=/etc/mfs \ --localstatedir=/var/lib --disable-mfsmount --disable-mfschunkserver make&&make install
在/etc/mfs/目录下把mfsmetalogger.cfg.dist变为mfsmetalogger.cfg即可,metalogger服务器只需要一个配置文件
vi mfsmetalogger.cfg # WORKING_USER = mfs # WORKING_GROUP = mfs # SYSLOG_IDENT = mfsmetalogger # LOCK_MEMORY = 0 # NICE_LEVEL = -19 # DATA_PATH = /var/lib/mfs # BACK_LOGS = 50 # META_DOWNLOAD_FREQ = 24 # MASTER_RECONNECTION_DELAY = 5 #MASTER_HOST是master server的ip地址 MASTER_HOST = 10.1.1.175 # MASTER_PORT = 9419 # MASTER_TIMEOUT = 60 # deprecated, to be removed in MooseFS 1.7 # LOCK_FILE = /var/run/mfs/mfsmetalogger.lock
大部分参数和master server的参数一样,具体意思可参看master的配置,启动metalogger服务,在/usr/local/mfs/sbin目录下./mfsmetalogger start即可,关闭也是不要用kill ./mfsmetalogger -s 即可。
chunkserver的安装:
在安装chunkserver时我们可以取消master的安装,方法如下:
useradd -s /bin/nologin mfs tar zxvf mfs-1.6.19.tar.gz cd mfs-1.6.19 ./configure --prefix=/usr/local/mfs --with-default-user=mfs \ --with-default-group=mfs --sysconfdir=/etc/mfs \ --localstatedir=/var/lib --disable-mfsmaster make&&make install
在/etc/mfs目录下需要把mfschunkserver.cfg.dist mfshdd.cfg.dist改成mfschunkserver.cfg mfshdd.cfg即可。
mfschunkserver.cfg是主配置文件
vi mfschunkserver.cfg # WORKING_USER = mfs # WORKING_GROUP = mfs # SYSLOG_IDENT = mfschunkserver # LOCK_MEMORY = 0 # NICE_LEVEL = -19 # DATA_PATH = /var/lib/mfs # MASTER_RECONNECTION_DELAY = 5 #本地地址,用来连接master的 BIND_HOST = 10.1.1.173 #元数据服务器的ip地址和端口 MASTER_HOST = 10.1.1.175 # MASTER_PORT = 9420 # MASTER_TIMEOUT = 60 #这个端口用于和其他chunkserver之间的连接,一般是复制数据 # CSSERV_LISTEN_HOST = * # CSSERV_LISTEN_PORT = 9422 # CSSERV_TIMEOUT = 5 #分配给MFS磁盘空间的配置文件的位置 # HDD_CONF_FILENAME = /etc/mfs/mfshdd.cfg # HDD_TEST_FREQ = 10 # deprecated, to be removed in MooseFS 1.7 # LOCK_FILE = /var/run/mfs/mfschunkserver.lock # BACK_LOGS = 50
mfshdd.cfg是分配给MFS使用空间的配置文件
vi mfshdd.cfg # mount points of HDD drives #/mnt/hd1 #/mnt/hd2 #etc. /mfs
我们新建了一个分区直接挂载到/mfs下面,建议在chunkserver上单独划分空间给mfs使用,方便管理。启动之前确保mfs用户对/mfs可读写。
在/usr/local/mfs/sbin目录下./mfschunkserver start即可
客户端的安装:
为了挂载基于MooseFS的分布式文件系统,需要FUSE的支持。
fuse简介
用户空间文件系统(Filesystem in Userspace,简称FUSE)是操作系统中的概念,指完全在用户态实现的文件系统。目前Linux通过内核模块对此进行支持。一些文件系统如ZFS,glusterfs和lustre使用FUSE实现。Linux用于支持用户空间文件系统的内核模块名叫FUSE,FUSE一词有时特指Linux下的用户空间文件系统。文件系统是一个通用操作系统重要的组成部分。传统上操作系统在内核层面上对文件系统提供支持。而通常内核态的代码难以调试,生产率较低。Linux从2.6.14版本开始通过FUSE模块支持在用户空间实现文件系统。
在用户空间实现文件系统能够大幅提高生产率,简化了为操作系统提供新的文件系统的工作量,特别适用于各种虚拟文件系统和网络文件系统。上述ZFS和glusterfs都属于网络文件系统。但是,在用户态实现文件系统必然会引入额外的内核态/用户态切换带来的开销,对性能会产生一定影响。
fuse内核模块和fuse lib库通过一个文件描述符通信,/dev/fuse 文件描述符可以被打开多次,获得的文件描述符被传递到mount系统调用,用来匹配已经挂载的文件系统。
安装fuse
tar zxvf fuse-2.8.5.tar.gz cd fuse-2.8.5 ./configure make && make install
安装客户端
useradd -s /bin/nologin mfs tar zxvf mfs-1.6.19.tar.gz cd mfs-1.6.19 ./configure --prefix=/usr/local/mfs --with-default-user=mfs \ --with-default-group=mfs --sysconfdir=/etc/mfs \ --localstatedir=/var/lib --disable-mfsmaster --enable-mfsmount \ --disable-mfschunkserver make&&make install
进入/usr/local/mfs/bin目录下,./mfsmount --help 即可看到mfsmount的用法。
MFS集群启动:
1 启动master server
2 启动chunk server
3 启动metalogger
4 启动客户端,使用mfsmount挂载相关目录
MFS集群停止:
1 所有客户端卸载MooseFS文件系统
2 停止chunkserver
3 停止metalogger
4 停止master server