对fastdfs使用不熟练的朋友不清楚具体的配置怎么去写, 或者配置是什么意思,是否具备什么功能,如下是fastdfs的storage、tracker的相对完整的配置文件参数解析,供各位参考自行添加使用。
一、存储节点storage.conf 参数解析
# 该配置文件是否生效
# true: 无效,false: 生效
disabled=false
# 本storage server所属组名
group_name=group1
# 绑定本storage server的IP
# 当指定bind_addr时,本参数才有效
# true: 绑定bind_addr所指定的IP,false: 绑定本机的任意IP
# (注意:此参数在新版本中可能已被移除或更改,具体以实际版本为准)
# client_bind=true(此行为示例,实际配置需根据版本和需求确定)
# storage server端口
port=23000
# 连接超时时间(单位:秒)
# 针对socket套接字函数connect,默认值可能是30秒(具体以版本为准)
connect_timeout=30
# 网络超时时间(单位:秒)
# 存储服务器网络超时时间,发送或接收数据时,如果在超时时间后还不能发送或接收数据,则本次网络通信失败
network_timeout=60
# 本storage向tracker发送心跳时间间隔(单位:秒)
heart_beat_interval=30
# 硬盘存储空间使用情况检测时间间隔(单位:秒)
# storage server向tracker server报告磁盘剩余空间的时间间隔
stat_report_interval=60
# base_path,用于存放数据文件、日志文件等的根目录
# 必须预先创建,目录下会自动生成data(存储信息)和logs(日志信息)等文件夹
# (注意:此路径不是上传的文件存放的地址,而是数据和日志的存储位置)
base_path=/var/lib/fdfs/storage
# 本storage server支持的最大并发连接数
# 更大的值意味着需要使用更大的内存,默认值可能是256(具体以版本为准)
max_connections=256
# 发送/接收数据的缓冲区大小
# 此参数必须大于8KB,默认值可能是64KB(自V2.00版本起)
# 设置得大一些,系统整体性能会有所提升,但请不要超过系统物理内存大小
buff_size=256KB
# 工作线程数,应小于等于max_connections
# 此参数处理网络的I/O,通常设置为CPU数(自V2.00版本引入)
work_threads=4
# storage path的个数
# 默认为1,如果有多个存储路径,需要增加store_path0, store_path1, ...等配置项
store_path_count=1
# 第一个存储路径,用于存放文件(根据store_path_count的值配置多个路径)
store_path0=/var/lib/fdfs/data
# tracker server的列表,需要写端口号(可以配置多个tracker server以实现高可用)
tracker_server=192.168.x.x:22122
# tracker_server=another_ip:22122(示例,添加其他tracker server时按此格式)
# 日志记录级别(可以选择INFO、DEBUG等)
log_level=info
# 允许连接的客户端IP列表(可选配置,用于限制访问)
# allow_hosts=192.168.x.x(示例,添加允许的IP地址)
# 文件分布到data path的方式
# 0: 轮询,1: 随机(根据哈希code)
file_distribute_path_mode=0
# 当file_distribute_path_mode设置为0(轮询)时,该值才有效
# 功能是:当写文件计数达到该值时,转至下一个path
file_distribute_rotate_count=100
# 线程栈大小,要求至少512KB
thread_stack_size=512KB
# 上传优先级(只有tracker.conf中相关设置匹配时才有效)
# 值越小,优先级越高,默认为10
upload_priority=10
# 是否检查文件重复
# 当设置为1时,使用FastDHT存储文件索引
# 默认为0(不检查)
check_file_duplicate=0
# 当check_file_duplicate设定为1或yes时(true/on也是可以的),在FastDHT中的命名空间
key_namespace=FastDFS
# 与FastDHT的连接方式
# 默认为0,短连接;1:长连接(persistent connection)
keep_alive=0
# 是否I/O分离
# 默认为true(分离),false:不分离
disk_rw_separated=true
# 是否直接写,不使用cache
# true:直接写,false:不直接写
disk_rw_direct=false
# 每个storage base path的读线程数
# 对于disk_rw_separated=true的方式,该值为0(默认为1)
disk_reader_threads=1
# 每个storage base path的写线程数
# 对于disk_rw_separated=true的方式,该值为0(默认为1)
disk_writer_threads=1
# 同步文件时,如果从binlog中没有读到要同步的文件,休眠N毫秒后重新读取
# 单位为毫秒,0表示不休眠,立即再次尝试读取
sync_wait_msec=50
# 同步一个文件后,在下次进行同步前的休息时间
# 单位为毫秒,sync_interval=0表示每次同步后不休眠
sync_interval=0
# 每天存储同步的开始时间
# 值为HH:mm,例如:sync_start_time=02:00
sync_start_time=00:00
# 每天存储同步的结束时间
# 值为HH:mm,例如:sync_end_time=04:00
sync_end_time=23:59
# 把storage的mark文件定期同步到磁盘的时间间隔(具体功能和用途可能因版本而异)
# 此参数的具体作用和配置方式可能需要根据实际使用的FastDFS版本和场景来确定
# write_mark_file_freq=(根据版本和需求配置)
二、调度节点tracker配置文件解析
# 该配置文件是否生效
# false表示启用,true表示不生效
disabled=false
# 绑定IP地址
# 常用于服务器有多个IP但只希望一个IP提供服务
# 如果不填则表示所有的可提供服务
bind_addr=<IP地址> # 例如:192.168.6.102
# Tracker服务器服务端口
# 默认值22122,一般使用默认值即可
port=22122
# 连接超时时间
# 单位:秒,正整数值
connect_timeout=30 # 可根据实际情况调整
# 网络超时时间
# 发送或接收数据时,如果在超时时间后还不能发送或接收数据,则本次网络通信失败
# 单位:秒,正整数值
network_timeout=60 # 可根据实际情况调整
# Tracker数据/日志目录地址
base_path=<路径> # 例如:/var/lib/fdfs/tracker 或 /home/michael/fdfs/base4tracker
# 该路径下会包含data和logs目录,data目录存储分组信息和存储服务器列表,logs目录存储tracker server日志文件
# 系统提供服务时的最大连接数
# 正整数值
max_connections=256 # 可根据实际情况调整
# 工作线程数
# 通常设置为CPU数
work_threads=4 # 可根据实际情况调整
# 上传文件的选组方式
# 0:表示轮询
# 1:表示指定组
# 2:表示存储负载均衡(选择剩余空间最大的组)
# 如果在应用层指定了具体的组,那么这个参数将不会起效
# 另外如果store_lookup是0或2,则此参数无效
store_group=<组名> # 例如:group1
# 上传服务器的选择方式
# 一个文件被上传后,这个storage server就相当于这个文件的storage server源,会对同组的storage server推送这个文件达到同步效果
# 0:轮询方式(默认)
# 1:根据IP地址进行排序选择第一个服务器(IP地址最小者)
# 2:根据优先级进行排序(上传优先级由storage server来设置,参数名为upload_priority),优先级值越小优先级越高
# 上传路径的选择方式:storage server可以有多个存放文件的base path(可以理解为多个磁盘)
# 2:存储负载均衡,选择剩余空间最大的目录存放文件(注意:剩余磁盘空间是动态的,因此存储到的目录或磁盘可能也是变化的)
# 下载服务器的选择方式
# 0:轮询(默认)
# 1:IP最小者
# 2:优先级排序(值最小的,优先级最高)
download_server=0 # 可根据实际情况调整
# 保留空间值
# 如果某个组中的某个服务器的剩余自由空间小于设定值,则文件不会被上传到这个组
# G或g表示gigabyte,M或m表示megabyte,K或k表示kilobyte
reserved_storage_space=1GB # 可根据实际情况调整
# 日志级别
# emerg:emergency
# alert
# crit:critical
# error
# warn:warning
# notice
# info:information
# debug:debugging
log_level=info # 可根据实际情况调整
# 指定操作系统运行FastDFS的用户组
# 不填就是当前用户组,哪个启动进程就是哪个
run_by_group=<用户组名> # 例如:fdfs
# 指定操作系统运行FastDFS的用户
# 不填就是当前用户,哪个启动进程就是哪个
run_by_user=<用户名>
# 可以连接到tracker server的ip范围
# 可设定多个值,对所有类型的连接都有影响,包括客户端和storage server
allow_hosts=<IP地址范围> # 例如:192.168.1.0/24
# 同步或刷新日志信息到硬盘的时间间隔
# 单位为秒,tracker server的日志不是实时写硬盘的,而是先写内存
sync_log_buff_interval=10 # 可根据实际情况调整
# 检测storage server存活的时间间隔
# 单位为秒,storage server定期向tracker server发心跳
# 如果tracker server在一个check_active_interval内还没有收到storage server的一次心跳,则认为该storage server已经下线
# 所以本参数值必须大于storage server配置的心跳时间间隔
# 通常配置为storage server心跳时间间隔的2倍或3倍
check_active_interval=120 # 可根据实际情况调整
# 设定线程栈的大小
# 线程栈越大,一个线程占用的系统资源就越多
# 如果要启动更多的线程(V1.x对应的参数为max_connections,V2.0为work_threads),可以适当降低本参数值
# 默认值为64KB,tracker server线程栈不应小于64KB
thread_stack_size=64KB # 可根据实际情况调整
# 当storage server IP地址改变时,集群是否自动调整
# 只有在storage server进程重启时才完成自动调整
storage_ip_changed_auto_adjust=true # 可根据实际情况调整
# 同组storage服务器之间同步的最大延迟时间
# 存储服务器之间同步文件的最大延迟时间,根据实际情况进行调整
# 单位为秒,默认值为1天(24*3600)
storage_sync_file_max_delay=86400 # 可根据实际情况调整
# 存储服务器同步一个文件需要消耗的最大时间
# 缺省为300s,即5分钟
storage_sync_file_max_time=300 # 可根据实际情况调整
# 是否使用trunk文件来存储几个小文件
# true或false
use_trunk_file=false # 可根据实际情况调整
# 最小slot大小
# <=4KB,默认为256字节
slot_min_size=256 # 可根据实际情况调整
# 最大slot大小
# >=slot_min_size,当小于这个值的时候就存储到trunk file中
# 默认为16MB
slot_max_size=16MB # 可根据实际情况调整
# trunk file的size
# >=4MB,默认为64MB
trunk_file_size=64MB # 可根据实际情况调整
# HTTP是否生效
http.disabled=false # 如果需要启用HTTP服务,则设置为false
# tracker server上的HTTP端口号
# 只有http.disabled=false时才生效
http.server_port=<端口号> # 例如:8088