狠狠撸

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

More Related Content

分布式文件系统概况及贵补蝉迟顿贵厂介绍