FastDFS

一、FastDFS入门

1.1 分布式文件系统
  • 分布式文件系统 (Distributed File System) 是一个软件/软件服务器,这个软件可以用来管理文件。但这个软件所管理的文件通常不是在一个服务器节点上,而是在多个服务器节点上,这些服务器节点通过网络相连构成一个庞大的文件存储服务器集群,这些服务器都用于存储文件资源,通过分布式文件系统来管理这些服务器上的文件。

  • 常见的分布式文件系统有:FastDFSGFSHDFSLustreCephGridFSmogileFSTFS等。

  • 分布式文件系统与传统文件系统对比:
    在这里插入图片描述

  • 传统方式弊端:

    • 如果用户数量多,IO操作比较多,对磁盘访问压力很大。
    • 如果磁盘发生故障,会造成数据丢失。
    • 存储容量有限。
1.2 FastDFS简介
  • FastDFS是一个开源的轻量级分布式文件系统,为互联网应用量身定做,简单、灵活、高效,采用C语言开发,由阿里巴巴开发并开源。
  • FastDFS对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载、文件删除)等,解决了大容量文件存储的问题,特别适合以文件为载体的在线服务,如相册网站、文档网站、图片网站、视频网站等等。
  • FastDFS充分考虑了冗余备份、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
1.3 FastDFS发展历史
  • 2008年4月项目启动,7月发布第一个版本V1.00,两年时间内持续升级到V1.29
  • 2010年8月推出V2.00
  • 2011年6月推出V3.00
  • 2012年10月推出V4.0.0
  • 2013年12月推出V5.0.0
  • 2019年10月推出V6.0.0
  • FastDFS系统架构从第一个版本发布后一直没有大的调整,高版本完全兼容低版本的数据,可以做到平滑升级,推荐更新升级到最新版本。
  • FastDFS代码托管在Gitee.
  • 开源软件.
1.4 FastDFS整体架构
  • FastDFS文件系统由两大部分构成,一个是客户端,一个是服务端,客户端通常指我们的程序,比如我们的Java程序去连接FastDFS、操作FastDFS,那我们的Java程序就是一个客户端,FastDFS提供专有API访问,目前提供了CJavaPHP几种编程语言的API,用来访问FastDFS文件系统。
  • 服务端由两个部分构成:一个是跟踪器(tracker),一个是存储节点(storage)。
  • 跟踪器(tracker)主要做调度工作,在内存中记录集群中存储节点storage的状态信息,是前端Client和后端存储节点storage的枢纽。因为相关信息全部在内存中,Tracker server的性能非常高,一个较大的集群(比如上百个group)中有3台就足够了。
  • 存储节点(storage)用于存储文件,包括文件和文件属性(meta data)都保存到存储服务器磁盘上,完成文件管理的所有功能:文件存储、文件同步和提供文件访问等。

二、FastDFS环境搭建

2.1 FastDFS安装
2.1.1 安装前的准备
  • 检查Linux上是否安装了 gcclibeventlibevent-devel:

    yum list installed | grep gcc
    yum list installed | grep libevent
    yum list installed | grep libevent-devel
    
  • 如果没有安装,则需进行安装:

    yum install gcc libevent libevent-devel -y
    
2.1.2 安装libfastcommon库
  • libfastcommon 库是 FastDFS 文件系统运行需要的公共 C 语言函数库。

  • 下载

    wget https://github.com/happyfish100/libfastcommon/archive/refs/tags/V1.0.48.tar.gz
    
  • 解压下载下来的tar.gz压缩包到当前目录:

    tar -zxvf libfastcommon-1.0.48.tar.gz
    
  • 切换到解压后的libfastcommon目录:

    cd libfastcommon-1.0.48
    
  • 执行make脚本进行编译:

    ./make.sh
    

    注意: make编译的时候如果报错,需解决错误后再次进行make,通常发生错误是由于Linux缺少某些依赖库导致,根据错误提示解决错误。

  • 执行make install进行安装:

    ./make.sh install
    

    至此 libfastcommon 库安装完毕。

2.1.3 安装FastDFS
  • FastDFS没有Windows版本,不能在Windows下使用。

  • FastDFS需要安装部署在Linux环境。

  • 下载.

    wget https://github.com/happyfish100/fastdfs/archive/refs/tags/V6.07.tar.gz
    
  • 解压下载下来的tar.gz压缩包到当前目录:

    tar -zxvf fastdfs-6.07.tar.gz
    
  • 切换到解压后FastDFS的目录:

    cd fastdfs-6.07
    
  • 执行make脚本进行编译:

    ./make.sh
    
  • 执行make install进行安装:

    ./make.sh install
    

    至此FastDFS安装完成.
    所有编译出来的文件存放在/usr/bin目录下.
    所有配置文件存放在/etc/fdfs目录下.

  • 查看安装后的效果:

    • 查看FastDFS相关的可执行程序:

      ll /usr/bin/fdfs*
      

      /usr/binLinux的环境变量,可通过echo $PATH查看.

    • 查看FastDFS的配置文件:

      ll /etc/fdfs/
      
    • 注意需要把解压后的fastdfs-6.0.7/conf目录下的两个文件拷贝到/etc/fdfs/,否则后续会有很多问题:

      cp http.conf /etc/fdfs/
      cp mime.types /etc/fdfs/
      
2.2 FastDFS配置
  • 去掉/etc/fdfs/目录下FastDFS配置文件的后缀名:

    cp tracker.conf.sample tracker.conf
    cp storage.conf.sample storage.conf
    cp client.conf.sample client.conf
    cp storage_ids.conf.sample storage_ids.conf
    
  • 修改tracker.conf文件:

    base_path=/opt/fastdfs/tracker		#配置tracker存储数据的目录
    
  • 修改storage.conf文件:

    base_path=/opt/fastdfs/storage 			#storage存储数据目录
    store_path0=/opt/fastdfs/storage/files 	#真正存放文件的目录
    tracker_server=192.168.235.128:22122 	#注册当前存储节点的跟踪器地址
    
  • Linux服务器上创建上面指定的目录:

    /opt/fastdfs/tracker
    /opt/fastdfs/storage
    /opt/fastdfs/storage/files
    
2.3 FastDFS启动
  • 启动FastDFStracker服务:

    fdfs_trackerd /etc/fdfs/tracker.conf
    
  • 启动FastDFSstorage服务:

    fdfs_storaged /etc/fdfs/storage.conf
    
  • 查看启动进程:

    ps -ef | grep fdfs
    
  • 查看storage是否已经注册到了tracker:

    fdfs_monitor /etc/fdfs/storage.conf
    

    在这里插入图片描述

  • 首次启动storage后,会在配置的路径下创建存储文件的目录:
    在这里插入图片描述

2.4 FastDFS重启
  • 重启tracker:

    fdfs_trackerd /etc/fdfs/tracker.conf restart
    
  • 重启storage:

    fdfs_storaged /etc/fdfs/storage.conf restart
    
2.5 FastDFS关闭
  • 关闭tracker执行命令:

    fdfs_trackerd /etc/fdfs/tracker.conf stop
    
  • 关闭storage执行命令:

    fdfs_storaged /etc/fdfs/storage.conf stop
    
  • 或者kill关闭fastdfs,但不建议在线上使用 kill -9强制关闭,因为可能会导致文件信息不同步问题.

2.6 FastDFS测试
  • FastDFS安装完成之后,可以使用fdfs_test脚本测试文件上传。

  • 测试之前,需要修改client.conf配置文件,修改两个配置:

    base_path=/opt/fastdfs/client
    tracker_server=192.168.179.128:22122
    
  • /opt/fastdfs/目录下创建client.

  • 测试文件上传:

    • 准备需要上传的文件

      cd /root
      vim aa.txt #添加内容
      
    • 执行上传命令

      fdfs_test /etc/fdfs/client.conf upload /root/aa.txt
      

      在这里插入图片描述

    • 切换到存储目录查看文件上传情况:
      在这里插入图片描述

  • FastDFS生成的文件目录结构及名称:
    在这里插入图片描述

  • 测试文件删除:

    fdfs_delete_file /etc/fdfs/client.conf group1/要删除的文件路径
    

    在这里插入图片描述

  • 注意:

    • 没有搭建集群默认只有一个组group1.
    • 后缀名包含-m的为属性文件(meta).
    • Linux中并没有磁盘一说,是虚拟的.

三、分布式文件系统FastDFS的HTTP访问

3.1 概述
  • 在文件上传的时候,上传成功的信息中有提示我们可以通过某个路径去访问上传的文件,但是我们直接访问这个路径,却不可以,那么已经上传到FastDFS文件系统中的文件,我们如何在浏览器中访问呢?
  • FastDFS提供了一个Nginx扩展模块,利用该模块,我们可以通过Nginx访问已经上传到FastDFS上的文件。
3.2 Fastdfs的Nginx扩展模块
  • 下载

    wget https://github.com/happyfish100/fastdfs-nginx-module/archive/refs/tags/V1.22.tar.gz
    
  • 解压:

    tar -zxvf fastdfs-nginx-1.22.tar.gz 
    
  • 安装Nginx并且添加fastDFS模块:

    • 因为这个模块必须在Nginx的安装的过程中才能添加,所有我们需要重新安装一个nginx,为了和原来已安装的Nginx进行区分,我们把新安装的Nginx取名为nginx_fdfs.
    • 下载:
      wget http://nginx.org/download/nginx-1.18.0.tar.gz
      
    • 解压:
      tar -zxvf nginx-1.18.0.tar.gz
      
    • 切换至解压后的Nginx主目录,执行配置操作:
      cd nginx_fdfs
      
      ./configure --prefix=/usr/tool/fastDFS/nginx_fdfs --add-module=/usr/tool/fastDFS/fastdfs-nginx-module-1.22/src
      
    • 执行命令进行编译:
      make
      
    • 执行命令进行安装:
      make install
      
    • 安装NginxFastDFS扩展模块注意事项:
      # gcc编译器是否安装
      yum list installed | grep gcc
      yum install gcc -y
      
      # openssl库是否安装
      yum list installed | grep openssl
      yum install openssl openssl-devel -y
      
      # pcre库是否安装
      yum list installed | grep pcre
      yum install pcre pcre-devel -y
      
      # zlib库是否安装
      yum list installed | grep zlib
      yum install zlib zlib-devel -y
      
      yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel –y
      
  • FastDFSNginx访问配置:

    • /usr/tool/fastDFS/fastdfs-nginx-module-1.22/src(自己实际存放Nginx扩展模块的目录)目录下的mod_fastdfs.conf文件拷贝到 /etc/fdfs/目录下,这样才能正常启动Nginx:

      cp /usr/tool/fastDFS/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/
      
    • 修改mod_fastdfs.conf配置文件:

      base_path=/opt/fastdfs/nginx_mod
      tracker_server=192.168.235.128:22122
      url_have_group_name = true
      store_path0=/opt/fastdfs/storage/files
      
    • /opt/fastdfs/目录下创建nginx_mod目录.

  • 配置Nginx的配置文件:

    • 拦截请求路径中包含 /group[1-9]/M0[0-9] 的请求,用 fastdfsNginx模块进行转发.
      location ~ /group[1-9]/M0[0-9] {	
           ngx_fastdfs_module;  
      }
      
    • ngx_fastdfs_module; 这个指令不是Nginx本身提供的,是扩展模块提供的,根据这个指令找到FastDFS提供的Nginx模块配置文件,然后找到Tracker,最终找到Stroager.
3.3 FastDFS的Nginx访问启动与测试
  • 启动带有Fastdfs模块的Nginx:

    # 测试
    /usr/tool/fastDFS/nginx_fdfs/sbin/nginx -c /usr/tool/fastDFS/nginx_fdfs/conf/nginx.conf -t
    
    #启动
    /usr/tool/fastDFS/nginx_fdfs/sbin/nginx -c /usr/tool/fastDFS/nginx_fdfs/conf/nginx.conf
    
  • 重启或启动FastDFS服务进程:

    fdfs_trackerd /etc/fdfs/tracker.conf restart
    fdfs_storaged /etc/fdfs/storage.conf restart
    
  • 上传一个文件进行测试验证:

    fdfs_test /etc/fdfs/client.conf upload /root/aa.txt
    
  • 在浏览器访问上传的文件:

    • 当遇到400错误,检查配置/etc/fdfs/mod_fastdfs.conf url_have_group_name=true
      该配置表示访问路径中是否需要带有group1,改为true表示路径中需要有group1.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值