FastDFS-动力节点


第一章 FastDFS入门

1.1 分布式文件系统

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

    常见的分布式文件系统有:FastDFS、GFS、HDFS、Lustre、Ceph、GridFS、mogileFS、TFS等

    分布式文件系统与传统文件系统对比

在这里插入图片描述
在这里插入图片描述

传统方式弊端

  • 如果用户数量多,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.00
2013年12月推出V5.00
2017年6月发布V5.11

    FastDFS系统架构从第一个版本发布后一直没有很大的调整,高版本完全兼容低版本的数据,可以做到平滑升级,推荐更新升级到最新版本

    FastDFS代码托管在github上:https://github.com/happyfish100/fastdfs

1.4 FastDFS整体架构

    FastDFS文件系统由两大部分构成,一个是客户端,一个是服务端。
    客户端通常指我们的代码程序,比如我们的Java程序去连接FastDFS、操作FastDFS,那我们的Java程序就是一个客户端,FastDFS提供专有API访问,目前提供了C、Java和PHP几种编程语言的API,用来访问FastDFS文件系统。
    服务端由两个部分构成:一个是跟踪器(tracker),一个是存储节点(storage)
    跟踪器(tracker)主要是做调度工作,在内存中记录集群中存储节点storage的状态信息,是前端Client和后端存储节点storage的枢纽。因为相关信息全部在内存中,Tracker server的性能非常高,一个较大的集群(比如上百个group)中有3台tracker就足够了。上图的所示的表示200个组,200个group
    存储节点(storage)用于存储文件,包括文件和文件属性(meta data)都保存在存储服务器磁盘上,完成文件管理的所有功能:文件存储、文件同步和提供文件访问等。
    使用FastDFS进行操作,就必须要下载FastDFS的依赖包(jar包 ),但FastDFS的依赖包没有添加到maven中央库里去,所以说我们不能使用maven去直接下载,必须要到官方网站中去下载它的源代码,然后进行编译进行,这个源代码也是一个基于maven的java程序,编译到你本地的maven库里去就好了。

第2章 FastDFS环境搭建

2.1 FastDFS安装

2.1.1 安装前的准备

(1)检查Linux是否安装了gcc、libevent、libevent-devel

  • yum list installed | grep gcc
  • yum list installed | grep libevent
  • yum list installed | grep libevent-devel

(2)如果没有安装,则需进行安装

yum install gcc libevent libevent-devel-y

在这里插入图片描述

2.1.2 安装libfastcommon库

libfastcommon库是FastDFS文件系统运行需要的公共C语言函数库
下载地址:https://github.com/happyfish100

(1)上传相关依赖包
上传libfastcommon库到/root/soft/目录下
在这里插入图片描述

(2)解压libfastcommon

tar -zxvf libfastcommon-1.0.36.tar.gz

(3)编译libfastcommon

cd libfastcommon-1.0.36
./make.sh

在这里插入图片描述

(4)安装libfastcommon

./make.sh install

在这里插入图片描述
至此,libfastcommon库安装完毕

2.1.3 安装FastDFS

FastDFS没有Windows版本,不能在Windows下使用
FastDFS需要安装部署在Linux环境下,我们这里使用的是fastdfs-5.11版本
下载地址:https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz

(1)解压fastdfs

cd /root/soft
tar -zxvf fastdfs-5.11.tar.gz

(2)编译fastdfs

yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget
cd fastdfs-5.11
./make.sh

(3)安装fastdfs

./make.sh install

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

(4)安装标识
cd /usr/bin/
在/usr/bin/目录下有若干个以fdfs_为前缀的文件,这些文件都是fastdfs的命令,这些命令放在/usr/bin/目录下,我们可以在任何目录中直接使用fastdfs命令,而不需要去配置环境变量
在这里插入图片描述

cd /etc/fdfs/
这个目录下有四个文件,这个目录是存放fastdfs的配置文件的,所有关于fastdfs的配置文件必须放在/etc/fdfs/目录下,否则fastdfs没有办法启动和调用配置文件的信息。

在这里插入图片描述

cd /root/soft/fastdfs-5.11/conf
cp http.conf /etc/fdfs/
cp mime.types /etc/fdfs/

这两个文件后续程序内部会使用到它
在这里插入图片描述

2.2 FastDFS配置与启动

2.2.1 去掉/etc/fdfs/目录下FastDFS配置文件的后缀名

[root@localhost fdfs]# cd /etc/fdfs/
[root@localhost fdfs]# mv storage.conf.sample storage.conf
[root@localhost fdfs]# mv tracker.conf.sample tracker.conf
[root@localhost fdfs]# ll

在这里插入图片描述

2.2.2 修改tracker.conf文件

默认指向的FastDFS作者余庆的目录,因为在我们的机器上不存在,所以需要手动改一下
需要指定存放日志的文件路径,base_path必须确保这个目录存在

命令:vi tracker.conf

base_path=/opt/fastdfs/tracker #配置tracker存储数据的目录

在这里插入图片描述

2.2.3 修改storage.conf文件

base_path=/opt/fastdfs/storage #storage存储数据目录
store_path0=/opt/fastdfs/storage/files #真正存放文件的目录
tracker_server=192.168.133.111:22122 #注册当前存储节点的跟踪器地址

vi storage.conf

2.2.4 在Linux服务器上创建上面指定的目录

在这里插入图片描述

在这里插入图片描述

2.2.5 启动tracker

fdfs_trackerd /etc/fdfs/tracker.conf

2.2.6 启动storage

fdfs_storaged /etc/fdfs/storage.conf

2.2.7 查看是否启动成功

在这里插入图片描述

发现trackerd启动成功了,但是storage没有启动成功,这时候我们需要看日志为啥没有启动成功。

进入/opt/fastdfs/storage/logs目录查看日志
在这里插入图片描述

less storaged.log

在这里插入图片描述

报错原因是:没有该文件目录

则进行创建相应的目录
在这里插入图片描述

在进行启动storage

fdfs_storaged /etc/fdfs/storage.conf

再次查看是否启动成功

ps -ef | grep fdfs

在这里插入图片描述
发现都启动成功了

2.2.8 相关说明

fastDFS会在/opt/fastdfs/storage/files/data,data是自动生成的,在data目录下自动创建256个文件夹,这256个文件夹里都含有256个文件夹

2.3 重启

2.3.1 重启tracker

fdfs_trackerd /etc/fdfs/tracker.conf restart

在这里插入图片描述

2.3.2 重启storage

fdfs_storaged /etc/fdfs/storage.conf restart

在这里插入图片描述

2.4 关闭

2.4.1 关闭tracker执行命令

在任意目录下执行:fdfs_trackerd /etc/fdfs/tracker.conf stop
在这里插入图片描述

2.4.2 关闭storage执行命令

在任意目录下执行:fdfs_storaged /etc/fdfs/storage.conf stop
在这里插入图片描述

2.4.3 或者kill关闭fastdfs,但不建议在线上使用kill -9强制关闭,因为可能会导致文件信息不同步问题

2.5 FastDFS测试

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

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

这个文件只有在测试的时候会用上

  • base_path=/opt/fastdfs/client
  • tracker_server=192.168.133.111:22122

在这里插入图片描述

在这里插入图片描述

2.6.2 创建client目录

mkdir /opt/fastdfs/client

2.6.3 在/root目录下创建一个测试文件

内容随意写
在这里插入图片描述

2.6.4 测试上传

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

在这里插入图片描述

执行命令,它会返回如下相关信息

This is FastDFS client test program v5.11

Copyright (C) 2008, Happy Fish / YuQing

FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/ 
for more detail.

[2023-06-19 22:26:45] DEBUG - base_path=/opt/fastdfs/client, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0

tracker_query_storage_store_list_without_group: 
	server 1. group_name=, ip_addr=192.168.133.111, port=23000

group_name=group1, ip_addr=192.168.133.111, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKiFb2SQZaWALmiGAAAAHX3xxbE559.txt
source ip address: 192.168.133.111
file timestamp=2023-06-19 22:26:45
file size=29
file crc32=2112996785
example file url: http://192.168.133.111/group1/M00/00/00/wKiFb2SQZaWALmiGAAAAHX3xxbE559.txt
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKiFb2SQZaWALmiGAAAAHX3xxbE559_big.txt
source ip address: 192.168.133.111
file timestamp=2023-06-19 22:26:45
file size=29
file crc32=2112996785
example file url: http://192.168.133.111/group1/M00/00/00/wKiFb2SQZaWALmiGAAAAHX3xxbE559_big.txt
  • group_name组名决定了文件上传到哪个组里面去了,决定存在哪个机器里面去了
  • remote_filename 远程文件名称,它决定了我们文件存放在哪个磁盘目录下,M00指的是第一个磁盘路径(就是表示store_path0配置的路径),如果在storage.conf配置store_path_count为2,则有可能是M00或者M01,此时的M00完整路径是/opt/fastdfs/storage/files/data

    在storage.conf文件里有个store_path_count的配置,它表示FastDFS有几个磁盘路径,通常来讲我们只有一个就够了,除非你有两块硬盘,三块硬盘,那就可以写2,或者3,否则的话就写1就行了
store_path0表示我们文件存放本地磁盘什么位置

    在/opt/fastdfs/storage/files/data/00/00目录下我们可以看到我们上传的文件
在这里插入图片描述
会发现有四个文件,_big这个是备份文件,-m表示文件属性的文件,这个通常会记录文件的扩展名,大小等等一些基本信息

2.6.5 测试下载和删除

下载执行命令
fdfs_test /etc/fdfs/client.conf download group1 M00/00/00/wKiFb2SQZaWALmiGAAAAHX3xxbE559.txt

格式:fdfs_test /etc/fdfs/client.conf download 组名 远程文件路径

在这里插入图片描述

删除执行命令
fdfs_test /etc/fdfs/client.conf delete group1 M00/00/00/wKiFb2SQZaWALmiGAAAAHX3xxbE559_big.txt

在这里插入图片描述

第3章 分布式文件系统FastDFS的HTTP访问

3.1 概述

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

3.2 前期准备工作

3.2.1 将FastDFS的Nginx扩展模块源代码上传到Linux上

在这里插入图片描述

3.2.2 解压下载下来的fastdfs-nginx-module-master.zip文件

unzip fastdfs-nginx-module-master.zip

在这里插入图片描述

3.3 安装Nginx并且添加fastDFS模块

    因为这个模块必须在Nginx的安装过程中才能添加,所以我们需要重新安装一个nginx,为了和原来已安装的Nginx进行区分,我们把新安装的Nginx取名为nginx_fdfs

3.3.1 将Nginx的tar包上传到Linux上

在这里插入图片描述

3.3.2 解压上传的Nginx文件

tar -zxvf nginx-1.14.2.tar.gz

3.3.3 切换至解压后的Nginx主目录,执行配置操作

cd nginx-1.14.2
./configure --prefix=/usr/local/nginx_fdfs --add-module=/root/soft/fastdfs-nginx-module-master/src
  • –prefix是指定nginx安装路径
  • –add-module 指定fastDFS的nginx模块的源代码路径

3.3.4 执行命令进行编译

make
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值