qbanxiaoli/fastdfs的Docker版Fastdfs的错误码:2,错误信息:找不到节点或文件问题修复

一、背景介绍:

       注:【结论】FDHT的问题!

        研发环境使用如下命令来搭建Docker版FastDFS文件服务器,非常易于部署。在一次服务器断电后,FastDFS上传文件报错:错误码:2,错误信息:找不到节点或文件。搭建命令:

docker run -d --restart=always --privileged=true --net=host --name=fdfs -e IP={服务器IP} -e WEB_PORT=80 qbanxiaoli/fastdfs

二、解决过程:

        首先,找到项目的github地址(GitHub - qbanxiaoli/fastdfs: FastDFS+FastDHT(单机+集群版)),查看一下docker内部fastdfs的服务组织架构:

        发现Docker内部装有FastDFS+FastDHT(单机+集群版)服务(tracker,storage,fastdht,nginx)。通过pe -ef|grep fdfs,发下tracker和storage服务都是在运行的。

bash-5.0# ps -ef|grep fdfs
   28 root      0:03 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
   51 root      0:07 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf
   72 root      0:00 grep fdfs

        通过 fdfs_monitor /etc/fdfs/client.conf ,发现tracker服务不正常, tracker_server_count参数不存在,下面是我正常情况的结果。

[2023-08-25 01:00:12] DEBUG - base_path=/var/local/fdfs/storage, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0

server_count=1, server_index=0

tracker server is myip:22122

group count: 1

Group 1:
group name = group1
disk total space = 46177 MB
disk free space = 29874 MB
trunk free space = 0 MB
storage server count = 1
active server count = 1
storage server port = 23000
storage HTTP port = 80
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0

	Storage 1:
		id = myip
		ip_addr = myip (myip)  ACTIVE

然后通过 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart 重启tracker后恢复正常了。但是上传文件系统还是报错:错误码:2,错误信息:找不到节点或文件

        所以,开始怀疑是FASTDHT异常引起的问题。

        大概查了一下,由于FastDFS本身不能对重复上传的文件进行去重,而FastDHT可以做到去重。 FastDHT是一个高性能的分布式哈希系统,它是基于键值对存储的,而且它需要依赖于Berkeley DB作为数据存储的媒介 ,同时需要依赖于libfastcommon。

        通过如下命令我们可以看到fastdfs配置都在 /etc/fdfs 和 /etc/fdht 下。数据日志/var/local/fdfs/var/local/fdht目录下。FastDFS的其他问题可以通过查看tracker或storage的日志文件来排查问题。

bash-5.0# find / -name fdfs
/etc/fdfs
/var/local/fdfs
bash-5.0# find / -name fdht
/etc/fdht
/var/local/fdht
bash-5.0# cd /var/local/fdht/
bash-5.0# ls
__db.001  __db.002  __db.003  data      logs      tmp
bash-5.0# cd logs
bash-5.0# ls
fdhtd.log

       然后我把fdht的__db.001到003文件,包括data目录下的相应文件全部删除,然后重启服务。最后fastdfs就恢复了。

三、解决方法:

        删除/var/local/fdht/目录下的__db.001到003文件,并删除/var/local/fdht/data/目录下的db000文件。重启fastdfs容器,恢复服务。有大佬了解具体问题的可以指导我一下,对这个问题的具体原因还是不是很清楚。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值