FastDFS(分布式文件系统)使用介绍

本文详细介绍了FastDFS分布式文件系统的特性和存储策略,包括文件上传、下载的流程。并展示了在CentOS7.4环境下安装、配置及验证FastDFS的过程,以及如何通过Nginx实现文件的URL访问。FastDFS作为一个开源的分布式文件系统,适用于以文件为载体的在线服务,其特性包括分组存储、Nginx扩展、文件内容hash、断点续传等。
摘要由CSDN通过智能技术生成

一、基本介绍

FastDFS 是用 C 语言编写的一款开源的分布式文件系统,功能主要包括:文件存储、文件同步、文件访问(上传、下载) 等,解决了文件大容量存储和高性能访问的问题。FastDFS 特别适合以文件为载体的在线服务,如:图片、视频、文档等等。

1.FastDFS 的特性

  • 分组存储,简单灵活;
  • 提供 Nginx 扩展模块,可以和 Nginx 无缝衔接;
  • 对文件内容做 hash 处理,避免出现重复文件,节约磁盘空间;
  • 支持多线程方式上传和下载文件,支持断点续传(当传输时网络故障,并不需要从零传输)
  • 文件 ID 由 FastDFS 生成,作为文件访问凭证(FastDFS 不需要传统的 nameservermetaserver

FastDFS 服务分别由:Tracker Server 跟踪服务器,Storage Server 存储服务器以及 Client 客户端三个部分组成。

跟踪服务器:

  • 主要负责调度工作,起到均衡的作用;
  • 同时用于管理所有的存储服务器和组,Storage 在启动后便会连接到 Tracker 服务器,并告知自己所属的组等信息。

存储服务器:

  • 主要提供容量和备份服务;以组为单位,每个组中可以有多台存储服务器,数据互为备份。

这里的 Client,作为业务请求的发起方,通过专用接口,使用 TCP/IP 协议与跟踪服务器和存储服务器进行数据交互。

2.FastDFS 的存储策略


文件上传:

  1. 首先 Client 会通过 Tracker Server 跟踪服务器来找到可用的 Storage Server 存储服务器;
  2. Tracker Server 跟踪服务器找到后,会向 Client 返回一台可用的 Storage Server 存储服务器的 IP 地址和端口号;
  3. 接着 Client 便可以直接和 Storage Server 存储服务器建立连接并进行文件上传;
  4. 上传完成后,Storage Server 存储服务器会返回给 Client 一个文件 ID,到此文件上传结束。

在这里插入图片描述

文件下载:

  1. 首先 Client 会通过 Tracker Server 跟踪服务器来找到要下载文件所在的 Storage Server 存储服务器;
  2. Trakcer Server 跟踪服务器找到后,会向 Client 返回含有指定文件的 Storage Server 存储服务器的 IP 和端口号;
  3. 接着 Client 直接通过 Tracker Server 返回的 IP 地址和端口与其中一台 Storage Server 存储服务器建立连接并指定要下载的文件。

在这里插入图片描述

二、使用 FastDFS 实现分布式文件存储

准备工作:

主机名操作系统IP 地址
FastDFSCentOS7.4192.168.1.1

安装基础包:

[root@FastDFS ~]# yum install -y make cmake gcc gcc-c++
[root@FastDFS ~]# wget https://github.com/happyfish100/libfastcommon/archive/V1.0.38.tar.gz
[root@FastDFS ~]# tar zxf V1.0.38.tar.gz -C /usr/src/
[root@FastDFS ~]# cd /usr/src/libfastcommon-1.0.38
[root@FastDFS libfastcommon-1.0.38]# ./make.sh && ./make.sh install

1.安装 FastDFS 软件

[root@FastDFS ~]# wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
[root@FastDFS ~]# tar zxf V5.11.tar.gz -C /usr/src/
[root@FastDFS ~]# cd /usr/src/fastdfs-5.11
[root@FastDFS fastdfs-5.11]# ./make.sh && ./make.sh install
[root@FastDFS fastdfs-5.11]# rm -f /etc/fdfs/*
[root@FastDFS fastdfs-5.11]# cp conf/*.conf /etc/fdfs/
[root@FastDFS fastdfs-5.11]# cp conf/mime.types /etc/fdfs/

1) 配置 Tracker 服务

[root@FastDFS ~]# mkdir -p /app/fastdfs/tracker
[root@FastDFS ~]# sed -i 's/base_path.*/base_path=\/app\/fastdfs\/tracker/' /etc/fdfs/tracker.conf
[root@FastDFS ~]# fdfs_trackerd /etc/fdfs/tracker.conf
[root@FastDFS ~]# netstat -nlpt | grep 22122

在这里插入图片描述

2)配置 Storage 服务

[root@FastDFS ~]# mkdir /app/fastdfs/storage
[root@FastDFS ~]# sed -i 's/base_path.*/base_path=\/app\/fastdfs\/storage/' /etc/fdfs/storage.conf
[root@FastDFS ~]# sed -i 's/store_path0.*/store_path0=\/app\/fastdfs\/storage/' /etc/fdfs/storage.conf
[root@FastDFS ~]# sed -i 's/tracker_server.*/tracker_server=192.168.1.1:22122/' /etc/fdfs/storage.conf
[root@FastDFS ~]# sed -i 's/group_name.*/group_name=default/' /etc/fdfs/storage.conf
[root@FastDFS ~]# fdfs_storaged /etc/fdfs/storage.conf
[root@FastDFS ~]# netstat -nlpt | grep 23000

在这里插入图片描述

3)验证

[root@FastDFS ~]# fdfs_monitor /etc/fdfs/storage.conf 

在这里插入图片描述

2.验证上传/下载等操作

准备工作

[root@FastDFS ~]# mkdir /app/fastdfs/client
[root@FastDFS ~]# sed -i 's/base_path.*/base_path=\/app\/fastdfs\/client/' /etc/fdfs/client.conf
[root@FastDFS ~]# sed -i 's/tracker_server.*/tracker_server=192.168.1.1:22122/' /etc/fdfs/client.conf

1)验证上传

[root@FastDFS ~]# echo "Hello World" > Hello.txt
[root@FastDFS ~]# fdfs_upload_file /etc/fdfs/client.conf Hello.txt
  • default 组名,M00 磁盘,00/00 目录,wKgBAWL6CraAYL2xAAAADAsMGmk731.txt 文件名。

在这里插入图片描述

2)验证下载

[root@FastDFS ~]# fdfs_download_file /etc/fdfs/client.conf default/M00/00/00/wKgBAWL6CraAYL2xAAAADAsMGmk731.txt

在这里插入图片描述

3)验证删除

[root@FastDFS ~]# fdfs_delete_file /etc/fdfs/client.conf default/M00/00/00/wKgBAWL6CraAYL2xAAAADAsMGmk731.txt

在这里插入图片描述

3.通过 Nginx 实现 URL 访问

  • 需要使用到 FastDFS 的 fastdfs-nginx-module 模块。
[root@FastDFS ~]# yum -y install zlib zlib-devel pcre-devel
[root@FastDFS ~]# wget http://www.nginx.org/download/nginx-1.21.0.tar.gz
[root@FastDFS ~]# tar zxf nginx-1.21.0.tar.gz -C /usr/src/
[root@FastDFS ~]# wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz
[root@FastDFS ~]# tar zxf V1.20.tar.gz
[root@FastDFS ~]# sed -i 's#/usr/local/include#/usr/include/fastdfs /usr/include/fastcommon#' fastdfs-nginx-module-1.20/src/config
[root@FastDFS ~]# mv fastdfs-nginx-module-1.20 /usr/local/src/
[root@FastDFS ~]# cd /usr/src/nginx-1.21.0
[root@FastDFS nginx-1.21.0]# ./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module-1.20/src/
[root@FastDFS nginx-1.21.0]# make && make install

1)修改 Nginx 配置文件

[root@FastDFS ~]# vim /usr/local/nginx/conf/nginx.conf
http {
	...
    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location ~/default/M00 {
            root /app/fastdfs/storage/data;
            ngx_fastdfs_module;
        }
    }
}

2)替换操作

[root@FastDFS ~]# cp /usr/local/src/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs/
[root@FastDFS ~]# sed -i 's/tracker_server.*/tracker_server=192.168.1.1:22122/' /etc/fdfs/mod_fastdfs.conf
[root@FastDFS ~]# sed -i 's/store_path0.*/store_path0=\/app\/fastdfs\/storage/' /etc/fdfs/mod_fastdfs.conf
[root@FastDFS ~]# sed -i 's/group_name.*/group_name=default/' /etc/fdfs/mod_fastdfs.conf
[root@FastDFS ~]# sed -i 's/url_have_group_name.*/url_have_group_name=true/' /etc/fdfs/mod_fastdfs.conf
[root@FastDFS ~]# /usr/local/nginx/sbin/nginx -t
[root@FastDFS ~]# /usr/local/nginx/sbin/nginx

在这里插入图片描述

3)验证

[root@FastDFS ~]# ps aux | grep nginx
[root@FastDFS ~]# netstat -nlpt | grep nginx
[root@FastDFS ~]# fdfs_upload_file /etc/fdfs/client.conf Hello.txt

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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愿许浪尽天涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值