分布式文件系统之MooseFS----介绍

分布式文件系统之MooseFS----介绍,第1张

分布式文件系统之MooseFS----介绍

前段时间因为nfs存储的问题,公司做了一些调研。最后虽然有nfs高可用方案(nfs+drbd+heartbeat),但是nfs故障转移时会有2分钟左右的延迟。像这样。。。我们开始了分布式文件系统的研究和选择。就是这样,有了这一系列的博文。

MooseFS预计有3篇博文,分为介绍、部署和深入。这篇博文主要介绍了MooseFS。


一、简介

1。导言

MooseFS是一个具有冗余和容错功能的分布式网络文件系统。它将数据存储在多个物理服务器或单独的磁盘或分区上,并确保一个数据有多个备份副本。对于来访的客户机或用户来说,整个分布式网络文件系统集群就像一个资源。根据其文件 *** 作,MooseFS相当于一个类似UNIX的文件系统:

1.mfs是一种分层的目录树结构。

2.存储支持POSIX标准的文件属性(权限、上次访问和修改时间)。

3.支持特殊文件,如块设备、字符设备、管道和套接字以及链接文件(符号链接和硬链接)。

4.支持基于IP地址和密码访问文件系统。


2。特征

1、高可靠性,每个数据可以设置多个副本(多个数据),并且可以存储在不同的主机上。

2.高可扩展性,可以通过增加主机的磁盘容量或主机数量,轻松动态扩展整个文件系统的存储容量。

3.高容错性。我们可以设置mfs系统,让数据文件在被删除后仍然可以保存在主机的回收站中,从而实现数据的误恢复。

4.高数据一致性,即使在文件被写入/访问时,我们仍然可以完成文件的一致快照。


3。优点和缺点

优点:

1.因为MFS是基于GPL发布的,完全免费,开发和社区都很活跃,信息非常丰富。

2.轻量级,易于部署,易于配置和维护

3.通用文件系统,不需要修改上层应用就可以使用(那些需要特殊API的DFS确实有点麻烦)
4。扩展成本低,支持在线扩展,业务不受影响。架构扩展性极强(官方案例可以扩展到70!)
5。该架构高度可用,所有组件都没有单点故障
6。文件对象高度可用,并且可以设置任何程度的文件冗余(提供比Raid10更高的冗余级别)

7.提供系统负载,将数据读写分布到所有服务器,加快读写性能。

8.提供很多高级功能,比如类似Windows的回收站功能,类似JAVA语言的GC(垃圾收集),快照功能等。

9.MooseFS是Google文件系统的C实现。

10.具有WebGui的监控界面

1.提高随机读写效率和海量小文件读写效率(有待进一步证明)

缺点:

1.主服务器本身的性能瓶颈。MFS的主从架构类似于MySQL的主从复制。从的可以扩展,主的不容易扩展。短期对策是根据业务来分。

2.随着MFS架构存储文件总数的增加,对主服务器内存的需求也会不断增加(MFS将文件系统的结构缓存到Maset服务器的内存中)。根据官方数据,8g对应2500万个文件,2亿个文件有64GB内存。短期对策也是按照业务来分。

3.主服务器单点解决方案的健壮性。目前官方的是将数据信息从主服务器同步到Metalogger服务器。一旦主服务器出现问题,Metalogger服务器可以恢复并升级为主服务器,但恢复需要时间。目前也可以用一个第三方的高可用方案(heartbeat+drbd+moosefs)来解决主服务器的单点问题。

4.Metalogger服务器以很长的时间间隔复制元数据(可调)


4。应用场景

说MooseFS的应用场景,其实就是在说分布式文件系统的应用场景。

1、大规模和高并发的数据存储和访问(小文件、大文件),TFS适用于小文件(

2.大规模数据处理,如日志分析


5。使用状态

鉴于MooseFS在全球的使用情况,我在国内的一篇论文里挖了一张图。如下图所示,Moosefs用户所在的区域在这张图中被标记为驯鹿。从图中可以看出,它在中国、欧洲和北美拥有大量用户。有了广泛的用户基础,mfs的特性才能快速迭代和改进。

MooseFS官方使用链接:http://www.moosefs.org/who-is-using-moosefs.html


二。构成

1。架构图


在整个架构中,有四个主要组件,即管理服务器主服务器、备份服务器Metalogger服务器、数据存储服务器ChunkServer和客户端Client。主服务器,即管理服务器,负责所有数据存储服务器的数据存储管理,响应客户端的文件读写请求,检索文件空和恢复文件,在多个存储节点之间复制文件;元数据服务器MetaloggerServer备份主服务器的更改日志文件。changelog_ml。*.mfs是备份文件的类型。当主服务器出现故障时,它将继续工作,从而避免由于主服务器单点故障导致的分布式文件系统的故障。Chunkserver,数据存储服务器,服从主服务器的安排,定时向主服务器发送自己的状态信息,此外还可以为客户提供数据存储室空,可以向客户传输数据;客户端通过FUSE内核接口安装在数据存储服务器上。在客户端看来,使用数据存储服务器上的文件系统与使用本地Unix文件系统是一样的。

下面对这四个组件进行更详细的介绍!


2。四个组件

组件名称 组件功能 管理服务器

管理服务器

简称主服务器

这个组件的角色是管理整个mfs文件系统的主服务器,除了分发用户请求外,还用来存储整个文件系统中的每个数据文件的metadata信息,metadata(元数据)信息包括文件(也可以是目录、socket、管道、设备等)的大小、属性、文件位置路径等,以及文件空间的回收和恢复,控制多chunkserver节点的数据拷贝。很类似lvs负载均衡主服务器,不同的是lvs仅仅根据算法分发请求,而master根据内存里的metadata信息来分发请求。这个master只能有一台处于激活工作的状态。 元数据备份服务器

元数据备份服务器

简称Metalogger服务器

这个组件的作用是备份管理服务器master的变化的metadata信息日志文件,文件类型为changelog_ml.*.mfs,以便于在主服务器出现问题的时候,可以经过简单的 *** 作即可让新主服务器进行工作。这很类似Mysql的主从同步,只不过他不像mysql从库那样在本地应用数据,而只是接收主服务器上文件写入时记录的文件相关的metadata信息。这个backup可以有一台或多台,它很类似于lvs从负载均衡器。 数据存储服务器组

数据服务器

简称为块服务器

这个组件就是真正存放数据文件实体的服务器了,这个角色可以有多台不同的物理服务器或不同的磁盘及分区来充当,当配置数据的副本多于一份时,剧写入到一个数据服务器后,会根据算法在其他数据服务器上进行同步备份。这个很像lvs集群的rs节点。 客户端服务器组

客户

这个组件就是挂载并使用mfs文件系统的客户端,当读写文件时,客户端首先连接主管理服务器获取数据的metadata信息,然后根据得到的metadata信息,访问数据服务器读取或写入文件实体。mfs客户端通过FUSEmechanism实现挂载MFS文件系统的。因此,只要系统支持FUSE,就可以作为客户端访问MFS整个文件系统。所谓的客户端并不是网站用户,而是前端访问文件系统的应用服务器,如web

三。原则

MooseFS是一个文件系统,所以它的主要工作是文件读写过程,也就是MooseFS的两个主要工作过程。

1。MooseFS的文件读取过程:

首先要知道它的阅读过程。如下图所示:


在图中,主服务器用三角形表示,块服务器用圆圈表示,客户端用正方形表示。整个阅读过程有以下四个步骤:

1.首先,客户端访问主服务器以获得相关信息,例如文件实体的位置。

2.主服务器master查询缓存记录,并将相关信息(如文件实体的位置)发送给客户端。

3.客户端根据获得的信息访问存储实体数据的相应服务器(数据服务器或块服务器)。

4.存储实体数据的服务器(数据服务器或块服务器)将相应的数据返回给客户端。

从上图我们还可以看到,当多个MFS客户端读取数据时,主服务器作为路由引导这些客户端,当数据返回时,不同的数据服务器直接返回给请求客户端。这种模式可以大大降低主服务器的系统和网络瓶颈,增加整个系统的吞吐量,很像LVS的DR模式的负载均衡分布和数据传输。


2。MooseFS的文件写入过程:

与读取文件相比,MooseFS的文件写入过程比较复杂,如图所示:


在图中,主服务器用三角形表示,块服务器用圆圈表示,客户端用正方形表示。

整个写作过程分为以下八个步骤:

1.客户端客户端访问主服务器并请求写入数据。

2.主服务器查询缓存记录。如果是新文件,它将联系后台数据服务器创建相应的块对象来存储文件。

3.数据服务器将创建相应块对象的成功返回给主服务器。

4.主服务器向客户端发送文件实体的位置和其他相关信息。

5.客户端客户端访问相应的数据服务器写入数据。

6.数据服务器之间的数据同步,并且相互确认成功。

7.数据服务器向客户端返回成功写入信息。

8.客户端客户端向主服务器报告写入完成。


好!

以上是对MooseFS的简单介绍。希望能对51博主有所帮助!


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/783841.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-04
下一篇 2022-05-04

发表评论

登录后才能评论

评论列表(0条)

保存