1.分布式文件系统
分布式文件系统是指文件系统管理的物理存储资源,不一定在本地节点上,而是通过网络与节点相连。
就是把一些分散的(分布在局域网内各个计算机上)共享文件夹,集合到一个文件夹内(虚拟共享文件夹)。
对于用户来说,要访问这些共享文件夹时,只要打开这个虚拟共享文件夹,就可以看到所有链接到虚拟共享文件夹内的共享文件夹,用户感觉不到这些共享文件是分散在各个计算机上的。
分布式文件系统的好处是集中访问、简化操作、数据容灾,以及提高文件的存取性能。
2.MooseFS简介
MooseFS 是一个高容错性的分布式文件系统,它能够将资源分布存储于几台不同的物理介质,对外只提供给用户一个访问接口。对它的操作与其它文件系统完全一样:
| 分层文件结构(目录树结构);
l 存储POSIX 文件属性(权限、最后访问、修改时间);
l 支持特殊的文件(块文件夹、字符文件及管道和socket )
l 软链接(文件名指向目标文件)及硬链接(不同的文件名指向同一块数据);
l 仅限于基于IP 地址或密码来访问文件系统。
MoosFS 具有以下特征:
l 高可靠性:数据可以被存储于几个不同的地方;
l 可扩展性:可以动态的添加计算机或磁盘来增加系统的容量产;
l 高可控性:系统能够设置删除文件的时间间隔;
l 可追溯性:能够根据文件的不同操作(写入/ 访问)生成文件快照。
3.MooseFS的体系结构
四个模块
元数据服务器Master 在整个体系中负责管理文件系统,维护元数据。
元数据日志服务器MetaLogger 备份Master服务器的变化日志文件,文件类型为changelog_ml.*.mfs。当Master服务器数据丢失或者损坏时,可以从日志服务器中取得文件,进行修复。
数据存储服务器Chunk Server 真正存储数据的服务器。存储文件时,会把文件分块保存,在数据服务器之间进行复制。数据服务器越多,能使用的“容量”就越大,可靠性就越高,性能也就越好。
客户端Client 可以像挂载NFS一样挂载MFS文件系统,其操作是相同的。
工作体系
元数据存储在管理服务器的内存及磁盘中(周期性的更新二进制文件及增长的日志文件)。同时二进制文件及日志文件会被同步到元数据服务器。
MFS读数据的处理过程
#客户端向元数据服务器发出读请求
#元数据服务器把数据存放的位置
(Chunk Server的IP地址和Chunk编号)告知客户端
(一份大的数据会被分块,存储在不同的数据服务器上)
#客户端向已知的Chunk Server请求发送数据
#Chunk Server向客户端发送数据
MFS写数据的处理过程
分为create创建和update 修改文件:
#客户端向元数据服务器发送写入请求
#元数据服务器与Chunk Server进行交互(只有当所需的分块Chunks存在的时候才进行交互),
但元数据服务器只在某些服务器创建新的分块Chunks,创建成功后由Chunk Server告知元数据服务器操作成功。
#元数据服务器告知客户端,可以在哪个Chunk Server的哪些Chunks写入数据
(副本数是由master来维护的)
#客户端向指定的Chunk Server写入数据
#该Chunk Server与按照要求和其他Chunk Server进行数据同步,同步成功后Chunk Server告知客户端数据写入成功
#客户端告知元数据服务器本次写入完毕
原始的读/写速度很明显是主要取决于所使用的硬盘的性能、网络的容量和拓扑结构,使用的硬
盘和网络的吞吐量越好,整个系统的性能也就会越好
4.实验环境
MFS部署
主master的部署
首先要保证虚拟机可以上网,在真机中执行命令
iptables -t nat -I POSTROUTING -s 172.25.26.0/24 -j MASQUERADE
curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo #下载repo源
vim MooseFS.repo
cat MooseFS.repo
[MooseFS]
name=MooseFS $releasever - $basearch
baseurl=http://ppa.moosefs.com/moosefs-3/yum/el7
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
enabled=1
yum install -y moosefs-master ##安装MFS master
yum install moosefs-cgi moosefs-cgiserv moosefs-cli -y ##安装主服务器
systemctl start moosefs-master ##启动MASTER
vim /etc/hosts ##解析必须做
172.25.26.1 server1 mfsmaster
systemctl start moosefs-cgiserv.service ##网页监控
netstat -antlp
9419:metalogger监听的端口地址,和元数据服务器通信的,当master宕机,可以通过它的日志,接管master的服务
9420:用于chunkserver连接的端口地址
9421:用于客户端挂接连接的端口地址
9425:web界面监控各个分布节点的端口
访问172.25.26.1:9425/mfs.cgi
slave端的部署
注意:/mnt/chunk1或/mnt/chunk2是一个给mfs 的分区,但在本机上是一个独立的目录,最好是一个单独的硬盘或者一个raid 卷,最低要求是一个分区。
server2
[root@server1 yum.repos.d]# scp MooseFS.repo server2:/etc/yum.repos.d/
ssh: Could not resolve hostname server2: Name or service not known
lost connection
[root@servre1 yum.repos.d]# scp MooseFS.repo demo2:/etc/yum.repos.d/
[root@server1 yum.repos.d]# scp MooseFS.repo demo3:/etc/yum.repos.d/
[root@server2 ~]# yum install moosefs-chunkserver ##安装冷备份,两个slave端
[root@server3 ~]# yum install moosefs-chunkserver ##安装冷备份
[root@server3 ~]# vim /etc/hosts ##做解析