1、nginx
集成FastDFS
模块时,配置文件问题
检测到nginx日志: /home/soft/fastdfs-nginx-module/src/common.c, line: 155, load conf file "/etc/fdfs/mod_fastdfs.conf" fail, ret code: 2
默认没有吧/mod_fastdfs.conf
拷贝到/etc/fdfs
上,并设置对应的端口(默认是22122
)
cp /home/soft/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
2、除了在storage.conf
里的tracker_server
增加tracker
的ip
和端口,需要注意什么
tracker server
ip和端口,单个配置方式 tracker_server=10.10.1.1:2222
fastdfs
支持tracker server
,每行设置一个tracker_server
tracker_server=10.130.1.1:2222
tracker_server=10.130.1.2:2222
tracker_server=10.130.1.3:2222
3、程序要访问文件,FastDFS提供了java api
客户端通过HTTP
下载文件时,可以走web server
,如apache
、nginx
等
4、想要把fastDFS
产生的记录清空,再重新搭建一次,应该删除哪些文件
停止storage server
和tracker server
,删除base_path
下的data
子目录即可。
注意:storage
的data
目录下保存了上传文件,删除时请慎重。
5、添加文件到fastDFS
的data
,会被同步到通一个group
的其他storage
吗
不会的,直接粘贴到fastdfs
的文件不会被同步到同个组的其他storage
。
fastdfs
的同步方式是通过data/sync
目录下的binlog.000
的文件进行的。想要被复制必须保证binlog.000
包含添加的文件时间戳+路径
对应的同一个group
的storage
会在 data/sync
中存在对应的同步标记文件如
6、每一个group
是否存储了所有的上传文件;还是说group A
存储一部分,group B
存储一部分,同一个group
中的storage server
存储的文件都相同。
A: 答案为后者。即:group A
存储一部分,group B
存储一部分,同一个group
中的storage server
存储的文件都相同。
7、FastDFS
系统中的文件ID
与用户存储进去的逻辑文件是不同的,由于没有索引服务器,那么这种文件名映射关系不是要需要由用户自己来保存?
的确如此,目前的确需要由应用端来保存。
FastDFS
系统中的文件ID与用户存储进去的逻辑文件是不同的,我有一个客户端,想通过文件名进行操作,不知该怎样实现?也就是说,文件名到ID的转换,我自己写的客户端该怎么转换呢?
像你这样的应用场合,再加一层好了,实现文件名到文件ID的转换。比如可以基于数据库来做,或者通过分布式kv
系统,如TT
、FastDHT
等等来做。
8、这些Track Server
的内容是对等的,还是分组,每个Track Server
负责一部分Storage Server
?
对等的。
9、Client是绑定一个Track Server,还是可以绑定多个或全部?
在一个集群中,应该绑定全部。
10、Storage Server
也是同样的问题,是绑定一个Track Server
,还是可以多个或者全部?
在一个集群中,应该绑定全部。
11、如果没有绑定全部Tracker Sever
,那么Tracker Sever
之间可能会出现不一致的情况,这种问题如何解决呢?
应该绑定所有Tracker server
啊。
万一有个别storage server
没有绑定所有tracker server
,也不会出现问题。
正确的做法是绑定所有tracker server
。
12. FastDFS需要的编译和运行环境是怎样的?
FastDFS Server
仅支持unix
系统,在Linux
和FreeBSD
测试通过。在Solaris
系统下网络通信方面有些问题。
编译需要的其他库文件有pthread
和libevent
。
pthread
使用系统自带的即可。
对libevent
的版本要求为1.4.x,建议使用最新的stable
版本,如1.4.14b。
注意,千万不要使用libevent 2.0
及以上版本。
13. 启动storage server
时,一直处于僵死状态。
A:启动storage server
,storage
将连接tracker server
,如果连不上,将一直重试。直到连接成功,启动才算真正完成。
出现这样情况,请检查连接不上tracker server
的原因。
14. 执行fdfs_test
或fdfs_test1
上传文件时,服务器返回错误号2
错误号表示没有ACTIVE
状态的storage server
。可以执行fdfs_monitor
查看服务器状态。
15. 如何让server进程退出运行?
直接kill
即可让server
进程正常退出,可以使用killall
命令,例如:
killall fdfs_trackerd
killall fdfs_storaged
也可以使用FastDFS
自带的stop.sh
脚本,如:
/usr/local/bin/stop.sh /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf
stop.sh
只会停止命令行(包括参数)完全相同的进程。
千万不要使用-9
参数强杀,否则可能会导致binlog
数据丢失的问题。
16. 如何重启server进程?
可以kill
掉server
进程后,执行启动命令行。如:
killall fdfs_trackerd
/usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
或者直接使用FastDFS
自带的restart.sh
脚本,如:
/usr/local/bin/restart.sh /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
17. 跨运营商通信异常问题
比如电信和网通机房相互通信,可能会存在异常,有两种表现:
1)不能建立连接,这个比较直接,肯定是网络连接的问题
2)可以正常建立连接,但接收和发送数据失败,这个问题比较隐蔽,正常网络环境下,不应该出现此类问题。
还有人碰到过从一个方向建立连接可以正常通信,但从另外一个方向就不能正常通信的情况。
解决办法:
尝试将服务端口改小,建议将端口修改为1024
以下。比如将storage
服务端口由23000
修改为873
等,也可以试试修改为8080
如果问题还不能解决,请联系你的网络(机房)服务商。
18. fdfs_test
和fdfs_test1
是做什么用的?
这两个是FastDFS自带的测试程序,会对一个文件上传两次,分别作为主文件和从文件。返回的文件ID也是两个。
并且会上传文件附加属性,storage server
上会生成4个文件。
这两个程序仅用于测试目的,请不要用作实际用途。
V2.05提供了比较正式的三个小工具:
/usr/local/bin/fdfs_upload_file
/usr/local/bin/fdfs_download_file [local_filename]
/usr/local/bin/fdfs_delete_file