FastDFS 配置文件详解

748次阅读
没有评论
FastDFS 配置文件详解

网上大部分安装 FastDFS 并没有说清楚相关的配置文件和参数,导致集群无法启动或者性能降低。这篇文章主要整理一下以 FastDFS 6.6 版本为基础的配置文件参数,需要修改的地方已经提前说明清楚

本次修改 FastDFS 版本为 v6.6

关于 tacker.conf 参数解释

disabled = false
#配置 tracker.conf 这个配置文件是否生效,因为在启动 fastdfs 服务端进程时需要指定配置文件,所以需要使次配置文件生效。false 是生效,true 是屏蔽。bind_addr =
#程序的监听地址,如果不设定则监听所有地址 (0.0.0.0)
 
port = 22122
#tracker 监听的端口
 
connect_timeout = 5
#连接超时时间,针对 socket 套接字函数 connect
 
network_timeout = 60
#tracker server 的网络超时,单位为秒。发送或接收数据时,如果在超时时间后还不能发送或接收数据,则本次网络通信失败。base_path = /data/tracker
# base_path 目录地址 (根目录必须存在, 子目录会自动创建)
# 附目录说明: 
  tracker server 目录及文件结构:${base_path}
    |__data
    |     |__storage_groups.dat:存储分组信息
    |     |__storage_servers.dat:存储服务器列表
    |__logs
          |__trackerd.log:tracker server 日志文件
数据文件 storage_groups.dat 和 storage_servers.dat 中的记录之间以换行符(\n)分隔,字段之间以西文逗号(,)分隔。storage_groups.dat 中的字段依次为:1. group_name:组名
  2. storage_port:storage server 端口号
 
storage_servers.dat 中记录 storage server 相关信息,字段依次为:1. group_name:所属组名
  2. ip_addr:ip 地址
  3. status:状态
  4. sync_src_ip_addr:向该 storage server 同步已有数据文件的源服务器
  5. sync_until_timestamp:同步已有数据文件的截至时间(UNIX 时间戳)6. stat.total_upload_count:上传文件次数
  7. stat.success_upload_count:成功上传文件次数
  8. stat.total_set_meta_count:更改 meta data 次数
  9. stat.success_set_meta_count:成功更改 meta data 次数
  10. stat.total_delete_count:删除文件次数
  11. stat.success_delete_count:成功删除文件次数
  12. stat.total_download_count:下载文件次数
  13. stat.success_download_count:成功下载文件次数
  14. stat.total_get_meta_count:获取 meta data 次数
  15. stat.success_get_meta_count:成功获取 meta data 次数
  16. stat.last_source_update:最近一次源头更新时间(更新操作来自客户端)17. stat.last_sync_update:最近一次同步更新时间(更新操作来自其他 storage server 的同步)max_connections = 1024
#系统提供服务时的最大连接数。对于 V1.x,因一个连接由一个线程服务,也就是工作线程数。accept_threads = 1
#该参数决定接收客户端连接的线程数,默认值为 1,适当放大该参数可改善 Storage 处理连接的能力,改成 2 [ 线上环境 cpu 为 32 核心可支持足够多的线程数 ]。work_threads = 4
#工作线程用来处理网络 IO,默认值为 4,该参数影响 Stroage 可以同时处理的连接数
 
min_buff_size = 8KB
#接收 / 发送数据的 buff 大小,必须大于 8KB
 
max_buff_size = 128KB
#接收 / 发送数据的 buff 大小必须小于 128KB
 
store_lookup = 0
#在存储文件时选择 group 的策略,0: 轮训策略 1: 指定某一个组 2: 负载均衡,选择空闲空间最大的 group
 
store_server = 0
#在 group 中的哪台 storage 做主 storage,当一个文件上传到主 storage 后,就由这台机器同步文件到 group 内的其他 storage 上,0:轮训策略 1:根据 ip 地址排序,第一个 2: 根据优先级排序,第一个
 
store_path = 0
#选择文件上传到 storage 中的哪个 (目录 / 挂载点),storage 可以有多个存放文件的 base path 0: 轮训策略 2: 负载均衡,选择空闲空间最大的
 
download_server = 0
#选择那个 storage 作为主下载服务器,0: 轮训策略 1: 主上传 storage 作为主下载服务器
 
reserved_storage_space = 20%
#系统预留空间,当一个 group 中的任何 storage 的剩余空间小于定义的值,整个 group 就不能上传文件了
 
log_level = info
#日志信息级别
 
 
run_by_group=
run_by_user =
#进程以那个用户 / 用户组运行,不指定默认是当前用户
 
 
allow_hosts = *
#允许那些机器连接 tracker 默认是所有机器
 
sync_log_buff_interval = 1
#刷新日志信息到 disk 的间隔
 
check_active_interval = 120
#检测 storage server 存活的时间隔,单位为秒。#storage server 定期向 tracker server 发心跳,如果 tracker server 在一个 check_active_interval 内还没有收到 storage server 的一次心跳,那边将认为该 storage server 已经下线。所以本参数值必须大于 storage server 配置的心跳时间间隔。通常配置为 storage server 心跳时间间隔的 2 倍或 3 倍。thread_stack_size = 256KB
#线程栈的大小。FastDFS server 端采用了线程方式。更正一下,tracker server 线程栈不应小于 64KB,不是 512KB。storage_ip_changed_auto_adjust = true
#storage 的 ip 改变后服务端是否自动调整,storage 进程重启时才自动调整
 
storage_sync_file_max_delay = 86400
#storage 之间同步文件的最大延迟,默认 1 天
 
storage_sync_file_max_time = 300
#存储服务器同步一个文件需要消耗的最大时间,单位为 300s,即 5 分钟。use_trunk_file = false 
#是否使用小文件合并存储特性 [false 代表关闭 ]
 
slot_min_size = 256
#trunk file 分配的最小字节数。比如文件只有 16 个字节,系统也会分配 slot_min_size 个字节。slot_max_size = 1MB
#只有文件大小 <= 这个参数值的文件,才会合并存储。如果一个文件的大小大于这个参数值,将直接保存到一个文件中(即不采用合并存储方式)trunk_alloc_alignment_size = 256
#对齐大小越大,磁盘碎片的可能性越小,但浪费的空间也更多。trunk_free_space_merge = true
#是否合并中继文件的连续可用空间
 
delete_unused_trunk_files = false
#files 删除 / 回收未使用的中继文件
 
 
trunk_file_size = 64MB
#runk file 大小
 
trunk_create_file_advance = false
#是否提前创建 trunk file
 
trunk_create_file_time_base = 02:00
 提前创建 trunk file 的起始时间点(基准时间),02:00 表示第一次创建的时间点是凌晨 2 点。trunk_create_file_interval = 86400
#创建 trunk file 时间间隔, 86400 即隔一天
 
 
trunk_create_file_space_threshold = 20G
#提前创建 trunk file 时,需要达到的空闲 trunk 大小
#比如本参数为 20G,而当前空闲 trunk 为 4GB,那么只需要创建 16GB 的 trunk file 即可。trunk_init_check_occupying = false
#trunk 初始化时,是否检查可用空间是否被占用
 
trunk_init_reload_from_binlog = false
#是否无条件从 trunk binlog 中加载 trunk 可用空间信息
#FastDFS 缺省是从快照文件 storage_trunk.dat 中加载 trunk 可用空间,#该文件的第一行记录的是 trunk binlog 的 offset,然后从 binlog 的 offset 开始加载
 
trunk_compress_binlog_min_interval = 86400
#压缩 trunk binlog 文件的最小间隔
 
trunk_compress_binlog_interval = 86400
#压缩 trunk binlog 文件的间隔时间 (默认 1 天)
 
trunk_compress_binlog_time_base = 03:00
#压缩 trunk binlog 文件的时间点
 
trunk_binlog_max_backups = 7
#trunk binlog 文件最大备份数
 
use_storage_id = false
#是否使用 server ID 作为 storage server 标识
 
storage_ids_filename = storage_ids.conf
#use_storage_id 设置为 true,才需要设置本参数
#在文件中设置组名、server ID 和对应的 IP 地址,参见源码目录下的配置示例:conf/storage_ids.conf
 
id_type_in_filename = id
#存储服务 ID 文件中的 ID 类型
 
store_slave_file_use_link = false
#存储从文件是否使用符号链接
 
rotate_error_log = false
#是否定期轮转 error log,目前仅支持一天轮转一次
 
error_log_rotate_time = 00:00
#error log 定期轮转的时间点,只有当 rotate_error_log 设置为 true 时有效
 
 
compress_old_error_log = false
#是否压缩旧的错误日志
 
compress_error_log_days_before = 7
#压给它几天前的错误日志(compress_old_error_log = false 本参数不生效)rotate_error_log_size = 0
#error log 按大小轮转
#设置为 0 表示不按文件大小轮转,否则当 error log 达到该大小,就会轮转到新文件中
 
log_file_keep_days = 0
#日志文件保留几天 (0 代表永久保留)
 
use_connection_pool = true
#是否使用连接池
 
connection_pool_max_idle_time = 3600
#连接空闲时长, 超过则连接被关闭 (单位秒)
 
#include http.conf
#如果加载 http.conf 的配置文件 去掉第一个
 
#以下是关于 http 的设置了默认编译是不生效的要求更改 #WITH_HTTPD=1 将 注释 #去掉 再编译
http.server_port = 8080
http.check_alive_interval = 30
http.check_alive_type = tcp
http.check_alive_uri = /status.html

storage 配置参数解释

storage.conf

disabled = false
bind_addr =
connect_timeout = 5
 
network_timeout = 60
# storage server 网络超时时间,单位为秒。发送或接收数据时,如果在超时时间后还不能发送或接收数据,则本次网络通信失败。group_name = group2
#指定此 storage server 所在组 (卷)
 
client_bind = true
#bind_addr 通常是针对 server 的。当指定 bind_addr 时,本参数才有效。#本 storage server 作为 client 连接其他服务器(如 tracker server、其他 storage server),是否绑定 bind_addr。port = 23000
#storage 默认端口
 
 
heart_beat_interval = 30
#心跳间隔时间,单位为秒 (这里是指主动向 tracker server 发送心跳)
 
stat_report_interval = 60
#storage server 向 tracker server 报告磁盘剩余空间的时间间隔,单位为秒。base_path = /data/fastdfs_data
#数据存储目录地址
 
max_connections = 1024
#最大连接数
 
buff_size = 256KB
#设置队列结点的 buffer 大小。工作队列消耗的内存大小 = buff_size * max_connections
# 设置得大一些,系统整体性能会有所提升。accept_threads = 1
#接收数据的线程数
 
work_threads = 4
#工作线程数,一般为 cpu 个数,当然 CPU 核数太多的话可以稍小一点。如我们是 12CCPU,这里设置为 8.
 
disk_rw_separated = true
#磁盘 IO 读写是否分离。磁盘读 / 写分离为 false 则为混合读写,如果为 true 则为分离读写的。默认值为 V2.00 以后为 true。disk_reader_threads = 1
#针对单个存储路径的读线程数,默认值为 1。# 读写分离时,系统中的读线程数 = disk_reader_threads * store_path_count
# 读写混合时,系统中的读写线程数 = (disk_reader_threads + disk_writer_threads) * store_path_count
 
disk_writer_threads = 1
#针对单个存储路径的写线程数,默认值为 1。# 读写分离时,系统中的写线程数 = disk_writer_threads * store_path_count
# 读写混合时,系统中的读写线程数 = (disk_reader_threads + disk_writer_threads) * store_path_count
 
 
sync_wait_msec = 50
#同步文件时,如果从 binlog 中没有读到要同步的文件,休眠 N 毫秒后重新读取。0 表示不休眠,立即再次尝试读取。#出于 CPU 消耗考虑,不建议设置为 0。如何希望同步尽可能快一些,可以将本参数设置得小一些,比如设置为 10ms
 
 
sync_interval = 0
#同步上一个文件后,再同步下一个文件的时间间隔,单位为毫秒,0 表示不休眠,直接同步下一个文件。sync_start_time = 00:00
sync_end_time = 23:59
#上面二个一起解释。允许系统同步的时间段 (默认是全天)。一般用于避免高峰同步产生一些问题而设定
 
write_mark_file_freq = 500
# (同步 N 个文件后就写入标记文件)
 
disk_recovery_threads = 3
#硬盘恢复线程数
 
store_path_count = 1
#storage 在存储文件时支持多路径,默认只设置一个
 
store_path0 = /data/fastdfs_data
#配置多个 store_path 路径,从 0 开始,如果 store_path0 不存在,则 base_path 必须存在
 
subdir_count_per_path = 256
#subdir_count  * subdir_count 个目录会在 store_path 下创建,采用两级存储
 
tracker_server = 192.168.31.101:22122
tracker_server = 192.168.31.102:22122
#设置 tracker_server
 
log_level = info
#日志级别
 
run_by_group =
run_by_user =
allow_hosts = *
 
file_distribute_path_mode = 0
# 文件在 data 目录下分散存储策略。# 0: 轮流存放,在一个目录下存储设置的文件数后(参数 file_distribute_rotate_count 中设置文件数),使用下一个目录进行存储。# 1: 随机存储,根据文件名对应的 hash code 来分散存储。file_distribute_rotate_count = 100
# 当上面的参数 file_distribute_path_mode 配置为 0(轮流存放方式)时,本参数有效。# 当一个目录下的文件存放的文件数达到本参数值时,后续上传的文件存储到下一个目录中。fsync_after_written_bytes = 0
#当写入大文件时,每写入 N 个字节,调用一次系统函数 fsync 将内容强行同步到硬盘。0 表示从不调用 fsync  
 
sync_log_buff_interval = 1
#同步或刷新日志信息到硬盘的时间间隔,单位为秒
#注意:storage server 的日志信息不是时时写硬盘的,而是先写内存。sync_binlog_buff_interval = 1
# 同步 binglog(更新操作日志)到硬盘的时间间隔,单位为秒
# 本参数会影响新上传文件同步延迟时间
 
sync_stat_file_interval = 300
# 把 storage 的 stat 文件同步到磁盘的时间间隔,单位为秒。# 注:如果 stat 文件内容没有变化,不会进行同步
 
thread_stack_size = 512KB
#线程栈大小,线程栈越大,一个线程占用的系统资源就越多。upload_priority = 10
#本 storage server 作为源服务器,上传文件的优先级,可以为负数。值越小,优先级越高。这里就和 tracker.conf 中 store_server= 2 时的配置相对应了 
 
if_alias_prefix =
#网卡别名,用 ifconfig - a 可以看到很多本机的网卡别名,类似 eth0,eth0:0 等等。多个网卡别名使用逗号分割,默认为空,让系统自动选择。check_file_duplicate = 0
#是否检测上传文件已经存在。如果已经存在,则不存在文件内容,建立一个符号链接以节省磁盘空间。#这个应用要配合 FastDHT 使用,所以打开前要先安装 FastDHT 
#1 或 yes 是检测,0 或 no 是不检测
 
file_signature_method = hash
# 文件去重时,文件内容的签名方式:## hash:4 个 hash code
## md5:MD5
 
key_namespace = FastDFS
#当 check_file_duplicate 设置为 1 时,此值必须设置
 
keep_alive = 0
#FastDHT 建立连接的方式 0: 短连接 1: 长连接
 
use_access_log = false
#是否将文件操作记录到 access log
 
rotate_access_log = false
# 是否定期轮转 access log,目前仅支持一天轮转一次
 
access_log_rotate_time = 00:00
#access log 定期轮转的时间点,只有当 rotate_access_log 设置为 true 时有效
 
compress_old_access_log = false
#是否压缩旧的访问日志
 
compress_access_log_days_before = 7
#压缩几天前的访问日期
 
rotate_error_log = false
#是否每天轮转错误日志
 
error_log_rotate_time = 00:00
#错误日志轮转时间
 
compress_old_error_log = false
#压缩旧的错误日志
 
compress_error_log_days_before = 7
#压给它几天前的错误日志
 
rotate_access_log_size = 0
# access log 按文件大小轮转
#设置为 0 表示不按文件大小轮转,否则当 access log 达到该大小,就会轮转到新文件中
 
rotate_error_log_size = 0
#error log 按文件大小轮转
#设置为 0 表示不按文件大小轮转,否则当 error log 达到该大小,就会轮转到新文件中
 
log_file_keep_days = 0
#保留日志文件的日期 0 表示不删除旧的日志文件
 
file_sync_skip_invalid_record = false
#文件同步的时候,是否忽略无效的 binlog 记录
 
use_connection_pool = true
#是否使用连接池
 
connection_pool_max_idle_time = 3600
#连接的空闲时间超过这个时间将被关闭,单位:秒
 
compress_binlog = true
#是否使用 gzip 压缩二进制日志文件
 
compress_binlog_time = 01:30
#压给它二进制日志时间点
 
check_store_path_mark = true
#是否检查存储路径的标记以防止混淆, 建议开启, 如果两个服务使用一个相同的存储路径, 此参数要设置为 false
 
http.domain_name =
#服务域名, 如果为空则表示使用 IP 地址
 
http.server_port = 80
#http 端口
FastDFS 客户端配置文件参数详解

client.conf

connect_timeout = 5
#连接的超时时间
 
network_timeout = 60
#网络超时 (秒),默认值 60s
 
base_path = /data/fdfs_client/logs
#存储日志文件的基本路径
 
tracker_server = 192.168.31.101:22122
tracker_server = 192.168.31.102:22122
#tracker server 的列表
 
log_level = info
#日志级别
 
use_connection_pool = false
#是否使用连接池
 
connection_pool_max_idle_time = 3600
#连接的空闲时间超过这个时间将被关闭,单位:秒
 
load_fdfs_parameters_from_tracker = false
#是否加载来自跟踪服务器的 FastDFS 参数,默认值为 false。这里可以设置为 true。use_storage_id = false
#是否使用 storage id 替换 ip 作为 storage server 标识,默认为 false
 
storage_ids_filename = storage_ids.conf
#在文件中设置组名、server ID 和对应的 IP 地址
http.tracker_server_port = 80

FastDFS 客户端配置文件参数详解

client.conf

connect_timeout = 5
#连接的超时时间
 
network_timeout = 60
#网络超时 (秒),默认值 60s
 
base_path = /data/fdfs_client/logs
#存储日志文件的基本路径
 
tracker_server = 192.168.31.101:22122
tracker_server = 192.168.31.102:22122
#tracker server 的列表
 
log_level = info
#日志级别
 
use_connection_pool = false
#是否使用连接池
 
connection_pool_max_idle_time = 3600
#连接的空闲时间超过这个时间将被关闭,单位:秒
 
load_fdfs_parameters_from_tracker = false
#是否加载来自跟踪服务器的 FastDFS 参数,默认值为 false。这里可以设置为 true。use_storage_id = false
#是否使用 storage id 替换 ip 作为 storage server 标识,默认为 false
 
storage_ids_filename = storage_ids.conf
#在文件中设置组名、server ID 和对应的 IP 地址
http.tracker_server_port = 80

nginx_http_module 模块配置文件

mod_fastdfs.conf

connect_timeout=2
network_timeout=30
 
base_path=/tmp
#日志存储路径
 
load_fdfs_parameters_from_tracker=true
storage_sync_file_max_delay = 86400
use_storage_id = false
storage_ids_filename = storage_ids.conf
 
tracker_server=192.168.31.101:22122
tracker_server=192.168.31.102:22122
#tracker 服务列表
 
storage_server_port=23000
#storage server 端口号
 
url_have_group_name = true  
#文件 url 中是否有 group 名
 
store_path_count=1
#存储路径个数,需要和 store_path 个数匹配
 
log_level=info
#日志级别
 
log_filename=
response_mode=proxy
if_alias_prefix=
flv_support = true
flv_extension = flv
group_count = 2   
#group 组个数
 
#include http.conf
#ngx-fastdfs-module 依赖
 
[group1]             
group_name=group1
#组名称
 
storage_server_port=23000
store_path_count=1
#存储路径个数,需要和 store_path 个数匹配
 
store_path0=/data/fastdfs_data 
#存储路径
 
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs_data
正文完
 
评论(没有评论)