fastDFS配置及⽇志查看所遇到的问题
FastDFS的配置⽂件在/usr/local/webserver/fastdfs/etc⽬录下,其中包括
跟踪器tracker:192.168.0.6
存储节点Storage:192.168.0.5
⼀、配置及启动Tracker Server
1、修改f⽂件,修改如下
base_path=/usr/local/webserver/fastdfs/
http.server_port= 8090 # 指定端⼝
#f # HTTP⽀持
3、启动tracker服务器
/usr/local/webserver/fastdfs/bin/fdfs_trackerd /usr/local/webserver/fastdfs/f
4、查看tracker的启动⽇志
tailf /usr/local/webserver/fastdfs/logs/trackerd.log
[2011-12-09 10:34:44] INFO - FastDFS v3.02, base_path=/usr/local/webserver/fastdfs, run_by_group=, run_by_user=, connect_timeout=30s, network_timeout=60s, port=22122, bind_addr=, max_connections=256, work_threads=4,
store_lookup=2, store_group=, store_server=0, store_path=0, reserved_storage_space=4096MB, download_server=0, allow_ip_count=-1, sync_log_buff_interval=10s, check_active_interval=120s, thread_stack_size=64 KB,
storage_ip_changed_auto_adjust=1, storage_sync_file_max_delay=86400s, storage_sync_file_max_time=300s,
use_trunk_file=0, slot_min_size=256, slot_max_size=16 MB, trunk_file_size=64 MB
[2011-12-09 10:34:44] INFO - HTTP supported: server_port=8090, default_content_type=application/octet-stream,
anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0, token_check_fail content_type=, token_check_fail buff length=0, check_active_interval=30, check_active_type=tcp, check_active_uri=/status.html
[2011-12-09 10:34:44] ERROR - file: ../common/sockopt.c, line: 735, bind port 22122 failed, errno: 98, error info: Address already in use.
[2011-12-09 10:35:06] INFO - FastDFS v3.02, base_path=/usr/local/webserver/fastdfs, run_by_group=, run_by_user=, connect_timeout=30s, network_timeout=60s, port=22122, bind_addr=, max_connections=256, work_threads=4,
store_lookup=2, store_group=, store_server=0, store_path=0, reserved_storage_space=4096MB, do
wnload_server=0, allow_ip_count=-1, sync_log_buff_interval=10s, check_active_interval=120s, thread_stack_size=64 KB,
storage_ip_changed_auto_adjust=1, storage_sync_file_max_delay=86400s, storage_sync_file_max_time=300s,
use_trunk_file=0, slot_min_size=256, slot_max_size=16 MB, trunk_file_size=64 MB
[2011-12-09 10:35:06] INFO - HTTP supported: server_port=8090, default_content_type=application/octet-stream,
anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0, token_check_fail content_type=, token_check_fail buff length=0, check_active_interval=30, check_active_type=tcp, check_active_uri=/status.html
tracker server启动成功。
⼆、配置及启动Storage Server
1、修改f⽂件,修改如下:
#可以⾃定义,但必须存在此⽬录,⽤于存储storage相关的log、group内的相关信息
group_name=lxsym #⾃定义组
base_path=/usr/local/webserver/fastdfs #安装路径
store_path0=/data/fastdfs #数据存储路径(可以指定多个)
tracker_server=192.168.0.6:22122 #跟踪器IP及端⼝
http.server_port= 8090 # 指定端⼝
#f # HTTP⽀持
2、启动storage服务器
/usr/local/webserver/fastdfs/bin/fdfs_storaged /usr/local/webserver/fastdfs/f
3、查看storage服务器启动⽇志
nginx和apache区别tailf /usr/local/webserver/fastdfs/logs/storaged.log
[2011-12-18 18:13:28] INFO - FastDFS v3.02, base_path=/usr/local/webserver/fastdfs, store_path_count=1,
subdir_count_per_path=256, group_name=group1, run_by_group=, run_by_user=, connect_timeout=30s,
network_timeout=60s, port=23000, bind_addr=, client_bind=1, max_connections=256, work_threads=4,
disk_rw_separated=1, disk_reader_threads=1, disk_writer_threads=1, disk_rw_direct=0, buff_size=256KB,
heart_beat_interval=30s, stat_report_interval=60s, tracker_server_count=1, sync_wait_msec=50ms, sync_interval=0ms, sync_start_time=00:00, sync_end_time=23:59, write_mark_file_freq=500, allow_ip_count=-1, file_distribute_path_mode=0, file_distribute_rotate_count=100, fsync_after_written_bytes=0, sync_log_buff_interval=10s, sync_binlog_buff_interval=10s, sync_stat_file_interval=300s, thread_stack_size=512 KB, upload_priority=10, if_alias_prefix=, check_file_duplicate=0, FDHT group count=0, FDHT server count=0, FDHT key_namespace=, FDHT keep_alive=0, HTTP server port=8888, domain
name=
[2011-12-18 18:13:28] INFO - HTTP supported: server_port=8888, http_trunk_size=262144,
default_content_type=application/octet-stream, anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0,
token_check_fail content_type=, token_check_fail buff length=0
[2011-12-18 18:13:50] INFO - file: storage_param_getter.c, line: 97, storage_ip_changed_auto_adjust=1, store_path=0, reserved_storage_space=4096 MB, use_trunk_file=0, slot_min_size=0, slot_max_size=16 MB, trunk_file_size=64 MB
[2011-12-18 18:13:52] INFO - file: tracker_client_thread.c, line: 304, successfully connect to tracker server
192.168.0.6:22122, as a tracker client, my ip is 192.168.0.5
[2011-12-18 18:13:52] INFO - file: tracker_client_thread.c, line: 1100, tracker server 192.168.0.6:22122, set tracker leader: 192.168.0.6:22122
storage server启动成功。
FastDFS是为互联⽹应⽤量⾝定做的⼀套分布式⽂件存储系统,⾮常适合⽤来存储⽤户图⽚、视频、⽂档等⽂件。对于互联⽹应⽤,和其他分布式⽂件系统相⽐,优势⾮常明显。但是在使⽤过程中,也会遇到⼀些问题,⼀起来看看。
⼀、FastDFS简介
FastDFS(最新版本v3.04)是⼀个开源的轻量级分布式⽂件系统,它⽤纯C语⾔实现,⽀持Linux、FreeBSD、AIX等UNIX系统。它只能通过专有API对⽂件进⾏存取访问,不⽀持POSIX接⼝⽅式,不能mount使⽤,不是系统级的分布式⽂件系统,⽽是应⽤级的分布式⽂件存储服务。
⼆、FastDFS⽤途
1)FastDFS主要解决了⼤容量的⽂件存储和⾼并发访问的问题,⽂件存取时实现了负载均衡。
2)FastDFS实现了软件⽅式的RAID,可以使⽤廉价的IDE硬盘进⾏存储 ,⽀持存储服务器在线扩容。
3)FastDFS特别适合⼤中型⽹站使⽤,⽤来存储资源⽂件(如:图⽚、⽂档、⾳频、视频等等。
三、FastDFS原理
存储节点采⽤了分组(group)的⽅式。存储系统由⼀个或多个group组成,group与group之间的⽂件是相互独⽴的,所有group的⽂件容量累加就是整个存储系统中的⽂件容量。⼀个group可以由⼀台或多台存储服务器组成,⼀个group下的存储服务器中的⽂件都是相同的,group中的多台存储服务器起到了冗余备份和负载均衡的作⽤(⼀个组的存储容量为该组内存储服务器容量最⼩的那个,不同组的Storage server之间不会相互通信,同组内的Storage server之间会相互连接进⾏⽂件同步)。
在group中增加服务器时,同步已有的⽂件由系统⾃动完成,同步完成后,系统⾃动将新增服务器切换到线上提供服务。
当存储空间不⾜或即将耗尽时,可以动态添加group。只需要增加⼀台或多台服务器,并将它们配置为⼀个新的group,这样就扩⼤了存储系统的容量。
FastDFS只有两个⾓⾊:Tracker server和Storage server。Tracker server作为中⼼结点,其主要作⽤是负载均衡和调度。Tracker server在内存中记录分组和Storage server的状态等信息,不记录⽂件索引信息,占⽤的内存量很少。另外,客户端(应⽤)和Storage server访问Tracker server时,Tracker server扫描内存中的分组和Storage server信息,然后给出应答。由此可以看出Tracker server ⾮常轻量化,不会成为系统瓶颈。
FastDFS中的Storage server在其他⽂件系统中通常称作Trunk server或Data server。Storage server直接利⽤OS的⽂件系统存储⽂件。FastDFS不会对⽂件进⾏分块存储,客户端上传的⽂件和Storage server上的⽂件⼀⼀对应(FastDFS中的⽂件标识分为两个部分:组名和⽂件名,⼆者缺⼀不可)。
四、Nginx环境调⽤FastDFS要求
1)编译安装 nginx时附带 fastdfs-nginx-module 模块 –add-module=/root/fastdfs-nginx-module/src
2)修改 nginx 配置⽂件增加 ngx_fastdfs_module;
3)编译fastdfs_client.so php扩展模块
4)修改 php.ini 让 php-fpm ⽀持fastdfs_client 扩展模块 extension = fastdfs_client.so
注意:如果要使fastdfs⽀持web和开机⾃动脚本(默认是不⽀持的),需要修改make.sh⽂件
#WITH_HTTPD=1
#WITH_LINUX_SERVICE=1
(因为是给nginx添加fastdfs模块,所以不需要fastdfs⽀持 http 所以就不需要去掉 #WITH_HTTPD=1
前的注释了)。
五、所遇问题
1. FastDFS适⽤的场景以及不适⽤的场景?
FastDFS是为互联⽹应⽤量⾝定做的⼀套分布式⽂件存储系统,⾮常适合⽤来存储⽤户图⽚、视频、⽂档等⽂件。对于互联⽹应⽤,和其他分布式⽂件系统相⽐,优势⾮常明显。FastDFS没有对⽂件做分块存储,因此不太适合分布式计算场景。
2. FastDFS需要的编译和运⾏环境是怎样的?
FastDFS Server仅⽀持unix系统,在Linux和FreeBSD测试通过。在Solaris系统下⽹络通信⽅⾯有些问题。编译需要的其他库⽂件有pthread和libevent。pthread使⽤系统⾃带的即可。对libevent的版本要求为1.4.x,建议使⽤最新的stable版本,如1.4.14b。注意,千万不要使⽤libevent 2.0 stable以前的版本。
3. 启动storage server时,⼀直处于僵死状态。
启动storage server,storage将连接tracker server,如果连不上,将⼀直重试。直到连接成功,启动才算真正完成。
出现这样情况,请检查连接不上tracker server的原因。
友情提⽰:从V2.03以后,多tracker server在启动时会做时间上的检测,判断是否需要从别的tracker server同步4个系统⽂件。
触发时机是第⼀个storage server连接上tracker server后,并发起join请求。
如果集中有2台tracker server,⽽其中⼀台tracker没有启动,可能会导致storage server⼀直处于僵死状态。
4. 执⾏fdfs_test或fdfs_test1上传⽂件时,服务器返回错误号2
错误号2表⽰没有ACTIVE状态的storage server。可以执⾏fdfs_monitor查看服务器状态。
5. 如何删除⽆效的storage server?
可以使⽤fdfs_monitor来删除。命令⾏如下:
/usr/local/bin/fdfs_monitor delete
例如:
/usr/local/bin/fdfs_monitor /etc/f delete group1 192.168.0.100
注意:如果被删除的storage server的状态是ACTIVE,也就是该storage server还在线上服务的情况下,是⽆法删除掉的。
6. nginx和apache扩展模块与FastDFS server版本对应关系
扩展模块1.05: 针对FastDFs server v2.x,要求server版本⼤于等于v2.09
扩展模块1.07及以上版本: 针对FastDFs server v3.x
7. 上传⽂件失败,返回错误码28,这是怎么回事?
返回错误码28,表⽰磁盘空间不⾜。注意FastDFS中有预留空间的概念,在f中设置,配置项为:
reserved_storage_space,缺省值为4GB,即预留4GB的空间。请酌情设置reserved_storage_space这个参数,⽐如可以设置为磁盘总空间的20%左右。
8. nginx扩展模块,不能正常显⽰图⽚的问题
在配置⽂件/etc/fdfs/f中,缺省的设置是这样的:d_find_content_type=false这个参数在nginx中需要设置为true,apache中应该设置为false
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论