分布式文件系统FastDFS工作原理

举报
tea_year 发表于 2025/09/30 15:46:35 2025/09/30
【摘要】 FastDFS 是淘宝余庆开发的开源分布式文件系统,采用 C 语言编写,专为互联网场景设计,主打小文件(如图片)存储,具备高可用、高性能、易扩容特性。其核心优势在于无文件分块开销,通过 Socket 通信提升速度,相比 NFS、GFS 等通用分布式文件系统,更聚焦专用存储场景,复杂度低且性能更优。 架构上,FastDFS 由 Tracker Server 和 Storage Server 组成:T

什么是fastDFS

1 fastDSF介绍

FastDFS是用 C 语言编写的一款开源的分布式文件系统,它是由淘宝资深架构师余庆编写并开源。FastDFS专为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

为什么要使用fastDFS呢?

上边介绍的NFS、GFS都是通用的分布式文件系统,通用的分布式文件系统的优点的是开发体验好,但是系统复杂 性高、性能一般,而专用的分布式文件系统虽然开发体验性差,但是系统复杂性低并且性能高。fastDFS非常适合 存储图片等那些小文件,fastDFS不对文件进行分块,所以它就没有分块合并的开销,fastDFS网络通信采用 socket,通信速度很快。

FastDFS工作原理

1 fastDFS架构

FastDFS 架构包括 Tracker server和 Storageserver 。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。

如下图:

image-20210111165624714.png


  1. Tracker

    Tracker Server作用是负载均衡和调度,通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务。可以将tracker称为追踪服务器或调度服务器。

    FastDFS集群中的Tracker server可以有多台,Tracker server之间是相互平等关系同时提供服务,Tracker server 不存在单点故障。客户端请求Tracker server采用轮询方式,如果请求的tracker无法提供服务则换另一个tracker。

  2. Storage

    Storage Serer作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storage server没有实现自己 的文件系统而是使用操作系统的文件系统来管理文件。可以将storage称为存储服务器。

    Storage集群采用了分组存储方式。storage集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和。一个组由一台或多台存储服务器组成,组内的Storage server之间是平等关系,不同组的 Storage server 之间不会相互通信,同组内的Storage server之间会相互连接进行文件同步,从而保证同组内每个storage上的文件完全一致的。一个组的存储容量为该组内的存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的。

    采用分组存储方式的好处是灵活、可控性较强。比如上传文件时,可以由客户端直接指定上传到的组也可以由 tracker进行调度选择。一个分组的存储服务器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向扩容)。当系统容量不足时,可以增加组来扩充存储容量(横向扩容)。

  3. Storage状态收集

    Storage server会连接集群中所有的Tracker server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息。


2文件上传流程


image-20210111165834703.png


客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息 包括:组名,虚拟磁盘路径,数据两级目录,文件名。

示例:

group1/M00/02/44/wKgDrE34E8wAAAAAAAAGKEIYJK42378.sh

  • 组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。

  • 虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M 00 , 如果配置了store_path1则是M 01 ,以此类推。

  • 数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。

  • 文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创 建时间戳、文件大小、随机数和文件拓展名等信息。

3 文件下载流程

image-20210111170042872.png


tracker根据请求的文件路径即文件ID 来快速定义文件。

比如请求下边的文件:

group1/M00/02/44/wKgDrE34E8wAAAAAAAAGKEIYJK42378.sh

  1. 通过组名tracker能够很快的定位到客户端需要访问的存储服务器组是group1,并选择合适的存储服务器提供客户端访问。

  2. 存储服务器根据“文件存储虚拟磁盘路径”和“数据文件两级目录”可以很快定位到文件所在目录,并根据文件名找到客户端需要访问的文件。

3 fastDFS入门

3.1fastDFS安装与配置


3.1.1 导入虚拟机

对fastDFS的安装过程不要求学生掌握,可以直接导入老师提供虚拟机。
  1. 使用Vmware打开虚拟机配置文件“CentOS 6.5 64 位.vmx”,提示如下图:

image-20210111170257772.png


  1. 选择「我已移动该虚拟机」

  2. 启动虚拟机之前启动VMware的服务:

image-20210111170316283.png

  1. 修改网卡的IP地址为 101 网段

image-20210111170337802.png

  1. 修改虚拟机网络配置

    修改VMnet 8 的子网IP为 101. 0

image-20210111170412977.png

DHCP配置:

image-20210111170537078.png


  1. 启动虚拟机

    用户名:root
    密码:111111


  2. 导入的虚拟机已经安装了fastDSF,直接启动fastDSF即可使用。

总结

FastDFS 是淘宝余庆开发的开源分布式文件系统,采用 C 语言编写,专为互联网场景设计,主打小文件(如图片)存储,具备高可用、高性能、易扩容特性。其核心优势在于无文件分块开销,通过 Socket 通信提升速度,相比 NFS、GFS 等通用分布式文件系统,更聚焦专用存储场景,复杂度低且性能更优。
架构上,FastDFS 由 Tracker Server 和 Storage Server 组成:Tracker 负责负载均衡与调度,多节点平等部署避免单点故障,客户端轮询请求;Storage 负责文件存储,采用分组机制,组内节点同步文件保证数据一致,支持纵向(组内增节点)与横向(新增组)扩容,存储容量为各组最小节点容量之和,组内节点软硬件建议统一配置。
文件上传时,客户端经 Tracker 调度至目标 Storage 组,Storage 生成含组名、虚拟磁盘路径、两级目录、自定义文件名(含 IP、时间戳等信息)的文件 ID 返回;下载时,Tracker 通过文件 ID 定位组与节点,Storage 根据路径找到文件。实际应用中可直接使用预配置虚拟机启动服务,降低部署复杂度,适用于金融、电商等需大规模存储小文件的场景。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。