FastDFS V5.08发布!!!

发布于 2022-09-23 15:32:59 字数 40602 浏览 17 评论 0

本帖最后由 happy_fish100 于 2016-04-16 15:45 编辑

Version 5.08  2016-04-08
* install library to $(TARGET_PREFIX)/lib anyway
* php extension compiled in PHP 7
* dio thread use blocked_queue and php extension use php7_ext_wrapper.h,
   you must upgrade libfastcommon to V1.25 or later
* remove common/linux_stack_trace.[hc]

Version 5.07  2015-09-13
* schedule task add the "second" field
* make.sh changed, you must upgrade libfastcommon to V1.21 or later
* bug fixed: storage_disk_recovery.c skip the first file (binlog first line)
* bug fixed: should close connection after fetch binlog
* fdfs_storaged.c: advance the position of daemon_init
* set log rotate time format
* bug fixed: must check store_path_index

Version 5.06  2015-05-12
* compile passed in mac OS Darwin
* correct scripts in subdir init.d
* check item thread_stack_size in storage.conf, you must
   upgrade libfastcommon to V1.14 or later

Version 5.05  2014-11-22
* tracker_mem.c log more info
* remove useless global variable: g_network_tv
* storage can fetch it's group_name from tracker server

Version 5.04  2014-09-16
* add fastdfs.spec for build RPM on Linux
* depend on libfastcommon
* in multi tracker servers case, when receive higher status like
   online / active and the storage status is wait_sync or syncing,
   the tracker adjust storage status to newer, and the storage rejoin
   to the tracker server
* fdfs_monitor support delete empty group
* bug fixed: two tracker leaders occur in rare case
* add connection stats
* delete old log files, add parameter: log_file_keep_days

Version 5.03  2014-08-10
* network send and recv retry when error EINTR happen
* support mac OS Darwin
* use newest logger from libfastcommon
* patches by liangry@ucweb.com
* bug fixed: can't sync large files cause by v5.02
* use newest files from libfastcommon
* change TRACKER_SYNC_STATUS_FILE_INTERVAL from 3600 to 300
* socket send and recv ignore erno EINTR

Version 5.02  2014-07-20
* corect README spell mistake
* bug fixed: can't deal sync truncate file exception
* remove tracker_global.c extern keyword to tracker_global.h
* change log level from ERROR to DEBUG when IOEVENT_ERROR
* php callback should use INIT_ZVAL to init zval variable
* add function short2buff and buff2short
* add get_url_content_ex to support buffer passed by caller
* logger can set rotate time format
* logger can log header line
* #include <stdbool.h> to use C99 bool
* logger can delete old rotated files
* bug fixed: connection pool should NOT increase counter when connect fail
* logger.c do NOT call fsync after write

Version 5.01  2014-02-02
* trunk binlog be compressed when trunk init
* bug fixed: sync trunk binlog file to other storage servers immediately when
   the trunk server init done
* move ioevent_loop.[hc] and fast_task_queue.[hc] from tracker/ to common/
* hash table support locks
* hash talbe support new functions: hash_inc and hash_inc_ex

Version 5.00  2013-12-23
* discard libevent, use epoll in Linux, kqueue in FreeBSD, port in SunOS directly
* do_notify_leader_changed force close connection when target is myself
* modify the INSTALL file and tracker/Makefile.in

Version 4.08  2013-11-30
* bug fixed: FDFS_DOWNLOAD_SERVER_ROUND_ROBIN change to FDFS_STORE_SERVER_ROUND_ROBIN
* dio_init use memset to init buffer
* disable linger setting (setsockopt with option SO_LINGER)
* change log level from error to warning when file not exist on storage server

Version 4.07  2013-06-02
* make.sh add -lpthread by ldconfig check
* support multi accept threads
* tracker and storage server close client connection when recv invalid package
* client/storage_client.c: file_exist with silence flag
* tracker and storage process support start, stop and restart command
* tracker/tracker_proto.c fdfs_recv_header: logDebug change to logError

Version 4.06  2013-01-24
* fdfs_upload_file tool enhancement
* fdfs_download_file tool support offset and download size
* trunk file upload support sub paths rotating correctly
* add function: fdfs_http_get_file_extension
* sync truncate file operation anyway

Version 4.05  2012-12-30
* client/fdfs_upload_file.c can specify storage ip port and store path index
* add connection pool
* client load storage ids config
* common/ini_file_reader.c does NOT call chdir
* keep the mtime of file same
* use g_current_time instead of call time function
* remove embed HTTP support

Version 4.04  2012-12-02
* bug fixed: get storage server id when storage daemon init
* storage id in filename use global variable
* dynamic alloc memory 8 bytes alignment
* fast_task_queue support memory pool chain

Version 4.03  2012-11-18
* trunk_mgr/trunk_mem.c: log error and add more debug info
* file id generated by storage server can include storage server ID

Version 4.02  2012-10-28
* validate file_ext_name and prefix_name when upload file
* storage.conf add parameter: file_sync_skip_invalid_record
* add offset debug info when sync file fail
* bug fixed: log to binlog also if the file exists when sync file
* tracker and storage error log support rotate
* support rotate log by file size
* rotate log when receive HUP signal
* fdfs_monitor support set trunk server

Version 4.01  2012-10-20
* trunk_mgr/trunk_mem.c: trunk init flag check more strictly
* file signature for checking file duplicate support MD5
* slave file support both symbol link and direct file

Version 4.00  2012-10-06
* identify storage server by ID instead of IP address
* tracker.conf: storage reserved space can use ratio such as 10%
* storage server support access log
* appender file and trunk file also use rand number in file id
* bug fixed: test_upload.c: char file_id[64] change to: char file_id[128]
* set pipe reading fd with attribute O_NOATIME
* bug fixed: correct php extension call_user_function TSRMLS_DC with TSRMLS_CC

Version 3.11  2012-08-04
* setsockopt set linger.l_linger to micro-seconds in FreeBSD and seconds
   in others
* trunk binlog reader skip incorrect records
* bug fixed: single disk recovery support symbol link and trunk file
* storage generate filename enhancement
* ETIME change to ETIMEDOUT for FreeBSD
* tracker_mem.c: load storage server ignore empty ip address

Version 3.10  2012-07-22
* check and init trunk file more gracefully
* remove unused-but-set-variable
* bug fixed: return correct group name when g_check_file_duplicate is true
* bug fixed: php extension call_user_function replace TSRMLS_CC with TSRMLS_DC
* large the interval of tracker re-select trunk server
* trunk free block check duplicate using avl tree
* trunk file sync overwrite the dest file anyway
* common/avl_tree.c: free data when delete
* tracker.conf add parameter: trunk_init_reload_from_binlog, when this flag
   is set to true, load all free trunk blocks from the trunk binlog
* trunk status control only by trunk_mem.c and memcmp struct FDFSTrunkFullInfo
   avoid memory alignment problem
* auto remove the too old temp file

Version 3.09  2012-07-08
* make.sh avoid override config files of /etc/fdfs/
* common/logger.c: function log_init can be called more than once
* php extension logInfo change to logDebug
* c client logInfo change to logDebug
* storage_dio.c log info more properly
* delete the trunk space which be occupied
* tracker.conf add parameter: trunk_init_check_occupying, when this flag
   is set to true, do not add the trunk nodes which be occupied
* another method to get local ip addresses

Version 3.08  2012-05-27
* FAST_MAX_LOCAL_IP_ADDRS change from 4 to 16
* appender file support modify
* appender file support truncate

Version 3.07  2012-05-13
* tracker/tracker_mem.c: check storage ip address is not empty
* remove direct IO support
* trunk binlog sync optimization
* php extension compile passed in PHP 5.4.0
* get local ip addresses enhancement
* trunk server select the storage server whose binglog file size is max
* sync trunk binlog file correctly when trunk server changed

Version 3.06  2012-01-22
* add common/avl_tree.h and common/avl_tree.c
* organize trunk free blocks using AVL tree
* find the trunk server for each group when current tracker be a leader
* common/sched_thread.c can add schedule entry dynamicly
* support creating trunk file advancely

Version 3.05  2011-12-20
* remove compile warnings
* storage server's store_path_count can be more than that of group
* bug fixed: common/fast_mblock.c malloc bytes are not enough
* make.sh support OS: HP-UX

Version 3.04  2011-11-20
* bug fixed: duplicate files only save one entry ok with trunk file mode
* bug fixed: sync correctly with more binlog files
* fdfs_file_info query file info from storage server
* bug fixed: php extension compile error using gcc 4.6.1 as:
   variable 'store_path_index' set but not used
* bug fixed: delete the metadata of trunked file correctly
* bug fixed: append file ok when check duplicate is on
* storage/trunk_mgr/trunk_shared.[hc]: trunk_file_stat_func do not
   use function pointer
* bug fixed: delete slave file correctly

Version 3.03  2011-10-16
* ignore existed link when sync link file
* http token checking support persistent token
* add functions: storage_file_exist and storage_file_exist1
* php minfo add fastdfs version info
* make.sh changed
* client move libevent dependency

Version 3.02  2011-09-18
* bug fixed: tracker_mem_check_add_tracker_servers add tracker server
   correctly
* php client compile ok with php 5.2.17
* re-select trunk server ok

Version 3.01  2011-07-31
* bug fixed: tracker_get_connection_ex and tracker_get_connection_r_ex
   connect two times with multi tracker servers
* bug fixed: tracker_mem_check_add_tracker_servers condition not correct
* all logError add source filename and line
* php extension support upload file callback
* php extension support download file callback

Version 3.00  2011-06-19
* mass small files optimization
* add fixed block memory pool: common/fast_mblock.c
* bug fixed: tracker_mem.c do NOT clear g_groups fields
* bug fixed: slave file and appender file download ok
* bug fixed: tracker / storage run by group / user, set file owner
* tracker server support leader
* client support static library
* client_func.h add functions fdfs_tracker_group_equals and
   fdfs_get_file_ext_name
* bug fixed: test/dfs_func_pc.c compile ok
* storage server check free space enough when upload a file

Version 2.13  2011-11-20
* bug fixed: sync correctly with more binlog files
* bug fixed: php extension compile error using gcc 4.6.1 as:
   variable 'store_path_index' set but not used
* bug fixed: append file ok when check duplicate is on
* bug fixed: delete slave file correctly

Version 2.12  2011-10-15
* php client compile ok with php 5.2.17
* ignore existed link when sync link file
* http token checking support persistent token
* add functions: storage_file_exist and storage_file_exist1
* php minfo add fastdfs version info
* make.sh changed
* client move libevent dependency

Version 2.11  2011-07-31
* bug fixed: test/dfs_func_pc.c compile ok
* bug fixed: tracker_get_connection_ex and tracker_get_connection_r_ex
   connect two times with multi tracker servers
* all logError add source filename and line
* php extendsion support callback for upload and download file

Version 2.10  2011-05-21
* bug fixed: tracker / storage run by group / user, set file owner
* client support static library
* client library support load from buffer
* client_func.h add functions fdfs_tracker_group_equals and
   fdfs_get_file_ext_name

Version 2.09  2011-02-19
* bug fixed: write_to_binlog_index then increase g_binlog_index (feedback
   by koolcoy)
* disk read / write supports direct mode (avoid caching by the file system)

Version 2.08  2011-01-30
* bug fixed: fdfs_trackerd.c set g_tracker_thread_count to 0
* add cmd TRACKER_PROTO_CMD_SERVER_LIST_ONE_GROUP to support list one group
* support disk recovery automatically
* support total_upload_bytes, success_upload_bytes, total_download_bytes and
   success_download_bytes etc. 18 stat fields
* tracker data file storage_groups.dat changes to storage_groups_new.dat, and
   storage_servers.dat changes to storage_servers_new.dat
* support file append, add tests: fdfs_appender_test and fdfs_appender_test1
* storage_dio.c: dio_deal_task split to several functions
* tracker http check thread exit normally
* function fdfs_get_file_info_ex changed, add function fdfs_get_file_info_ex1
* fix some type cast error when compile with c++
* client add tools: fdfs_upload_appender and fdfs_append_file

Version 2.07  2011-01-09
* slave file's prefix name can be empty
* FDFS_MAX_GROUPS change from 64 to 512
* file size field in the file id changed: high 32 bits is random integer
   when the file size < 2GB and the highest bit set to 1
* tracker_service.c: in function list_group_storages, use strcpy
   intead of memcpy
* php extension add function fastdfs_tracker_delete_storage
* client add tool: fdfs_file_info to get file info, including file size,
   create timestamp, source storage ip address and crc32 signature
* fdfs_upload_file.c: omit more error info when the local file not exist

Version 2.06  2010-12-26
* sync file op: do not sync the file which exists on dest storage server
   and the file size are same
* bug fixed: sync copy file will clear the existed file on dest storage
   server (truncate the file size to 0), this bug caused by V2.04
* bug fixed: make temp file discard system function mkstemp,
   use file sequence No. with pthread_mutex_lock
* bug fixed: function fastdfs_tracker_list_groups, when parameter group_name
   is null or empty string, return all groups info
* bug fixed: upload a file extends 2GB will fail
* bug fixed: tracker to tracker sync system data files, in function:
   tracker_mem_get_tracker_server, pTrackerStatus not be set properly

Version 2.05  2010-12-05
* client/fdfs_monitor.c: add sync delay time
* tracker/fast_task_queue.c: pTask->data = pTask->arg + arg_size;
   change to: pTask->data = (char *)pTask->arg + arg_size;
* bug fixed: storage_sync.c line 237 cause core dump in Ubuntu 10.04
* upload file test use mmap, support more test_upload processes
* client add three tools: fdfs_upload_file, fdfs_download_file and
   fdfs_delete_file

Version 2.04  2010-11-19
* storage.conf: tracker server ip can NOT be 127.0.0.1
* do not catch signal SIGABRT
* strerror change to STRERROR macro
* sync copy file use temp filename first, rename to the correct filename
   when sync done
* file id use 4 bytes CRC32 signature instead of random number
* add file: client/fdfs_crc32.c
* one of file hash code signature function change from APHash_ex
   to simple_hash_ex
* bug fixed: when fdfs_storaged quit, maybe write to binlog file fail,
   the error info is "Bad file descriptor"

Version 2.03  2010-11-08
* bug fixed: core dump when http.need_find_content_type=false and
   http.anti_steal.check_token=true
* storage server add join_time field (create timestamp of this storage)
* tracker server fetch system files from other tracker server when
   first storage server join in (tracker to tracker sync system files)
* tracker server changes the old ip address to the new address when the
   storage server ip address changed
* tracker to tracker sync system data files in some case, multi tracker
   server supported well

Version 2.02  2010-10-28
* get parameters function from tracker server changed,
   add paramter: storage_sync_file_max_delay
* local ip functions move to common/local_ip_func.c
* when query all storage servers to store, do not increase the current
   write server index
* struct FDFSHTTPParams add field: need_find_content_type
* symbol link client library to /usr/lib64 in 64 bits OS
* storage_client.c: deal file extension name correctly

Version 2.01  2010-10-17
* client/fdfs_monitor.c can specify tracker server
* micro STORAGE_STORE_PATH_PREFIX_CHAR change to
   FDFS_STORAGE_STORE_PATH_PREFIX_CHAR
* php extension can set log filename
* php extension add function: fastdfs_client_version
* bug fixed: client/tracker_client.c tracker_get_connection_ex NULL pointer
* set max core dump file size to at least 256MB when DEBUG_FLAG is on,
   make sure to generate core file when core dump with DEBUG_FLAG on
* upload file can get available storage server list of the group,
   add command TRACKER_PROTO_CMD_SERVICE_QUERY_STORE_WITHOUT_GROUP_ALL and
   TRACKER_PROTO_CMD_SERVICE_QUERY_STORE_WITH_GROUP_ALL
* bug fixed: storage core dump in some case

Version 2.00  2010-08-22
* tracker network io use libevent instead of traditional io model
* storage network io use libevent instead of traditional io model
* storage disk read/write use separate threads
* tracker_mem.c malloc single group and storage struct, remove referer
* make install copy config files
* tracker.conf add two parameters: storage_sync_file_max_delay and
   storage_sync_file_max_time
* client tracker_get_connection increase server_index correctly
* storage sync to storage server adds active test
* test programs compile ok

Version 1.29  2010-06-30
* add files: tracker_dump.h and tracker_dump.c, tracker dump global vars
* add files: storage_dump.h and storage_dump.c, storage dump global vars
* sockopt.c: tcprecvfile and tcpdiscard add parameter total_recv_bytes
* storage server add fields: storage_port and storage_http_port
* auto rename synced remark files when the port of all storage servers
   in a group changed to another port
* connect server support timeout, adding connect_timeout parameter in
   config file
* log_init set log to cache to false (no cache)

Version 1.28  2010-05-30
* tracker_servive.c: set current_write_group anyway when current group
   out of space
* logger support context (multi instance)
* get storage servers by filename: if the file created one day ago (the create
   timestamp of the file < current_time - 86400), any active storage server matches
* add files: common/pthread_func.h and common/pthread_func.c
* common/sched_thread.h, remove statement: extern bool g_continue_flag;
* client add libfastcommon
* global variables: g_base_path, g_network_timeout, g_version change to
   g_fdfs_base_path, g_fdfs_network_timeout, g_fdfs_version
* common/fdfs_base64.h/c change name to common/base64.h/c
* make.sh use TARGET_PREFIX instead of TARGET_PATH
* protocol add ACTIVE_TEST, tracker and storage both support
* php client, bug fixed: fastdfs_connect_server, the sock must init to -1
* bug fixed: storage status not correct with multi tracker servers
* sync storage mark file and stat file to disk properly

Version 1.27  2010-04-10
* storage.conf: add if_alias_prefix parameter to get the ip address of the
   local host
* storage http support domain name
* php extension add some parameters in fastdfs_client.ini
* make.sh compile use debug mode
* type off_t change to int64_t
* redirect stdout and stderr to log file
* php extension list_groups add fields: version and http_domain

Version 1.26  2010-02-28
* remove compile warning of logError
* ini reader support section
* bug fixed: tracker/tracker_mem.c sync storage server status
* use storage server http server port anyway
* bug fixed: ini reader can support relative config filename
* function enhancement: tracker server can check storage HTTP server alive

Version 1.25  2010-02-04
* storage_sync.c if source file not exist when sync a file, change from
   logWarning to logDebug
* filename buff size change from 64 to 128
* bug fixed: c client and php client, log not inited cause core dump when
   call log functions
* can print stack trace when process core dumped in Linux server
* bug fixed: tracker/tracker_mem.c load storage servers fail with many groups
   and storage servers
* common/sockopt.c remove debug info
* storage stat add fields: version
* auto adjust when storage server ip address changed
* bug fixed: when add a new storage server, other storage servers' status keep
   the same, not changed
* add macros, compile passed in cygwin, thanks Seapeak
* write to system data file using lock
* common/ini_file_reader.c: use one context parameter, not two parameters
* storage status sync modified (the code of tracker and storage both changed)
* when recv kill signal, worker thread quit more quickly, daemon process
   fdfs_trackerd and fdfs_storage quit very quickly when recv kill signal
* remove compile warning info of logError
* tracker server start more quickly with many groups and storage servers
* bug fixed: correct off_t printf format

Version 1.24  2010-01-06
* call php_fdfs_close with TSRMLS_CC as php_fdfs_close(i_obj TSRMLS_CC)
* storage server to storage server report ip address as tracker client
* bug fixed: sendfile exceeds 2GB file in Linux
* bug fixed: delete storage server
* storage stat add fields: up_time and src_ip_addr
* big static or struct memeber char array buffer change to malloc in order to
   decrease stack size
* FDFS_WRITE_BUFF_SIZE  change from 512KB to 256KB
* bug fixed: client/storage_client.c, meta data miss when upload file
* decrease thread_stack_size default value in config files: tracker.conf
   and storage.conf

Version 1.23  2009-11-29
* remove unuseless variable "sleep_secs" in tracker_report_thread_entrance
* storage can bind an address when connect to other servers (as a client)
* common/md5.h fix UINT4 typedef wrong type in 64 bit OS
* client/fdfs_test.c: print the source ip address decoded from the remote
   filename
* client add function fdfs_get_file_info
* php extension add functions: fastdfs_http_gen_token and fastdfs_get_file_info
* server process will exit when the http service starts fail
* support file group, a master file with many slave files whose file id can be
   combined from master file id and prefix
* php client support uploading slave file
* ip address in filename change from host byte order to network byte order
* storage sync performance enhancement, using read buffer of 64KB to avoid
   reading binlog file repeatly
* storage add prototol cmd: STORAGE_PROTO_CMD_QUERY_FILE_INFO
* FDFS_FILE_EXT_NAME_MAX_LEN changed from 5 to 6
* get file info support slave file
* storage server for uploading file support priority

Version 1.22  2009-10-12
* bug fixed: common/shared_func.c allow_hosts array maybe overflow in some case
* tracker/tracker_mem.c: protocol TRACKER_PROTO_CMD_SERVICE_QUERY_FETCH_ALL,
   return at least a storage server when active storage
   server count of the group > 0
* bug fixed: when client connection disconnected, always log debug or error info
* make.sh: default not install FastDFS services in Linux server
* common/sockopt.c: setsockopt level SOL_TCP only supported in Linux
* common/http_func.c: do not use function strsep because strsep is not portable
* client upload file support callback function
* client support multi tracker groups (multi FastDFS clusters)
* bug fixed: thread_stack_size not correct when the param thread_stack_size
   not set in the config file
* supply php extension (directory name: php_client)
* c client reconnect server (tracker or storage) when network IO error
* c client: make tracker server index counter thread safely

Version 1.21  2009-09-19
* bug fixed: when source storage server synced file to new storage server done,
   it's status changed to ONLINE (should keep as ACTIVE, report by zhouzezhong)
* add thread_stack_size in config file, default value is 1MB (report by chhxo)
* tracker and storage server use setsockopt to keep alive
   (report by zhouzezhong)
* bug fixed: storage server with multi-path, upload file fail when the free
   space of each path <= reserved space (the total free space > reserved space,
   report by zhouzezhong)
* storage_sync.c: when connect fail, do not change the dest storage server '
   status to offline
* tracker_service.c and storage_service.c change log level from WARNING to DEBUG
   when client connection disconnected (report by Jney402)
* bug fixed: tracker_client.c correct store_path_index return by tracker server
   (report by happy_fastdfs)
* bug fixed: tracker_service.c when store_lookup set to 2 (load balance), use
   another pthread lock to avoid long time lock waiting
   (report by happy_fastdfs)
* add service shell scripts in directory: init.d
   (services will auto installed on Linux, report by hugwww)

Version 1.20  2009-09-05
* base64 use context, functions changed
* common/ini_file_reader.c: fix memory leak
* tracker server support HTTP protocol, one thread mode
* storage server support HTTP protocol, one thread mode
* fix bug: storage server rebuild, auto sync data correctly
* fix bug: sync data fail (correct storage server status)
* when storage server idle time exceeds check_active_interval seconds,
   set it's status to offline
* tracker counter thread safely

Version 1.19  2009-07-23
* use poll instead of select in sockopt.c
* hash.c use chain impl by self
* use FastDHT 1.09 client code
* ini reader support HTTP protocol, conf file can be an url
* correct test dir compile error
* use non-block socket to increase network IO performance
* add cmd TRACKER_PROTO_CMD_SERVICE_QUERY_FETCH_ALL: query all storage servers
   from which the file can be dowloaded
* while (1) ... break; changed to do ... while (0);

Version 1.18  2009-05-24
* restart.sh only kill the programs match the program name and all parameters
* correct get local ip addresses
* common files do not use global vars like g_network_timeout and g_base_path
* download file support offset and download bytes
* hash function change type from unsigned int to signed int
* file size in file name support 64 bits, old bytes is 4, new bytes is 8

Version 1.17  2009-03-19
  * add test programs at sub directory test/
  * common/shared_func.c: rindex change to strrchr, add #include <netinet/in.h>
  * support SunOS (Solaris), compile passed on SunOS 5.10
  * support AIX, compile passed on AIX 5.3
  * sys call statfs change to statvfs
  * use scheduling thread to sync binlog buff / cache to disk, add parameter
   "sync_binlog_buff_interval" to conf file storage.conf
  * use FastDHT v1.07 client code

Version 1.16  2009-02-14
  * client can specify group name when upload file
  * tracker_service.c: cmd dispatch changed to "switch ... case"
    not "if ... else if"
  * storage_service.c: call fdfs_quit before tracker_disconnect_server

Version 1.15  2009-01-28
  * use FastDHT v1.04 client code
  * use FastDHT client thread safely

Version 1.14  2009-01-18
  * storage/storage_sync.c:
    old: if (reader.sync_row_count % 1000 == 0)
    new: if (reader.scan_row_count % 2000 == 0)
  * little adjustment for common files can be used by FastDHT
  * sched_thread.h /.c add global variable g_schedule_flag to quit normally
  * shared_func.h / .c add function get_time_item_from_conf
  * sched_thread.h /.c support time_base of task
  * hash.h / .c add function CRC32, add hash function to support stream hash
  * add FastDHT client files in storage/fdht_client/
  * create symbol link when the file content is duplicate,
    add item "check_file_duplicate" to conf file storage.conf
  * use FastDHT v1.02 client code
  * auto delete invalid entry in FastDHT when the source file does not exist

Version 1.13  2008-11-29
  * re-calculate group 's free space when one of it's storage servers'
    free space increase
  * add parameters: sync_interval, sync_start_time and sync_end_time to
    storage.conf
  * performance enhancement: log to buffer, flush to disk every interval seconds
  * standard fds closed by daemon_init: 0(stdin), 1(stdout) and 2(stderr)
  * fix bug: pthread_kill sometimes cause core dump when program terminated
  * fix bug: sync.c open next binlog cause loop call

Version 1.12  2008-11-12
  * storage server support multi path (mount point)
  * upload file support file ext name, add source storage ip address to filename
  * add delete command to delete the invalid storage server
  * add client functions which combine group name and filename to file id,
    add anothor client test program: fdfs_test1.c to use file id
  * client download file support callback function
  * add protocol cmd TRACKER_PROTO_CMD_SERVICE_QUERY_UPDATE,
    and client API add tracker_query_storage_update
  * add protocol cmd TRACKER_PROTO_CMD_STORAGE_SYNC_REPORT to report last
    synced timestamp as dest server
  * fix sync old data files to new server bug

Version 1.11  2008-10-04
  * kill report and sync threads when recv terminate signal
  * add item "store_server" in tracker.conf, by default use the first
    storage server to store uploaded files
  * ini_file_reader.c changed: a conf file can include other conf files
  * some adjustment:
    some macro name changed
    add common_define.h
    remove fdfs_define.c
    fdfs_os_bits.h change to _os_bits.h

Version 1.10  2008-09-20
  * performance optimizing: use thread pool, create all work threads at startup
  * trim function op in shared_func.c
  * add Makefile template Makefile.in, delete Makefile and Makefile.freebsd
    change make.sh to support all unix systems (passed in Linux and FreeBSD)

Version 1.9  2008-09-14
  * security enhancement: support allow hosts which can connect to the server
  * server can be run by the specified group and user, set by the config file
  * change make.sh and add file common/fdfs_os_bits.h,
    remove the warning info of printf format for int64_t param in 64 bits system
  * storage_client.c changed: auto connect to storage server when not connected
  * change some macro name and function name in tracker/tracker_proto.h

Version 1.8  2008-09-07
  * communication protocol changed to support large file exceed 2GB:
     # all integer field is 8 bytes big-endian
     # group name fixed length: FDFS_GROUP_NAME_MAX_LEN bytes
  * storage stat numbers (such as total_upload_count, success_upload_count)
    use int64_t (8 bytes integer)
  * ini_file_reader.c add function iniGetInt64Value
  * sockopt.c add function tcpsetnonblockopt
  * shared_func.c add function set_nonblock

Version 1.7  2008-08-31
  * performance optimizing:
     # change fopen to syscall open
     # increase the efficiency of socket functions tcpsenddata and tcprecvdata
  * change the return value of socket funtions such as tcpsenddata,
    tcprecvdata and connectserverbyip
      old return value: result=1 for success, result != 1 fail
      new return value: result=0 for success, result != 0 fail, return the error code
  * log function enhancement:
     # support log level
     # parameter "log_level" added to server config file
     # keep the log file opened to increase performance
  * fix log format and parameter mismatched bug (check by printf)
  * log CRIT message to log file when program exit unexpectedly
  * Makefile add compile flag -D_FILE_OFFSET_BITS=64 to support large files
  * change the type of file_size and file_offset to off_t
  * change signal to sigaction
  * fix client Makefile to compile library correctly
  * restart.sh modified: use external command "expr" to replace shell command "let"

Version 1.6  2008-08-24
  * add restart daemon shell script: restart.sh
  * use setrlimit to increase max open files if necessary
  * security enhancement: the format of data filename must be: HH/HH/filename,
    eg. B9/F4/SLI2NAAMRPR9r8.d
  * fix bug: errno is not correct where the downloaded file does not exist,
             communication is broken when the download file is a directory

Version 1.5  2008-08-17
  * add client function storage_download_file_to_file
  * use pthread_attr_setstacksize to increase thread stack size to 1 MB
  * use sendfile syscall to send file in Linux and FreeBSD
  * fix bug: add O_TRUNC flag when open file to write
  * remove warning info compiled by gcc 4.2
  * fcntl set lock.l_len to 0

Version 1.4  2008-08-10
  * storage server recv file method change
     old method: recv the whole file content/buff before write to file
     new method: write to file once recv a certain bytes file buff, eg. 128KB buff size
  * storage client and storage server send file method change
     old method: get the whole file content/buff, then send to storage server
     new method: send file to storage server more times. get a certain bytes file buff, then send to storage server
  * upload file package remove the one pad byte field
  * remove storage status FDFS_STORAGE_STATUS_DEACTIVE and add FDFS_STORAGE_STATUS_DELETED

Version 1.3  2008-08-03
  * fix bug: when meta data is empty, get meta data return error
  * support java client
    # memset response header to 0
    # add group_name to upload file response package

Version 1.2  2008-07-27
  * add client function storage_set_metadata to support setting metadata(overwrite or merge)

Version 1.1  2008-07-20
  * implement storage disk report
  * storing load balance between storage groups(volumes) when set store_lookup to 2

Version 1.0  2008-07-12
  * first version

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

旧伤慢歌 2022-09-30 15:32:59

donghann:协议没有什么太大的变化吧

happy_fish100:
ChangeLog中没有说明,就没有变化。
自从V1.4发布以后,通信协议还没有调整过

猥琐帝 2022-09-30 15:32:59

jbakwd:
大哥,在代码里面加点注释阿!!
最近一直在看代码,很想把它投入到实际运用当中,现在还不是很放心,看完了代码,希望进行修改之后可以投入到生产环境里面去。可是没有注释,看起来还真的比较费劲。最少你给每个函数加一个功能说明啊。谢谢了!!

happy_fish100:
client API中的函数我都加注释了的啊。其余的我有空尽量加一下吧。server端代码已经很稳定,大家主要掌握client API部分应该就可以了。

happy_fish100: Version 1.8 Released
Version 1.8  2008-09-07
  * communication protocol changed to support large file exceed 2GB:
     # all integer field is 8 bytes big-endian
     # group name fixed length: FDFS_GROUP_NAME_MAX_LEN bytes
  * storage stat numbers (such as total_upload_count, success_upload_count)
    use int64_t (8 bytes integer)
  * ini_file_reader.c add function iniGetInt64Value
  * sockopt.c add function tcpsetnonblockopt
  * shared_func.c add function set_nonblock

毁梦 2022-09-30 15:32:59

Wty:
这个有实际项目在用吗
效果如何

happy_fish100:
根据msgr上的交流结果来看,有几个网站在尝试使用我们的系统了。

happy_fish100:
Version 1.9  2008-09-14
  * security enhancement: support allow hosts which can connect to the server
  * server can be run by the specified group and user, set by the config file
  * change make.sh and add file common/fdfs_os_bits.h,
    remove the warning info of printf format for int64_t param in 64 bits system
  * storage_client.c changed: auto connect to storage server when not connected
  * change some macro name and function name in tracker/tracker_proto.h

Version 1.10  2008-09-20
  * performance optimizing: use thread pool, create all work threads at startup
  * trim function op in shared_func.c
  * add Makefile template Makefile.in, delete Makefile and Makefile.freebsd
    change make.sh to support all unix systems (passed in Linux and FreeBSD)

Version 1.11  2008-10-04
  * kill report and sync threads when recv terminate signal
  * add item "store_server" in tracker.conf, by default use the first
    storage server to store uploaded files
  * ini_file_reader.c changed: a conf file can include other conf files
  * some adjustment:
    some macro name changed
    add common_define.h
    remove fdfs_define.c
    fdfs_os_bits.h change to _os_bits.h

香橙ぽ 2022-09-30 15:32:59

张宋付:
你好.可否写一个比较详细安装文档和使用文档...
还有就是同步机制...
非常感谢...

happy_fish100:
在DFS相关文章中有这些内容的,有问题随时交流。
FastDFS HOWTO -- Setup
FastDFS HOWTO - 同步机制

happy_fish100:FastDFS stable版本V1.12 发布
V1.12修复了文件同步的几个问题,支持从服务器列表中删除已经下线或无效的存储服务器。
另外几个重大改进如下:

1. 对于下载一个已经存在的文件,当客户端询问tracker server时,tracker server将返回一个有效的storage server,保证该文件在该storage server上的确存在。这样就修正了文件同步延迟导致其他服务器上新文件尚未存在的问题。

2. 对于删除文件和修改meta data,提供了query storage server for update的函数,保证对一个文件的后续更新操作都在同一台storage server上完成,这样就有效地解决了时序问题。

3. 支持客户端指定文件后缀,便于在storage server上部署web server,配合web server通过文件后缀完成文件类型识别。

4. 磁盘IO优化:binlog记录采用cache方式,而不是每条记录都fsync到硬盘;写文件时,按目录顺序存储的效果比按目录分散(随机)存储要好。

5. 一台storage server支持多个目录(mount point)。为了提高硬盘IO,建议将多块硬盘分别mount成独立的目录,然后交给FastDFS管理。

6. 提供了将服务器返回的两个字段group name和filename合并为一个字段file_id的API

7. 为了支持流处理,客户端文件下载函数支持callback

梦屿孤独相伴 2022-09-30 15:32:59

bigplum:
1.11用#/usr/local/bin/fdfs_test ./storage.conf upload /usr/include/stdlib.h上传后,文件扩展名出错.
原来是代码里面写死了。。

happy_fish100:
你是说meta data中的ext_name这个属性吧?fdfs_test.c中的确是写死的,因为这本身就是测试程序,仅供参考。代码片断如下:
      strcpy(meta_list[meta_count].name, "ext_name");
      strcpy(meta_list[meta_count].value, "jpg");
      meta_count++;

happy_fish100:FastDFS stable版本V1.13 发布
Version 1.13  2008-11-29
  * re-calculate group 's free space when one of it's storage servers'
    free space increase
  * add parameters: sync_interval, sync_start_time and sync_end_time to
    storage.conf
  * performance enhancement: log to buffer, flush to disk every interval seconds
  * standard fds closed by daemon_init: 0(stdin), 1(stdout) and 2(stderr)
  * fix bug: pthread_kill sometimes cause core dump when program terminated
  * fix bug: sync.c open next binlog cause loop call

happy_fish100:FastDFS stable版本V1.15 发布
版本1.14开始相同的文件内容只保存一份,其余的都采用链接(link)方式指向该文件。文件内容查重采用hash算法,文件签名包括5部分:文件字节数和4个hash code(共24字节)。文件查重使用了FastDHT(分布式hash系统)。change log如下:

Version 1.15  2009-01-28
  * use FastDHT v1.04 client code
  * use FastDHT client thread safely

Version 1.14  2009-01-18
  * storage/storage_sync.c:
    old: if (reader.sync_row_count % 1000 == 0)
    new: if (reader.scan_row_count % 2000 == 0)
  * little adjustment for common files can be used by FastDHT
  * sched_thread.h /.c add global variable g_schedule_flag to quit normally
  * shared_func.h / .c add function get_time_item_from_conf
  * sched_thread.h /.c support time_base of task
  * hash.h / .c add function CRC32, add hash function to support stream hash
  * add FastDHT client files in storage/fdht_client/
  * create symbol link when the file content is duplicate,
    add item "check_file_duplicate" to conf file storage.conf
  * use FastDHT v1.02 client code
  * auto delete invalid entry in FastDHT when the source file does not exist

happy_fish100:FastDFS stable版本V1.16 发布
Version 1.16  2009-02-14
  * client can specify group name when upload file
  * tracker_service.c: cmd dispatch changed to "switch ... case"
    not "if ... else if"
  * storage_service.c: call fdfs_quit before tracker_disconnect_server

我的奇迹 2022-09-30 15:32:59

Change log:
Version 1.17  2009-03-19
  * add test programs at sub directory test/
  * common/shared_func.c: rindex change to strrchr, add #include <netinet/in.h>
  * support SunOS (Solaris), compile passed on SunOS 5.10
  * support AIX, compile passed on AIX 5.3
  * sys call statfs change to statvfs
  * use scheduling thread to sync binlog buff / cache to disk, add parameter
   "sync_binlog_buff_interval" to conf file storage.conf
  * use FastDHT v1.07 client code

萌化 2022-09-30 15:32:59

没看到下载地址?

半窗疏影 2022-09-30 15:32:59

本帖最后由 happy_fish100 于 2014-03-20 17:25 编辑

原帖由 zhuixin 于 2009-4-25 01:56 发表
没看到下载地址?

下载地址:
因google code不支持上传程序包,最新的程序包可以在sourceforge上下载,下载地址:https://sourceforge.net/projects/fastdfs/files/
老的程序包,可以在google code上下载:http://code.google.com/p/fastdfs/downloads/list

甚是思念 2022-09-30 15:32:59

V1.18主要改进功能:下载文件时客户端可以指定文件offset和要下载的字节数。

change log:
Version 1.18  2009-05-24
* restart.sh only kill the programs match the program name and all parameters
* correct get local ip addresses
* common files do not use global vars like g_network_timeout and g_base_path
* download file support offset and download bytes
* hash function change type from unsigned int to signed int
* file size in file name support 64 bits, old bytes is 4, new bytes is 8

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文