FastDFS文档整理与研究.docx
《FastDFS文档整理与研究.docx》由会员分享,可在线阅读,更多相关《FastDFS文档整理与研究.docx(13页珍藏版)》请在冰豆网上搜索。
FastDFS文档整理与研究
FastDFS文档整理与研究
目录
1. 简介....4
1.1系统概述....4
1.2 适用场合....4
1.3 组成部分及其作用....4
2.系统安装配置步骤....4
2.1环境预约....4
2.2 安装libevent.5
2.2.1卸载原有的linevent.5
2.2.2安装现有的linevent.5
2.3 安装tracker_server.5
2.3.1 创建安装目录....5
2.3.2 配置文件....5
2.3.3 配置tracker_server.5
2.3.4 启动tracker_server.6
2.4 安装storage_server.6
2.4.1 创建安装目录....6
2.4.2 配置storage.6
2.5 测试文件上传下载....7
2.5.1 配置客户端程序....7
2.5.2 测试文件上传....7
2.5.3 测试文件下载....8
2.6 常用命令....8
2.6.1.重启tracker_server.8
2.6.2.停止tracker_server.8
2.6.3.让server进程退出运行....8
2.6.4.重启server进程....8
2.7 安装过程中可能出现的问题及解决办法....8
2.7.1 无法找到libevent-1.4.so.2库....8
2.7.2 启动Storaged 的时候不成功....9
3.系统设计....9
3.1 系统模块....9
3.2 系统架构图....9
3.3 系统的特点....10
3.3.1 支持服务器的动态增减....10
3.3.2 跟踪器内部完全对等....10
3.3.3 采用分卷方式支持大容量....10
3.3.4 支持冗余备份和负载均衡....11
3.3.5 自动完成文件同步....11
4.功能详细说明....11
4.1 功能定义....11
4.1.1文件存储....11
4.1.2文件同步....11
4.1.3 文件上传....11
4.1.4 文件下载....12
4.1.5 文件查看....12
4.1.6 文件删除....12
4.1.7 文件附加....12
4.1.8 存储服务器信息查看....12
4.1.9 存储服务器踢出集群....13
4.1.10 存储服务器在线扩容....13
4.2 功能具体使用的操作步骤....13
4.2.1文件上传....13
4.2.2文件下载....13
4.2.3文件查看....13
4.2.4文件删除....13
4.2.5文件附加....14
4.2.6存储服务器信息查看....14
4.2.7存储服务器踢出集群....14
4.3 程序流程走向分析....14
5.与其它分布式文件系统的比较....16
附录....17
1. 简介
1.1系统概述
FastDFS是一个开源的分布式文件系统,对文件进行管理,它的主要功能包括:
文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。
1.2 适用场合
特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
1.3 组成部分及其作用
FastDFS客户端,其作用是完成客户与服务端之间的交互。
FastDFS服务端,有两个角色:
a.跟踪器(tracker),其作用是完成调度工作,在访问上起负载均衡的作用。
b.存储节点(storage),其作用是完成文件的存储,完成文件管理的所有功能:
存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。
所谓文件的metadata就是文件的相关属性,以键值对(keyvaluepair)方式表示,如:
width=1024,其中的key为width,value为1024。
文件metadata是文件属性列表,可以包含多个键值对。
2. 系统安装配置步骤
2.1环境预约
服务器
IP
组
端口
作用
Tracker1
10.192.64.103
无
22122
Tracker
Storage1
10.192.64.104
Group1
23000
Storage
两台均为centOS64bit操作系统。
两个源码压缩包:
libevent-1.4.12-stable.tar.gz
FastDFS_v3.06.tar.gz
2.2 安装libevent
2.2.1卸载原有的linevent
FastDFS内部使用libevent作为http服务器,建议还是使用apache或Nginx,使用libevent路径因为/usr,如果系统已安装,需要卸载掉,命令:
#yum–yremovelibevent
2.2.2安装现有的linevent
#Tarxvflibevent1.4.12-stable.tar.gz
#cdlibevent
#./configure–prefix=/usr
#make
#makeinstall
2.3 安装tracker_server
2.3.1 创建安装目录
#mkdir/home/yuqing
#tarzxvfFastDFS_v3.06.tar.gz/home/yuqing
开启http支持,需要先修改make.sh文件,修改"#WITH_HTTPD=1"为"WITH_HTTPD=1"
#./make.sh //开始编译
#./make.shinstall //安装
2.3.2 配置文件
配置文件在/home/yuqing/FastDFS/conf里面,
Client.conf //客户端上传配置文件
Storage.conf //文件存储服务器配置文件
Tracker.conf //调度服务器配置文件
http.conf //http服务器配置文件
2.3.3 配置tracker_server
修改tracker.conf文件,修改log、group等文件存放的目录
bast_path=/home/yuqing/fastdfs->bast_path=/home/yuqing/FastDFS
修改http端口
http.server_port=8080->http.server.port=80
开启http支持
##includehttp.conf->#includehttp.conf
2.3.4 启动tracker_server
/usr/local/bin/fdfs_tracked /home/yuqing/FastDFS/conf/tracker.conf
进入/home/yuqing/FastDFS/logs/tracker.log查看tracker的日志,打印如下:
则表示启动tracker_server成功。
2.4 安装storage_server
2.4.1 创建安装目录
#mkdir /home/yuqing
#tar zxvfFastDFS_v3.06.tar.gz /home/yuqing
开启http支持,需要先修改make.sh文件,修改”#WITH_HTTPD=1“为”WITH_HTTPD=1”。
#./make.sh //开始编译
#./make.shinstall //安装
2.4.2 配置storage
修改storage.conf配置文件,定义log、group等存储目录
Base_path=/home/yuqing/fastdfs->bast_path=/home/yuqing/FastDFS
修改文件存位置,一台storage可以指定多个目录
Store_path0=/home/yuqing/fastdfs->store_path0=/home/yuqing/FastDFS
定义组
Group_name=group1
修改tracker_server的地址和端口,可以指定多个
Tracker_server192.168.209.121:
22122->tracker_server10.192.64.103:
22122
开启http支持
##includehttp.conf–>#includehttp.conf
启动storage服务器
#/usr/local/bin/fdfs_storaged /home/yuqing/FastDFS/conf/storage.conf
执行时会在data文件夹下生产256个文件夹,
打开storage.log日志,查看是否执行成功
2.5 测试文件上传下载
2.5.1 配置客户端程序
FastDFS有自带的客户端程序,经过配置后,可进行文件上传。
修改/home/yuqing/FastDFS/conf/client文件。
Base_path=/home/yuqing/fastdfs->bast_path=/home/yuqing/FastDFS
修改tracker_server,可以不是唯一
Tracker_server192.168.209.121:
22122->tracker_server10.192.64.103:
22122
开启http支持
##includehttp.conf–>#includehttp.conf
2.5.2 测试文件上传
在/usr/local/bin创建一个test.txt文件
#mkdirtest.txt
执行上传命令
#/usr/local/bin/fdfs_test/home/yuqing/FastDFS/conf/client.confuploadtest.txt
如果执行成功可以看到如下信息
2.5.3 测试文件下载
fdfs_download_file
fdfs_download_file /home/yuqing/FastDFS/conf/client.conf group1/M00/00/00/CsBAaE_tXv6txIgKAAAAEDYmZBM100_big.txt test2.txt
2.6 常用命令
2.6.1.重启tracker_server
/usr/local/bin/restart.sh /usr/local/bin/fdfs_tracked/home/yuqing/FastDFS/conf/tracker.conf
2.6.2.停止tracker_server
/usr/local/bin/stop.sh /usr/local/bin/fdfs_tracked/home/yuqing/FastDFS/conf/tracker.conf
2.6.3.让server进程退出运行
直接kill即可让server进程正常退出,可以使用killall命令,例如:
killallfdfs_trackerd
killallfdfs_storaged
也可以使用FastDFS自带的stop.sh脚本,如:
/usr/local/bin/stop.sh /usr/local/bin/fdfs_storaged/etc/fdfs/storage.conf
stop.sh只会停止命令行(包括参数)完全相同的进程。
千万不要使用-9参数强杀,否则可能会导致binlog数据丢失的问题。
2.6.4.重启server进程
可以kill掉server进程后,执行启动命令行。
如:
killallfdfs_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
2.7 安装过程中可能出现的问题及解决办法
2.7.1 无法找到libevent-1.4.so.2库
[root@localhost conf]#/usr/local/bin/fdfs_trackerd/home/yuqing/FastDFS/conf/tracker.conf
/usr/local/bin/fdfs_trackerd:
errorwhileloadingsharedlibraries:
libevent-1.4.so.2:
cannotopensharedobjectfile:
Nosuchfileordirectory
原因是系统debug的路径中没有我们实际的动态库的路径
解决步骤:
a.确定已经安装了libevent
find/-namelibevent-1.4.so.2
b.找到库文件实际存在的路径:
/usr/lib/libevent-1.4.so.2
c.在DEBUG日志中查看系统到底是到哪里去找库文件而没有找到
LD_DEBUG=libs/usr/local/bin/fdfs_trackerd–v
查出来是 tryingfile=/usr/lib64/libevent-1.4.so.2
d.做一个软链接
ln –s /usr/lib/libevent-1.4.so.2 /usr/lib64/libevent-1.4.so.2
搞定。
2.7.2 启动Storaged的时候不成功
查看storage日志
cd /home/yuqing/FastDFS/logs/
tail–fstoraged.log
日志报:
Noroutetohost
解决方法是分别关闭tracker和storage两端的防火墙。
3. 系统设计
3.1 系统模块
客户端:
Client
跟踪器集群:
TrackerCluster
存储器集群:
StorageCluster
3.2 系统架构图
图2-1FastDFS系统架构图
3.3 系统的特点
3.3.1 支持服务器的动态增减
跟踪器和存储节点都可以由一台或者多台服务器构成。
跟踪器和存储节点中的服务器均可以随时增加或者下线而不会影响线上服务。
3.3.2 跟踪器内部完全对等
跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或者减少。
3.3.3 采用分卷方式支持大容量
为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。
存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加起来就是整个存储系统总的文件容量。
当存储空间不足或即将耗尽时,可以动态添加卷。
只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。
3.3.4 支持冗余备份和负载均衡
一个卷可以由一台或者多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。
3.3.5 自动完成文件同步
在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。
4. 功能详细说明
4.1 功能定义
4.1.1 文件存储
支持文本,视频,音乐等各种格式的文件的存储。
4.1.2 文件同步
为了防止因为某些存储服务器的故障,而导致数据丢失或者不可用的情况的发生,需要对文件进行同步,实现文件的冗余备份。
4.1.3 文件上传
将文件从客户端快速、准确、无丢失的上传到存储服务器中。
a.Client向Tracker询问可供上传的Storage,不需要附加任何参数。
b.Tracker返回给Client一台可用的Storage。
c.Client直接和该Storage进行交互完成文件的上传。
整个文件上传过程如图4-1所示
图4-1 文件上传过程图
4.1.4 文件下载
从存储服务器中下载指定的文件到客户端。
a.Client向Tracker询问下载文件所在的Storage,文件的唯一标识为卷名和文件名。
b.Tracker返回一台可用的Storage给Client。
c.Client直接和Storage通讯完成文件的下载。
需要说明的是,client为使用FastDFS服务的调用方,client也应该是一台服务器,它对tracker和storage的调用均为服务器间的调用。
FastDFS中的文件标识分为两个部分:
卷名和文件名,二者缺一不可。
整个下载过程如图4-2所示:
图4-2 文件下载过程图
4.1.5 文件查看
在客户端显示存储服务器中的指定文件的相关信息。
4.1.6 文件删除
删除存储服务器中的指定文件。
4.1.7 文件附加
在某些需要附加写入信息的文件后面增加其它文件的内容。
4.1.8 存储服务器信息查看
显示存储服务器的相关信息。
4.1.9 存储服务器踢出集群
将指定的存储服务器踢出集群。
4.1.10 存储服务器在线扩容
在不影响其它存储服务器的情况下,增加存储服务器,整个存储系统扩容。
4.2 功能具体使用的操作步骤
4.2.1 文件上传
Usage:
fdfs_upload_file
[root@localhostbin]#fdfs_upload_file /home/yuqing/FastDFS/conf/client.conftest.txt
group1/M00/00/00/CsBAaE_0BXTGMgxCAAAAEDYmZBM482.txt
注:
格式说明:
组id/存储路径/文件名
4.2.2 文件下载
Usage:
fdfs_download_file [localfilename]
[root@localhost bin]#fdfs_download_file/home/yuqing/FastDFS/conf/client.confgroup1/M00/00/00/CsBAaE_0BXTGMgxCAAAAEDYmZBM482.txttest.txt
4.2.3 文件查看
Usage:
fdfs_file_info
[root@localhostbin]#fdfs_file_info/home/yuqing/FastDFS/conf/client.confgroup1/M00/00/00/CsBAaE_xWMLi9rF1D9l9NHQOVT4656.mp4
sourceipaddress:
10.192.64.104
filecreatetimestamp:
2012-07-0201:
16:
02
filesize:
265911604
filecrc32:
1947096382(0x740E553E)
4.2.4 文件删除
Usage:
fdfs_delete_file
[root@localhost bin]#fdfs_delete_file /home/yuqing/FastDFS/conf/client.confgroup1/M00/00/00/CsBAaE_tXv6txIgKAAAAEDYmZBM100_big.txt
4.2.5 文件附加
Usage:
fdfs_upload_appender
[root@localhostbin]#fdfs_upload_appender/home/yuqing/FastDFS/conf/client.confappend_source.txt
group1/M00/00/00/CsBAaE_z64wEAAAAAAAAAJ1fkTE141.txt
Usage:
fdfs_append_file
[root@localhost bin]#fdfs_append_file /home/yuqing/FastDFS/conf/client.confgroup1/M00/00/00/CsBAaE_z64wEAAAAAAAAAJ1fkTE141.txt append_more.txt
4.2.6 存储服务器信息查看
Usage:
fdfs_monitor [-h] [list|delete [storage_ip]]
[root@localhostbin]#fdfs_monitor/home/yuqing/FastDFS/conf/client.conf-h10.192.64.103 list
4.2.7 存储服务器踢出集群
Usage:
fdfs_monitor [-h] [list|delete [storage_ip]]
[root@localhostbin]#fdfs_monitor/home/yuqing/FastDFS/conf/client.conf-h10.192.64.103 delete group1 10.192.64.104
注意:
如果被删除的storageserver的状态是ACTIVE,也就是该storageserver还在线上服务的情况下,是无法删除掉的。
4.3 程序流程走向分析
(仅以文件上传为例)如图4-3所示:
图4-3 文件上传时序图
文件上传时序图解析:
a. 客户端自身加载配置文件进行初始化;
b. 客户端尝试连接tracker;
c. 如果客户端连接tracker成功,那么tracker会返回给客户端连接已上的tracker信息;
d. 客户端向tracker发出:
“询