问题描述
fastdfs无法上传图片。
client端报错为:
storage端报错为:
事故原因
未知,猜测可能跟 “防火墙” 更新/重启有关(服务失效前,导师加固过服务器)
网上调查
在fastdfs的github上,有这样一个issue:
recv data fail or response status != 0, errno: 22, error info: Invalid argument · Issue #308 · happyfish100/fastdfs · GitHub
提供了一个思路,先把data全删了,然后再导入已有的文件数据
从侧面说明了,庆鱼大神真的不看issue,或者很少维护这个项目
解决方法
注意: 此方案仅限于单机模式
- 关闭fastdfs服务,并将服务的storage/data中的数据打包备份。(旧服务的tracker/data不用管)
- 然后将storage/和tracker/文件夹里的东西全删了。
- 然后重启fastdfs服务,守护线程会自动重建storage/和tracker/文件夹
- 然后将备份的storage/data里的文件复制回重建的storage/文件夹
# 定位到旧服务的storage目录,将整个data文件夹打包
cd /var/fdfs
tar -zcf fdfs-storage-data.tar.gz /var/fdfs/storage/data/
# 关闭fastdfs服务
docker stop storage
docker stop tracker
# 删除storage/和tracker/文件夹里的东西
# 注意注意注意!!!!!!!!!!!!!一定要先进入对应的目录,再执行删除操作。不要把整个服务器都删了
cd /var/fdfs/storage
rm -rf *
cd /var/fdfs/tracker
rm -rf *
# 重启fastdfs服务
docker restart tracker
docker restart storage
# 找到服务的storage目录,将旧数据解压到storage/data下
cd /var/fdfs
tar zxvf fdfs-storage-data.tar.gz -C /var/fdfs/
# 大功告成
事故原因(复盘)
可能是由于其他原因导致fastdfs服务的tracker.conf配置紊乱,而出现了此问题。
如何部署fastdfs服务,请参考[[服务器环境搭建手册]]
以下内容用于服务器搜索全文模糊匹配:
片段1-client报错:
org.csource.common.MyException: getStoreStorage fail, errno code: 2
2022-08-22T08:24:15.165217045Z at org.csource.fastdfs.StorageClient.newWritableStorageConnection(StorageClient.java:1622)
2022-08-22T08:24:15.165226827Z at org.csource.fastdfs.StorageClient.do_upload_file(StorageClient.java:729)
2022-08-22T08:24:15.165230270Z at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:175)
2022-08-22T08:24:15.165233265Z at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:193)
2022-08-22T08:24:15.165236051Z
片段2-storage报错:
ERROR - file: tracker_proto.c, line: 48, server: 172.10.100.22:22122, response status 22 != 0
ERROR - file: storage_ip_changed_dealer.c, line: 114, tracker server 172.18.137.42:22122, recv data fail or response status != 0, errno: 22, error info: Invalid argument