
7种分布式文件系统介绍.doc
51页FastDFS 7Fastdfs简介 7Fastdfs系统结构图 7FastDFS和mogileFS的对比 8MogileFS 10Mogilefs简介 10Mogilefs组成部分 100) 数据库(MySQL)部分 101) 存储节点 112) trackers(跟踪器) 113) 工具 114) Client 11Mogilefs的特点 121. 应用层——没有特殊的组件要求 122. 无单点失败 123. 自动的文件复制 124. “比RAID好多了” 125. 传输中立,无特殊协议 136.简单的命名空间 137.不用共享任何东西 138.不需要RAID 139.不会碰到文件系统本身的不可知情况 13HDFS 14HDFS简介 14特点和目标 141. 硬件故障 142. 流式的数据访问 143. 简单一致性模型 154. 通信协议 15基本概念 151. 数据块(block) 152. 元数据节点(Namenode)和数据节点(datanode) 162.1这些结点的用途 162.2元数据节点文件夹结构 172.3文件系统命名空间映像文件及修改日志 182.4从元数据节点的目录结构 212.5数据节点的目录结构 21文件读写 221.读取文件 221.1 读取文件示意图 221.2 文件读取的过程 232. 写入文件 242.1 写入文件示意图 242.2 写入文件的过程 24HDFS不能提供的特点 251.低延时访问 252.大量小文件 263.多用户写,任意文件修改 27TFS 27TFS简介 27TFS系统的基本情况 28应用规模 28性能参数 28TFS的逻辑架构图 29结合架构图做了进一步说明 29TFS的不足之处 301、通用性方面。
302、性能方面 303、用户接口 304、代码方面 305、技术文档 316、小文件优化 31MooseFS(简称MFS) 31MFS简介 31MFS的优点 31网络示意图(如下) 32MFS文件系统结构 33包含的4种角色 33u 管理服务器managing server (master) 33u 元数据日志服务器Metalogger serve(Metalogger) 33u 数据存储服务器data servers (chunkservers) 34u 客户端client computers 344种角色的协作过程 35MFS读写进程 35MFS读进程 35MFS写进程 36KFS 38KFS简介 38KFS的特性 381.自动存储扩充 382.有效性 383.文件复制粒度 384.还原复制 385.负载平衡 396.数据完整性 397.文件写入 398.契约 399.支持FUSE 3910.支持C++,Java,Python方式的调用 4011.提供了丰富的工具程序 4012.提供了启动和停止服务的脚本 40KFS高级特性 40KFS与HDFS的比较 401.体系结构图的比较 402.特点的比较 41Ceph 42Ceph 的目标 42Ceph 生态系统 42可以大致划分为四部分 42Ceph 生态系统的概念架构 43架构视图1 43架构视图 2 44Ceph 组件 44Ceph 客户端 45Ceph 元数据服务器 47Ceph 对象存储 49其他有趣功能 49Ceph 的地位和未来 50其他分布式文件系统 50展望未来 50FastDFSFastdfs简介— 国人在mogileFS基础上进行改进的key-value型文件系统,不支持FUSE,提供比mogileFS更好的性能— 轻量级(移植性比较强,资源依赖性小?)的开源分布式文件系统— 解决的问题:1.大容量的文件存储 2.高并发的访问 3.文件存取时的负载均衡— 特色:实现了软件方式的RAID;支持服务器扩充;支持相同的文件只存一份,节省了磁盘空间— 限制:只能通过client api方式访问,不支持posix方式访问— 适合范围:大中型网站用来存储资源文件(如图片、文档、音频、视频、音频等),即以文件为载体的服务— FastDFS服务端有两个角色:跟踪器()和存储节点(),跟踪器总要做调度工作,在访问上做负载均衡的作用,且跟踪器可用多台服务器进行均衡,这样可避免单点故障的发生。
— 通信协议:有专门协议,下载文件支持HTTPFastdfs系统结构图FastDFS和mogileFS的对比1. FastDFS完善程度较高,不需要二次开发即可直接使用;2. 和MogileFs相比,FastDFS裁减了跟踪用的数据库,只有两个角 色:tracker和storageFastDFS的架构既简 化了系统,同时 也消除了性能瓶颈;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开始支持相同文件内容只保存一份,这样可以节省存储空间,提高文件访问性能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中,会造成冲突key7.不用共享任何东西MogileFS不需要依靠昂贵的SAN来共享磁盘,每个机器只用维护好自己的磁盘8.不需要RAID在MogileFS中的磁盘可以是做了RAID的也可以是没有,如果是为了安全性着想的话RAID没有必要买了,因为MogileFS已经提供了9.不会碰到文件系统本身的不可知情况在MogileFS中的存储节点的磁盘可以被格式化成多种格(ext3,reiserFS等等)MogilesFS会做自己内部目录的哈希,所以它不会碰到文件系统本身的一些限制,比如一个目录中的最大文件数你可以放心的使用HDFSHDFS简介HDFS全称是Hadoop Distributed FileSystem目前HDFS支持的使用接口除了Java的还有,Thrift、C、FUSE、WebDAV、HTTP等。
构成HDFS主要是Namenode(master。
