FastDFS 分布式存储
一、核心概念FastDFS开源轻量级分布式文件系统适合4KB~500MB中小文件存储图片 / 视频 / 文档。三大角色Tracker Server调度中心负载均衡、状态管理无持久化数据。Storage Server存储节点按Group分组同组数据互为备份。Client上传 / 下载客户端提供 API 接口。文件 ID 结构group1/M00/00/00/xxx.jpggroup1组名M00虚拟磁盘路径00/00两级哈希目录xxx文件名。二、实验环境OpenEuler角色IP主机名Tracker1192.168.10.101tracker01Tracker2192.168.10.102tracker02Storage1192.168.10.103storage1Storage2192.168.10.104storage2Nginx 代理192.168.10.105nginx三、实验步骤1. 基础环境配置所有节点# 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 关闭SELinux setenforce 0 sed -i s/^SELINUX.*/SELINUXdisabled/g /etc/selinux/config2. 安装依赖库所有 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/lib3. 安装 FastDFS所有 Tracker/Storage 节点tar zxvf fastdfs-5.11.tar.gz cd fastdfs-5.11 ./make.sh ./make.sh install4. 配置 Tracker Server101/102 节点# 复制配置文件 cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf vi /etc/fdfs/tracker.conf # 修改内容 disabledfalse port22122 base_path/fastdfs/tracker store_groupgroup1 # 创建目录并启动 mkdir -p /fastdfs/tracker /etc/init.d/fdfs_trackerd start5. 配置 Storage Server103/104 节点# 复制配置文件 cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf vi /etc/fdfs/storage.conf # 修改内容 disabledfalse port23000 base_path/fastdfs/storage store_path0/fastdfs/storage tracker_server192.168.10.101:22122 tracker_server192.168.10.102:22122 group_namegroup1 http.server_port8888 # 创建目录并启动 mkdir -p /fastdfs/storage /etc/init.d/fdfs_storaged start ps -ef | grep fdfs_storaged6. 配置 Client任意节点cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf vi /etc/fdfs/client.conf base_path/fastdfs/tracker tracker_server192.168.10.101:22122 tracker_server192.168.10.102:221227. 测试上传文件# 上传测试 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-errorformat-truncation make make install ln -s /usr/local/nginx/sbin/* /usr/local/sbin/配置 mod_fastdfs.confcp /root/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/ vi /etc/fdfs/mod_fastdfs.conf connect_timeout10 base_path/tmp tracker_server192.168.10.101:22122 tracker_server192.168.10.102:22122 url_have_group_nametrue group_namegroup1 storage_server_port23000 store_path_count1 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/M00Nginx 配置vi /usr/local/nginx/conf/nginx.conf location /group1/M00 { ngx_fastdfs_module; } # 启动Nginx nginx9. 部署 Nginx 代理105 节点# 安装Nginx tar zxvf nginx-1.19.5.tar.gz cd nginx-1.19.5 useradd nginx ./configure --prefix/usr/local/nginx --usernginx --groupnginx 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 weight1; server 192.168.10.104:80 weight1; } server { listen 80; location / { proxy_pass http://storage_server_group1; } } # 重启 nginx -s reload10. 访问测试http://192.168.10.105/group1/M00/00/00/xxx.jpg四、关键原理上传流程Client → Tracker 查询可用 Storage → 上传文件 → 生成 FileID → 返回路径。下载流程Client → Tracker 解析 FileID 定位 Storage → 读取文件。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 访问与负载均衡可快速搭建高可用、易扩展的分布式存储服务。