1.什么是分布式文件系统
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。
通俗来讲:
- 传统文件系统管理的文件就存储在本机。
- 分布式文件系统管理的文件存储在很多机器,这些机器通过网络连接,要被统一管理。无论是上传或者访问文件,都需要通过管理中心来访问.
2.什么是FastDFS
FastDFS是由淘宝的余庆先生所开发的一个轻量级、高性能的开源分布式文件系统。用纯C语言开发,功能丰富:
- 文件存储
- 文件同步
- 文件访问(上传、下载)
- 存取负载均衡
- 在线扩容
适合有大容量存储需求的应用或系统。同类的分布式文件系统有谷歌的GFS、HDFS(Hadoop)、TFS(淘宝)等。
3.FastDFS的架构
FastDFS两个主要的角色:Tracker Server 和 Storage Server 。
- Tracker Server:跟踪服务器,主要负责调度storage节点与client通信,在访问上起负载均衡的作用,和记录storage节点的运行状态,是连接client和storage节点的枢纽。
- Storage Server:存储服务器,保存文件和文件的meta data(元数据),每个storage server会启动一个单独的线程主动向Tracker cluster中每个tracker server报告其状态信息,包括磁盘使用情况,文件同步情况及文件上传下载次数统计等信息
- Group:文件组,多台Storage Server的集群。上传一个文件到同组内的一台机器上后,FastDFS会将该文件即时同步到同组内的其它所有机器上,起到备份的作用。不同组的服务器,保存的数据不同,而且相互独立,不进行通信。
- Tracker Cluster:跟踪服务器的集群,有一组Tracker Server(跟踪服务器)组成。
- Storage Cluster :存储集群,有多个Group组成。
4上传和下载流程
1. Client通过Tracker server查找可用的Storage server。
2. Tracker server向Client返回一台可用的Storage server的IP地址和端口号。
3. Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件上传。
4. 上传完成,Storage server返回Client一个文件ID,文件上传结束。
1. Client通过Tracker server查找要下载文件所在的的Storage server。
2. Tracker server向Client返回包含指定文件的某个Storage server的IP地址和端口号。
3. Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并指定要下载文件。
4. 下载文件成功。
5.安装和使用
使用到的文件
tar -xvf FastDFS_v5.08.tar.gz
#进入目录
cd FastDFS
#编译并安装
./make.sh sudo ./make.sh install
#校验安装结果
完成,我们应该能在/etc/init.d/目录,通过命令ll /etc/init.d/ | grep fdfs看到FastDFS提供的启动脚本。
- `tarcker.conf.sample` 是tracker的配置文件模板
- `storage.conf.sample` 是storage的配置文件模板
- `client.conf.sample` 是客户端的配置文件模板
下一步继续
#tracker
#修改名字,原来的是模板
cp tracker.conf.sample tracker.conf
#编辑
vim tracker.conf
#编辑url
base_path=/leyou/fdfs/tracker # tracker的数据和日志存放目录
#创建目录
mkdir -p /leyou/fdfs/tracker
#启动
sh /etc/init.d/fdfs_trackerd 或者 service fdfs_trackerd start
#添加到开机启动
chkconfig fdfs_trackerd on
#storage
#修改名字
cp storage.conf.sample storage.conf
#编辑
vim storage.conf
#需要修改的地方
base_path=/leyou/fdfs/storage # storage的数据和日志存放目录
store_path0=/leyou/fdfs/storage # storage的上传文件存放路径
tracker_server=192.168.56.101:22122 # tracker的地址
#创建目录
sudo mkdir -p /leyou/fdfs/storage
#启动
sh /etc/init.d/fdfs_storaged 或者 service fdfs_storaged start
#添加到开机启动
chkconfig fdfs_storaged on
#client
#该配置文件名字
mv client.conf.sample client.conf
#创建文件夹用于存放client数据
mkdir -p /leyou/fdfs/storage
#编辑
vim client.conf
#修改的地方
base_path=/leyou/fdfs/client
tracker_server=192.168.106.129:22122
#测试文件是否能上传成功
#fdfs_upload_file 测试文件上传的脚本
#client.conf 测试文件上传的配置文件
/usr/bin/fdfs_upload_file client.conf /opt/fastdfs/1575952865\(1\).jpg
可以看到已经返回一个文件id,上传成功!大功告成!
下一节描述下nginx与fastdfs配置。