简介
由国人开发的, 用C语言实现的,开源的分布式文件系统,对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题, 特别适合以文件为载体的在线服务
设计
- FastDFS中只有两个角色:Tracker和Storage。
- Tracker作为中心结点,其主要作用是维护Storage信息,负载均衡和调度等。
- Tracker会在内存和临时文件中记录Storage分组和Storage的状态等信息,不记录文件索引信息,占用的内存量很少。
- 而重要的文件索引信息将附属在Storage生成的文件ID中,这无疑去掉文件索引这一步,也提高了文件检索的性能。
存储
- FastDFS采用了分组存储方式来保存文件的多个备份。
- 存储集群由一个或多个逻辑组构成,集群存储总容量为集群中所有组的存储容量(一个存储组的容量由该组中容量最小的Storage决定)之和。
- 一个组由一台或多台Storage组成,同组内的多台Storage之间是互备关系,同组内的存储服务器上的文件是完全一致的。
- 文件上传、下载、删除等操作可以在组内任意一台Storage上进行。
架构
- Client和Storage主动连接Tracker。Storage主动向Tracker报告其状态信息,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息。Storage会启动一个单独的线程来完成对一台Tracker的连接和定时报告。一个组包含的Storage不是通过配置文件设定的,而是通过Tracker获取到的。
- 文件操作。Storage采用binlog文件记录文件上传、删除等更新操作。binlog中只记录时间戳,操作类型,文件路径。
- 文件同步。不同组的Storage相互独立,同组内的Storage之间会相互连接进行文件同步,采用push的方式。
安装
安装FastDFS依赖的公共库
git clone git@github.com:happyfish100/libfastcommon.git
cd libfastcommon
./make.sh
./make.sh install
安装FastDFS
git clone git@github.com:happyfish100/fastdfs.git
cd fastdfs
./make.sh
./make.sh install
常用命令
# 启动/关闭/重启 Tracker
fdfs_trackerd tracker.conf [start|stop|restart]
# 启动/关闭/重启 Storage
fdfs_storaged storage.conf [start|stop|restart]
# 监控
fdfs_monitor client.conf
# 上传测试
fdfs_test client.conf upload xxx.jpeg
# 下载测试
fdfs_test client.conf download group1 M00/yyy.jpeg