FDFS

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

前面了解了 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 关注
  • 存储
    21 引用 • 28 回帖 • 1 关注

相关帖子

1 回帖

欢迎来到这里!

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

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

推荐标签 标签

  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    75 引用 • 258 回帖 • 627 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    76 引用 • 421 回帖
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 5 关注
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖 • 8 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    131 引用 • 3639 回帖
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 595 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    215 引用 • 462 回帖
  • 博客

    记录并分享人生的经历。

    270 引用 • 2386 回帖
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    164 引用 • 594 回帖
  • OnlyOffice
    4 引用 • 26 关注
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    20 引用 • 245 回帖 • 229 关注
  • jQuery

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

    63 引用 • 134 回帖 • 741 关注
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖 • 2 关注
  • Dubbo

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

    60 引用 • 82 回帖 • 608 关注
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 25 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    228 引用 • 1450 回帖
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    35 引用 • 35 回帖
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    532 引用 • 3528 回帖 • 1 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 605 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    247 引用 • 1347 回帖
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    180 引用 • 447 回帖
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    163 引用 • 1450 回帖
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 13 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 7 关注
  • 导航

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

    37 引用 • 168 回帖
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    7 引用 • 30 回帖 • 452 关注
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖