一、介绍
MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本。对于访问的客户端或者用户来说,整个分布式网络文件系统集群看起来就像一个资源一样。从其对文件操作的情况看,MooseFS就相当于一个类UNIX文件系统:
1、mfs是一个分层的目录树结构
2、存储支持POSIX标准的文件属性(权限,最后访问和修改时间)
3、支持特殊的文件,如:块设备,字符设备,管道和套接字,链接文件(符号链接和硬链接)
4、支持基于IP地址和密码的方式访问文件系统
二、功能作用
·MooseFS是一个具有容错性的网络分布式文件系统。
·它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。
三、组成部分
·元数据服务器(Master):在整个体系中负责管理文件系统,维护元数据。
·元数据日志服务器(MetaLogger):备份Master服务器的变化日志文件,文件类型为changelog_ml.*.mfs。当Master服务器数据丢失或者损坏时,可以从日志服务器中取得文件,进行恢复。
·数据存储服务器(Chunk Server):真正存储数据的服务器。存储文件时,会把文件分块保存,并在数据服务器之间进行复制。数据服务器越多,能使用的“容量”就越大,可靠性就越高,性能也就越好。
·客户端(Client):可以像挂载NFS一样挂载MFS文件系统,其操作是相同的。
(元数据被定义为:描述数据的数据,对数据及信息资源的描述性信息。)
四、MFS读取数据的处理过程
·客户端向元数据服务器发出读请求。
·元数据服务器把所需数据存放的位置(Chunk Server的IP地址和Chunk编号)告知客户端。
·客户端向已知的Chunk Server请求发送数据。
·Chunk Server向客户端发送数据。
五、MFS写入数据的处理过程
·客户端向元数据服务器发送写入请求。
·元数据服务器与Chunk Server进行交互(只有当所需的分块Chunks存在的时候才进行这个交互),但元数据服务器只在某些服务器创建新的分块Chunks,创建成功后由Chunk Servers告知元数据服务器操作成功。
·元数据服务器告知客户端,可以在哪个Chunk Server的哪些Chunks写入数据。
·客户端向指定的Chunks Server写入数据。
·该Chunk Server与其他Chunk Server进行数据同步,同步成功后Chunk Server告知客户端数据写入成功。
·客户端告知元数据服务器本次写入完毕。
六、案例实施
IP | 主机名 |
---|---|
192.168.94.139 | master |
192.168.94.140 | Metalogger server |
192.168.94.141 | Chunk server1 |
192.168.94.142 | Chunk server2 |
192.168.94.143 | client |
软件包下载:链接:https://pan.baidu.com/s/1QqREtYpjnEuAAnweiRNwAQ (1.6.27)
提取码:o15d
链接:https://pan.baidu.com/s/18VGAhdU9_X8KC0_xmPz7_Q (3.0.84)
提取码:1czb
将软件包上传至各个节点的/root目录下
保证所有的虚拟机防火墙均在关闭状态
一、master server节点:
1.环境准备
[root@master ~]# yum -y install zlib-devel gcc gcc-c++(所有节点)
2.创建用户
[root@master ~]# useradd -s /sbin/nologin -M mfs(所有节点)
3.解压软件包
[root@master ~]# tar zxf mfs-1.6.27-5.tar.gz -C /usr/src
[root@master ~]# cd /usr/src/mfs-1.6.27
[root@master mfs-1.6.27]# ./configure --prefix=/usr/local/mfs \
>--with-default-user=mfs --with-default-group=mfs \
>--disable-mfschunkserver --disable-mfsmount
[root@master mfs-1.6.27]# make && make install
4.调整配置文件
[root@master ~]# cd /usr/local/mfs/etc/mfs
[root@master mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg
[root@master mfs]# cp mfsexports.cfg.dist mfsexports.cfg
[root@master mfs]# cp mfstopology.cfg.dist mfstopology.cfg
[root@master mfs]# cd /usr/local/mfs/var/mfs/
[root@master mfs]# cp metadata.mfs.empty metadata.mfs
5.启动master server:
[root@master ~]# ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
[root@master ~]# mfsmaster start
[root@master ~]# netstat -anput | grep mfs
tcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN 9222/mfsmaster
tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN 9222/mfsmaster
tcp 0 0 0.0.0.0:9421 0.0.0.0:* LISTEN 9222/mfsmaster
可以发现mfsmaster端口已启动。
二、metalogger server节点:
1.解压软件包:
[root@metalogger ~]# tar zxf mfs-1.6.27-5.tar.gz -C /usr/src
[root@metalogger ~]# cd /usr/src/mfs-1.6.27
[root@metalogger mfs-1.6.27]# ./configure --prefix=/usr/local/mfs \
--with-default-user=mfs --with-default-group=mfs \
--disable-mfschunkserver --disable-mfsmount
[root@metalogger mfs-1.6.27]# make && make install
2.调整配置文件
[root@metalogger ~]# cd /usr/local/mfs/etc/mfs
[root@metalogger mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
[root@metalogger mfs]# vim mfsmetalogger.cfg
# 修改为master的ip
MASTER_HOST = 192.168.94.139
MASTER_PORT = 9419
3.启动metalogger:
[root@metalogger ~]# ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
[root@metalogger ~]# mfsmetalogger start
[root@metalogger ~]# netstat -anput | grep mfs
tcp 0 0 192.168.140:54654 192.168.94.139:9419 ESTABLISHED 72820/mfsmetalogger
发现该虚拟机已与master节点取得联系。
三、搭建chunk server1、chunk server2(两个节点操作一致)
1.解压软件包:
[root@chunk server1 ~]# tar zxf mfs-1.6.27-5.tar.gz -C /usr/src
[root@chunk server1 ~]# cd /usr/src/mfs-1.6.27
[root@chunk server1 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs \
--with-default-user=mfs --with-default-group=mfs \
--disable-mfsmaster --disable-mfsmount
[root@chunk server1 mfs-1.6.27]# make && make install
2.调整配置文件
[root@chunk server1 ~]# cd /usr/local/mfs/etc/mfs
[root@chunk server1 mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg
[root@chunk server1 mfs]# cp mfshdd.cfg.dist mfshdd.cfg
[root@chunk server1 mfs]# vim mfschunkserver.cfg
# 修改为master的ip
MASTER_HOST = 192.168.94.139
MASTER_PORT = 9419(此处不需要修改,去掉前面的#即可)
[root@chunk server1 mfs]# vim mfshdd.cfg
# 末尾添加
/data
# 这里的/data是一个给MFS的分区
[root@chunk server1 mfs]# mkdir /data
[root@chunk server1 mfs]# chown -R mfs:mfs /data
3.启动chunk server:
[root@chunk server1 ~]# ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
[root@chunk server1 ~]# mfschunkserver start
[root@chunk server1 mfs]# netstat -anput | grep mfs
tcp 0 0 0.0.0.0:9422 0.0.0.0:* LISTEN 16869/mfschunkserve
tcp 0 0 192.168.94.141:37532 192.168.94.139:9420 ESTABLISHED 16869/mfschunkserve
四、client节点:
1.安装fuse:
[root@client ~]# ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
[root@client ~]# mfschunkserver start
[root@client mfs]# netstat -anput | grep mfs
tcp 0 0 0.0.0.0:9422 0.0.0.0:* LISTEN 16869/mfschunkserve
tcp 0 0 192.168.94.143:37532 192.168.94.139:9420 ESTABLISHED 16869/mfschunkserve
2.调整环境变量:
[root@client ~]# vim /etc/profile
末尾添加
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
[root@client ~]# source /etc/profile
3.安装MFS客户端:
[root@master ~]# tar zxf mfs-1.6.27-5.tar.gz -C /usr/src
[root@client ~]# cd /usr/src/mfs-1.6.27
[root@client mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs \
--with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount
[root@client mfs-1.6.27]# make && make install
4.创建挂载点并挂载:
[root@client ~]# mkdir /opt/mfs
[root@client ~]# modprobe fuse # 加载fuse到内核
[root@client ~]# ln -s /usr/local/mfs/sbin/* /usr/local/sbin/
[root@client ~]# ln -s /usr/local/mfs/bin/* /usr/local/bin/
将挂载点挂载到master主机,回映射到根目录
[root@client ~]# mfsmount /opt/mfs -H 192.168.94.139
[root@client ~]# df -hT | grep mfs
192.168.94.139:9421 fuse.mfs 83G 0 83G 0% /opt/mfs
五、在master节点上启动监控程序:
[root@master ~]# mfscgiserv
在浏览器上访问192.168.94.139:9425
注:3.0.84版本在web页面时可能找不到主机名,则需要在master节点的/etc/hosts文件中加入:
192.168.94.139 master mfsmaster