Releases: happyfish100/fastdfs
Release list
FastDFS 6.16 released
After nearly two weeks of development and testing, the distributed file system FastDFS V6.16 has been released. The main improvements in this version include support for deploying multiple storage instances of the same group on a single server, as well as the provision of tools such as fdfs_storage_stat for intuitive viewing of storage status and fdfs_volumn_stat for concise viewing of cluster capacity.
Multiple storage instances of the same group can be deployed on a single server, primarily for development and testing environments. However, this is not recommended for production environments. If a group of storage servers consists of only one server, two instances of the same group can be deployed on that server, with each instance using a different storage path (corresponding to a different hard disk), to achieve data redundancy across multiple disks on a single machine.
The original fdfs_monitor can view detailed information about the storage service, including a plethora of statistics on file uploads and downloads. However, its output content is overly cumbersome, making it inconvenient to concisely check the health status of the storage service and the storage capacity of the cluster. Therefore, fdfs_storage_stat and fdfs_volumn_stat have been added.
Together with the tool fdfs_tracker_stat provided in V6.15.5, FastDFS now offers a total of four cluster viewing and monitoring tools. Additionally, fdfs_exporter, which provides monitoring metrics for Prometheus, is available in the source code directory monitoring/prometheus_exporter. Friends in need are welcome to use it, and please feel free to provide feedback if you have any questions.
All the above four monitoring tools support the -h option to view help. For fdfs_tracker_stat and fdfs_storage_stat, specifying the -N option displays a list of tracker servers and storage servers in a non-ACTIVE state. If the output of fdfs_tracker_stat -N is empty, it indicates that all trackers are functioning normally. Similarly, if the output of fdfs_storage_stat -N is empty, it indicates that all storage services are functioning normally.
Example output snippet of fdfs_volumn_stat:
group1 disk_available: 1, disk space {total: 234 GB, free: 13 GB, reserved: 2.3 GB, avail: 11 GB, util: 95.19%}
The descriptions of each field are as follows:
disk_available: Whether the disk is available (it is available if the disk is not full)
total: Total disk space, consistent with what is seen using the df command
free: disk free space, consistent with what is seen using the df command
reserved: disk reserved space, set in tracker.conf, parameter name reserved_storage_space
avail: available disk space, equal to free - reserved
util: disk space utilization, where the denominator is not total, but total - reserved
The change log for V6.16 is as follows:
* one storage group supports multi storage instances in one server
Note: MUST set use_storage_id to true in tracker.conf and configure
storage_ids.conf to enable this feature
* expand version's buffer size of tracker and storage server
* storage access log supports log time_used in microsecond
* add monitor tool: fdfs_storage_stat and fdfs_volumn_stat
FastDFS 6.15.5 released
The development of FastDFS V6.15.1 to V6.15.5 spanned over six months, primarily involving minor improvements and enhancements to monitoring metrics.
Starting from version 6.15.5, maintenance and improvements have been made to the third-party contributed fdfs_exporter to provide monitoring data for Prometheus. The corresponding source code directory is: monitoring/prometheus_exporter. fdfs_exporter has added monitoring metrics related to storage synchronization delay, including last_synced_timestamp and synced_delay_seconds; as well as tracker status-related metrics such as is_leader, is_active, and current connection count.
V6.15.5 introduces a new command-line tool: fdfs_tracker_stat, for viewing the status of the tracker cluster. An example output is as follows:
192.168.3.202:22122, is_leader: 1, is_active: 1, connections {alloc: 256, current: 2, max: 22}
192.168.3.202:22222, is_leader: 0, is_active: 1, connections {alloc: 256, current: 1, max: 2}
tracker server count: 2
The libserverframe V1.2.11, which is dependent on FastDFS V6.15.2, has fixed a deep-seated bug: "MUST call sf_hold_task in sf_nio_notify for rare case." This bug may cause fdfs_storaged to crash or exhibit other strange behaviors under conditions of high concurrency and load on the storage server, as well as unstable or busy network conditions. Since this bug was introduced with the introduction of libserverframe in FastDFS V6.09, it is strongly recommended to use older versions such as V6.09, V6.10 etc. upgrade to the latest version as soon as possible.
Below are the change logs for these five minor versions:
Version 6.15.5 2026-06-23
* fdfs_exporter add metrics: last_synced_timestamp and synced_delay_seconds
* add protocol TRACKER_JOIN_LEADER for handshake from follower to leader
* add protocol SERVER_LIST_TRACKER for tracker monitoring
* add monitor tool: fdfs_tracker_stat
* fdfs_exporter add tracker metrics: is_leader, is_active etc.
* use libfastcommon V1.85 and libserverframe 1.2.13
Version 6.15.4 2026-03-07
* download_file offset and bytes's logic is consistent with the range of HTTP
Version 6.15.3 2025-12-23
* storage dio queue use fc_queue instead of common_blocked_queue
Version 6.15.2 2025-11-15
* move finish_callback from fast_task_info to TrackerClientInfo
*
Version 6.15.1 2025-11-06
* query file info support combined flags:
FDFS_QUERY_FINFO_FLAGS_NOT_CALC_CRC32 and FDFS_QUERY_FINFO_FLAGS_KEEP_SILENCE
FastDFS 6.15.2 released
The distributed file system FastDFS 6.15.2 has been released, with the following major improvements:
- The file synchronization between storage servers supports multithreading;
- The access log is based on libserverframe;
- The communication protocol of FastDFS is compatible with both IPv4 and IPv6 address lengths;
- The underlying libraries used, libfastcommon and libserverframe, support io_uring (requiring a Linux kernel version >= 6.2), which offers better performance than epoll.
Other minor improvements:
- check tracker leader before accept trunk server
- move finish_callback from fast_task_info to TrackerClientInfo
- query file info support combined flags: FDFS_QUERY_FINFO_FLAGS_NOT_CALC_CRC32 and FDFS_QUERY_FINFO_FLAGS_KEEP_SILENCE
- fix compile warnings under gcc 14
Set the number of file synchronization threads in storage.conf. The configuration example is as follows:
# file sync min thread count, must >= 1
# default value is 1
# since V6.15
sync_min_threads = 1
# file sync max thread count, should >= sync_min_threads
# set to auto for twice of store_path_count
# default value is auto
# since V6.15
sync_max_threads = auto
Log configuration includes global configuration and section configuration. Section configuration inherits global configuration and can be reset to overwrite global configuration. The section for error logs is [error-log], and the section for access logs is [access-log]. For details, refer to tracker.conf and storage.conf in the conf directory (located towards the end of the configuration files).
The communication protocol of FastDFS can automatically adapt to both IPv4 and IPv6 address lengths. It can be configured in tracker.conf, with an example configuration as follows:
# the response IP address size, value list:
## IPv6: IPv6 address size (46)
## auto: auto detect by storage_ids.conf, set to IPv6 address size
## when contains IPv6 address
# default value is auto
# since V6.15
response_ip_addr_size = auto
If the client SDK being used utilizes IPv6 address length, it is necessary to configure the response_ip_addr_size to IPv6. Otherwise, the default configuration can be used.
The Java SDK project provided by FastDFS is named fastdfs-client-java, which already supports automatic adaptation to IPv4 and IPv6 address lengths. The current version is V1.39, and it is recommended to upgrade it together with the FDFS Server.