FDFS

本贴最后更新于 2683 天前,其中的信息可能已经物是人非

前面了解了 fastdfs 的原理,接下来就熟悉一下安装过程,准备了三台机器,一台模拟 client,一台模拟 storage,一台模拟 tracker。

三台机器均为 debian6,系统为最小化安装,先安装基本编译环境:

apt-get install build-essential php5-dev libevent-dev

下载 fastdfs 源码包:

wget http://fastdfs.googlecode.com/files/FastDFS_v3.05.tar.gz

开始安装:

tar zxvf FastDFS_v3.05.tar.gz
cd FastDFS/
./make.sh
./make.sh install

安装完成后,fastdfs 默认的配置文件被放置在/etc/fdfs 目录下面,包含了 client.conf http.conf mime.types storage.conf tracker.conf 五个文件,fastdfs 进程的启动是以加载的配置文件区分的。源码包中都包含了这三个配置文件。

tracker.conf 配置文件分析:

#配置 tracker.conf 这个配置文件是否生效,因为在启动 fastdfs 服务端进程时需要指定配置文件,所以需要使次配置文件生效。false 是生效,true 是屏蔽。
disabled=false
#程序的监听地址,如果不设定则监听所有地址
bind_addr=
#tracker 监听的端口
port=22122
#链接超时设定
connect_timeout=30
#tracker 在通过网络发送接收数据的超时时间
network_timeout=60
#数据和日志的存放地点
base_path=/opt/fdfs
#服务所支持的最大链接数
max_connections=256
#工作线程数一般为 cpu 个数
work_threads=4
#在存储文件时选择 group 的策略,0:轮训策略 1:指定某一个组 2:负载均衡,选择空闲空间最大的
groupstore_lookup=2
#如果上面的 store_lookup 选择了 1,则这里需要指定一个 group
#store_group=group2
#在 group 中的哪台 storage 做主 storage,当一个文件上传到主 storage 后,就由这台机器同步文件到 group 内的其他 storage 上,0:轮训策略 1:根据 ip 地址排序,第一个 2:根据优先级排序,第一个 store_server=0#选择那个 storage 作为主下载服务器,0:轮训策略 1:主上传 storage 作为主下载服务器 download_server=0#选择文件上传到 storage 中的哪个(目录/挂载点),storage 可以有多个存放文件的 base path 0:轮训策略 2:负载均衡,选择空闲空间最大的 store_path=0#系统预留空间,当一个 group 中的任何 storage 的剩余空间小于定义的值,整个 group 就不能上传文件了
reserved_storage_space = 4GB
#日志信息级别
log_level=info
#进程以那个用户/用户组运行,不指定默认是当前用户
run_by_group=
run_by_user=
#允许那些机器连接 tracker 默认是所有机器
allow_hosts=*
#设置日志信息刷新到 disk 的频率,默认 10
ssync_log_buff_interval = 10
#检测 storage 服务器的间隔时间,storage 定期主动向 tracker 发送心跳,如果在指定的时间没收到信号,tracker 人为 storage 故障,默认 120
scheck_active_interval = 120
#线程栈的大小,最小 64K
thread_stack_size = 64KB
#storage 的 ip 改变后服务端是否自动调整,storage 进程重启时才自动调整
storage_ip_changed_auto_adjust = true
#storage 之间同步文件的最大延迟,默认 1 天
storage_sync_file_max_delay = 86400
#同步一个文件所花费的最大时间
storage_sync_file_max_time = 300
#是否用一个 trunk 文件存储多个小文件
use_trunk_file = false
#最小的 solt 大小,应该小于 4KB,默认 256bytes
slot_min_size = 256
#最大的 solt 大小,如果上传的文件小于默认值,则上传文件被放入 trunk 文件中
slot_max_size = 16MB
#trunk 文件的默认大小,应该大于 4M
trunk_file_size = 64MB
#http 服务是否生效,默认不生效
http.disabled=false
#http 服务端口
http.server_port=8080
#检测 storage 上 http 服务的时间间隔,<=0 表示不检测
http.check_alive_interval=30
#检测 storage 上 http 服务时所用请求的类型,tcp 只检测是否可以连接,http 必须返回 200
http.check_alive_type=tcp
#通过 url 检测 storage http 服务状态
http.check_alive_uri=/status.html
#if need find content type from file extension namehttp.need_find_content_type=true#用 include 包含进 http 的其他设置
##include http.conf

启动 tracker 进程

fdfs_trackerd /etc/fdfs/tracker.conf

检测状态

netstat -tupln|grep tracker#可以看到如下:tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 18559/fdfs_trackerd

storage.conf 配置文件分析:

#同 tracker.confdisabled=false#这个 storage 服务器属于那个 groupgroup_name=group1#同 tracker.confbind_addr=#连接其他服务器时是否绑定地址,bind_addr 配置时本参数才有效 client_bind=true#同 tracker.confport=23000
connect_timeout=30
network_timeout=60
#主动向 tracker 发送心跳检测的时间间隔
heart_beat_interval=30
#主动向 tracker 发送磁盘使用率的时间间隔
stat_report_interval=60
#同 tracker.confbase_path=/opt/fdfs
max_connections=256
#接收/发送数据的 buff 大小,必须大于 8KB
buff_size = 256KB
#同 tracker.conf
work_threads=4
#磁盘 IO 是否读写分离
disk_rw_separated = true
#是否直接读写文件,默认关闭
disk_rw_direct = false
#混合读写时的读写线程数
disk_reader_threads = 1
disk_writer_threads = 1
#同步文件时如果 binlog 没有要同步的文件,则延迟多少毫秒后重新读取,0 表示不延迟
sync_wait_msec=50
#同步完一个文件后间隔多少毫秒同步下一个文件,0 表示不休息直接同步
sync_interval=0
#表示这段时间内同步文件
sync_start_time=00:00
sync_end_time=23:59
#同步完多少文件后写 mark 标记
write_mark_file_freq=500
#storage 在存储文件时支持多路径,默认只设置一个
store_path_count=1
#配置多个 store_path 路径,从 0 开始,如果 store_path0 不存在,则 base_path 必须存在
store_path0=/opt/fdfs
#store_path1=/opt/fastdfs2
#subdir_count * subdir_count 个目录会在 store_path 下创建,采用两级存储
subdir_count_per_path=256
#设置 tracker_server
tracker_server=x.x.x.x:22122
#同 tracker.conf
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
#文件在数据目录下的存放策略,0:轮训 1:随机
file_distribute_path_mode=0
#当问及是轮训存放时,一个目录下可存放的文件数目
file_distribute_rotate_count=100
#写入多少字节后就开始同步,0 表示不同步
fsync_after_written_bytes=0
#刷新日志信息到 disk 的间隔
sync_log_buff_interval=10
#同步 storage 的状态信息到 disk 的间隔
sync_stat_file_interval=300
#线程栈大小
thread_stack_size=512KB
#设置文件上传服务器的优先级,值越小越高
upload_priority=10
#是否检测文件重复存在,1:检测 0:不检测
check_file_duplicate=0
#当 check_file_duplicate 设置为 1 时,次值必须设置
key_namespace=FastDFS
#与 FastDHT 建立连接的方式 0:短连接 1:长连接
keep_alive=0
#同 tracker.conf
http.disabled=false
http.domain_name=
http.server_port=8888
http.trunk_size=256KB
http.need_find_content_type=true
##include http.conf

启动 storage 进程

fdfs_storaged /etc/fdfs/storage.conf

检测状态

netstat -tupln | grep storage#结果如下:tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 17138/fdfs_storaged

client.conf 配置文件分析:

#同 tracker.confconnect_timeout=30
network_timeout=60
base_path=/opt/fdfs
tracker_server=x.x.x.x:22122
log_level=info
http.tracker_server_port=8080

测试上传文件:

fdfs_upload_file /etc/fdfs/client.conf client.conf#返回如下字符串 group1/M00/00/00/CgEGflAqaFW4hENaAAACo8wrbSE16.conf

在 storage 的数据目录下的 00/00 目录下即可看到该文件,文件名称是 CgEGflAqaFW4hENaAAACo8wrbSE16.conf

  • FastDFS

    FastDFS 是用 C 语言编写的一款开源分布式文件系统。FastDFS 为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

    17 引用 • 10 回帖 • 1 关注
  • 存储
    22 引用 • 28 回帖 • 1 关注

相关帖子

1 回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 51 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 724 关注
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    52 引用 • 228 回帖 • 1 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    408 引用 • 3574 回帖
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 2 关注
  • abitmean

    有点意思就行了

    29 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    85 引用 • 165 回帖 • 2 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    311 引用 • 546 回帖
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    85 引用 • 139 回帖 • 1 关注
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    179 引用 • 407 回帖 • 488 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 6 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 47 关注
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 510 关注
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    93 引用 • 113 回帖
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 700 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    75 引用 • 1737 回帖 • 5 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1705 回帖 • 1 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 73 关注
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    29 引用 • 66 回帖
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 670 关注
  • 导航

    各种网址链接、内容导航。

    40 引用 • 173 回帖
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 2 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 4 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 595 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    21 引用 • 140 回帖 • 1 关注