当前位置: 首页 > news >正文

FastDFS 分布式存储

一、核心概念

  • FastDFS:开源轻量级分布式文件系统,适合4KB~500MB中小文件存储(图片 / 视频 / 文档)。
  • 三大角色
    1. Tracker Server:调度中心,负载均衡、状态管理,无持久化数据。
    2. Storage Server:存储节点,按Group分组,同组数据互为备份。
    3. Client:上传 / 下载客户端,提供 API 接口。
  • 文件 ID 结构group1/M00/00/00/xxx.jpg
    • group1:组名;M00:虚拟磁盘路径;00/00:两级哈希目录;xxx:文件名。

二、实验环境(OpenEuler)

角色IP主机名
Tracker1192.168.10.101tracker01
Tracker2192.168.10.102tracker02
Storage1192.168.10.103storage1
Storage2192.168.10.104storage2
Nginx 代理192.168.10.105nginx

三、实验步骤

1. 基础环境配置(所有节点)

# 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 关闭SELinux setenforce 0 sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config

2. 安装依赖库(所有 Tracker/Storage 节点)

dnf -y install zlib-devel gcc* libtool pcre-devel libevent # 安装libfastcommon tar zxvf libfastcommon-1.0.36.tar.gz cd libfastcommon-1.0.36 ./make.sh && ./make.sh install cp /usr/lib64/libfastcommon.so /usr/lib

3. 安装 FastDFS(所有 Tracker/Storage 节点)

tar zxvf fastdfs-5.11.tar.gz cd fastdfs-5.11 ./make.sh && ./make.sh install

4. 配置 Tracker Server(101/102 节点)

# 复制配置文件 cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf vi /etc/fdfs/tracker.conf # 修改内容 disabled=false port=22122 base_path=/fastdfs/tracker store_group=group1 # 创建目录并启动 mkdir -p /fastdfs/tracker /etc/init.d/fdfs_trackerd start

5. 配置 Storage Server(103/104 节点)

# 复制配置文件 cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf vi /etc/fdfs/storage.conf # 修改内容 disabled=false port=23000 base_path=/fastdfs/storage store_path0=/fastdfs/storage tracker_server=192.168.10.101:22122 tracker_server=192.168.10.102:22122 group_name=group1 http.server_port=8888 # 创建目录并启动 mkdir -p /fastdfs/storage /etc/init.d/fdfs_storaged start ps -ef | grep fdfs_storaged

6. 配置 Client(任意节点)

cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf vi /etc/fdfs/client.conf base_path=/fastdfs/tracker tracker_server=192.168.10.101:22122 tracker_server=192.168.10.102:22122

7. 测试上传文件

# 上传测试 fdfs_upload_file /etc/fdfs/client.conf logo.jpg # 返回示例 group1/M00/00/00/wKgKaGadD5aAZBiJAAFMnKMUrMI833.jpg # 查看实际存储路径 ll /fastdfs/storage/data/00/00/

8. Storage 节点安装 Nginx + fastdfs-nginx-module

# 解压模块 tar zxvf fastdfs-nginx-module_v1.16.tar.gz # 编译Nginx tar zxvf nginx-1.19.5.tar.gz cd nginx-1.19.5 useradd nginx cp /usr/include/fastcommon/* /usr/include/fastdfs/ ./configure \ --add-module=/root/fastdfs-nginx-module/src \ --prefix=/usr/local/nginx \ --with-cc-opt="-Wno-error=format-truncation" make && make install ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
配置 mod_fastdfs.conf
cp /root/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/ vi /etc/fdfs/mod_fastdfs.conf connect_timeout=10 base_path=/tmp tracker_server=192.168.10.101:22122 tracker_server=192.168.10.102:22122 url_have_group_name=true group_name=group1 storage_server_port=23000 store_path_count=1 store_path0=/fastdfs/storage # 复制配置 cp /root/fastdfs-5.11/conf/http.conf /etc/fdfs cp /root/fastdfs-5.11/conf/mime.types /etc/fdfs # 创建软链接 ln -s /fastdfs/storage/data /fastdfs/storage/M00
Nginx 配置
vi /usr/local/nginx/conf/nginx.conf location /group1/M00 { ngx_fastdfs_module; } # 启动Nginx nginx

9. 部署 Nginx 代理(105 节点)

# 安装Nginx tar zxvf nginx-1.19.5.tar.gz cd nginx-1.19.5 useradd nginx ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx make && make install ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ # 配置负载均衡 vi /usr/local/nginx/conf/nginx.conf upstream storage_server_group1 { server 192.168.10.103:80 weight=1; server 192.168.10.104:80 weight=1; } server { listen 80; location / { proxy_pass http://storage_server_group1; } } # 重启 nginx -s reload

10. 访问测试

http://192.168.10.105/group1/M00/00/00/xxx.jpg

四、关键原理

  1. 上传流程:Client → Tracker 查询可用 Storage → 上传文件 → 生成 FileID → 返回路径。
  2. 下载流程:Client → Tracker 解析 FileID 定位 Storage → 读取文件。
  3. Nginx 作用:解决同步延迟问题,提供 HTTP 访问,支持负载均衡。

五、常用命令

  • 启动 Tracker:/etc/init.d/fdfs_trackerd start
  • 启动 Storage:/etc/init.d/fdfs_storaged start
  • 上传文件:fdfs_upload_file 配置文件 本地文件

六、总结

FastDFS 是轻量级分布式文件系统,适合中小文件存储,由Tracker 调度Storage 分组存储Client三部分组成。通过部署 Tracker 与 Storage 集群,搭配 Nginx 实现 HTTP 访问与负载均衡,可快速搭建高可用、易扩展的分布式存储服务。

http://www.jsqmd.com/news/695600/

相关文章:

  • 如何轻松实现i茅台自动预约:告别早起抢购的终极解决方案
  • 彩云岛去水印
  • 暗黑破坏神2角色编辑器:5分钟掌握Diablo Edit2终极指南
  • 光伏MMC并网系统(两级式)交流故障穿越与电网对称与不对称故障:simulink仿真模型及光伏经模
  • 别再只读ADC值了!STM32标准库下光敏传感器的校准与标定实战
  • Python脚本参数传递与命令行工具开发实战
  • 别再手动加标签了!用MATLAB的text函数给你的图表自动添加专业注释(附TeX公式教程)
  • 无人机视角田间土豆马铃薯苗和杂草检测数据集VOC+YOLO格式384张5类别
  • MySQL主从复制支持跨版本吗_不同版本间同步的注意事项
  • 电话营销机器人,智能语音外呼获客系统
  • 从厨房秤到智能仓储:HX711的增益、标定与线性拟合,让你的项目精度提升一个档次
  • 盘古50K开发板PCIE性能初探:如何利用PGL50H的HSST高速收发器进行通信验证
  • SVD降维技术解析与Python实战指南
  • OceanBase-Desktop-Setup-1.0.0.exe
  • OpenUI:用流式语言标准解决AI生成UI的解析与渲染难题
  • 框架之战——Infoseek舆情系统解析回应如何塑造公众认知
  • 5分钟免费升级:如何在Word中启用APA第7版参考文献格式
  • 完整指南:如何在UKB_RAP上高效完成生物医学数据分析的5个关键步骤
  • 2026年自贡补牙根管机构排行:自贡整牙,自贡替牙期牙齿矫正,自贡根尖周炎治疗,自贡正畸,优选指南! - 优质品牌商家
  • 机器学习中的距离度量:原理、实现与应用
  • 炸场!不排队的满血Seedance 2.0原生1080P登陆AniShort,AI短剧画质天花板来了
  • OceanBase-Desktop-Setup-1.6.0.exe
  • 预警响应闭环与历史数据能力——Infoseek舆情系统谈两个被忽视的基础设施
  • 告别图片格式烦恼:Chrome右键菜单的格式转换神器
  • 配置windows定时自动重启
  • 用MATLAB复现SS-MUSIC算法:从相干信号处理到DOA估计实战(附完整代码)
  • 基于Intel 8088 CPU控制LCM4002A字符型液晶的驱动程序
  • C++ MCP网关延迟突增23ms?别再查业务逻辑了——从RDTSC时间戳校准到Intel RAPL功耗反推,定位硬件级性能陷阱
  • 32位单片机时代再看8051单片机诞生的开创性的意义
  • WiFi 7国内受限:值不值得买?