fastdfs 环境搭建使用及最佳实践

一、分布式文件系统 FastDFS 架构解析

FastDFS是为互联网应用量身定做的一套分布式文件存储系统,非常适合用来存储用户图片、视频、文档等文件,许多大型互联网公司包括几个大的云网盘都在使用,感兴趣的可以了解下。

FastDFS 项目地址 : http://code.google.com/p/fastdfs/

分布式文件系统FastDFS架构剖析 : http://blog.csdn.net/MONKEY_D_MENG/article/details/6038133

作者余庆对 fdfs 做的介绍PPTFastDFS介绍_余庆.ppt
二、安装配置过程
1. 概述

包位置:/home/tester/fdfs/FastDFS/

192.168.9.92 nginx模块 ,tracker ,storage

192.168.9.93 storage

192.168.9.94 storage
2. 搭建

FastDFS安装过程详解,利用 install.sh(下载地址) 一键安装,自己手动配置conf文件,不想使用一键脚本的,可以参考此文章 fdfs 安装手册

配置文件详细说明 storage.conf tracker.conf nginx.conf等 http://bbs.chinaunix.net/thread-1941456-1-1.html

storage.conf配置如下,其它默认即可~

group_name=group1
bind_addr=192.168.9.92(93.94)
base_path=/home/work/fdfs_data/storage #存放日志路径
store_path0=/home/work/fdfs_data/sdata #上传文件路径
tracker_server=192.168.9.92:22122 #tracker服务器地址

tracker.conf配置如下

bind_addr=192.168.9.94
base_path=/home/work/fdfs_data/tracker

/usr/local/nginx/conf/nginx.conf 配置访问规则port:8080 当然你的可以默认使用80端口

location ~* /M00/.*.(gif|jpg|jpeg|png|bmp|swf)$ { # 这个地方只是过滤了图片的访问
alias /home/work/fdfs_data/sdata/data; # 注意这个地方一定要有自动创建的data目录,否则找不到文件
ngx_fastdfs_module;
expires 30d;
}

/etc/fdfs/mod_fast fastdfs nginx module模块使用的配置

base_path=/home/work/fdfs_data/nginxmodule
store_path0=/home/work/fdfs_data/sdata
group_name=group1
url_have_group_name = true

/ect/fdfs/client.conf 中日志base路径 /home/work/fdfs_data/client 这个在测试的使用,不测试,没什么用处
3. 测试

启动测试前,开放端口号cenos6.4开放8080端口给浏览器访问

/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp –dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp –dport 3306 -j ACCEPT

然后保存:
/etc/rc.d/init.d/iptables save
重启防火墙以便改动生效:(或者直接重启系统)
/etc/init.d/iptables restart

见到下面的输出说明就ok了:

service iptables restart
iptables:清除防火墙规则: [确定]
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:正在卸载模块: [确定]
iptables:应用防火墙规则: [确定]

fdfs启动、重启、开机启动,nginx启动、stop 重启

注意:启动的时候如果不指定conf,那么默认使用 /etc/fdfs/下的所有conf文件,这个一般没有处理!

bin执行位置 /usr/local/bin/
配置文件:/etc/fdfs/
启动Tracker服务:(位置是安装位置)
/usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
/usr/local/bin/stop.sh /usr/local/bin/fdfs_trackerd

启动storage服务:(位置是安装位置)
/usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf
/usr/local/bin/stop.sh /usr/local/bin/fdfs_storaged

启动nginx服务:(所有都一样) /usr/local/nginx/sbin/nginx http://zachary-guo.iteye.com/blog/1358312
-t 参数将检查配置文件的语法是否正确,默认会检查 /usr/local/nginx/conf/nginx.conf 文件。
/usr/local/nginx/sbin/nginx -t
如果要对指定的配置文件进行语法检查,可以继续添加 -c 参数
/usr/local/nginx/sbin/nginx -t -c /home/a/b/c/my-nginx.conf
kill -HUP 【Nginx主进程号】

三个端口都在监听说明启动成功
netstat -ntl |grep -E ‘22122|23000|80|8080’

测试:/usr/local/bin/fdfs_test /etc/fdfs/storage.conf upload /home/xirong/fdfs_test_files/1111.jpg

从其它浏览器上访问 http://192.168.9.92:8080/group1/M00/00/00/wKgJXFUCoa-APWY1AABdrZgsqUU351.jpg 即ok

三、fdfs 客户端调用实例及 API Doc 说明

网上有个哥们写了个入门教程,直接搬过来了,入门可以看看,如下:

FastDFS的配置、部署与API使用解读——(1)入门使用教程

FastDFS的配置、部署与API使用解读——(2)Java API:根据InputStream、文件名、文件长度上传文件

FastDFS的配置、部署与API使用解读——(3)Java API:根据InputStream、文件名、文件长度,采用IO流直接转换的方式上传文件

FastDFS的配置、部署与API使用解读——(4)设置FastDFS配置参数的两种方式

FastDFS的配置、部署与API使用解读——(5)FastDFS配置详解之Tracker配置

FastDFS的配置、部署与API使用解读——(6)FastDFS配置详解之Storage配置

FastDFS的配置、部署与API使用解读——(7)关于FastDFS的Nginx的一些Q&A汇总
FastDFS的配置、部署与API使用解读——(8)FastDFS多种文件上传接口详解

fastdfs 提供的API(支持JAVA,C,PHP,PYTHON接口)

upload:上传普通文件,包括主文件
upload_appender:上传appender文件,后续可以对其进行append、modify和truncate操作
upload_slave:上传从文件
download:下载文件
delete:删除文件
append:在appender文件后追加内容
modify:appender文件修改
set_metadata:设置文件附加属性
get_metadata:获取文件附加属性

上面具体每个方法的参数以及使用请查看 api 文档,下载地址如下: google code 、七牛云
四、fdfs 常见问题及最佳实践

fastdfs 运维常见问题汇总 http://bbs.chinaunix.net/thread-1920470-1-1.html
最佳实践

推荐的FastDFS部署方案

文件上传和删除等操作:使用 FastDFS client API,目前提供了C、PHP extension 和 Java 的 client API

文件下载采用 HTTP 方式:使用 nginx 或者 apache 扩展模块,不推荐使用 FastDFS 内置的 web server

不要做 RAID,直接挂载单盘,每个硬盘作为一个 mount point

最大并发连接数设置

参数名:max_connections

缺省值:256

说明:FastDFS 采用预先分配好 buffer 队列的做法,分配的内存大小为: max_connections * buff_size,因此配置的连接数越大,消耗的内存越多。不建议配置得过大,以避免无谓的内存开销。

工作线程数设置

参数名: work_threads

缺省值:4

说明:为了避免CPU上下文切换的开销,以及不必要的资源消耗,不建议将本参数设置得过大。为了发挥出多个CPU的效能,系统中的线程数总和,应等于CPU总数。

对于tracker server,公式为:

work_threads + 1 = CPU数

对于storage,公式为:

work_threads + 1 + (disk_reader_threads  + disk_writer_threads) * store_path_count  = CPU数

storage目录数设置

参数名:subdir_count_per_path

缺省值:256

说明:FastDFS 采用二级目录的做法,目录会在 FastDFS 初始化时自动创建。存储海量小文件,打开了trunk存储方式的情况下,建议将本参数适当改小,比如设置为32,此时存放文件的目录数为 32 32 = 1024。假如trunk文件大小采用缺省值64MB,磁盘空间为2TB,那么每个目录下存放的trunk文件数均值为:2TB / (1024 64MB) = 32个

storage磁盘读写线程设置

disk_rw_separated:磁盘读写是否分离

disk_reader_threads:单个磁盘读线程数

disk_writer_threads:单个磁盘写线程数

如果磁盘读写混合,单个磁盘读写线程数为读线程数和写线程数之后

对于单盘挂载方式,磁盘读写线程分别设置为1即可

如果磁盘做了RAID,那么需要酌情加大读写线程数,这样才能最大程度地发挥磁盘性能

storage同步延迟相关设置

sync_binlog_buff_interval:将 binlog buffer 写入磁盘的时间间隔,取值大于 0,缺省值为 60s

sync_wait_msec:如果没有需要同步的文件,对 binlog 进行轮询的时间间隔,取值大于0,缺省值为 100ms

sync_interval:同步完一个文件后,休眠的毫秒数,缺省值为 0

为了缩短文件同步时间,可以将上述 3 个参数适当调小即可

fastdfs V3 新增加的合并存储介绍 : http://www.open-open.com/doc/view/ab5701d57e5b49a8b6255df1ae7d5a97

最后,如果你想也想学习下,那么就从搭建环境 + demo 案例开始吧,参考作者余庆写的demo案例

  • 14
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
FastDFS 是一个开源高性能分布式文件系统,它主要解决了海量数据存储和负载均衡的问题,适合用于图片、音频、视频等文件的存储和访问。下面是在 Linux 系统上搭建 FastDFS 文件服务器的步骤: 1. 安装依赖库: ``` yum install -y gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel wget ``` 2. 下载 FastDFS 源码: ``` wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz ``` 3. 解压源码并编译安装: ``` tar zxvf V6.06.tar.gz cd fastdfs-6.06/ ./make.sh ./make.sh install ``` 4. 配置 Tracker 服务器: 在 Tracker 服务器上创建一个 tracker.conf 配置文件,并添加以下内容: ``` # 配置 Tracker 服务器的 IP 和端口号 port=22122 bind_addr=192.168.0.1 # 配置存储服务器的组名和存储服务器的 IP 和端口号 group_name=group1 group_count=1 group0_ip=192.168.0.2 group0_port=23000 # 配置日志文件的路径和级别 log_level=info log_filename=/var/log/fdfs/trackerd.log ``` 5. 启动 Tracker 服务器: ``` /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart ``` 6. 配置 Storage 服务器: 在 Storage 服务器上创建一个 storage.conf 配置文件,并添加以下内容: ``` # 配置 Tracker 服务器的 IP 和端口号 tracker_server=192.168.0.1:22122 # 配置存储服务器的 IP 和端口号 port=23000 bind_addr=192.168.0.2 # 配置存储服务器的组名和容量 group_name=group1 store_path_count=1 store_path0=/data/fastdfs/storage # 配置心跳时间和同步文件的时间 heart_beat_interval=30 sync_wait_msec=600 # 配置日志文件的路径和级别 log_level=info log_filename=/var/log/fdfs/storaged.log ``` 7. 启动 Storage 服务器: ``` /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart ``` 8. 测试上传和下载文件: 在客户端机器上安装 FastDFS 客户端工具: ``` yum install -y libfastcommon wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz tar zxvf V6.06.tar.gz cd fastdfs-6.06/ ./make.sh ./make.sh install ``` 上传文件: ``` /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /path/to/local/file ``` 下载文件: ``` /usr/bin/fdfs_download_file /etc/fdfs/client.conf group1 M00/00/00/xxx /path/to/local/file ``` 以上就是在 Linux 系统上搭建 FastDFS 文件服务器的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值