目录
简介
MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本。对于访问的客户端或者用户来说,整个分布式网络文件系统集群看起来就像一个资源一样。从其对文件操作的情况看,MooseFS就相当于一个类UNIX文件系统。
角色
- MooseFS的文件系统结构体系可分为以下四种角色,分别对应不同的功能:
- 1.管理服务器managing server (master)
- 2.元数据日志服务器Metalogger server(Metalogger)
- 3.数据存储服务器data servers (chunkservers)
- 4.客户机挂载使用client computers
read
工作方式
如上图中 Master Server用三角形表示,Chunk Server用圆形表示,Client 用方形表示。整个读过程有以下四个步骤:
- 首先client客户端访问主服务器master,获取文件实体的位置等相关信息。
- 主服务器master查询缓存记录,把文件实体的位置等相关信息发给client客户端。
- Client客户端根据拿到的信息去访问对应的存储实体数据的服务器(data servers或者chunk servers)。
- 存储实体数据的服务器(data servers或者chunk servers)把对应的数据返回给Client客户端。
我们还可以看出,当多个MFS客户端读数据的时候,master服务器充当路由为这些客户端分发指路的作用,而数据的返回时由不同的数据服务器直接返回给请求的客户端,这样的模式可以极大的减轻主服务器的系统及网络瓶颈,增加了整个系统的吞吐。
write
MooseFS文件系统写过成比读过成相对复杂的多,如上图:
- Client客户端访问主服务器master,请求写入数据。
- 主服务器master查询缓存记录,如果是新文件,则会联系后面的数据服务器创建对应的chunk对象准备存放文件。
- 数据服务器返回创建对应的chunk对象成功给主服务器。
- 主服务器master把文件实体的位置等相关信息发给client客户端。
- Client客户端访问对应的数据服务器写数据。
- 数据服务器之间进行数据同步,互相确认成功。
- 数据服务器返回成功写入信息给Client客户端。
- Client客户端回报给主服务器master写入结束
mfs分布式文件系统搭建
master
下载网站https://moosefs.com/download/
vm1
curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo
yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli -y
报错,修改gpgcheck=0
vm2,vm3
yum install moosefs-chunkserver -y
配置
vm1
[root@vm1 yum.repos.d]# cd /etc/mfs/
[root@vm1 mfs]# ls
mfsexports.cfg mfsmaster.cfg mfstopology.cfg
mfsexports.cfg.sample mfsmaster.cfg.sample mfstopology.cfg.sample
[root@vm1 mfs]# vim mfsmaster.cfg 配置文件不修改
[root@vm1 mfs]# systemctl start moosefs-master
[root@vm1 mfs]# netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN 4355/mfsmaster
tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN 4355/mfsmaster
tcp 0 0 0.0.0.0:9421 0.0.0.0:* LISTEN 4355/mfsmaster
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3208/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 3307/master
tcp 0 0 172.25.7.5:22 172.25.7.250:41282 ESTABLISHED 4093/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 3208/sshd
tcp6 0 0 ::1:25 :::* LISTEN 3307/master
[root@vm1 mfs]# systemctl start moosefs-cgiserv.service
[root@vm1 mfs]# netstat -antlp
Active Internet connections (servers and established)
Proto Rec