1、FastDFS是什么
- FastDFS是一款开源的、分布式文件系统(Distributed File System), 由淘宝开发平台部资深架构师余庆开发。它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载、文件删除)等,解决了大容量存储和负载均衡的问题。
- 为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标。
- 使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
2、框架介绍
FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。
Tracker Server:跟踪服务器
主要做调度工作,并对Storage Server起到负载均衡的作用;
负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group等信息,并保持周期性心跳。
Tracker Server可以有多台,Tracker Server之间是相互平等关系同时提供服务Tracker Server不存在单点故障。客户端请求Tracker Server采用轮询方式,如果请求的Tracker无法提供服务则换另一个Tracker。
Storage Server:存储服务器
主要提供容量和备份服务;
以 group 为单位,不同group之间互相独立,每个 group 内可以有多台 storage server,数据互为备份。
采用分组存储方式的好处是灵活、可控性较强。比如上传文件时,可以由客户端直接指定上传到的组也可以由Tracker进行调度选择。
一个分组的存储服务器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向扩容)。当系统容量不足时,可以增加组来扩充存储容量(横向扩容)。
3、文件上传流程:
4、文件下载
注意:不管上传还是下载都用了一个很关键的东西,那就是file_id,那file_id是什么呢,选择存储目录后,storage 会生成一个 file_id,采用 Base64 编码,包含字段包括:storage server ip、文件创建时间、文件大小、文件 CRC32 校验码和随机数;每个存储目录下有两个 256*256 个子目录,storage 会按文件 file_id 进行两次 hash,路由到其中一个子目录,,然后将文件以 file_id 为文件名存储到该子目录下,最后生成文件路径类似这种:group1/M00/00/00/wKhS_VlrEfOAdIZyAAAJTOwCGr43848,跟身份证号码一个道理。
五、安装单机版FastDFS
1、分别进去./make.sh
sudo ./make.sh install
2、测试:fdfs_test
六、FastDFS配置
1. 默认配置文件位置:
/etc/fdfs
2. Tracker(追踪器)
修改配置文件
bind_addr=192.168.xxx.xxx
当前主机的IP
port=22122
绑定的端口
base_path=/home/songqiang/fdfs/tracker
log目录
启动Tracker服务
fdfs_trackerd /etc/fdfs/tracker.conf
sudo fdfs_trackerd /etc/fdfs/tracker.conf restart
sudo fdfs_trackerd /etc/fdfs/tracker.conf stop
3. Storage(存储节点)
修改配置文件
group_name=group1
存储节点所属的组
bind_addr=192.168.xxx.xxx
存储节点绑定的IP
port=23000
绑定的端口
base_path=/home/songqiang/fdfs/storage
存储日志文件的目录
store_path_count=1
存储目录的个数
store_path0=/home/songqiang/fdfs/storage
配置具体的存储目录
tracker_server=192.168.xxx.xxx:22122
连接tracker的时候使用的IP和端口
启动Stroage服务
fdfs_storaged /etc/fdfs/storage.conf
sudo fdfs_storaged /etc/fdfs/storage.conf restart
sudo fdfs_storaged /etc/fdfs/storage.conf stop
4. Client
修改配置文件
base_path=/home/songqiang/fdfs/client
log日志目录
tracker_server=192.168.xxx.xxx:22122
连接tracker时候需要的iP和端口信息
5. 检测当前fdfs环境是否是通的
fdfs_monitor /etc/fdfs/client.conf
七、验证
上传文件:
fdfs_upload_file /etc/fdfs/client.conf a.out
下载文件:
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKjDg145dpWAIPMaAAAmUK7CnJU649.out