FastDFS分布式文件系统

简介: FastDFS分布式文件系统 愿意了解框架技术或者源码的朋友直接求求交流分享技术:2042849237

FastDFS简介

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

•FastDFS主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡

•FastDFS实现了软件方式的RAID,可以使用廉价的IDE硬盘进行存储

•支持存储服务器在线扩容

•支持相同内容的文件只保存一份,节约磁盘空间

•FastDFS只能通过ClientAPI访问,不支持POSIX访问方式

•FastDFS特别适合大中型网站使用,用来存储资源文件(如:图片、文档、音频、视频等等)

系统架构-架构图

系统架构-上传文件流程图

• 1. client询问tracker上传到的storage,不需要附加参数;

• 2. tracker返回一台可用的storage;

• 3. client直接和storage通讯完成文件上传。

系统架构-下载文件流程图

• 1. client询问tracker下载文件的storage,参数为文件标识(组名和文件名);

• 2. tracker返回一台可用的storage;

• 3. client直接和storage通讯完成文件下载。

相关术语

• Tracker Server:跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。记录storage server的状态,是连接Client和Storageserver的枢纽。

• Storage Server:存储服务器,文件和meta data都保存到存储服务器上

• group:组,也可称为卷。同组内服务器上的文件是完全相同的

• 文件标识:包括两部分:组名和文件名(包含路径)

• meta data:文件相关属性,键值对(Key Value Pair)方式,如:width=1024,heigth=768

同步机制

•同一组内的storageserver之间是对等的,文件上传、删除等操作可以在任意一台storage server上进行;

•文件同步只在同组内的storage server之间进行,采用push方式,即源服务器同步给目标服务器;

•源头数据才需要同步,备份数据不需要再次同步,否则就构成环路了;

•上述第二条规则有个例外,就是新增加一台storage server时,由已有的一台storageserver将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器。

通信协议

• 协议包由两部分组成:header和body

• header共10字节,格式如下:

– 8 bytes body length

– 1 byte command

– 1 byte status

• body数据包格式由取决于具体的命令,body可以为空

运行时目录结构-tracker server

•  ${base_path}

|__data

|     |__storage_groups.dat:存储分组信息

|    |__storage_servers.dat:存储服务器列表

|__logs

|__trackerd.log:trackerserver日志文件

运行时目录结构-storage server

•  ${base_path}

|__data

|     |__.data_init_flag:当前storageserver初始化信息

|    |__storage_stat.dat:当前storage server统计信息

|    |__sync:存放数据同步相关文件

|    |     |__binlog.index:当前的binlog文件索引号

|    |     |__binlog.###:存放更新操作记录(日志)

|    |     |__${ip_addr}_${port}.mark:存放同步的完成情况

|    |

|     |__一级目录:256个存放数据文件的目录,如:00, 1F

|           |__二级目录:256个存放数据文件的目录

|__logs

|__storaged.log:storageserver日志文件

安装和运行

•#step 1. download FastDFS source package and unpack it,

•# if you use HTTP to download file, please downloadlibevent 1.4.x and install it

•tar xzf FastDFS_v1.x.tar.gz

•#for example:

•tar xzf FastDFS_v1.20.tar.gz

•

•#step 2. enter the FastDFS dir

•cd FastDFS

•

•#step 3. if HTTP supported, modify make.sh, uncommentthe line:

•# WITH_HTTPD=1, then execute:

•./make.sh

•

•#step 4. make install

•./make.sh install

•

•#step 5. edit/modify the config file of tracker andstorage

•

•#step 6. run server programs

•#start the tracker server:

•/usr/local/bin/fdfs_trackerd

•

•#start the storage server:

•/usr/local/bin/fdfs_storaged

FastDFS和集中存储方式对比




• FastDFS中文:http://www.csource.org/

• FastDFS英文:http://code.google.com/p/fastdfs/


目录
相关文章
|
7月前
|
JavaScript Linux API
OpenClaw(Clawdbot)从零到一实操手册:云端本地双部署+技能扩展+问题一站式解决
OpenClaw(曾用名Clawdbot/Moltbot)是2026年主流开源AI智能体框架,支持本地与云端双模式部署,可通过自然语言完成文件管理、信息检索、内容处理、流程自动化等任务,并依托Skills扩展更多实用能力。本文基于2026年3月最新环境,完整提供阿里云轻量应用服务器极速部署、本地Windows11/macOS/Linux手动部署、阿里云百炼Coding Plan免费大模型API配置、常用技能集成方法,以及全流程高频问题排查方案,所有命令均可直接复制执行,零基础用户也可快速完成搭建与稳定运行。
920 0
|
11月前
|
运维 安全 Ubuntu
掌控磁盘空间的艺术(Linux文件系统配额完全入门指南)
本文介绍Linux文件系统配额(Quota)的配置与管理,帮助管理员限制用户磁盘空间和文件数量,防止资源滥用。涵盖启用配额、设置软硬限制、常用命令及最佳实践,适用于主流Linux发行版,提升系统稳定性与安全性。
|
11月前
|
SQL 存储 运维
Apache Doris 自动分区:如何应对分布式环境下的复杂并发挑战|Deep Dive
在分布式环境下,分区对性能的影响不可小觑。本文深度、详尽的讲解 Apache Doris 自动分区设计思考,并就多线程复杂并发场景下所面临的挑战,一一剖析 Doris 自动分区设计时的应对策略。
423 4
Apache Doris 自动分区:如何应对分布式环境下的复杂并发挑战|Deep Dive
|
11月前
|
数据采集 弹性计算 运维
云服务诊断:一键定位异常,快速恢复业务
云服务诊断是阿里云推出的免费运维工具,提供“资源健康状态”和“问题诊断”两大功能。可精准监控每个实例的健康状况,支持一键全量诊断与常见问题场景快速排查,帮助用户迅速定位并修复ECS、SLB、EIP等资源异常,提升运维效率,保障业务稳定运行。
716 22
|
10月前
|
XML 存储 SQL
SpringBoot整合Logback,滚动记录+多文件
logback-spring.xml配置文件实现日志分级输出,支持控制台、文件滚动存储,按模块(如SQL、支付、任务等)分离日志,通过LogProxy获取指定名称的Logger,便于定位问题。配置灵活,适用于多环境部署。
195 0
|
数据安全/隐私保护 安全
云大使提现账号更改为淘宝账号(绑定的支付宝)操作攻略
由于业务调整,云大使提现绑定的支付宝账户将换绑为淘宝账户所绑定的支付宝账户,具体操作步骤和常见问题攻略如下,便于大使快速完成换绑工作,避免影响大使的后续提现。关于如何查看自己的淘宝账号名称,通过以下两种方式可快速查看
云大使提现账号更改为淘宝账号(绑定的支付宝)操作攻略
|
数据库连接 数据库 关系型数据库
ETL工具 kettle
Kettle简介:Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettl
10420 1
|
iOS开发
iOS 开发之几个 Demo 分享网站
OSChina 前往 OSChina Code4App 前往 Code4App CocoaChina 前往 CocoaChina 码云 前往码云
4329 0
|
存储 中间件 Java
全链路追踪体验—TraceId的生成
对于后端开发来说,排查问题是常有的事情。而排查问题时最常用的就是看日志,看一次调用中经过了哪些系统,是那个系统出问题了。这就需要业务日志中关联调用链的TraceId信息,从而在应用出现问题时,能够通过调用链的TraceId快速关联到业务日志,及时定位分析、解决问题。
2737 0
全链路追踪体验—TraceId的生成
|
人工智能 自然语言处理 监控
昆明微妹子10天开发定制化语音播报音箱
千里传音播报服务,针对云端应用需要将执行结果或通知以语音的形式推送至设备端播放的AIoT场景。
昆明微妹子10天开发定制化语音播报音箱