一、FastDFS简介
技术论坛: http://bbs.chinaunix.net/forum-240-1.html
资源地址: https://sourceforge.net/projects/fastdfs/
源码资源: https://github.com/happyfish100
FastDFS 是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。
FastDFS 服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。storage采用了分卷(或分组)的组织方式。卷之间是相互独立的卷中的多台存储服务器起到了冗余备份和负载均衡的作用。FastDFS 中的文件标识分为两个部分:卷名和文件名,二者缺一不可。
1 架构图
2 上传流程
client 询问 tracker 上传到的 storage,不需要附加参数;
tracker 返回一台可用的 storage;
client 直接和 storage 通讯完成文件上传。
3 下载流程
client 询问 tracker 下载文件的 storage,参数为文件标识(组名和文件名);
tracker 返回一台可用的 storage;
client 直接和 storage 通讯完成文件下载。
4 术语简介
TrackerServer:跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。记录 storage server 的状态,是连接 Client 和 Storage server 的枢纽。
StorageServer:存储服务器,文件和 meta data 都保存到存储服务器上 。
group:组,也称为卷。同组内服务器上的文件是完全相同的 。
文件标识:包括两部分:组名和文件名(包含路径) 。
metadata:文件相关属性,键值对(KeyValuePair)方式,如:width=1024,heigth=768。
5 同步机制
同一组内的 storage server 之间是对等的,文件上传、删除等操作可以在任意一台storage server 上进行;文件同步只在同组内的 storage server 之间进行,采用 push 方式,即源服务器同步给目 标服务器;源头数据才需要同步,备份数据不需要再次同步,否则就构成环路了;上述第二条规则有个例外,就是新增加一台storage server时,由已有的一台storage server 将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器。
6 FastDFS 运行时目录结构
6.1 TrackerServer 目录
6.2 StorageServer 目录
一、安装
准备两个 Linux 服务器。两个服务器分别作为 tracker 服务器(跟踪服务器)和 storage 服务器(存储服务器)。
- Tracker 服务器 : 39.98.139.190
- Storage 服务器 : 39.98.156.205
1、核心安装
TrackerServer 和 Storage Server 完全一致的安装。 安装 FastDFS 5.08 版本
1.1 安装 FastDFS 依赖
FastDFS 是 C 语言开发的应用。安装必须使用 make、cmake 和 gcc 编译器。
yum install -y make cmake gcc gcc-c++
1.2 解压 FastDFS 核心库
libfastcommon 是从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库
cd /tmp
unzip libfastcommon-master.zip -d /usr/localfastdfs
1.3 进入解压后的目录
cd /usr/local/fastdfs/libfastcommon-master
1.4 编译安装
libfastcommon没有提供 make 命令安装文件。使用的是 shell 脚本执行编译和安装。 shell 脚本为 make.sh。
编译:
./make.sh
安装: