FDFS

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

前面了解了 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 回帖

欢迎来到这里!

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

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

推荐标签 标签

  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖 • 1 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    63 引用 • 289 回帖
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • GitLab

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

    46 引用 • 72 回帖 • 1 关注
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 649 关注
  • Wide

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

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

    30 引用 • 218 回帖 • 644 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 15 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    89 引用 • 1251 回帖 • 393 关注
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖 • 1 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    181 引用 • 400 回帖 • 1 关注
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 119 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    125 引用 • 74 回帖
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖
  • 电影

    这是一个不能说的秘密。

    123 引用 • 608 回帖
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    92 引用 • 752 回帖 • 2 关注
  • VirtualBox

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

    10 引用 • 2 回帖 • 17 关注
  • TensorFlow

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

    20 引用 • 19 回帖
  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 712 关注
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    71 引用 • 535 回帖 • 830 关注
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 279 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    6 引用 • 26 回帖 • 546 关注
  • Hprose

    Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。

    9 引用 • 17 回帖 • 643 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    37 引用 • 157 回帖 • 1 关注
  • 链滴

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

    记录生活,连接点滴

    183 引用 • 3885 回帖
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 78 关注
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    187 引用 • 832 回帖