FastDFS 介绍
FastDFS是一个开源的分布式文件系统,她对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。
FastDFS 应用场景
适合以文件为载体的在线服务,如相册网站、视频网站等等
FastDFS 角色
跟踪器(tracker)和存储节点(storage)
跟踪器主要做调度工作,在访问上起负载均衡的作用
存储节点存储文件,完成文件管理的所有功能
FastDFS 架构图
跟踪器和存储节点都可以由一台多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。
为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷 的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起 到了冗余备份和负载均衡的作用。
在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。
当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。
FastDFS 文件标识
FastDFS中的文件标识分为两个部分:卷名和文件名
上传与下载
上传
下载
FastDFS 使用要点
FastDFS下载恢复原始文件名
一. 应用系统在上传文件到FastDFS成功时将原始文件名和“文件索引(FID)”保存下来(例如:保存到数据库
二. 用户点击下载的时用Nginx的域名和FID拼出url,然后在url后面增加一个参数,指定原始文件名。例如:http://121.14.161.48:9030/group2/M00/00/89/eQ6h3FKJf_PRl8p4AUz4wO8tqaA688.apk?attname=filename.apk
三. 在Nginx上进行如下配置,这样Nginx就会截获url中的参数attname,在Http响应头里面加上字段 Content-Disposition “attachment;filename=$arg_attname”
location /group2/M00 {
root /data/store/data;
if ($arg_attname ~ "^(.*).apk") {
add_header Content-Disposition "attachment;filename=$arg_attname";
}
ngx_fastdfs_module;
}
四. 浏览器发现响应头里面有Content-Disposition “attachment;filename=$arg_attname”时,就会把文件名显示成filename指定的名称。
FastDFS 从文件的使用技巧
使用FastDFS存储一个图片的多个分辨率的备份时,希望只记录源图的FID,并能将其它分辨率的图片与源图关联。可以使用从文件方法
主从文件是指文件ID有关联的文件,一个主文件可以对应多个从文件
主文件ID = 主文件名 + 主文件扩展名
从文件ID = 主文件名 + 从文件后缀名 + 从文件扩展名
FastDFS 安装部署
具体的安装部署以及client的使用,请参考如下:
http://192.168.13.53:8999/chenfei/fdfs-client-demo
安装过后的FastDFS的结构
1. Data目录结构
2. Log目录结构
3. Nginx日志结构
FastDFS 监控
fdfs_monitor /etc/fdfs/storage.conf
参考
http://bbs.chinaunix.net/thread-1920470-1-1.html
http://www.ttlsa.com/fastdfs/fastdfs-experience-sharing/
http://www.ttlsa.com/fastdfs/fastdfs-deploy/
http://www.ttlsa.com/fastdfs/fastdfs-nginx-module-download/
http://www.ttlsa.com/fastdfs/fastdfs-muilt-tracker/
http://www.ttlsa.com/fastdfs/fastdfs-dynamically-adding-test-paper/