分布式文件系统概况及FastDFS介绍_余 庆

合集下载

FastDFS介绍.ppt

FastDFS介绍.ppt
• #step 2. enter the FastDFS dir • cd FastDFS
• #step 3. if HTTP supported, modify make.sh, uncomment the line: • # WITH_HTTPD=1, then execute: • ./make.sh
分布式文件系统及 FastDFS介绍
余庆 2010年6月12日
我的存储经历
• 普通服务器
– 存储BBS图片,通过rsync同步到文件服务器 – 经历了两个阶段:普通服务器(本机磁盘)和
专用文件服务器(磁盘阵列)
• 集中式存储设备
– 使用NetApp Filer,存储用户相册
• 分布式文件系统
– 雅虎自己研发的YLEM,基于MogileFS,存储 用户相册
|
|__二级目录:256个存放数据文件的目录
|__logs |__storaged.log:storage server日志文件
安装和运行
• #step 1. download FastDFS source package and unpack it, • # if you use HTTP to download file, please download libevent 1.4.x and install it • tar xzf FastDFS_v1.x.tar.gz • #for example: • tar xzf FastDFS_v1.28.tar.gz
文档、音频、视频等等)
FastDFS介绍提纲
• 系统架构 • 相关术语 • 同步机制 • 通信协议 • 目录结构 • 安装和运行 • 和其他系统对比
系统架构-架构图

fastdfs原理

fastdfs原理

fastdfs原理FastDFS是一种分布式文件系统,用于存储大规模文件的分布式存储系统。

它由跟踪服务器(tracker server)和存储服务器(storage server)组成,能够提供高性能、高可靠性和可扩展性的文件存储服务。

FastDFS的工作原理是将大文件切分成多个小文件,然后分别存储到不同的存储服务器中,同时跟踪服务器记录了每个小文件所在的存储服务器的地址和文件名。

当用户上传文件时,跟踪服务器会选择一个存储服务器,并将文件传输到该服务器上,并返回文件的地址供用户访问。

当用户需要下载文件时,跟踪服务器会根据文件的地址找到对应的存储服务器,并将文件传输给用户。

FastDFS采用了一些优化策略来提高系统性能和可靠性。

首先,它采用了分布式存储的方式,将大文件切分成小文件存储在多个存储服务器上,这样可以提高文件的读写速度。

其次,FastDFS使用了冗余存储的方式来提高系统的可靠性,即将同一文件的多个副本存储在不同的存储服务器上,当某个存储服务器发生故障时,可以通过其他存储服务器提供文件访问服务,保证系统的可用性。

此外,FastDFS还提供了文件上传和下载的负载均衡策略,可以根据服务器的负载情况选择最优的存储服务器进行文件的上传和下载。

FastDFS的设计理念是简单、易用和高效。

它采用了轻量级的协议来实现文件的上传和下载,减少了系统的复杂性和开销。

同时,FastDFS提供了丰富的客户端接口和工具,方便用户进行文件的管理和操作。

总的来说,FastDFS是一种高性能、高可靠性和可扩展性的分布式文件存储系统。

它通过将大文件切分成小文件存储在多个存储服务器上,并采用冗余存储和负载均衡等策略,提供了快速、可靠的文件存储和访问服务。

FastDFS的设计理念简单易用,同时提供了丰富的客户端接口和工具,方便用户进行文件的管理和操作。

FastDFS介绍

FastDFS介绍

FastDFS介绍2011年2月26日21:21FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。

它只能通过专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。

准确地讲,Google FS以及FastDFS、mogileFS、HDFS、TFS等类Google FS都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。

FastDFS的设计理念FastDFS是为互联网应用量身定做的分布式文件系统,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标。

和现有的类Google FS分布式文件系统相比,FastDFS的架构和设计理念有其独到之处,主要体现在轻量级、分组方式和对等结构三个方面。

轻量级FastDFS只有两个角色:Tracker server和Storage server。

Tracker server作为中心结点,其主要作用是负载均衡和调度。

Tracker server在内存中记录分组和Storage server的状态等信息,不记录文件索引信息,占用的内存量很少。

另外,客户端(应用)和Storage server访问Tracker server时,Tracker server扫描内存中的分组和Storage server信息,然后给出应答。

由此可以看出Tracker server非常轻量化,不会成为系统瓶颈。

FastDFS中的Storage server在其他文件系统中通常称作Trunk server或Data server。

Storage server直接利用OS的文件系统存储文件。

FastDFS不会对文件进行分块存储,客户端上传的文件和Storage server上的文件一一对应。

众所周知,大多数网站都需要存储用户上传的文件,如图片、视频、电子文档等。

出于降低带宽和存储成本的考虑,网站通常都会限制用户上传的文件大小,例如图片文件不能超过5MB、视频文件不能超过100MB等。

分布式文件系统FastDFS架构剖析及配置优化

分布式文件系统FastDFS架构剖析及配置优化

DTCC2012
FastDFS上传文件流程图
1. client询问tracker上传到的storage; 2. tracker返回一台可用的storage; 3. client直接和storage通信完成文件上传,storage返回文件ID。
DTCC2012
FastDFS下载文件流程图
1. client询问tracker可以下载指定文件的storage,参数为文件 ID(组名和文件名); 2. tracker返回一台可用的storage; 3. client直接和storage通信完成文件下载。
DTCC2012
FastDFS如何做到无索引服务器?
• 上传文件时,文件ID由storage server生成并 返回给client • 文件ID包含了组名和文件名,storage server 可以直接根据该文件名定位到文件 • 一个文件ID示例:
DTCC2012
文件名中包含的信息
• 采用Base64编码,包含的字段包括:
DTCC2012
下载文件选择storage的方法
• client询问tracker有哪些storage可以下载指 定文件时,tracker返回满足如下四个条件之 一的storage:
– (当前时间 -文件创建时间戳) > 同步延迟阀值 (如一天) – 文件创建时间戳 < Storage被同步到的时间戳 – 文件创建时间戳 == Storage被同步到的时间戳 且(当前时间 -文件创建时间戳) > 文件同步最大 时间(如5分钟) – 该文件上传到的源头storage
DTCC2012
FastDFS发展历史
• 2008年4月项目启动,7月发布第一个版本 V1.00,两年的时间内持续升级到V1.29。 • 2010年8月推出V2.00。V2.x最新版本是 V2.13。 • 2011年6月推出V3.00。当前最新版本是 V3.06。V3.x后续会一直进行维护和升级 • V1和V2系列后续不再维护和升级

FastDFS的介绍

FastDFS的介绍

FastDFS的介绍FastDFS的介绍FastDFSFastDFS是由国⼈余庆所开发,其项⽬地址:https:///happyfish100FastDFS是⼀个轻量级的开源分布式⽂件系统,主要解决了⼤容量的⽂件存储和⾼并发访问的问题,⽂件存取时实现了负载均衡。

FastDFS是⼀款类Google FS的开源分布式⽂件系统,它⽤纯C语⾔实现,⽀持Linux、FreeBSD、AIX等UNIX系统。

FastDFS只能通过专有API对⽂件进⾏存取访问,不⽀持POSIX接⼝⽅式,不能mount使⽤。

准确地讲,Google FS以及FastDFS、mogileFS、 HDFS、TFS等类Google FS都不是系统级的分布式⽂件系统,⽽是应⽤级的分布式⽂件存储服务。

FastDFS的特性1》分组存储,灵活简洁、对等结构,不存在单点2》⽂件ID由FastDFS⽣成,作为⽂件访问凭证,FastDFS不需要传统的name server3》和流⾏的web server⽆缝衔接,FastDFS已提供apache和nginx扩展模块4》⼤、中、⼩⽂件均可以很好⽀持,⽀持海量⼩⽂件存储5》⽀持多块磁盘,⽀持单盘数据恢复6》⽀持相同⽂件内容只保存⼀份,节省存储空间7》存储服务器上可以保存⽂件附加属性8》下载⽂件⽀持多线程⽅式,⽀持断点续传FastDFS架构图FastDFS架构解读只有两个⾓⾊,tracker server和storage server,不需要存储⽂件索引信息所有服务器都是对等的,不存在Master-Slave关系存储服务器采⽤分组⽅式,同组内存储服务器上的⽂件完全相同(RAID 1)不同组的storage server之间不会相互通信由storage server主动向tracker server报告状态信息,tracker server之间通常不会相互通信系统架构-上传⽂件流程图1》client询问tracker上传到的storage;2》tracker返回⼀台可⽤的storage;3》client直接和storage通信完成⽂件上传,storage返回⽂件ID。

分布式文件系统FastDFS详解

分布式文件系统FastDFS详解

分布式文件系统FastDFS详解目录为什么要使用分布式文件系统 (3)单机时代 (3)独立文件服务器 (3)分布式文件系统 (4)FastDFS (4)什么是FastDFS (4)FastDFS相关概念 (5)上传机制 (8)下载机制 (11)同步时间管理 (12)精巧的文件ID-FID (14)为什么要使用分布式文件系统单机时代初创时期由于时间紧迫,在各种资源有限的情况下,通常就直接在项目目录下建立静态文件夹,用于用户存放项目中的文件资源。

如果按不同类型再细分,可以在项目目录下再建立不同的子目录来区分。

例如:resources\static\file、resources\static\img等。

优点:这样做比较便利,项目直接引用就行,实现起来也简单,无需任何复杂技术,保存数据库记录和访问起来也很方便。

缺点:如果只是后台系统的使用一般也不会有什么问题,但是作为一个前端网站使用的话就会存在弊端。

一方面,文件和代码耦合在一起,文件越多存放越混乱;另一方面,如果流量比较大,静态文件访问会占据一定的资源,影响正常业务进行,不利于网站快速发展。

独立文件服务器随着公司业务不断发展,将代码和文件放在同一服务器的弊端就会越来越明显。

为了解决上面的问题引入独立图片服务器,工作流程如下:项目上传文件时,首先通过ftp或者ssh将文件上传到图片服务器的某个目录下,再通过ngnix或者apache来访问此目录下的文件,返回一个独立域名的图片URL地址,前端使用文件时就通过这个URL地址读取。

优点:图片访问是很消耗服务器资源的(因为会涉及到操作系统的上下文切换和磁盘I/O操作),分离出来后,Web/App服务器可以更专注发挥动态处理的能力;独立存储,更方便做扩容、容灾和数据迁移;方便做图片访问请求的负载均衡,方便应用各种缓存策略(HTTP Header、Proxy C ache等),也更加方便迁移到CDN。

缺点:单机存在性能瓶颈,容灾、垂直扩展性稍差分布式文件系统通过独立文件服务器可以解决一些问题,如果某天存储文件的那台服务突然down了怎么办?可能你会说,定时将文件系统备份,这台down机的时候,迅速切换到另一台就OK了,但是这样处理需要人工来干预。

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

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

FastDFS V2.0改进
• 网络IO处理线程 + 磁盘IO处理线程 • 采用libevent取代传统的网络通信模型,支 持大并发访问,支持的连接数可以到10K级 • 磁盘IO由专门的线程处理,系统负载和连接 数之间不存在线性关系,系统负载基本上 不受连接数影响
后续开发计划
• 封装成通用文件系统,可以mount使用。实 现思路: FastDFS + 目录服务 + client mount
FastDFS上传文件流程图
1. client询问tracker上传到的storage; 2. tracker返回一台可用的storage; 3. client直接和storage通信完成文件上传,storage返回文件ID。
FastDFS下载文件流程图
1. client询问tracker可以下载指定文件的storage,参数为文件 ID(组名和文件名); 2. tracker返回一台可用的storage; 3. client直接和storage通信完成文件下载。
下载文件选择storage的方法
• client询问tracker有哪些storage可以下载指 定文件时,tracker返回满足如下四个条件之 一的storage:
– (当前时间 -文件创建时间戳) > 同步延迟阀值 (如一天) – 文件创建时间戳 < Storage被同步到的时间戳 – 文件创建时间戳==Storage被同步到的时间戳 且 (当前时间 -文件创建时间戳) > 文件同步最大时 间(如5分钟) – 该文件上传到的源头storage
雅虎相册存储架构不足之处
• 存储成本高昂 – 采用集中式存储设备Filer,费用昂贵 – Farm采用热备模式,只有一台Filer提供在 线服务,资源极大浪费,存储成本高昂 – 可以增加Farm进行扩容,但无法做到线 性扩容,扩容粒度大,一个Filter 200TB左 右

分布式系统介绍

分布式系统介绍

一、分布式系统介绍分布式文件系统的作用:1、超大数据存储;2、数据高可用〔冗余备份〕;3、读写高性能;4、支持高并发;5、海量数据计算。

目前的数据量越来越大,单台服务器已经无法满足以上需求,因此分布式文件系统就是解决此类问题。

下面主要以轻量级分布式文件系统FastDFS来介绍。

FastDFS是一个开源的轻量级分布式文件系统。

它解决了大数据量存储和负载均衡等问题。

特别适合以中小文件〔建议范围:4KB < file_size <500MB〕为载体的在线数据服务。

FastDFS架构:FastDFS服务端有三个角色:跟踪服务器〔tracker server〕、存储服务器〔stora ge server〕、客户端〔client〕:•tracker server:跟踪服务器,主要做调度工作,起负载均衡的作用。

在内存中记录集群中所有存储组和存储服务器的状态信息,是客户端和数据服务器交互的枢纽。

相比GFS中的master更为精简,不记录文件索引信息,占用的内存量很少。

跟踪器和存储节点都可以由一台或多台服务器构成。

跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。

其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。

•storage server:存储服务器〔又称:存储节点或数据服务器〕,文件和文件属性〔m eta data〕都保存到存储服务器上。

Storage server直接利用OS的文件系统调用管理文件。

存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。

所谓文件的meta data就是文件的相关属性,以键值对〔key valuepair〕方式表示,如:width=1024,其中的key为width,value为1024。

文件metadata是文件属性列表,可以包含多个键值对。

为了支持大容量,存储节点〔服务器〕采用了分卷〔或分组〕的组织方式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. client询问tracker可以下载指定文件的storage,参数为文件 ID(组名和文件名);
2. tracker返回一台可用的storage; 3. client直接和storage通信完成文件下载。
FastDFS如何做到无索引服务器?
• 上传文件时,文件ID由storage server生成并 返回给client
态信息,tracker server之间不会相互通信
FastDFS上传文件流程图
1. client询问tracker上传到的storage; 2. tracker返回一台可用的storage; 3. client直接和storage通信完成文件上传,storage返回文件ID。
FastDFS下载文件流程图
数之间不存在线性关系,系统负载基本上 不受连接数影响
后续开发计划
• 封装成通用文件系统,可以mount使用。实 现思路: FastDFS + 目录服务 + client mount
FastDFS相关网站
• FastDFS论坛: /bbs/forum-751.html
中国雅虎相册存储改进方案
• 主要出于降低存储成本的目的,中国雅虎 采用分布式文件系统替代YMDB
• 中国雅虎研发了YLEM分布式文件系统
– 基于MogileFS – 2008年底替换掉了YMDB
分布式文件系统概况
• 分布式文件系统类型
– 通用分布式文件系统 和传统的本地文件系统(如ext3、NTFS等)相 对应,应用端可以mount使用。典型代表: lustre、MooseFS
专用分布式文件系统优缺点
• 优点
– 系统复杂性较低,不需要支持若干标准的文件 操作,如:目录结构、文件读写权限、文件锁 等,系统比较简洁。
– 系统整体性能较高,因为无需支持POSIX标准, 可以省去支持POSIX引入的环节,比如采用FUSE 来实现mount等,系统更加高效。
• 缺点
– 采用专有API,对开发者门槛较高
• 存储成本高昂
– 采用集中式存储设备Filer,费用昂贵 – Farm采用热备模式,只有一台Filer提供在线服
务,资源极大浪费,存储成本高昂 – 可以增加Farm进行扩容,但无法做到线性扩容,
扩容粒度大,一个Filter 200TB左右
• Farm对应用端不透明,上传文件时需要由 应用指定Farm
• 源头storage定时向tracker报告同步情况,包 括向目标服务器同步到的文件时间戳
• tracker收到storage的同步报告后,找出该组 内每台storage被同步到的时间戳(取最小 值),作为storage属性保存到内存中
下载文件选择storage的方法
• client询问tracker有哪些storage可以下载指 定文件时,tracker返回满足如下四个条件之 一的storage:
• 协议包由两部分组成:header和body • header共10字节,格式如下:
– 8 bytes body length – 1 byte command – 1 byte status
• body数据包格式由取决于具体的命令, body可以为空
FastDFS应用现状
• 20+公司在使用 • 规模最大的一家:集群中的存储group数有
扩展名
FastDFS架构示意图
相关术语
• Tracker Server:跟踪服务器,主要做调度工作,在访问上
起负载均衡的作用。在内存中记录集群中group和storage server的状态信息,是连接Client和Storage server的枢纽。 • Storage Server:存储服务器,文件和文件属性(meta data) 都保存到存储服务器上
• FastDFS google code: /p/fastdfs/
Q&A 谢谢大家!
类Google FS 体系结构
• 两个角色
– 名字服务器(索引服务器) – 存储服务器
• 架构特点
– 不支持文件修改功能 – 文件分块存储,需要索引服务器 – 一个文件可以存储多份,一个文件存储到哪些
存储服务器,通常采用动态分配的方式
FastDFS简介
• 类似google FS的一个轻量级分布式文件系统, 纯C实现,支持Linux、FreeBSD、AIX等UNIX 系统
我的存储经历--雅虎相册
雅虎相册架构解读
• 美国雅虎提供全球文件存储服务YMDB • 基于集中式存储设备Filer • 分组(farm)存储,farm内RAID 1 • 存储到哪个组,需要应用申请和设置。存
储到的组对应用方不透明 • 一个Farm中只有一台机器提供线上服务,
另外一台热备份
雅虎相册存储架构不足之处
FastDFS架构解读
• 只有两个角色,tracker server和s等的,不存在MasterSlave关系
• 存储服务器采用分组方式,同组内存储服 务器上的文件完全相同(RAID 1)
• 不同组的storage server之间不会相互通信 • 由storage server主动向tracker server报告状
– 专用分布式文件系统 基于google FS的思想,文件上传后不能修改。 不能mount使用,需要使用专有API对文件进行 访问,也可称作分布式文件存储服务。典型代 表:MogileFS、FastDFS、TFS
两种分布式文件系统对比
指标 开发者友好性
通用分布式 文件系统
较好
专用分布式 文件系统
较差
内可以被同步到文件服务器
雅虎论坛架构缺点及实现缺陷
• 扩容问题
– 每台文件服务器采用全量存储,不易扩容 – 解决办法:迁移到存储量更大的服务器
• 同步延迟问题
– pat定时扫描,异步同步方式,导致同步延迟 – 解决方法:文件上传完成后休眠1秒
• 同步失败问题
– 采用pat实现的文件同步,失败重试有问题 – 解决办法:定期删除pat自动生成的.error文件
也可以和其他Web Server配合使用 • 支持在线扩容 • 支持主从文件 • 存储服务器上可以保存文件属性(meta-data) • V2.0网络通信采用libevent,支持大并发访问,整体
性能更好
什么是主从文件?
• 主从文件是指文件ID有关联的文件,一个主 文件可以对应多个从文件。
– 主文件ID = 主文件名 + 主文件扩展名 – 从文件ID = 主文件名 + 从文件后缀名 + 从文件
30个,存储服务器近70台,存储容量超过 500TB,文件数超过2000万个。Group持续 增长中。。。
FastDFS 1.x IO模型
FastDFS 2.0 IO模型
FastDFS V2.0改进
• 网络IO处理线程 + 磁盘IO处理线程 • 采用libevent取代传统的网络通信模型,支
持大并发访问,支持的连接数可以到10K级 • 磁盘IO由专门的线程处理,系统负载和连接
• 2008年4月份开始启动,08年7月中旬推出 第一个版本V1.0,一直到V1.29,刚发布 V2.0,至今已发布31个版本
• V2.0代码行数近5.2万
FastDFS特性
• 只能通过专有API访问,不支持POSIX • 文件不分块存储,上传的文件和OS文件系统中的文
件一一对应 • 支持相同内容的文件只保存一份,节约磁盘空间 • 下载文件支持HTTP协议,可以使用内置Web Server,
– (当前时间 -文件创建时间戳) > 同步延迟阀值 (如一天)
– 文件创建时间戳 < Storage被同步到的时间戳 – 文件创建时间戳==Storage被同步到的时间戳 且
(当前时间 -文件创建时间戳) > 文件同步最大时 间(如5分钟) – 该文件上传到的源头storage
FastDFS通信协议
分布式文件系统概况及 FastDFS介绍
余庆 2010年8月24日
我的存储经历--雅虎论坛
雅虎论坛文件同步实现机制
• 采用pat进行文件同步 • 用户上传的文件保存到web服务器特定目录 • 在pat监控目录下写入同步文件列表 • pat定时扫描目录,发现有待同步文件列表,
开始文件同步 • 注:pat扫描时间间隔很短,通常文件在1秒
• 文件ID包含了组名和文件名,storage server 可以直接根据该文件名定位到文件
• 一个文件ID示例:
FastDFS同步机制
• 采用binlog文件记录文件上传、删除等操作, 根据binlog进行文件同步
• binlog中只记录文件名,不记录文件内容
• 记录已同步的位置到.mark文件中
• 同组内的storage server之间是对等的,文件 上传、删除等操作可以在任意一台storage server上进行
• 文件同步只在同组内的storage server之间进 行,采用push方式,即源头服务器同步给 目标服务器
FastDFS如何解决同步延迟问题?
• storage生成的文件名中,包含源头storage IP地址和文件创建时间戳
系统复杂性
较高
较低
系统性能
一般
较高
通用分布式文件系统优缺点
• 优点
– 标准文件系统操作方式,对开发者门槛较低
• 缺点
– 系统复杂性较高,需要支持若干标准的文件操 作,如:目录结构、文件读写权限、文件锁等。 直接采用内核级mount编码方式,复杂性更高
– 系统整体性能有所降低,因为要支持POSIX标准, 尤其是采用FUSE来实现mount。
相关文档
最新文档