FastDFS 配置文件详解

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

fastdfs111-1

搭建分布式文件系统FastDFS集群


本次修改FastDFS版本为v6.6

关于tacker.conf参数解释

  1. disabled = false
  2. #配置tracker.conf这个配置文件是否生效,因为在启动fastdfs服务端进程时需要指定配置文件,所以需要使次配置文件生效。false是生效,true是屏蔽。
  3.  
  4. bind_addr =
  5. #程序的监听地址,如果不设定则监听所有地址(0.0.0.0)
  6.  
  7. port = 22122
  8. #tracker监听的端口
  9.  
  10. connect_timeout = 5
  11. #连接超时时间,针对socket套接字函数connect
  12.  
  13. network_timeout = 60
  14. #tracker server的网络超时,单位为秒。发送或接收数据时,如果在超时时间后还不能发送或接收数据,则本次网络通信失败。
  15.  
  16. base_path = /data/tracker
  17. # base_path 目录地址(根目录必须存在,子目录会自动创建)
  18. # 附目录说明:
  19. tracker server目录及文件结构:
  20. ${base_path}
  21. |__data
  22. | |__storage_groups.dat:存储分组信息
  23. | |__storage_servers.dat:存储服务器列表
  24. |__logs
  25. |__trackerd.logtracker server日志文件
  26. 数据文件storage_groups.datstorage_servers.dat中的记录之间以换行符(\n)分隔,字段之间以西文逗号(,)分隔。
  27. storage_groups.dat中的字段依次为:
  28. 1. group_name:组名
  29. 2. storage_portstorage server端口号
  30.  
  31. storage_servers.dat中记录storage server相关信息,字段依次为:
  32. 1. group_name:所属组名
  33. 2. ip_addrip地址
  34. 3. status:状态
  35. 4. sync_src_ip_addr:向该storage server同步已有数据文件的源服务器
  36. 5. sync_until_timestamp:同步已有数据文件的截至时间(UNIX时间戳)
  37. 6. stat.total_upload_count:上传文件次数
  38. 7. stat.success_upload_count:成功上传文件次数
  39. 8. stat.total_set_meta_count:更改meta data次数
  40. 9. stat.success_set_meta_count:成功更改meta data次数
  41. 10. stat.total_delete_count:删除文件次数
  42. 11. stat.success_delete_count:成功删除文件次数
  43. 12. stat.total_download_count:下载文件次数
  44. 13. stat.success_download_count:成功下载文件次数
  45. 14. stat.total_get_meta_count:获取meta data次数
  46. 15. stat.success_get_meta_count:成功获取meta data次数
  47. 16. stat.last_source_update:最近一次源头更新时间(更新操作来自客户端)
  48. 17. stat.last_sync_update:最近一次同步更新时间(更新操作来自其他storage server的同步)
  49.  
  50. max_connections = 1024
  51. #系统提供服务时的最大连接数。对于V1.x,因一个连接由一个线程服务,也就是工作线程数。
  52.  
  53. accept_threads = 1
  54. #该参数决定接收客户端连接的线程数,默认值为1,适当放大该参数可改善Storage处理连接的能力,改成2[线上环境cpu为32核心可支持足够多的线程数]。
  55.  
  56. work_threads = 4
  57. #工作线程用来处理网络IO,默认值为4,该参数影响Stroage可以同时处理的连接数
  58.  
  59. min_buff_size = 8KB
  60. #接收/发送数据的buff大小,必须大于8KB
  61.  
  62. max_buff_size = 128KB
  63. #接收/发送数据的buff大小必须小于128KB
  64.  
  65. store_lookup = 0
  66. #在存储文件时选择group的策略,0:轮训策略 1:指定某一个组 2:负载均衡,选择空闲空间最大的group
  67.  
  68. store_server = 0
  69. #在group中的哪台storage做主storage,当一个文件上传到主storage后,就由这台机器同步文件到group内的其他storage上,0:轮训策略 1:根据ip地址排序,第一个 2:根据优先级排序,第一个
  70.  
  71. store_path = 0
  72. #选择文件上传到storage中的哪个(目录/挂载点),storage可以有多个存放文件的base path 0:轮训策略 2:负载均衡,选择空闲空间最大的
  73.  
  74. download_server = 0
  75. #选择那个storage作为主下载服务器,0:轮训策略 1:主上传storage作为主下载服务器
  76.  
  77. reserved_storage_space = 20%
  78. #系统预留空间,当一个group中的任何storage的剩余空间小于定义的值,整个group就不能上传文件了
  79.  
  80. log_level = info
  81. #日志信息级别
  82.  
  83.  
  84. run_by_group=
  85. run_by_user =
  86. #进程以那个用户/用户组运行,不指定默认是当前用户
  87.  
  88.  
  89. allow_hosts = *
  90. #允许那些机器连接tracker默认是所有机器
  91.  
  92. sync_log_buff_interval = 1
  93. #刷新日志信息到disk的间隔
  94.  
  95. check_active_interval = 120
  96. #检测 storage server 存活的时间隔,单位为秒。
  97. #storage server定期向tracker server 发心跳,如果tracker server在一个check_active_interval内还没有收到storage server的一次心跳,那边将认为该storage server已经下线。所以本参数值必须大于storage server配置的心跳时间间隔。通常配置为storage server心跳时间间隔的2倍或3倍。
  98.  
  99.  
  100. thread_stack_size = 256KB
  101. #线程栈的大小。FastDFS server端采用了线程方式。更正一下,tracker server线程栈不应小于64KB,不是512KB。
  102.  
  103. storage_ip_changed_auto_adjust = true
  104. #storage的ip改变后服务端是否自动调整,storage进程重启时才自动调整
  105.  
  106. storage_sync_file_max_delay = 86400
  107. #storage之间同步文件的最大延迟,默认1天
  108.  
  109. storage_sync_file_max_time = 300
  110. #存储服务器同步一个文件需要消耗的最大时间,单位为300s,即5分钟。
  111.  
  112. use_trunk_file = false
  113. #是否使用小文件合并存储特性 [false代表关闭]
  114.  
  115. slot_min_size = 256
  116. #trunk file分配的最小字节数。比如文件只有16个字节,系统也会分配slot_min_size个字节。
  117.  
  118. slot_max_size = 1MB
  119. #只有文件大小<=这个参数值的文件,才会合并存储。如果一个文件的大小大于这个参数值,将直接保存到一个文件中(即不采用合并存储方式)
  120.  
  121. trunk_alloc_alignment_size = 256
  122. #对齐大小越大,磁盘碎片的可能性越小,但浪费的空间也更多。
  123.  
  124. trunk_free_space_merge = true
  125. #是否合并中继文件的连续可用空间
  126.  
  127. delete_unused_trunk_files = false
  128. #files 删除/回收未使用的中继文件
  129.  
  130.  
  131. trunk_file_size = 64MB
  132. #runk file 大小
  133.  
  134. trunk_create_file_advance = false
  135. #是否提前创建 trunk file
  136.  
  137. trunk_create_file_time_base = 02:00
  138. 提前创建trunk file的起始时间点(基准时间),02:00表示第一次创建的时间点是凌晨2点。
  139.  
  140. trunk_create_file_interval = 86400
  141. #创建 trunk file 时间间隔, 86400 即隔一天
  142.  
  143.  
  144. trunk_create_file_space_threshold = 20G
  145. #提前创建trunk file时,需要达到的空闲trunk大小
  146. #比如本参数为20G,而当前空闲trunk为4GB,那么只需要创建16GB的trunk file即可。
  147.  
  148.  
  149. trunk_init_check_occupying = false
  150. #trunk初始化时,是否检查可用空间是否被占用
  151.  
  152. trunk_init_reload_from_binlog = false
  153. #是否无条件从trunk binlog中加载trunk可用空间信息
  154. #FastDFS缺省是从快照文件storage_trunk.dat中加载trunk可用空间,
  155. #该文件的第一行记录的是trunk binlog的offset,然后从binlog的offset开始加载
  156.  
  157. trunk_compress_binlog_min_interval = 86400
  158. #压缩 trunk binlog 文件的最小间隔
  159.  
  160. trunk_compress_binlog_interval = 86400
  161. #压缩 trunk binlog 文件的间隔时间 (默认1天)
  162.  
  163. trunk_compress_binlog_time_base = 03:00
  164. #压缩 trunk binlog 文件的时间点
  165.  
  166. trunk_binlog_max_backups = 7
  167. #trunk binlog 文件最大备份数
  168.  
  169. use_storage_id = false
  170. #是否使用server ID作为storage server标识
  171.  
  172. storage_ids_filename = storage_ids.conf
  173. #use_storage_id 设置为true,才需要设置本参数
  174. #在文件中设置组名、server ID和对应的IP地址,参见源码目录下的配置示例:conf/storage_ids.conf
  175.  
  176. id_type_in_filename = id
  177. #存储服务ID文件中的 ID 类型
  178.  
  179. store_slave_file_use_link = false
  180. #存储从文件是否使用符号链接
  181.  
  182. rotate_error_log = false
  183. #是否定期轮转error log,目前仅支持一天轮转一次
  184.  
  185. error_log_rotate_time = 00:00
  186. #error log定期轮转的时间点,只有当rotate_error_log设置为true时有效
  187.  
  188.  
  189. compress_old_error_log = false
  190. #是否压缩旧的错误日志
  191.  
  192. compress_error_log_days_before = 7
  193. #压给它几天前的错误日志 (compress_old_error_log = false本参数不生效)
  194.  
  195. rotate_error_log_size = 0
  196. #error log按大小轮转
  197. #设置为0表示不按文件大小轮转,否则当error log达到该大小,就会轮转到新文件中
  198.  
  199. log_file_keep_days = 0
  200. #日志文件保留几天(0代表永久保留)
  201.  
  202. use_connection_pool = true
  203. #是否使用连接池
  204.  
  205. connection_pool_max_idle_time = 3600
  206. #连接空闲时长,超过则连接被关闭 (单位秒)
  207.  
  208. #include http.conf
  209. #如果加载http.conf的配置文件 去掉第一个
  210.  
  211. #以下是关于http的设置了默认编译是不生效的要求更改 #WITH_HTTPD=1 将 注释#去掉 再编译
  212. http.server_port = 8080
  213. http.check_alive_interval = 30
  214. http.check_alive_type = tcp
  215. http.check_alive_uri = /status.html

storage配置参数解释

storage.conf

  1. disabled = false
  2. bind_addr =
  3. connect_timeout = 5
  4.  
  5. network_timeout = 60
  6. # storage server 网络超时时间,单位为秒。发送或接收数据时,如果在超时时间后还不能发送或接收数据,则本次网络通信失败。
  7.  
  8. group_name = group2
  9. #指定此storage server所在组(卷)
  10.  
  11. client_bind = true
  12. #bind_addr通常是针对server的。当指定bind_addr时,本参数才有效。
  13. #本storage server作为client连接其他服务器(如tracker server、其他storage server),是否绑定bind_addr。
  14.  
  15. port = 23000
  16. #storage 默认端口
  17.  
  18.  
  19. heart_beat_interval = 30
  20. #心跳间隔时间,单位为秒 (这里是指主动向tracker server 发送心跳)
  21.  
  22. stat_report_interval = 60
  23. #storage server向tracker server报告磁盘剩余空间的时间间隔,单位为秒。
  24.  
  25. base_path = /data/fastdfs_data
  26. #数据存储目录地址
  27.  
  28. max_connections = 1024
  29. #最大连接数
  30.  
  31. buff_size = 256KB
  32. #设置队列结点的buffer大小。工作队列消耗的内存大小 = buff_size * max_connections
  33. # 设置得大一些,系统整体性能会有所提升。
  34.  
  35. accept_threads = 1
  36. #接收数据的线程数
  37.  
  38. work_threads = 4
  39. #工作线程数,一般为cpu个数,当然CPU核数太多的话可以稍小一点。如我们是12CCPU,这里设置为8.
  40.  
  41. disk_rw_separated = true
  42. #磁盘IO读写是否分离。磁盘读/写分离为false则为混合读写,如果为true则为分离读写的。默认值为V2.00以后为true。
  43.  
  44. disk_reader_threads = 1
  45. #针对单个存储路径的读线程数,默认值为1。
  46. # 读写分离时,系统中的读线程数 = disk_reader_threads * store_path_count
  47. # 读写混合时,系统中的读写线程数 = (disk_reader_threads + disk_writer_threads) * store_path_count
  48.  
  49. disk_writer_threads = 1
  50. #针对单个存储路径的写线程数,默认值为1。
  51. # 读写分离时,系统中的写线程数 = disk_writer_threads * store_path_count
  52. # 读写混合时,系统中的读写线程数 = (disk_reader_threads + disk_writer_threads) * store_path_count
  53.  
  54.  
  55. sync_wait_msec = 50
  56. #同步文件时,如果从binlog中没有读到要同步的文件,休眠N毫秒后重新读取。0表示不休眠,立即再次尝试读取。
  57. #出于CPU消耗考虑,不建议设置为0。如何希望同步尽可能快一些,可以将本参数设置得小一些,比如设置为10ms
  58.  
  59.  
  60. sync_interval = 0
  61. #同步上一个文件后,再同步下一个文件的时间间隔,单位为毫秒,0表示不休眠,直接同步下一个文件。
  62.  
  63. sync_start_time = 00:00
  64. sync_end_time = 23:59
  65. #上面二个一起解释。允许系统同步的时间段 (默认是全天) 。一般用于避免高峰同步产生一些问题而设定
  66.  
  67. write_mark_file_freq = 500
  68. # (同步 N 个文件后就写入标记文件)
  69.  
  70. disk_recovery_threads = 3
  71. #硬盘恢复线程数
  72.  
  73. store_path_count = 1
  74. #storage在存储文件时支持多路径,默认只设置一个
  75.  
  76. store_path0 = /data/fastdfs_data
  77. #配置多个store_path路径,从0开始,如果store_path0不存在,则base_path必须存在
  78.  
  79. subdir_count_per_path = 256
  80. #subdir_count * subdir_count个目录会在store_path下创建,采用两级存储
  81.  
  82. tracker_server = 192.168.31.101:22122
  83. tracker_server = 192.168.31.102:22122
  84. #设置tracker_server
  85.  
  86. log_level = info
  87. #日志级别
  88.  
  89. run_by_group =
  90. run_by_user =
  91. allow_hosts = *
  92.  
  93. file_distribute_path_mode = 0
  94. # 文件在data目录下分散存储策略。
  95. # 0: 轮流存放,在一个目录下存储设置的文件数后(参数file_distribute_rotate_count中设置文件数),使用下一个目录进行存储。
  96. # 1: 随机存储,根据文件名对应的hash code来分散存储。
  97.  
  98. file_distribute_rotate_count = 100
  99. # 当上面的参数file_distribute_path_mode配置为0(轮流存放方式)时,本参数有效。
  100. # 当一个目录下的文件存放的文件数达到本参数值时,后续上传的文件存储到下一个目录中。
  101.  
  102. fsync_after_written_bytes = 0
  103. #当写入大文件时,每写入N个字节,调用一次系统函数fsync将内容强行同步到硬盘。0表示从不调用fsync
  104.  
  105. sync_log_buff_interval = 1
  106. #同步或刷新日志信息到硬盘的时间间隔,单位为秒
  107. #注意:storage server 的日志信息不是时时写硬盘的,而是先写内存。
  108.  
  109.  
  110. sync_binlog_buff_interval = 1
  111. # 同步binglog(更新操作日志)到硬盘的时间间隔,单位为秒
  112. # 本参数会影响新上传文件同步延迟时间
  113.  
  114. sync_stat_file_interval = 300
  115. # 把storage的stat文件同步到磁盘的时间间隔,单位为秒。
  116. # 注:如果stat文件内容没有变化,不会进行同步
  117.  
  118. thread_stack_size = 512KB
  119. #线程栈大小,线程栈越大,一个线程占用的系统资源就越多。
  120.  
  121. upload_priority = 10
  122. #本storage server作为源服务器,上传文件的优先级,可以为负数。值越小,优先级越高。这里就和 tracker.conf 中store_server= 2时的配置相对应了
  123.  
  124. if_alias_prefix =
  125. #网卡别名,用ifconfig -a可以看到很多本机的网卡别名,类似eth0,eth0:0等等。多个网卡别名使用逗号分割,默认为空,让系统自动选择。
  126.  
  127. check_file_duplicate = 0
  128. #是否检测上传文件已经存在。如果已经存在,则不存在文件内容,建立一个符号链接以节省磁盘空间。
  129. #这个应用要配合FastDHT 使用,所以打开前要先安装FastDHT
  130. #1或yes 是检测,0或no 是不检测
  131.  
  132. file_signature_method = hash
  133. # 文件去重时,文件内容的签名方式:
  134. ## hash: 4个hash code
  135. ## md5:MD5
  136.  
  137. key_namespace = FastDFS
  138. #当check_file_duplicate设置为1时,此值必须设置
  139.  
  140. keep_alive = 0
  141. #FastDHT建立连接的方式 0:短连接 1:长连接
  142.  
  143. use_access_log = false
  144. #是否将文件操作记录到access log
  145.  
  146. rotate_access_log = false
  147. # 是否定期轮转access log,目前仅支持一天轮转一次
  148.  
  149. access_log_rotate_time = 00:00
  150. #access log定期轮转的时间点,只有当rotate_access_log设置为true时有效
  151.  
  152. compress_old_access_log = false
  153. #是否压缩旧的访问日志
  154.  
  155. compress_access_log_days_before = 7
  156. #压缩几天前的访问日期
  157.  
  158. rotate_error_log = false
  159. #是否每天轮转错误日志
  160.  
  161. error_log_rotate_time = 00:00
  162. #错误日志轮转时间
  163.  
  164. compress_old_error_log = false
  165. #压缩旧的错误日志
  166.  
  167. compress_error_log_days_before = 7
  168. #压给它几天前的错误日志
  169.  
  170. rotate_access_log_size = 0
  171. # access log按文件大小轮转
  172. #设置为0表示不按文件大小轮转,否则当access log达到该大小,就会轮转到新文件中
  173.  
  174. rotate_error_log_size = 0
  175. #error log按文件大小轮转
  176. #设置为0表示不按文件大小轮转,否则当error log达到该大小,就会轮转到新文件中
  177.  
  178. log_file_keep_days = 0
  179. #保留日志文件的日期0表示不删除旧的日志文件
  180.  
  181. file_sync_skip_invalid_record = false
  182. #文件同步的时候,是否忽略无效的binlog记录
  183.  
  184. use_connection_pool = true
  185. #是否使用连接池
  186.  
  187. connection_pool_max_idle_time = 3600
  188. #连接的空闲时间超过这个时间将被关闭,单位:秒
  189.  
  190. compress_binlog = true
  191. #是否使用gzip压缩二进制日志文件
  192.  
  193. compress_binlog_time = 01:30
  194. #压给它二进制日志时间点
  195.  
  196. check_store_path_mark = true
  197. #是否检查存储路径的标记以防止混淆,建议开启,如果两个服务使用一个相同的存储路径,此参数要设置为 false
  198.  
  199. http.domain_name =
  200. #服务域名, 如果为空则表示使用 IP 地址
  201.  
  202. http.server_port = 80
  203. #http 端口

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

client.conf

  1. connect_timeout = 5
  2. #连接的超时时间
  3.  
  4. network_timeout = 60
  5. #网络超时(秒),默认值 60s
  6.  
  7. base_path = /data/fdfs_client/logs
  8. #存储日志文件的基本路径
  9.  
  10. tracker_server = 192.168.31.101:22122
  11. tracker_server = 192.168.31.102:22122
  12. #tracker server的列表
  13.  
  14. log_level = info
  15. #日志级别
  16.  
  17. use_connection_pool = false
  18. #是否使用连接池
  19.  
  20. connection_pool_max_idle_time = 3600
  21. #连接的空闲时间超过这个时间将被关闭,单位:秒
  22.  
  23. load_fdfs_parameters_from_tracker = false
  24. #是否加载来自跟踪服务器的FastDFS参数,默认值为false。这里可以设置为true。
  25.  
  26. use_storage_id = false
  27. #是否使用storage id替换ip作为storage server标识,默认为false
  28.  
  29. storage_ids_filename = storage_ids.conf
  30. #在文件中设置组名、server ID和对应的IP地址
  31. http.tracker_server_port = 80

nginx_http_module模块配置文件

mod_fastdfs.conf

  1. connect_timeout=2
  2. network_timeout=30
  3.  
  4. base_path=/tmp
  5. #日志存储路径
  6.  
  7. load_fdfs_parameters_from_tracker=true
  8. storage_sync_file_max_delay = 86400
  9. use_storage_id = false
  10. storage_ids_filename = storage_ids.conf
  11.  
  12. tracker_server=192.168.31.101:22122
  13. tracker_server=192.168.31.102:22122
  14. #tracker 服务列表
  15.  
  16. storage_server_port=23000
  17. #storage server端口号
  18.  
  19. url_have_group_name = true
  20. #文件url中是否有group名
  21.  
  22. store_path_count=1
  23. #存储路径个数,需要和store_path个数匹配
  24.  
  25. log_level=info
  26. #日志级别
  27.  
  28. log_filename=
  29. response_mode=proxy
  30. if_alias_prefix=
  31. flv_support = true
  32. flv_extension = flv
  33. group_count = 2
  34. #group组个数
  35.  
  36. #include http.conf
  37. #ngx-fastdfs-module依赖
  38.  
  39. [group1]
  40. group_name=group1
  41. #组名称
  42.  
  43. storage_server_port=23000
  44. store_path_count=1
  45. #存储路径个数,需要和store_path个数匹配
  46.  
  47. store_path0=/data/fastdfs_data
  48. #存储路径
  49.  
  50. [group2]
  51. group_name=group2
  52. storage_server_port=23000
  53. store_path_count=1
  54. store_path0=/data/fastdfs_data

Related Post

发表回复