分布式文件系统之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、扩容成本低、支持在线扩容,不影响业务,体系架构可伸缩性极强(官方的case可以扩到70台了!)
       5、体系架构高可用,所有组件无单点故障
       6、文件对象高可用,可设置任意的文件冗余程度(提供比 Raid 10 更高的冗余级别)

7、提供系统负载,将数据读写分配到所有的服务器上,加速读写性能

8、提供诸多高级特性,比如类似Windows的回收站功能、类似JAVA语言的GC(垃圾回收)、快照功能等

9、MooseFS 是 Google Filesystem 的一个 c 实现

10、自带 Web Gui 的监控接口

11、提高随机读或写效率和海量小文件的读写效率(有待进一步证明)

缺点:

1、Master Server 本身的性能瓶颈。MFS的主备架构情况类似于MySQL的主从复制,从可以扩展,主却不容易扩展。短期的对策就是按照业务来做切分。

2、随着MFS体系架构中存储文件的总数上升,Master Server对内存的需求量会不断增大(MFS把文件系统的结构缓存到 Maset Server 的内存中)。根据官方提供的数据,8g对应2500kw的文件数,2亿文件就得64GB内存。短期的对策也是按照业务来做切分。

3、Master server的单点解决方案的健壮性。目前官方自带的是把数据信息从Master Server同步到Metalogger Server上,Master Server一旦出问题Metalogger Server可以恢复升级为Master Server,但是需要恢复时间。目前,也可以通过第三方的高可用方案(heartbeat+drbd+moosefs)来解决 Master Server 的单点问题。

4、Metalogger Server 复制元数据的间隔时间较长(可调整)

4、应用场景

谈及MooseFS的应用场景,其实就是去谈分布式文件系统的应用场景。

1、大规模高并发的数据存储及访问(小文件、大文件),TFS适合小文件(<1M)

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

5、使用现状

针对 MooseFS 在全球的使用情况,我在国内的一篇论文上挖了一张图。图片如下,在该图中标记为驯鹿的就是 Moosefs 的使用者所在区域。从图中可以看出,它在中国、欧洲以及北美都拥有了大量的用户,正是有了广泛的用户基础,才能使得mfs特性能够快速的迭代和进步。

二、组成

1、架构图

整个架构中,主要有四个组件,分别是管理服务器 Master Server、备份服务器Metalogger Server、数据存储服务器 Chunk Server 和 客户端 Client。其中,管理服务器 Master Server 负责所有数据存储服务器的数据存储管理,响应客户端文件的读写请求,收回文件空间以及恢复文件,多存储节点之间的文件复制;元数据日志服务器 Metalogger Server,对 Master Server  服务器的变化日志文件进行备份,changelog_ml.*.mfs 是备份文件的类型,当 Master Server 出现故障时替换其继续工作,避免 Master Server 的单点故障导致分布式文件系统的不能正常运行;数据存储服务器chunkserver,服从 Master Server 的安排,定期向 Master Server 发送自己的状态信息,除此之外,还能向客户提供数据存储空间,能够向客户传输数据;客户端 Client,通过 FUSE 内核接口挂载到数据存储服务器上,在客户端看来使用数据存储服务器上的文件系统和使用本地Unix文件系统是一样的。

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

2、四个组件

组件名称 组件作用

管理服务器

Managing Server

简称Master Server

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

元数据备份服务器

Metadata backup servers

简称metalogger Server

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

数据存储服务器组

Data Servers

简称Chunk Servers

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

客户机服务器组

Client

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

三、原理

MooseFS是一个文件系统,因此其最主要的工作就是文件的读写流程,即 MooseFS的主要的两大工作过程。

1、MooseFS的读文件流程:

首先要了解的是它的读过程。如下图所示:

图中 Master Server用三角形表示,Chunk Server用圆形表示,Client 用方形表示。整个读过程有以下四个步骤:

1、首先client客户端访问主服务器master,获取文件实体的位置等相关信息

2、主服务器master查询缓存记录,把文件实体的位置等相关信息发给client客户端

3、Client客户端根据拿到的信息去访问对应的存储实体数据的服务器(data servers或者 chunk servers)

4、存储实体数据的服务器(data servers或者 chunk servers)把对应的数据返回给Client客户端

从上图,我们还可以看出,当多个MFS客户端读数据的时候,master服务器充当路由为这些客户端分发指路的作用,而数据的返回时由不同的数据服务器直接返回给请求的客户端,这样的模式可以极大的减轻主服务器的系统及网络瓶颈,增加了整个系统的吞吐,很像LVS的DR模式的负载均衡的分发和数据传输的情况。

2、MooseFS的写文件流程:

相对于读文件,MooseFS的写文件流程较为复杂,如图所示:

图中 Master Server用三角形表示,Chunk Server用圆形表示,Client 用方形表示。

整个写过程要分为下面八个步骤:

1、Client客户端访问主服务器master,请求写入数据

2、主服务器master查询缓存记录,如果是新文件,则会联系后面的数据服务器创建对应的chunk对象准备存放文件。

3、数据服务器返回创建对应的chunk对象成功给主服务器

4、主服务器master把文件实体的位置等相关信息发给client客户端。

5、Client客户端访问对应的数据服务器写数据

6、数据服务器之间进行数据同步,互相确认成功

7、数据服务器返回成功写入信息给Client客户端

8、Client客户端回报给主服务器master写入结束


OK!

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


时间: 2024-08-02 06:57:36

分布式文件系统之MooseFS----介绍的相关文章

分布式文件系统MFS(moosefs)实现存储共享(一)

分布式文件系统MFS(moosefs)实现存储共享 作者:田逸([email protected]) from:[url]http://net.it168.com/a2009/0403/270/000000270867.shtml[/url] 由于用户数量的不断攀升,我对访问量大的应用实现了可扩展.高可靠的集群部署(即lvs+keepalived的方式),但仍然有用户反馈访问慢的问题.通过排查个服务器的情况,发现问题的根源在于共享存储服务器NFS.在我这个网络环境里,N个服务器通过nfs方式共享

分布式文件系统MFS(moosefs)实现存储共享(第二版)

作者:田逸([email protected]) 由于用户数量的不断攀升,我对访问量大的应用实现了可扩展.高可靠的集群部署(即lvs+keepalived的方式),但仍然有用户反馈访问慢的问题.通过排查个服务器的情况,发现问题的根源在于共享存储服务器NFS.在我这个网络环境里,N个服务器通过nfs方式共享一个服务器的存储空间,使得NFS服务器不堪重负.察看系统日志,全是nfs服务超时之类的报错.一般情况下,当nfs客户端数目较小的时候,NFS性能不会出现问题:一旦NFS服务器数目过多,并且是那种

分布式文件系统FastDFS原理介绍

在生产中我们一般希望文件系统能帮我们解决以下问题,如:1.超大数据存储:2.数据高可用(冗余备份):3.读/写高性能:4.海量数据计算.最好还得支持多平台多语言,支持高并发. 由于单台服务器无法满足以上要求,这就迫使开发者不得不考虑使用其他方式解决此类问题.分布式文件系统就在这样迫切的需求下孕育而生. 今天为什么把标题定为“分布式文件系统”呢?是因为我想通过此次分享(FastDFS原理介绍),和大家去做更多关于分布式文件系统的研究和分享.我想这项研究应该会是一个“系列”性的专题.在本文之后还计划

分布式文件系统HDFS简要介绍

HDFS 的设计主要基于以下六点考虑: (1)容错 独立计算机的硬件错误不能当异常情况处理,而属于正常状态.HDFS 文件系统中会有许多个普通计算机节点构成, 在任何时间任何一个节点都有可能出现故障, 因此HDFS 应该设计成能够自动恢复和快速检测错误, 这应该是维持HDFS 可靠运行的核心目标. (2)流式访问数据集 HDFS上运行的应用程序需要以流式访问所存储的数据集.这些应用程序都采用并行的批处理方式进行数据计算,不同于普通系统上用于数据处理的应用程序.提高数据访问吞吐量是研究HDFS的重

MooseFS分布式文件系统简单配置

MooseFS是一种分布式文件系统,MooseFS文件系统结构包括以下四种角色: 1.管理服务器managing server (master) 2.元数据日志服务器(备份服务器)Metalogger server(Metalogger) 3.数据存储服务器data servers (chunkservers) 4.客户机挂载使用client computers 1.管理服务器:负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝 2.元数据日志服务器(备份服务器): 负

当下流行的分布式文件系统阅览

当下流行的分布式文件系统阅览 对数种分布式文件系统的简单介绍 本文对目前数种分布式文件系统进行简单的介绍.当前比较流行的分布式文件系统包括:Lustre.Hadoop.MogileFS.FreeNAS.FastDFS.NFS.OpenAFS.MooseFS.pNFS.以及GoogleFS. Lustre(www.lustre.org) lustre是一个大规模的.安全可靠的,具备高可用性的集群文件系统,它是由SUN公司开发和维护.该项目主要的目的就是开发下一代的集群文件系统,可以支持超过1000

linux mfs分布式文件系统

mosefs介绍: mooseFS(moose 驼鹿)是一款网络分布式文件系统.它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源.MFS也像其他类UNIX文件系统一样,包含了层级结构(目录树),存储着文件属性(权限.最后访问和修改时间),常见特殊的文件(块设备.字符设备.管道.套接字),符号链接,硬链接.MooseFS[MFS]是一个具有容错性的网络分布式文件系统.它把数据分散存放在多个物理服务器上,但呈现给用户的则是一个统一的资源当我们存储服务器的容量达到瓶颈之后,那我们就需要采用

[分布式文件系统] Sun&#39;s NFS

原文链接:http://pages.cs.wisc.edu/~remzi/OSTEP/dist-nfs.pdf 第一次使用分布式客户端服务器模式的计算的其中一个领域是分布式文件系统.在这样一个环境中,有许多客户机和一个服务器(服务器或者更多),服务器将数据保存在它的本地磁盘上,客户机通过组织良好的协议消息来获取数据. 正如上面图片中看到的,服务器有磁盘,客户机发送消息来获取它们需要的目录和文件.为什么我们要使用这种很麻烦的布局呢?(比如,为什么不直接使用客户机的本地磁盘呢?)主要的原因是这种布局

MFS分布式文件系统的部署

MFS分布式文件系统的部署 MFS简介 MFS是一个具有容错性的网络分布式文件系统,它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源. MFS文件系统的组成. 元数据服务器(master):负责管理文件系统,维护元数据. 元数据日志服务器(MetaLogger):存放日志文件. 数据存储服务器(Chunk Server):真正存储数据的服务器. 客户端(client):用来挂载MFS文件文件系统的. MFS读取数据的处理过程. 1. 客户端向元数据服务器发出读请求. 2. 元

MooseFS分布式文件系统+keepalived高可用+unison和intoify实时双击同步(一)

1.  分布式文件系统mfs(moose file system) 1.1.mfs文件系统的组成 1.元数据服务器.在整个体系中负责管理管理文件系统,目前MFS只支持一个元数据服务器master,这是一个单点故障,需要一个性能稳定的服务器来充当.希望今后MFS能支持多个master服务器,进一步提高系统的可靠性. 2.元数据日志服务器.备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs.当元数据服务器数据丢失或者损毁,可从日志服务器取得文件进行恢复. 3.数据存