当前位置:文档之家› 7种分布式文件系统介绍

7种分布式文件系统介绍

FastDFS (7)Fastdfs简介 (7)Fastdfs系统结构图 (7)FastDFS和mogileFS的对比 (8)MogileFS (10)Mogilefs简介 (10)Mogilefs组成部分 (10)0)数据库(MySQL)部分 (10)1)存储节点 (11)2)trackers(跟踪器) (11)3)工具 (11)4)Client (11)Mogilefs的特点 (12)1. 应用层——没有特殊的组件要求 (12)2. 无单点失败 (12)3. 自动的文件复制 (12)4. “比RAID好多了” (12)5. 传输中立,无特殊协议 (13)6.简单的命名空间 (13)7.不用共享任何东西 (13)8.不需要RAID (13)9.不会碰到文件系统本身的不可知情况 (13)HDFS (14)HDFS简介 (14)特点和目标 (14)1. 硬件故障 (14)2. 流式的数据访问 (14)3. 简单一致性模型 (15)4. 通信协议 (15)基本概念 (15)1. 数据块(block) (15)2. 元数据节点(Namenode)和数据节点(datanode) . 162.1这些结点的用途 (16)2.2元数据节点文件夹结构 (17)2.3文件系统命名空间映像文件及修改日志 (18)2.4从元数据节点的目录结构 (21)2.5数据节点的目录结构 (21)文件读写 (22)1.读取文件 (22)1.1 读取文件示意图 (22)1.2 文件读取的过程 (23)2.写入文件 (24)2.1 写入文件示意图 (24)2.2 写入文件的过程 (24)HDFS不能提供的特点 (25)1.低延时访问 (25)2.大量小文件 (26)3.多用户写,任意文件修改 (27)TFS (27)TFS简介 (27)TFS系统的基本情况 (28)应用规模 (28)性能参数 (28)TFS的逻辑架构图 (29)结合架构图做了进一步说明 (29)TFS的不足之处 (30)1、通用性方面。

(30)2、性能方面。

(30)3、用户接口。

(30)4、代码方面。

(30)5、技术文档。

(31)6、小文件优化。

(31)MooseFS(简称MFS) (31)MFS简介 (31)MFS的优点 (31)网络示意图(如下) (32)MFS文件系统结构 (33)包含的4种角色 (33)◆管理服务器managing server (master)33◆元数据日志服务器Metalogger serve(Metalogger)33◆数据存储服务器data servers (chunkservers)34◆客户端client computers344种角色的协作过程 (35)MFS读写进程 (35)MFS读进程 (35)MFS写进程 (36)KFS (38)KFS简介 (38)KFS的特性 (38)1.自动存储扩充 (38)2.有效性 (38)3.文件复制粒度 (38)4.还原复制 (38)5.负载平衡 (39)6.数据完整性 (39)7.文件写入 (39)8.契约 (39)9.支持FUSE (39)10.支持C++,Java,Python方式的调用 (40)11.提供了丰富的工具程序 (40)12.提供了启动和停止服务的脚本 (40)KFS高级特性 (40)KFS与HDFS的比较 (40)1.体系结构图的比较 (40)2.特点的比较 (41)Ceph (42)Ceph 的目标 (42)Ceph 生态系统 (42)可以大致划分为四部分 (42)Ceph 生态系统的概念架构 (43)架构视图1 (43)架构视图2 (44)Ceph 组件 (44)Ceph 客户端 (45)Ceph 元数据服务器 (47)Ceph 对象存储 (49)其他有趣功能 (49)Ceph 的地位和未来 (50)其他分布式文件系统 (50)展望未来 (50)FastDFSFastdfs简介—国人在mogileFS基础上进行改进的key-value型文件系统,不支持FUSE,提供比mogileFS更好的性能—轻量级(移植性比较强,资源依赖性小?)的开源分布式文件系统—解决的问题:1.大容量的文件存储 2.高并发的访问 3.文件存取时的负载均衡—特色:实现了软件方式的RAID;支持服务器在线扩充;支持相同的文件只存一份,节省了磁盘空间—限制:只能通过client api方式访问,不支持posix方式访问—适合范围:大中型网站用来存储资源文件(如图片、文档、音频、视频、音频等),即以文件为载体的在线服务—FastDFS服务端有两个角色:跟踪器()和存储节点(),跟踪器总要做调度工作,在访问上做负载均衡的作用,且跟踪器可用多台服务器进行均衡,这样可避免单点故障的发生。

—通信协议:有专门协议,下载文件支持HTTPFastdfs系统结构图FastDFS和mogileFS的对比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的H TTP方式,效率更高。

并且FastDFS使用sendfile传输文件,采用了内存零拷贝,系统开销更小,文件传输效率更高。

5. FastDFS有着详细的设计和使用文档,而MogileFS的文档相对比较缺乏。

6. FastDFS的日志记录非常详细,系统运行时发生的任何错误信息都会记录到日志文件中,当出现问题时方便管理员定位错误所在。

7. FastDFS还对文件附加属性(即meta data,如文件大小、图片宽度、高度等)进行存取,应用不需要使用数据库来存储这些信息。

8. FastDFS从V1.14开始支持相同文件内容只保存一份,这样可以节省存储空间,提高文件访问性能。

MogileFSMogilefs简介—一种分布式文件存储系统,可支持文件自动备份的功能,提供可用性和高可扩展性,用Perl语言编写,由于有依赖模块的问题,安装过程需要其他库和模块的支持,安装不算容易。

— key-value型元文件系统,不支持FUSE,应用程序访问它需要API,主要在web领域处理海量小图片,效率高,—适用性:不支持对一个文件的随机读写,只适合做一部分应用。

比如图片服务,静态html服务,即文件写入后基本上那个不需要修改的应用。

Mogilefs组成部分0)数据库(MySQL)部分mogdbsetup程序可用来初始化数据库。

数据库保存了Mogilefs的所有元数据,你可以单独拿数据库服务器来做,也可以跟其他程序跑在一起,数据库部分非常重要,类似邮件系统的认证中心那么重要,如果这儿挂了,那么整个Mogilefs将处于不可用状态。

因此最好是HA结构。

1)存储节点mogstored程序的启动将使本机成为一个存储节点。

启动时默认去读/etc/mogilefs/mogstored.conf ,具体配置可以参考配置部分。

mogstored启动后,便可以通过mogadm增加这台机器到cluster中。

一台机器可以只运行一个mogstored作为存储节点即可,也可以同时运行其他程序。

2)trackers(跟踪器)mogilefsd即trackers程序,类似mogilefs的wiki上介绍的,trackers做了很多工作,Replication ,Deletion,Query,Reaper,Monitor等等。

mogadm,mogtool的所有操作都要跟trackers打交道,Client的一些操作也需要定义好trackers,因此最好同时运行多个trackers来做负载均衡。

trackers也可以只运行在一台机器上,也可以跟其他程序运行在一起,只要你配置好他的配置文件即可,默认在/etc/mogilefs/mogilefsd.conf。

3)工具主要就是mogadm,mogtool这两个工具了,用来在命令行下控制整个mogilefs系统以及查看状态等等。

4)ClientClient实际上是一个Perl的pm,可以写程序调用该pm来使用mogilefs系统,对整个系统进行读写操作。

Mogilefs的特点1. 应用层——没有特殊的组件要求2. 无单点失败MogileFS启动的三个组件(存储节点、跟踪器、跟踪用的数据库),均可运行在多个机器上,因此没有单点失败。

(你也可以将跟踪器和存储节点运行在同一台机器上,这样你就没有必要用4台机器)推荐至少两台机器。

3. 自动的文件复制基于不同的文件“分类”,文件可以被自动的复制到多个有足够存储空间的存储节点上,这样可以满足这个“类别”的最少复制要求。

比如你有一个图片网站,你可以设置原始的JPEG图片需要复制至少三份,但实际只有1 or 2分拷贝,如果丢失了数据,那么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已经提供了。

相关主题