FastDFS 常见问题

发送反馈


1. 启动 FastDFS 的 tracker 和 storage 服务后,通过 fdfs_monitor 命令查看 tracker 和 storage 的通信状态,发现 storage 的状态始终为 offline,怎么办?

答:先查看 tracker 和 storage 的日志,确认服务是否有问题;如果日志显示正常,则有可能是在操作过程中,删除了 tracker 或 storage 某一方的缓存文件,导致缓存不匹配。此时,先关闭 tracker 和 storage 服务,删除 tracker.conf 和 storage.conf 中指定的 base_path 目录下的 data 文件,再重启服务即可。

注意:如果删除了 FastDHT 的 base_path 目录下的文件,切片集信息将全部丢失。

 

2.分布式切图时,控制台为什么会提示“No buffer space available (maximum connections reached?):connect”?

答:分布式切图过程中,向 FastDFS 存储上传切片时,占用的端口数增多,可能会达到本地操作系统的端口数的上限,所以出现上述问题。可通过如下方式规避:

运行 “regedit.exe”,打开注册表,找到 “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters”位置,添加“TcpTimedWaitDelay”,类型为 DWORD,值为30;添加“MaxUserPort”,类型为 DWORD,值为20000(调大系统可用端口数)。

运行 “vi /etc/sysctl.conf”,编辑文件,加入以下内容:

net.ipv4.tcp_syncookies  = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle =  1

net.ipv4.tcp_fin_timeout = 30

然后执行“/sbin/sysctl -p”让参数生效即可。

 

3.安装 FastDFS 和 FastDHT 后,为什么在 /usr/local/bin 目录下找不到 fdfs_trackerd、fdfs_storaged 和 fdhtd 这3个命令?

答:出现此问题的原因,是由于系统的 libevent 版本太低导致 FastDFS 编译失败。请检查 libevent 版本是否为1.4.x 或以上。

 

4.启动 fastDHT 服务的时候,提示“段错误”,是什么原因?

答:这是因为 fdhtd 需要的依赖 libdb-5.3.so 没有正确安装或被指向链接。可以使用命令 ldd /usr/local/bin/fdhtd 查看 fdhtd 的所有依赖,如果显示的 libdb 不是5.3版本,则需要手动在 libdb.so 所在的目录下修改 libdb.so 的符号链接,将其指向 BDB 5.3 的动态库。

注意:不同操作系统下 libdb.so 所在的位置不一样,如果命令 ldd /usr/local/bin/fdhtd 的结果显示的是 libdb-4.7.so => /usr/lib/libdb-4.7.so,则需在 /usr/lib/ 目录下创建5.3的符号链接;如果命令结果显示的是 libdb-4.7.so => /lib64/libdb-4.7.so,则需在 /lib64 目录下创建5.3的符号链接,

 

5.FastDFS 和 FastDHT 服务正常,但是添加切图任务失败,查看 debug 版的 iserver.log,日志显示“向 FastDFS 的 storageServer 上传数据 tileset_names 时,发生 MyException ,异常信息是:getStoreStorage fail, errno code: 28”,这是什么原因?

答:错误代码28表示 No space left on device。FastDFS 可在 tracker.conf 配置文件中设置 reserved_storage_sapce 参数,即 storage 的预留存储空间大小,默认为10%。如果预留空间小于该设置值,将出现28错误。