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

  • 一、基本介绍
    • 1.FastDFS 的特性
    • 2.FastDFS 的存储策略
  • 二、使用 FastDFS 实现分布式文件存储
    • 1.安装 FastDFS 软件
    • 2.验证上传/下载等操作
    • 3.通过 Nginx 实现 URL 访问

一、基本介绍

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 地址
FastDFS CentOS7.4 192.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


FastDFS(分布式文件系统)使用介绍相关推荐

  1. FastDFS分布式文件系统(详细入门级介绍)

    分布式文件系统 (Distributed File System) 是一个软件/软件服务器: 这个软件可以用来管理文件: 但这个软件所管理的文件通常不是在一个服务器节点上,而是在多个服务器节点上,这些 ...

  2. Fastdfs分布式文件系统的应用

    2019独角兽企业重金招聘Python工程师标准>>> 26 MARCH 2016 on fastdfs, 分布式文件系统 我们在实际项目中常常遇到这样的应用场景,用户需要上传图片, ...

  3. FastDFS分布式文件系统使用手册

    FastDFS分布式文件系统使用手册 1.概述 1.1.FastDFS简介 FastDFS是由国人余庆所开发,其项目地址:https://github.com/happyfish100,FastDFS ...

  4. 大数据(3)---分布式文件系统HDFS 介绍

    分布式文件系统HDFS 介绍 来自https://www.cnblogs.com/liango/p/7136448.html  1.三个部分: 客户端.nameserver(可理解为主控和文件索引,类 ...

  5. 星环科技分布式文件系统TDFS介绍(上)

    星环科技是一家致力于打造企业级大数据基础软件,围绕数据全生命周期为企业提供基础软件及支持的厂商.在这个数据驱动的数字化世界中,来自社交媒体.金融科技等不同领域的数据正在大幅度增长,例如大量商业报告.网 ...

  6. 搭建自己的云存储空间|FastDFS分布式文件系统考虑一下?

    一. 前言 最近有很多小伙伴问壹哥,大规模的文件存储该怎么做? 这个感觉很难实现呢.其实这个需求,并没有大家想的那么难以实现.今天壹哥就带着各位,用10分钟的时间来搞定这个需求.不信?那你就跟着壹哥一 ...

  7. 大量文件不知道 怎么管理,快试试FastDFS(分布式文件系统)

    FastDFS(分布式文件系统)入门到精通 GitHub:个人GitHub Blog: 个人博客 1 什么是FastDFS 1.1 简介 FastDFS是用c语言编写的一款开源的分布式文件系统,它是由 ...

  8. FastDFS 分布式文件系统详解

    FastDFS 分布式文件系统详解 什么是文件系统 文件系统是操作系统用于在磁盘或分区上组织文件的方法和数据结构.磁盘空间是什么样的我们并不清楚,但文件系统可以给我们呈现一个非常清晰的表象,我们可以创 ...

  9. Docker安装FastDFS分布式文件系统

    Docker安装FastDFS分布式文件系统: 1.首先下载FastDFS文件系统的docker镜像 2.拉取镜像 3.查看镜像 4.使用docker镜像构建tracker容器(跟踪服务器,起到调度的 ...

  10. FastDFS分布式文件系统详解

    FastDFS 简介 FastDFS 是基于 C 语言开发的,是一个轻量级开源的高性能分布式文件系统.主要功能有:文件存储.文件同步.文件访问(文件上传/下载),解决了大容量的文件存储和高并发访问的问 ...

最新文章

  1. 目标检测--R-FCN: Object Detection via Region-based Fully Convolutional Networks
  2. 欢迎参加“城市大脑与应急管理”专家研讨会
  3. httphost设置socks_socks5代理使用和安装配置
  4. openmp与openmpi区别
  5. 任务调度之Timer、TimerTask
  6. edite not the main type
  7. LLRP 提供程序概述
  8. 2021年中国制药机械市场趋势报告、技术动态创新及2027年市场预测
  9. Swift项目中不能定义OC类继承Swift类
  10. Trie树 01Trie
  11. 计算机知识选择题库,计算机基础知识篇选择题库
  12. lzw编码 matlab,LZW编码算法matlab实现.docx
  13. 协作多智能体强化学习中的回报函数设计
  14. 微信公众号自定义消息模板(处理数据)
  15. javascript小方法之数组去重、数字转成逗号分隔、html元素去标签
  16. java微调器_Swing微调器示例
  17. 风螺旋公切线算法详解
  18. 怎么查看电脑的电池损耗情况?
  19. 双复合摆的动力学【牛顿法---拉格朗日法】两种方式
  20. 在WindowsMobil系统中实现透明树组件

热门文章

  1. Loadrunner性能测试之——关 联
  2. 【数学建模】数学建模学习1---线性规划(例题+matlab代码实现)
  3. C#基础[Week3]-20级前后端
  4. 以Arduino编写伺服插补控制及C#上位机的阿基米德螺旋线检测
  5. dell 灵越N5110 拆机
  6. PyQt5_QComboBox_实现一个江苏 浙江 安徽 三省市的级联表
  7. Altium_Designer之在覆铜后再抠铜
  8. linux模拟器psx,Linux ps 命令
  9. WPF的布局控件:Grid,StackPanel,DockPanl,Canvas,WrapPanel, UniformGrid
  10. elasticsearch-7.17.9