当前位置:   article > 正文

fastDFS_fastdfs吃磁盘吗

fastdfs吃磁盘吗

1 简介

1.1 相关术语

fastDFS

FastDFS是一款开源的轻量级分布式文件系统,纯C实现,支持Linux、FreeBSD等UNIX系统类google FS,不是通用的文件系统,只能通过专有API访问,目前提供了C、Java和PHP API为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size < 500MB)为载体的在线服务。

tracker-server:

跟踪服务器, 主要做调度工作, 起负载均衡的作用。 在内存中记录集群中所有存储组和存储服务器的状态信息, 是客户端和数据服务器交互的枢纽。 相比GFS中的master更为精简, 不记录文件索引信息, 占用的内存量很少。

storage-server:

存储服务器( 又称:存储节点或数据服务器) , 文件和文件属性( metadata) 都保存到存储服务器上。 Storage server直接利用OS的文件系统调用管理文件。

group:

组, 也可称为卷。 同组内服务器上的文件是完全相同的 ,同一组内的storage server之间是对等的, 文件上传、 删除等操作可以在任意一台storage server上进行 。

meta data:

meta data:文件相关属性,键值对( Key Value Pair) 方式,如:width=1024,heigth=768 。

存储形式:

FastDFS 不会对文件进行分块存储,客户端上传的文件和 Storage server 上的文件一一对应(V3 引入的小文件合并存储除外)。为了防止一个目录下的文件数过多影响访问性能,FastDFS 采用两级目录来保存文件。每一级目录最大 256 个子目录(默认配置为 256,可以酌情改小),两级目录对应的存储目录数为 256 * 256 = 65536。如果平均一个目录下保存 1k 个文件,那么存储的文件总数将超过 6kw。 —— FastDFS的三大误解

FastDFS 是一种轻量级对象存储解决方案。如果您需要一般分布式 数据库、K8s 和虚拟机(如 KVM)的文件系统,您可以了解实现强大数据一致性的FastCFS 和高性能。

文件上传流程

文件下载流程

2 FastDFS 3.02的安装和配置

2.0 常用命令

1、启动:

  1. /usr/local/fastdfs/bin/fdfs_trackerd /etc/fdfs/tracker.conf
  2. /usr/local/fastdfs/bin/fdfs_storaged /etc/fdfs/storage.conf

2、停止:

  1. /usr/local/fastdfs/bin/stop.sh /usr/local/fastdfs/bin/fdfs_trackerd /etc/fdfs/tracker.conf
  2. /usr/local/fastdfs/bin/stop.sh /usr/local/fastdfs/bin/fdfs_storaged /etc/fdfs/storage.conf

3、重启:

  1. /usr/local/fastdfs/bin/restart.sh /usr/local/fastdfs/bin/fdfs_trackerd
  2. /usr/local/fastdfs/bin/restart.sh /usr/local/fastdfs/bin/fdfs_storaged

2.1 安装包版本

fastdfs:FastDFS_v3.02(2011-10-07)

下载地址:FastDFS - Browse Files at SourceForge.net

libevent库:libevent-2.0.14

下载地址:libevent

2.2 单机部署

在访问量都不是很大情况下,将tracker和storage都部署在同一台服务器上。

centos7.9
libevent利用libevent库处理网络连接请求(fastdfs v3.0--v5.0)
FastDFS3.02

一、配置tracker服务器:172.16.20.44

1.下载相关软件

wget Download FastDFS from SourceForge.net

wget https://github.com/downloads/libevent/libevent/libevent-2.0.14-stable.tar.gz

2、编译安装libevent库

  1. tar -zxvf libevent-2.0.14-stable.tar.gz  
  2. cd libevent-2.0.14-stable  
  3. ./configure --prefix=/usr/local/libevent
  4. make && make install

3、配置并编译安装FastDFS

  1. tar -zxvf FastDFS_v3.02.tar.gz  
  2. cd FastDFS
  3. vi make.sh   (修改下面几处)
  4. TARGET_PREFIX=/usr/local/fastdfs
  5. TARGET_CONF_PATH=/etc/fdfs
  6. WITH_HTTPD=1
  7. WITH_LINUX_SERVICE=1
  8. ./make.sh C_INCLUDE_PATH=/usr/local/libevent/include LIBRARY_PATH=/usr/local/libevent/lib  
  9. ./make.sh install  

安装成功后会在/etc/fdfs/生成以下文件

  1. ls /etc/fdfs/
  2. client.conf http.conf mime.types storage.conf tracker.conf

4、修改tracker配置文件

重点关注以下几个配置项,其它一般默认即可

  1. vim /etc/fdfs/tracker.conf
  2. bind_addr= //绑定的IP
  3. port=22122 //监听的端口
  4. base_path=/home/data/fastdfs //存放路径
  5. store_group=group2
  6. reserved_storage_space = 4GB //预留存储空间
  7. http.server_port=8080
  8. #include httpd.conf //原来是有两个#号,去掉一个#号即可

5、修改http.conf

  1. vim /etc/fdfs/http.conf
  2. http.default_content_type = application/octet-stream
  3. http.mime_types_filename=/etc/fdfs/mime.types
  4. http.anti_steal.check_token=false
  5. http.anti_steal.token_ttl=900
  6. http.anti_steal.secret_key=FastDFS1234567890
  7. http.anti_steal.token_check_fail=/usrdata/fastdfs/conf/anti-steal.jpg

6、启动tracker服务

需要注意tracker.conf文件最后一行为#include httpd.conf (1)添加库文件(以下命令如果不能正确执行,请手动输入)

  1. echo '/usr/local/libevent/include/' >> /etc/ld.so.conf
  2. echo '/usr/local/libevent/lib/' >> /etc/ld.so.conf
  3. ldconfig

(2)创建basedir

  1. mkdir -p /usrdata/fastdfs
  2. mkdir -p /home/data/fastdfs

(3)启动tracker服务

/usr/local/fastdfs/bin/fdfs_trackerd /etc/fdfs/tracker.conf    

启动完成,查看进程:

ps -ef |grep tracker 

二、配置storage服务器:172.16.20.44

如果是在另外一台服务器上安装,需要再次安装FastDFS,在同一台服务器上则不用,安装步骤和上面一样,只配置文件不一样。

1、增加storage的存储目录

mkdir -p /usrdata/storage 

2、修改存储结点配置文件

vim /etc/fdfs/storage.conf

重点关注以下几个配置项,其它一般默认即可

  1. group_name=group1
  2. bind_addr=
  3. base_path=/usrdata/storage
  4. store_path_count=1
  5. store_path0=/usrdata/storage
  6. tracker_server=172.16.20.44:22122
  7. http.server_port=8888
  8. #include httpd.conf //原来是有两个#号,去掉一个#号即可

3、修改测试客户端配置文件(用于测试)

vim /etc/fdfs/client.conf

重点关注以下几个配置项,其它一般默认即可

  1. base_path=/usrdata/fastdfs
  2. tracker_server=172.16.20.44:22122
  3. http.tracker_server_port=8080
  4. #include httpd.conf

4、修改http.conf(部署在同一台服务器可省略此步)

vi /etc/fdfs/http.conf

重点关注以下几个配置项,其它一般默认即可

  1. http.default_content_type = application/octet-stream
  2. http.mime_types_filename=/etc/fdfs/mime.types
  3. http.anti_steal.check_token=false
  4. http.anti_steal.token_ttl=900
  5. http.anti_steal.secret_key=FastDFS1234567890
  6. http.anti_steal.token_check_fail=/usrdata/fastdfs/conf/anti-steal.jpg

5、启动storage

/usr/local/fastdfs/bin/fdfs_storaged /etc/fdfs/storage.conf 

三、测试文件上传

上传文件/root/test/1.jpg用于测试

/usr/local/fastdfs/bin/fdfs_test /etc/fdfs/client.conf upload /root/test/1.jpg

生成http://172.16.20.44:8080/group1/M00/00/00/rBAULGNjkNeAdeTLAAFVd5oHz0A341_big.jpg

2.3 集群部署

1、部署规划

2台主机,数据存储节点共1个group组,每个组里面有2个storage节点互为主备,这样就能保证一定高可用。角色分配如下:

ip地址角色1角色2
172.16.20.46Tracker1Storage-group1-1
172.16.20.47Tracker2Storage-group1-2

其他配置仿照单机部署配置。

2、配置2台主机上的tracker服务

vim /etc/fdfs/storage.conf
  1. #1. 复制配置文件
  2. cd /etc/fdfs/
  3. cp storage.conf.sample storage.conf
  4. vim storage.conf
  5. #修改以下内容
  6. # Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成) (注 :这里是上传的文件存放的地址,之后的某个版本更改了,不是上传文件存放的目录)
  7. base_path=/usrdata/storage
  8. # 逐一配置 store_path_count 个路径,索引号基于 0。
  9. # 如果不配置 store_path0,那它就和 base_path 对应的路径一样。
  10. store_path0=/usrdata/storage
  11. group_name = group1 #由于我只有1个组,只需配置一个,storage配置相同的group_name则代表同一组,互相互为主备。
  12. # tracker_server 的列表 ,会主动连接 tracker_server
  13. # 有多个 tracker server 时,每个 tracker server 写一行
  14. tracker_server = 172.16.20.46:22122
  15. tracker_server = 172.16.20.47:22122
  16. # 访问端口 默认80 建议修改 防止冲突
  17. http.server_port=80 #这端口没什么用,4以上版本已经不在启动网络服务了
  18. bind_addr = 172.16.20.46 #2台独自改为自己ip

检查FastDFS Tracker Server是否启动成功:

ps aux | grep fdfs_storaged

集群检测

/usr/local/fastdfs/bin/fdfs_monitor /etc/fdfs/storage.conf

3 FastDFS 5.11的安装和配置(单机)

3.0 常用命令

  1. # 每次开机时,手动打开 Tracker 服务
  2. /etc/init.d/fdfs_trackerd start
  3. # 打开 Storage 服务
  4. /etc/init.d/fdfs_storaged start
  5. # 启动 Nginx
  6. /usr/local/nginx/sbin/nginx

3.1 安装包版本

  • libfastcommon :1.0.38

  • FastDFS :5.11

  • fastdfs-ninx-module :1.16

  • Nginx : 1.15.1

3.2 安装准备

yum -y install make cmake gcc gcc-c++ perl*

3.3 安装libfastcommon

  1. cd /root
  2. # 解压 libfastcommon 压缩包
  3. tar -zxvf libfastcommon-1.0.39.tar.gz -C /usr/local/
  4. cd /usr/local/libfastcommon-1.0.39
  5. # 编译并安装
  6. ./make.sh && ./make.sh install
  7. # 由于 libfastcommon 安装的路径在 /usr/lib64/
  8. # 但是 FastDFS 主程序设置的 lib 目录是在 /usr/local/lib,所以需要创建软链接
  9. ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
  10. ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
  11. ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
  12. ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

3.4 安装fastdfs

cd /root/
# 解压缩
  1. tar -zxvf fastdfs-5.11.tar.gz -C /usr/local/
  2. cd /usr/local/fastdfs-5.11/
# 编译并安装
./make.sh && ./make.sh install

一、配置Tracker

  1. # 创建 Tracker 的存储日志和数据的根目录
  2. mkdir -p /fastdfs/tracker
  3. cd /etc/fdfs
  4. cp tracker.conf.sample tracker.conf
  5. # 配置 tracker.conf
  6. vi tracker.conf
  1. # 启用配置文件(默认为 false,表示启用配置文件)
  2. disabled=false
  3. # Tracker 服务端口(默认为 22122)
  4. port=22122
  5. # 存储日志和数据的根目录
  6. base_path=/fastdfs/tracker

二、配置Storage

  1. # 创建 Storage 的存储日志和数据的根目录
  2. mkdir -p /fastdfs/storager
  3. cd /etc/fdfs
  4. cp storage.conf.sample storage.conf
  5. # 配置 storage.conf
  6. vi storage.conf
  1. # 启用配置文件(默认为 false,表示启用配置文件)
  2. disabled=false
  3. # Storage 服务端口(默认为 23000)
  4. port=23000
  5. # 数据和日志文件存储根目录
  6. base_path=/fastdfs/storager
  7. # 存储路径,访问时路径为 M00
  8. # store_path1 则为 M01,以此递增到 M99(如果配置了多个存储目录的话,这里只指定 1 个)
  9. store_path0=/fastdfs/storager
  10. # Tracker 服务器 IP 地址和端口,单机搭建时也不要写 127.0.0.1
  11. # tracker_server 可以多次出现,如果有多个,则配置多个
  12. tracker_server=172.16.20.45:22122
  13. # 设置 HTTP 访问文件的端口。这个配置已经不用配置了,配置了也没什么用
  14. # 这也是为何 Storage 服务器需要 Nginx 来提供 HTTP 访问的原因
  15. http.server_port=8888

三、启动 Tracker

  1. # 启动 Tracker 服务
  2. # 其它操作则把 start 改为 stop、restart、reload、status 即可。Storage 服务相同
  3. /etc/init.d/fdfs_trackerd start

四、启动 Storage

  1. # 启动 Storage 服务
  2. /etc/init.d/fdfs_storaged start
  3. # 可以通过 fdfs_monitor 查看集群的情况
  4. # 查看 Storage 是否已经注册到 Tracker 服务器中
  5. # 当查看到 ip_addr = 172.16.20.45 (localhost.localdomain) ACTIVE
  6. # ACTIVE 表示成功
  7. /usr/bin/fdfs_monitor /etc/fdfs/storage.conf

查看是否启动成功

ps -ef | grep fdfs 

五、测试文件上传

修改 Tracker 服务器客户端配置文件

  1. cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
  2. vi /etc/fdfs/client.conf

client.conf 中修改 base_path 和 Tracker 服务器的 IP 地址与端口号即可

  1. # 存储日志文件的基本路径
  2. base_path=/home/fastdfs/tracker
  3. # Tracker 服务器 IP 地址与端口号
  4. tracker_server=172.16.20.45:22122
  5. # http端口号,和上面的http.server_port=8888一致
  6. http.tracker_server_port=8888

将root目录下的一张图片存储到 FastDFS 服务器中

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/1.jpg

3.5 安装与配置nginx

Storage 安装 Nginx,为了提供 http 的访问和下载服务,同时解决 group 中 Storage 服务器的同步延迟问题。 Tracker 安装 Nginx,主要是为了提供 http 访问的反向代理、负载均衡以及缓存服务

一、安装依赖

Nginx 依赖环境有 GCC(这个在安装 libfastcommon 时就安装了)、PCRE、zlib 和 openssl。

yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel

二、配置 fastdfs-nginx-module

所有 storage 节点都要安装 fastdfs-nginx-module 模块

  1. cd /root
  2. # 解压 fastdfs-nginx-module 模块
  3. tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/
  4. cd /usr/local/fastdfs-nginx-module/
  5. # 修改 fastdfs-nginx-module 的 config 配置文件
  6. vi src/config

将CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"中的local 去掉

修改为

CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

三、编译安装 nginx

  1. cd /root
  2. tar -zxvf nginx-1.16.1.tar.gz -C /usr/local/
  3. cd /usr/local/nginx-1.15.1/
  4. # 给 Nginx 添加 fastdfs-nginx-module 模块
  5. ./configure --add-module=/usr/local/fastdfs-nginx-module/src
  6. make && make install

四、配置并启动nginx

1、fastdfs-nginx-module 和 FastDFS 配置文件修改

  1. # 复制 FastDFS 的部分配置文件到 /etc/fdfs
  2. cd /usr/local/fastdfs-5.11/conf/
  3. cp http.conf mime.types /etc/fdfs/
  4. # 复制 fastdfs-nginx-module 源码中的配置文件到 /etc/fdfs 中
  5. cp /usr/local/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
  6. vi /etc/fdfs/mod_fastdfs.conf
  1. # Tracker 服务器IP和端口修改
  2. tracker_server=172.16.20.45:22122
  3. # url 中是否包含 group 名称,改为 true,包含 group
  4. url_have_group_name = true
  5. # 配置 Storage 信息,修改 store_path0 的信息
  6. store_path0=/fastdfs/storager
  7. # 其它的一般默认即可,例如
  8. base_path=/tmp
  9. group_name=group1
  10. storage_server_port=23000
  11. store_path_count=1

2、配置nginx

vi /usr/local/nginx/conf/nginx.conf

在 server 中添加以下代码

  1. # 配置为支持 group0-group9,以及 M00-M99,以便于以后扩容
  2. # 本单机环境下其实配置为 ~/group1/M00 就可以了
  3. location ~/group([0-9])/M([0-9])([0-9]) {
  4. ngx_fastdfs_module;
  5. }

3、启动nginx

  1. # 启动 Nginx
  2. /usr/local/nginx/sbin/nginx
  3. # 重启 Nginx
  4. /usr/local/nginx/sbin/nginx -s reload
  5. # 停止 Nginx
  6. /usr/local/nginx/sbin/nginx -s stop
  7. # 查看是否启动成功
  8. ps -ef|grep nginx

4、通过http文件

http://172.16.20.45:8888/group1/M00/00/00/rBAULWNotL2AYq5ZAAFVdx81UC4345.jpg

4 FastDFS数据迁移

4.1 数据迁移

数据迁移是指旧的fastdfs可以继续正常运行的情况下,将旧环境的fastdfs的数据恢复到新的环境fastdfs服务中。

同IP数据迁移

  1. 首先关闭fdfs_storage和fdfs_tracker服务。

  2. 拷贝fdfs_storage目录中的所有数据到新目录。

  3. 修改storage配置文件中的store_path和base_path到新位置。

  4. 修改mod_fastdfs.conf配置文件中的store_path和base_path到新位置。

  5. 根据情况,选择是否修改client配置文件。

  6. 重启fdfs_tracker和fdfs_storage服务

不同IP数据迁移

不同IP之间迁移采用FastDFS的扩容机制

  1. 在新服务器安装FastDFS。

  2. 将新FastDFS的storage服务实例关联到以前的tracker服务。

  3. 拷贝以前的storage服务配置为新服务实例的配置文件。

  4. 启动storage服务。FastDFS会自动同步以前服务器上的数据。

  5. 停止storage服务,将storage配置文件中的tracker地址修改为新的tracer 地址,同时修改storage 中/data/fast_data/data/.data_init_flag文件,sync_src_server=空即可。

  6. 启动新的tracker服务和storage服务。

4.2 数据恢复

数据恢复是指旧的FastDFS服务已经不能运行,需要将已有的FastDFS数据恢复到新的FastDFS服务中。

如果FastDFS服务使用了V4的ServerID特性,修改storage_ids.conf文件,调整对应关系即可。

如果采用IP地址进行标识,则需要修改tracker 和storage下data目录中的数据文件中的ip地址。

tracker server 需要修改 :

  1. tracker/data/storage_groups_new.dat
  2. tracker/data/storage_servers_new.dat
  3. tracker/data/storage_sync_timestamp.dat

storage server 需要修改:

  1. storage/data/.data_init_flag
  2. storage/data/sync/${ip_addr}_${port}.mark

4.3 FastDFS集群整体迁移的问题

如果新旧IP地址一一对应,而且是一样的,那非常简单,直接将data目录拷贝过去即可。 IP不一样的话,会比较麻烦一些。

如果使用了V4的自定义server ID特性,那么比较容易,直接将tracker上的IP和ID映射文件storage_ids.conf修改好即可。 如果是用IP地址作为服务器标识,那么需要修改tracker和storage的data目录下的几个数据文件,将旧IP调整为新IP。 注意storage的data目录下有一个.打头的隐藏文件也需要修改。 另外,需要将后缀为mark的IP地址和端口命名的同步位置记录文件名改名。 文件全部调整完成后才能启动集群服务。 tracker server上需要调整的文件列表:

data/storage_groups_new.dat data/storage_servers_new.dat data/storage_sync_timestamp.dat

storage server需要调整的文件列表:

data/.data_init_flag data/sync/${ip_addr}_${port}.mark:此类文件,需要将文件名中的IP地址调整过来。

4.4 迁移实践

将文件从旧的fastdfs服务器迁移到新的fastdfs文件服务器上来,完成2.2的基础上。旧:172.16.20.44;新:172.16.20.43 1、先将所有storage进程都停止:

/usr/local/fastdfs/bin/stop.sh /usr/local/fastdfs/bin/fdfs_storaged

2、修改storage.conf文件

将tracker_server的IP设置成旧服务器IP172.16.20.44

vim /etc/fdfs/storage.conf
tracker_server=172.16.20.44:22122

3、启动storage进程:

/usr/local/fastdfs/bin/fdfs_storaged /etc/fdfs/storage.conf

此时storage服务器开始同步;

查看同步进程: 在旧tracker服务器执行:

/usr/local/fastdfs/bin/fdfs_monitor /etc/fdfs/storage.conf

可以看到同步进度。

4、同步完成后,在新的fastdfs文件服务器172.16.20.43上停止storage进程:

/usr/local/fastdfs/bin/stop.sh /usr/local/fastdfs/bin/fdfs_storaged

5、修改storage.conf文件,将tracker修改成新的tracker IP

  1. vim /etc/fdfs/storage.conf
  2. tracker_server=172.16.20.43:22122

6、修改.data_init_flag文件:

  1. cd /usrdata/storage/data/
  2. vi .data_init_flag
# 将sync_src_server配置项留空,其它配置项不变
sync_src_server=

7、启动storage进程

/usr/local/fastdfs/bin/fdfs_storaged /etc/fdfs/storage.conf

查看storage进程状态:

/usr/local/fastdfs/bin/fdfs_monitor /etc/fdfs/storage.conf

8、增量同步

FastDFS是实现增量同步的,最后位置保存在安装目录的data/sync目录下,扩展名是mark的文件,具体格式是这样的:

172.16.20.44_23000.mark,即 IP_端口.mark。

mark文件具体内容如下:

  1. binlog_index=0
  2. binlog_offset=3422
  3. need_sync_old=1
  4. sync_old_done=1
  5. until_timestamp=1596511256
  6. scan_row_count=118
  7. sync_row_count=62

关键参数是binlog_offset,即binlog中最后同步成功的偏移量,每同步一个文件后,都会将偏移量更新。

9、备注

当storage启动时,会将以前存在文件中的IP(文件.data_init_flag, 不是第一次启动)和现在的IP 比较,如果IP改变了,就会将IP 变化的情况告诉Tracker(TRACKER_PROTO_CMD_STORAGE_REPORT_IP_CHANGED); Tracker将更新原来的storage的IP地址, 但原来的IP继续保留在server列表中(内部的字段改为默认值); 状态改为FDFS_STORAGE_STATUS_IP_CHANGED;并将更新情况记录到storage_changelog.dat中。

下载文件时主要是看group name; 如果IP更改了, 用指定源IP server下载时, 如果找不到,还是会用round robin 的方式选择storage server;

Tracker 每次都会将当前的storage server 信息保存在storage_servers_new.dat中,每次启动是先load storage_servers_new.dat中的老的信息(tracker_load_storages_old), 后续如果storage的信息如果有变化就会更改server列表的信息(如IP 更改等)。

4.5 新增节点

假如现有group1 中 有 节点A,B 。新增节点C。

5 版本差异

  1. #版本 6.09 2022-09-14
  2. 使用 libfastCommon V1.60 和 libserverframe 1.1.19
  3. 使用原子计数器代替互斥锁
  4. #版本 6.08 2022-06-21
  5. 使用 libfastcommon V1.56
  6. 注意:您必须将 libfastcommon 升级到 V1.56 或更高版本
  7. #版本 6.07 2020-12-31
  8. 使用 libfastcommon V1.44
  9. 注意:您必须将 libfastcommon 升级到 V1.44 或更高版本
  10. 正确的拼写iovent到ioevent遵循libfastcommon。
  11. #版本 6.06 2019-12-30
  12. 错误修复:fdfs_storaged无法正常退出
  13. 错误修复:初始化/内存集返回 IP 地址到 ASCII 0 对于 Java SDK
  14. #版本 6.05 2019-12-25
  15. fdfs_trackerd并fdfs_storaged打印正在使用的服务器版本。
  16. 您可以在没有参数的情况下执行fdfs_trackerd或fdfs_storaged
  17. 显示服务器版本
  18. 中继服务器支持定期压缩中继二进制日志,
  19. Tracker.conf 中的配置项:trunk_compress_binlog_interval
  20. 和trunk_compress_binlog_time_base
  21. 中继二进制日志压缩支持事务
  22. 截断中继二进制日志时支持备份二进制日志文件,
  23. Tracker.conf 中的配置项:trunk_binlog_max_backups
  24. 支持主干空间分配的对齐大小
  25. Tracker.conf 中的配置项:trunk_alloc_alignment_size
  26. 支持合并空闲后备箱空间
  27. Tracker.conf 中的配置项:trunk_free_space_merge
  28. 支持删除未使用的中继文件
  29. Tracker.conf 中的配置项:delete_unused_trunk_files
  30. fdfs_monitor.c:不要调用getHostnameByIp
  31. 注意:您必须将 libfastcommon 升级到 V1.43 或更高版本
  32. #版本 6.04 2019-12-05
  33. * storage_report_ip_changed忽略结果 EEXISTS
  34. * 使用 libfastCommon v1.42 中的get_gzip_command_filename
  35. * 支持压缩错误日志和访问日志
  36. * 磁盘恢复支持多线程加速
  37. * 错误修正:应该使用memset在函数中初始化pReader。
  38. storage_reader_init,此错误是由v6.01引起的
  39. 注意:您必须将 libfastcommon 升级到 V1.42 或更高版本
  40. #版本 6.03 2019-11-20
  41. * 双 IP 支持两种不同类型的内部(内网)IP
  42. * 存储服务器请求跟踪服务器更改其状态
  43. 到存储服务器发现时跟踪器领导者的跟踪器
  44. 这是状态不一致
  45. * 修正:fdfs_monitor修复指定跟踪服务器的获取索引
  46. *存储服务器写入data_init_flag并安全地标记文件
  47. (写入临时文件然后重命名)
  48. * 代码细化:结合g_fdfs_store_paths和g_path_space_list,
  49. 和范围结构 FDFSStorePathInfo
  50. *检查商店路径的标记文件以防止混淆
  51. * 新选择的跟踪器领导者不会通过网络通知自己
  52. * 获取单存储路径二进制日志的更大network_timeout
  53. 磁盘恢复时
  54. 注意:跟踪器和存储服务器必须一起升级
  55. #版本 6.02 2019-11-12
  56. * get_file_info计算附加文件类型的CRC32
  57. *磁盘恢复下载文件到本地临时文件,然后重命名
  58. 当本地文件存在时
  59. * 支持为追加文件重新生成文件名
  60. 注意:重新生成的文件将是普通文件!
  61. #版本 6.01 2019-10-25
  62. *在需要时通过gzip压缩和解压缩二进制日志文件,
  63. 存储中的配置项:compress_binlog和compress_binlog_time
  64. * 修正:write_to_pid_file前必须检查并创建数据路径
  65. 在fdfs_storaged.c
  66. #版本 6.00 2019-10-16
  67. *跟踪器和存储服务器支持双IP
  68. 1. 您可以在 storage.conf 和 client.conf 中配置双跟踪器 IP,
  69. 配置项目名称为“tracker_server”
  70. 2. 您可以在 storage_ids.conf 中配置双存储 IP
  71. 更多详细信息请参阅配置文件。
  72. 注意:您必须将 libfastcommon 升级到 V1.41 或更高版本
  73. 跟踪器和存储服务器必须一起升级
  74. * 存储服务器从跟踪器服务器获取IP
  75. * 存储服务器在加入时向跟踪服务器报告当前跟踪器 IP
  76. * 存储服务器加入时跟踪器服务器检查跟踪器列表
  77. * 使用 socketCreateExAuto 和 socketClientExAuto 导出的 libfastcommon
  78. #版本 5.12 2018-06-07
  79. * 代码优化适用于极少数情况
  80. * 将打印格式OFF_PRINTF_FORMAT替换为 PRId64
  81. * php_ext修复 php5.5 中的zend_object_store_get_object调用
  82. * make.sh 使用 /usr/include/fastcommon/_os_define.h 中定义的宏
  83. * 正确的 CRC32,您必须将 libfastcommon 升级到 V1.38 或更高版本
  84. #版本 5.11 2017-05-26
  85. * 修复错误:使用主干文件时file_offset不起作用
  86. * 添加存储访问日志标头
  87. * http.conf 添加参数 http.multi_range.enabed
  88. #版本 5.10 2017-03-29
  89. * 使用 fc_safe_read 代替读取,使用 fc_safe_write 代替写入
  90. 您必须将 libfastCommon 升级到 V1.35 或更高版本
  91. * 修复 getFileContentEx 读取字节,
  92. 您必须将 libfastCommon 升级到 V1.36 或更高版本
  93. * 不要将存储服务器信息同步到跟踪器领导者
  94. * 当use_trunk_file为真时调整参数store_server
  95. *当跟踪器响应ENOENT ENOENT时清除同步src ID
  96. *fdfs_recv_header/fdfs_recv_response失败时记录更多信息
  97. #版本 5.09 2016-12-29
  98. * 修复错误:list_all_groups为这么多组扩展缓冲区自动
  99. * 跟踪器添加参数:min_buff_size和max_buff_size
  100. * PHP 扩展修复了 PHP 7 中的免费对象错误
  101. #版本 5.08 2016-04-08
  102. * 无论如何将库安装到 $(TARGET_PREFIX)/lib
  103. * 用 PHP 7 编译的 php 扩展
  104. * DIO 线程使用 blocked_queue 和 PHP 扩展使用 php7_ext_wrapper.h,
  105. 您必须将 libfastCommon 升级到 V1.25 或更高版本
  106. * 删除普通/linux_stack_trace。[HC]
  107. #版本 5.07 2015-09-13
  108. * 计划任务添加“第二”字段
  109. * make.sh 更改,则必须将 libfastcommon 升级到 V1.21 或更高版本
  110. * 修复错误:storage_disk_recovery.c跳过第一个文件(二进制日志第一行)
  111. * 修复错误:获取二进制日志后应关闭连接
  112. * fdfs_storaged.c:提升daemon_init的地位
  113. * 设置日志轮换时间格式
  114. * 错误修复:必须检查store_path_index
  115. #版本 5.06 2015-05-12
  116. * 编译通过 mac OS 达尔文
  117. * 在 subdir init.d 中更正脚本
  118. * 检查存储中的项目thread_stack_size,您必须
  119. 将 libfastcommon 升级到 V1.14 或更高版本
  120. #版本 5.05 2014-11-22
  121. * tracker_mem.c 日志更多信息
  122. * 删除无用的全局变量:g_network_tv
  123. *存储可以从跟踪器服务器获取它group_name
  124. #版本 5.04 2014-09-16
  125. * 添加 fastdfs.spec 用于在 Linux 上构建 RPM
  126. * 取决于 libfastcommon
  127. * 在多跟踪器服务器的情况下,当收到更高的状态时,例如
  128. 在线/活动,存储状态为wait_sync或同步,
  129. 智能设备将存储状态调整为较新,存储重新加入
  130. 到跟踪器服务器
  131. * fdfs_monitor支持删除空组
  132. * 修复错误:极少数情况下会出现两个跟踪器领导者
  133. *添加连接统计信息
  134. * 删除旧的日志文件,添加参数:log_file_keep_days
  135. #版本 5.03 2014-08-10
  136. * 发生错误 EINTR 时网络发送和接收重试
  137. *支持mac操作系统达尔文
  138. *使用来自libfastcommon的最新记录器
  139. * 按 liangry@ucweb.com 补丁
  140. * 修复 bug 修复:v5.02 导致无法同步大文件
  141. *使用来自libfastcommon的最新文件
  142. * 将TRACKER_SYNC_STATUS_FILE_INTERVAL从 3600 更改为 300
  143. * 套接字发送和接收忽略 erno EINTR
  144. #版本 5.02 2014-07-20
  145. *自述文件拼写错误
  146. * 修复bug:无法处理同步截断文件异常
  147. * 删除 tracker_global.c extern 关键字以tracker_global.h
  148. * IOEVENT_ERROR时将日志级别从错误更改为调试
  149. * PHP 回调应使用 INIT_ZVAL 来初始化 zval 变量
  150. * 增加功能短2buff和buff2short
  151. * 添加get_url_content_ex以支持调用方传递的缓冲区
  152. *记录器可以设置旋转时间格式
  153. *记录器可以记录标题行
  154. * #include <stdbool.h> 使用 C99 布尔值
  155. *记录器可以删除旧的旋转文件
  156. * 修复错误:连接失败时连接池不应增加计数器
  157. * logger.c 写完后不要调用 fsync
  158. #版本 5.01 2014-02-02
  159. * 主干二进制日志在主干初始化时被压缩
  160. * 修复错误:当
  161. 中继服务器初始化完成
  162. * 移动ioevent_loop。[HC] 和fast_task_queue。[hc] 从跟踪器/ 到普通/
  163. * 哈希表支持锁
  164. * 哈希塔尔贝支持新功能:hash_inc和hash_inc_ex
  165. #版本 5.00 2013-12-23
  166. * 丢弃 libevent,在 Linux 中使用 epoll,在 FreeBSD 中使用 kqueue,在 SunOS 中直接使用 port
  167. *do_notify_leader_changed当目标是我自己时强制关闭连接
  168. *修改安装文件和跟踪器/制作文件.in
  169. #版本 4.08 2013-11-30
  170. * 错误修复:FDFS_DOWNLOAD_SERVER_ROUND_ROBIN更改为FDFS_STORE_SERVER_ROUND_ROBIN
  171. * dio_init使用 memset 初始化缓冲区
  172. *禁用延迟设置(带有选项SO_LINGER的setsockopt)
  173. * 将日志级别从错误更改为存储服务器上不存在文件时的警告
  174. #版本 4.07 2013-06-02
  175. * make.sh 通过 ldconfig 检查添加 -lpthread
  176. * 支持多接受线程
  177. * 跟踪器和存储服务器在接收无效包时关闭客户端连接
  178. * 客户端/storage_client.c:带静音标志的file_exist
  179. * 跟踪器和存储进程支持启动、停止和重新启动命令
  180. * 跟踪器/tracker_proto.c fdfs_recv_header:日志调试更改为日志错误
  181. #版本 4.06 2013-01-24
  182. * fdfs_upload_file工具增强
  183. * fdfs_download_file工具支持偏移量和下载大小
  184. * 主干文件上传支持子路径正确旋转
  185. * 添加功能:fdfs_http_get_file_extension
  186. *仍然同步截断文件操作
  187. #版本 4.05 2012-12-30
  188. * 客户端/fdfs_upload_file.c可以指定存储IP端口和存储路径索引
  189. * 添加连接池
  190. * 客户端负载存储 ID 配置
  191. * common/ini_file_reader.c 不调用 chdir
  192. * 保持文件的 mtime 不变
  193. *使用g_current_time代替通话时间功能
  194. * 删除嵌入 HTTP 支持
  195. #版本 4.04 2012-12-02
  196. * 修复错误:存储守护程序初始化时获取存储服务器 ID
  197. * 文件名中的存储 ID 使用全局变量
  198. * 动态分配内存 8 字节对齐
  199. * fast_task_queue支持内存池链
  200. #版本 4.03 2012-11-18
  201. * trunk_mgr/trunk_mem.c:记录错误并添加更多调试信息
  202. * 存储服务器生成的文件 ID 可以包含存储服务器 ID
  203. #版本 4.02 2012-10-30
  204. *上传文件时验证file_ext_name和prefix_name
  205. * 存储.conf 添加参数: file_sync_skip_invalid_record
  206. * 同步文件失败时添加偏移调试信息
  207. * 修复错误:同步文件时如果文件存在,也记录到二进制日志
  208. *跟踪器和存储错误日志支持旋转
  209. *支持按文件大小旋转日志
  210. * 接收 HUP 信号时旋转日志
  211. * fdfs_monitor支持设置中继服务器
  212. * 错误修复:tracker_mem.c正确双互斥锁
  213. #版本 4.01 2012-10-21
  214. * trunk_mgr/trunk_mem.c:更严格的主干初始化标志检查
  215. *用于检查文件重复的文件签名支持MD5
  216. * 从文件同时支持符号链接和直接文件
  217. * 跟踪器服务器日志中继服务器更改日志
  218. #版本 4.00 2012-10-06
  219. * 通过 ID 而不是 IP 地址识别存储服务器
  220. * Tracker.conf:存储预留空间可以使用比例,例如10%
  221. * 存储服务器支持访问日志
  222. * 追加文件和中继文件在文件 ID 中也使用 RAND 编号
  223. * 错误修复: test_upload.c: 字符 file_id[64] 更改为: 字符 file_id[128]
  224. * 使用属性O_NOATIME设置管道读取 FD
  225. * 错误修复:使用TSRMLS_CC更正 PHP 扩展call_user_function TSRMLS_DC
  226. #版本 3.11 2012-08-04
  227. * setsockopt 在 FreeBSD 中将linger.l_linger设置为微秒和秒
  228. 在其他方面
  229. * 主干二进制日志阅读器跳过不正确的记录
  230. * 修复错误:单盘恢复支持符号链接和中继文件
  231. * 存储生成文件名增强
  232. * ETIME 更改为 ETIMEDOUT for FreeBSD
  233. * tracker_mem.c:负载存储服务器忽略空 IP 地址
  234. #版本 3.10 2012-07-22
  235. * 更优雅地检查和初始化主干文件
  236. * 删除未使用的但设置变量
  237. * 修复错误:当g_check_file_duplicate为 true 时返回正确的组名
  238. * 错误修复:PHP 扩展call_user_function TSRMLS_CC替换为 TSRMLS_DC
  239. * 跟踪器重新选择中继服务器的间隔大
  240. * 使用 AVL 树进行无中继块检查重复
  241. *中继文件同步无论如何都会覆盖目标文件
  242. * 通用/avl_tree.c:删除时免费数据
  243. * tracker.conf 添加参数:trunk_init_reload_from_binlog,当此标志
  244. 设置为 true,从中继二进制日志加载所有空闲的中继块
  245. * 中继状态仅通过 trunk_mem.c 和 memcmp 结构 FDFSTrunkFullInfo 控制
  246. 避免内存对齐问题
  247. *自动删除太旧的临时文件
  248. #版本 3.09 2012-07-08
  249. * make.sh 避免覆盖 /etc/fdfs/ 的配置文件
  250. * common/logger.c:函数log_init可以多次调用
  251. * php 扩展 logInfo 更改为 logDebug
  252. * c 客户端 logInfo 更改为 logDebug
  253. * 更正确地storage_dio.c日志信息
  254. * 删除被占用的后备箱空间
  255. * tracker.conf 添加参数:trunk_init_check_occupying,当此标志
  256. 设置为 true,不添加被占用的中继节点
  257. * 获取本地 IP 地址的另一种方法
  258. #版本 3.08 2012-05-27
  259. * FAST_MAX_LOCAL_IP_ADDRS从 4 更改为 16
  260. * 追加文件支持修改
  261. * 追加文件支持截断
  262. #版本 3.07 2012-05-13
  263. * 跟踪器/tracker_mem.c:检查存储 IP 地址是否为空
  264. * 删除直接 IO 支持
  265. * 中继二进制日志同步优化
  266. * PHP 扩展编译在 PHP 5.4.0 中传递
  267. * 获取本地 IP 地址增强功能
  268. * 中继服务器 选择必应日志文件大小为“最大”的存储服务器
  269. * 中继服务器更改时正确同步中继二进制日志文件
  270. #版本 3.06 2012-01-22
  271. * 添加通用/avl_tree.h 和普通/avl_tree.c
  272. *使用AVL树组织无中继块
  273. * 当当前跟踪器成为领导者时,查找每个组的中继服务器
  274. * 通用/sched_thread.c可以动态添加计划条目
  275. * 支持提前创建主干文件
  276. #版本 3.05 2011-12-20
  277. * 删除编译警告
  278. * 存储服务器的store_path_count可以大于组
  279. * 错误修复:普通/fast_mblock.c malloc 字节不够
  280. * make.sh 支持操作系统:HP-UX
  281. #版本 3.04 2011-11-25
  282. * 修复错误:重复文件只保存一个条目 在主干文件模式下确定
  283. * 修复错误:与更多二进制日志文件正确同步
  284. * fdfs_file_info从存储服务器查询文件信息
  285. * 错误修复:PHP 扩展编译错误使用 GCC 4.6.1 作为:
  286. 变量“store_path_index”设置但未使用
  287. * 修复错误:正确删除中继文件的元数据
  288. * 错误修复:打开检查副本时附加文件正常
  289. * 存储/trunk_mgr/trunk_shared。[hc]:trunk_file_stat_func不要
  290. 使用函数指针
  291. * 修复错误:存储/trunk_mgr/trunk_shared.c base64_decode_auto
  292. 溢出 1 字节
  293. * 修复错误:正确删除从文件
  294. * 修复错误:删除调试信息
  295. * MD5函数名称已更改以避免冲突
  296. #版本 3.03 2011-10-16
  297. * 同步链接文件时忽略现有链接
  298. * http令牌检查支持持久令牌
  299. *添加功能:storage_file_exist和storage_file_exist1
  300. * PHP minfo 添加 fastdfs 版本信息
  301. * make.sh 更改
  302. * 客户端移动 libevent 依赖
  303. #版本 3.02 2011-09-18
  304. * 错误修复:tracker_mem_check_add_tracker_servers添加跟踪器服务器
  305. 正确
  306. * PHP 客户端编译正常与 PHP 5.2.17
  307. * 重新选择中继服务器确定
  308. #版本 3.01 2011-07-31
  309. * 错误修复:tracker_get_connection_ex和tracker_get_connection_r_ex
  310. 使用多个跟踪器服务器连接两次
  311. * 错误修复:tracker_mem_check_add_tracker_servers条件不正确
  312. * 所有日志错误添加源文件名和行
  313. * PHP扩展支持上传文件回调
  314. * PHP扩展支持下载文件回调
  315. #版本 3.00 2011-06-19
  316. *海量小文件优化
  317. * 增加固定块内存池:通用/fast_mblock.c
  318. * 错误修复:tracker_mem.c 不清除g_groups字段
  319. * 错误修复:从文件和追加器文件下载正常
  320. * 修复错误:跟踪器/存储按组/用户运行,设置文件所有者
  321. * 跟踪器服务器支持领导者
  322. * 客户端支持静态库
  323. * client_func.h 添加fdfs_tracker_group_equals和的功能
  324. fdfs_get_file_ext_name
  325. * 错误修复:test/dfs_func_pc.c 编译正常
  326. *存储服务器在上传文件时检查可用空间是否足够

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号