`

开源分布式文件系统FastDFS和MogileFS

阅读更多

开源分布式文件系统FastDFS和MogileFS

 

版权声明 :转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://lovewo2go.blogbus.com/logs/36465321.html
 

FastDFS是一个开源的轻量级分布式文件系统,她对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。

存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key valuepair)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以 包含多个键值对。

FastDFS系统结构如下图所示:

点击查看原始尺寸

跟踪器和存储节点都可以由一台多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。

为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加 就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和 负载均衡的作用。
在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。

当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。
FastDFS中的文件标识分为两个部分:卷名和文件名,二者缺一不可。


  FastDFS file upload
上传文件交互过程:
1. client询问tracker上传到的storage,不需要附加参数;
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件上传。 



  FastDFS file download
下载文件交互过程:
1. client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件下载。

需要说明的是,client为使用FastDFS服务的调用方,client也应该是一台服务器,它对tracker和storage的调用均为服务器间的调用。

google code地址:http://code.google.com/p/fastdfs/
google code下载地址:http://code.google.com/p/fastdfs/downloads/list

 

MogileFS一个开源的分布式文件系统

 

1.应用层——没有特殊的组件要求
2.无单点失败——MogileFS启动的三个组件(存储节点、跟踪器、跟踪用的数据库),均可运行在多个 机器上,因此没有单点失败。(你也可以将跟踪器和存储节点运行在同一台机器上,这样你就没有必要用4台机器)推荐至少两台机器。
3.自动的文件复制——文件是基于他们的“类”,文件可以自动的在多个存储节点上复制,这是为了尽量少的复制,才使用“类”的。加入你有的图片站点有 三份JPEG图片的拷贝,但实际只有1or2份拷贝,那么Mogile可以重新建立遗失的拷贝数。用这种办法,MogileFS(不做RAID)可以节约 在磁盘,否则你将存储同样的拷贝多份,完全没有必要。
4.“比RAID好多了”——在一个非存储区域网络的RAID(non-SAN RAID)的建立中,磁盘是冗余的,但主机不是,如果你整个机器坏了,那么文件也将不能访问。 MogileFS在不同的机器之间进行文件复制,因此文件始终是可用的。
5.传输中立,无特殊协议——MogileFS客户端可以通过NFS或HTTP来和MogileFS的存储节点来通信,但首先需要告知跟踪器一下。
6.简单的命名空间——文件通过一个给定的key来确定,是一个全局的命名空间。你可以自己生成多个命名空间,只要你愿意,但是这样可能在同一MogileFS中,会造成冲突key。
7.不用共享任何东西——MogileFS不需要依靠昂贵的SAN来共享磁盘,每个机器只用维护好自己的磁盘。
8.不需要RAID——在MogileFS中的磁盘可以是做了RAID的也可以是没有,如果是为了安全性着想的话RAID没有必要买了,因为MogileFS已经提供了。
9.不会碰到文件系统本身的不可知情况——在MogileFS中的存储节点的磁盘可以被格式化成多种格(ext3,reiserFS等等)。 MogilesFS会做自己内部目录的哈希,所以它不会碰到文件系统本身的一些限制,比如一个目录中的最大文件数。你可以放心的使用。

 

FastFDS和MogileFS的对比 

 

FastDFS设计时借鉴了MogileFS的一些思路。FastDFS是一个完善的分布式文件存储系统,通过客户端API对文件进行读写。可以 说,MogileFS的所有功能特性FastDFS都具备,MogileFS网址:http://www.danga.com/mogilefs/。


另外,相对于MogileFS,FastDFS具有如下特点和优势:
1. FastDFS完善程度较高,不需要二次开发即可直接使用;
2. 和MogileFS相比,FastDFS裁减了跟踪用的数据库,只有两个角色:tracker和storage。FastDFS的架构既简化了系统,同时也消除了性能瓶颈;
3. 在系统中增加任何角色的服务器都很容易:增加tracker服务器时,只需要修改storage和client的配置文件(增加一行tracker配置);增加storage服务器时,通常不需要修改任何配置文件,系统会自动将该卷中已有文件复制到该服务器;
4. FastDFS比MogileFS更高效。表现在如下几个方面:
  1)参见上面的第2点,FastDFS和MogileFS相比,没有文件索引数据库,FastDFS整体性能更高;
  2)从采用的开发语言上看,FastDFS比MogileFS更底层、更高效。FastDFS用C语言编写,代码量不到2万行,没有依赖其他开源软件或程序包,安装和部署特别简洁;而MogileFS用perl编写;
  3)FastDFS直接使用socket通信方式,相对于MogileFS的HTTP方式,效率更高。并且FastDFS使用sendfile传输文件,采用了内存零拷贝,系统开销更小,文件传输效率更高。
5. FastDFS有着详细的设计和使用文档,而MogileFS的文档相对比较缺乏。
6. FastDFS的日志记录非常详细,系统运行时发生的任何错误信息都会记录到日志文件中,当出现问题时方便管理员定位错误所在。
7. FastDFS还对文件附加属性(即meta data,如文件大小、图片宽度、高度等)进行存取,应用不需要使用数据库来存储这些信息。
8. FastDFS从V1.14开始支持相同文件内容只保存一份,这样可以节省存储空间,提高文件访问性能。

分享到:
评论

相关推荐

    开源分布式文件系统FastDFS和MogileFS - [Linux].docx

    《FastDFS与MogileFS:两种开源分布式文件系统的比较》 FastDFS和MogileFS都是开源的分布式文件系统,适用于处理大量文件存储和访问的场景,如图像分享网站和视频流媒体服务。这两种系统都设计有防止单点故障的机制...

    分布式文件系统FastDFS架构剖析

    FastDFS是一款类GoogleFS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能通过专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。准确地讲,GoogleFS以及FastDFS...

    开源分布式文件系统比较.pdf

    本篇主要对比分析了五个知名的开源分布式文件系统:CEPH、GlusterFS、MooseFS、MogileFS和FastDFS。 1. **CEPH**: Ceph是一款高性能的开源分布式存储系统,其核心特点在于其创新的CRUSH算法。CRUSH(Controlled ...

    开源分布式文件系统比较.docx

    在本文中,我们将探讨几个开源的分布式文件系统,包括Ceph、GlusterFS、MogileFS和FastDFS,以及它们的特点和在实际使用中遇到的问题。 首先,Ceph是一个高性能、高可用性的分布式文件系统,它的核心优势在于其独特...

    应用级分布式文件系统接口标准化探索.pdf

    从提供的文件内容看,目前市场上存在多种应用级分布式文件系统,例如HDFS(Hadoop Distributed File System)、MogileFS、FastDFS、GFS(Google File System)、pNFS(并行网络文件系统)、KFS等。HDFS是Hadoop项目...

    FastDFS和Linux下安装使用FastDFS

    常见的开源分布式文件系统包括 mogileFS、fastDFS、mooseFS、glusterFS、ceph 和 lustre 等。 - **mogileFS**:Key-Value 型元文件系统,不支持 FUSE,主要用于 web 领域处理海量小图片,相比 mooseFS 效率更高。 -...

    Java高级架构之FastDFS分布式文件集群详解

    FastDFS是一个开源的轻量级分布式文件系统,使用C实现,支持Linux、BSD等unix-like操作系统。FastDFS主要解决大容量文件存储的问题,并追求高性能和高扩展性。 FastDFS的主要概念包括: 1. Tracker-server:跟踪...

    MogileFS与FastDFS

    **FastDFS**同样是一款开源分布式文件系统,专为互联网环境下的文件存储设计。它的架构更为简洁,同时也提供了高性能的服务支持。 ##### **2.1 基本架构** FastDFS的核心组成包括TrackerServer和StorageServer两大...

    分布式文件系统介绍

    FastDFS是一款由国人基于MogileFS改进而来的轻量级、开源的分布式文件系统。相较于MogileFS,它提供了更好的性能,并针对特定应用场景进行了优化。 **解决的问题** - **大容量的文件存储**:FastDFS能够支持大规模...

    FastDFS分布式存储实战

    **FastDFS**作为一款开源的轻量级分布式文件系统,特别适用于存储4KB到500MB之间的文件,例如图片、视频、文档等。其设计目标是为了解决大数据存储和读写负载均衡问题,特别是在高并发场景下表现出色。 #### 分布式...

    FastDFS 分布式存储 实战

    FastDFS是一个开源的轻量级分布式文件系统,主要用于解决大数据存储和读写负载均衡的问题。它的设计非常轻便,适合存储4KB到500MB大小的文件,尤其适用于图片网站、短视频网站、文档分享、应用下载等场景。与传统的...

    构建分布式文件存储[定义].pdf

    在分布式文件系统中,开源的选择如Google FS、FastDFS、MogileFS、HDFS和TFS等大多基于Linux,但这里的目标是构建一个基于Windows服务器的分布式文件服务。设计目标包括: 1. 动态伸缩性:系统应能在大量低成本...

    ubuntu18.04 搭建FastDFS图片服务器

     FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能通过 专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。准确地讲,Google FS以及...

    FastDFS教程

    FastDFS是一个开源轻量级分布式文件系统,由余庆(happyfish100)编写。它适合存储大小为4KB到500MB之间的小文件,广泛应用于图片网站、短视频网站、文档存储和app下载站等场景。FastDFS不同于系统级的分布式文件系统...

Global site tag (gtag.js) - Google Analytics