设为首页 收藏本站
查看: 1279|回复: 0

[经验分享] FastDFS文档整理与研究

[复制链接]

尚未签到

发表于 2015-9-10 09:38:50 | 显示全部楼层 |阅读模式
目录

  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同时对文件的meta data进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key value pair)方式表示,如: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

  两台均为cent OS 64bit操作系统。
  两个源码压缩包:
  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 –y remove libevent

  2.2.2安装现有的linevent
#Tar xvf libevent1.4.12-stable.tar.gz

#cd libevent

#./configure–prefix=/usr

#make

#make install

  2.3 安装tracker_server
  2.3.1 创建安装目录
  #mkdir/home/yuqing
  #tarzxvf FastDFS_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支持

##include http.conf -> #include http.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   zxvf FastDFS_v3.06.tar.gz      /home/yuqing
  开启http支持,需要先修改make.sh文件,修改”#WITH_HTTPD=1“为”WITH_HTTPD=1”。
  #./make.sh               //开始编译
  #./make.sh install          //安装
  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_server 10.192.64.103:22122
  开启http支持
  ##include http.conf –>#include http.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_server 10.192.64.103:22122
  开启http支持
  ##include http.conf –>#include http.conf
  2.5.2 测试文件上传
  在/usr/local/bin创建一个test.txt文件
  #mkdir test.txt
  执行上传命令
  #/usr/local/bin/fdfs_test/home/yuqing/FastDFS/conf/client.conf upload test.txt
  如果执行成功可以看到如下信息

  2.5.3 测试文件下载
  fdfs_download_file  <configfile>  <file id>    <local file name>
  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命令,例如:
  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数据丢失的问题。
  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库
  [iyunv@localhost   conf]#/usr/local/bin/fdfs_trackerd/home/yuqing/FastDFS/conf/tracker.conf
  /usr/local/bin/fdfs_trackerd: errorwhile loading shared libraries: libevent-1.4.so.2: cannot open shared objectfile: No such file or directory
  原因是系统debug的路径中没有我们实际的动态库的路径
  解决步骤:
  a.确定已经安装了libevent
  find / -name libevent-1.4.so.2
  b.找到库文件实际存在的路径:/usr/lib/libevent-1.4.so.2
  c.在DEBUG日志中查看系统到底是到哪里去找库文件而没有找到
  LD_DEBUG=libs/usr/local/bin/fdfs_trackerd –v
  查出来是 trying file=/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 –f storaged.log
  日志报:No route to host
  解决方法是分别关闭tracker和storage两端的防火墙。
  
  3. 系统设计
  3.1 系统模块
  客户端:Client
  跟踪器集群:Tracker Cluster
  存储器集群:Storage Cluster
  3.2 系统架构图
  图2-1 FastDFS系统架构图
  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     <config_filename>    <local_filename>
  [iyunv@localhost bin]# fdfs_upload_file    /home/yuqing/FastDFS/conf/client.conf test.txt
  group1/M00/00/00/CsBAaE_0BXTGMgxCAAAAEDYmZBM482.txt
  注:<file id>格式说明:组id/存储路径/文件名
  4.2.2 文件下载
  Usage: fdfs_download_file   <config_file>    <remote file id>        [local filename]
  [iyunv@localhost  bin]#fdfs_download_file/home/yuqing/FastDFS/conf/client.confgroup1/M00/00/00/CsBAaE_0BXTGMgxCAAAAEDYmZBM482.txt test.txt
  4.2.3 文件查看
  Usage: fdfs_file_info      <config_file>    <remote file id>
  [iyunv@localhost bin]# fdfs_file_info/home/yuqing/FastDFS/conf/client.confgroup1/M00/00/00/CsBAaE_xWMLi9rF1D9l9NHQOVT4656.mp4
  source ip address: 10.192.64.104
  file create timestamp: 2012-07-02 01:16:02
  file size: 265911604
  file crc32:1947096382 (0x740E553E)
  4.2.4 文件删除
  Usage: fdfs_delete_file   <config_file>    <file id>
  [iyunv@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              <config_filename>          <local_filename>
  [iyunv@localhostbin]# fdfs_upload_appender /home/yuqing/FastDFS/conf/client.confappend_source.txt
  group1/M00/00/00/CsBAaE_z64wEAAAAAAAAAJ1fkTE141.txt
  Usage:fdfs_append_file        <config_filename>          <appender_file_id> <local_filename>
  [iyunv@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       <config_file>    [-h <tracker_server>]                                          [list|delete       <group_name>    [storage_ip]]
  [iyunv@localhost bin]#fdfs_monitor/home/yuqing/FastDFS/conf/client.conf -h 10.192.64.103   list
  4.2.7 存储服务器踢出集群
  Usage: fdfs_monitor       <config_file>    [-h <tracker_server>]                                          [list|delete       <group_name>    [storage_ip]]
  [iyunv@localhost bin]#fdfs_monitor/home/yuqing/FastDFS/conf/client.conf -h 10.192.64.103    delete               group1         10.192.64.104
  注意:如果被删除的storage server的状态是ACTIVE,也就是该storage server还在线上服务的情况下,是无法删除掉的。
  4.3 程序流程走向分析
  (仅以文件上传为例)如图4-3所示:
图4-3 文件上传时序图

  文件上传时序图解析:
  a. 客户端自身加载配置文件进行初始化;
  b. 客户端尝试连接tracker;
  c. 如果客户端连接tracker成功,那么tracker会返回给客户端连接已上的tracker信息;
  d. 客户端向tracker发出:“询问是否有storage可供存储文件的命令。”;
  e. tracker询问storage可供存储文件的存储器;
  f. tracker将可供存储文件的storage的端口号和存储路径返回给客户端;
  g. 客户端与该storage进行交互将文件上传到该storage。
  5. 与其它分布式文件系统的比较
指标

FastDFS

mogileFS

系统简洁性

简洁

只有两个角色:tracker和storage

一般

有三个角色:tracker、storage和存储文件信息的mysql db

系统性能

很高(没有使用数据库,文件同步直接点对点,不经过tracker中转)

高(使用mysql来存储文件索引等信息,文件同步通过tracker调度和中转)

系统稳定性

高(C语言开发,可以支持高并发和高负载)

一般(Perl语言开发,高并发和高负载支持一般)

RAID方式

分组(组内冗余),灵活性较大

动态冗余,灵活性一般

通信协议

专有协议

下载文件支持HTTP

HTTP

技术文档

较详细

较少

文件附加属性(meta data)

支持

不支持

相同内容文件只保存一份

支持

不支持

下载文件时支持文件偏移量

支持

不支持

  附录
  扩展到多台tracker和storage的配置方法
  按照2.3.3的步骤配置所需数量的tracker,只需要ip地址不重复就可以。
  按照2.4.2的步骤配置所需数量的storage,注意Group_name项,如果是同一组,那么group_name相同,端口号也相同,如果group_name不同,那么端口号也不同。
  在storage的配置文件中修改tracker_server的地址和端口,可以指定多个,将新增的tracker也加进去就可以了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-111798-1-1.html 上篇帖子: FastDFS安装扩展篇——安装PHP、Apache及Nginx的FastDFS扩展【所有fastdfs文档】 下篇帖子: windows 下文件上传到fastdfs
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表