FastDFS 配置文件详解

2023年 5月 4日 39.1k 0

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

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

新闻联播老司机

  • 20年7月3日
  • 喜欢:0
  • 浏览:2.9k
  • 本次修改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
    

    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
    

    相关文章:

    1. 搭建分布式文件系统FastDFS集群
    2. CentOS 7 ETCD集群配置大全
    3. Kubernetes 1.14 二进制集群安装
    4. Xtrabackup安装以及应用

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论