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

FastDFS 6.11.0 单机环境搭建与测试(附 Nginx 集成)+ docker构建+k8s启动文件

文章目录

  • FastDFS 简介
  • FastDFS 的核心组成
  • 为什么要用 FastDFS
  • 环境与软件准备
  • 软件包准备
    • csdn包下载
  • 安装与配置
  • 安装基础依赖
    • 安装 libfastcommon
    • 安装 libserverframe(6.09+ 必须安装)
    • 安装 FastDFS
    • 安装 fastdfs-nginx-module 模块
    • 编译安装 Nginx
  • 配置与启动
    • Tracker
    • Storage
    • Client 配置与测试上传
    • nginx 配置启动
  • Dockerfile编写
    • Dockerfile
    • nginx.conf
    • entrypoint.sh
    • mod_fastdfs.conf
    • storage.conf
    • tracker.conf
    • 构建
  • docker+k8s启动
    • docker-compose.yml
    • k8s-tracker.yaml
    • k8s-storage.yaml
  • 测试
    • 自带fdfs_test命令
    • python脚本测试
  • 常见问题
  • 总结与建议


FastDFS 简介

FastDFS 是一款开源的分布式文件存储系统,由淘宝资深架构师余庆开发并维护。它专门针对互联网海量小文件存储而设计,支持高性能的文件上传、下载以及文件同步功能。


FastDFS 的核心组成

FastDFS 主要由三个角色组成:

  • Tracker(跟踪服务器)
    管理 Storage 节点,提供文件上传、下载的路由功能,类似“目录服务”。

  • Storage(存储服务器)
    负责实际的文件存储和访问,每个 Storage 节点可以划分多个 group(组)。

  • Client(客户端)
    通过 SDK 或命令行与 Tracker 通信,实现文件上传和下载。


为什么要用 FastDFS

  • 适用于 海量小文件 存储,例如图片、音视频、日志文件。
  • 分布式、可横向扩展
  • 自动同步与负载均衡,无需额外配置。
  • 相比传统 NFS,性能和可用性更优。

本文演示的是 FastDFS 6.11.0 单机环境搭建,适合本地开发与功能验证,生产环境建议使用集群部署。


环境与软件准备

组件版本说明
FastDFS6.11.0文件存储核心服务
FastDFS-Nginx-Module1.24Nginx 模块,用于 HTTP 文件访问
libfastcommon1.0.71FastDFS 依赖库
libserverframe1.2.1FastDFS 6.09+ 必须依赖库
Nginx1.24.0作为文件访问的 Web 服务器
系统Rocky 9.2 (Blue Onyx)/7.9其他 Linux 发行版类似

注: 目前博主用过两个系统部署,都成功起来了

  • centos7.9.2009
  • Rocky Linux release 9.2 (Blue Onyx)

软件包准备

  • libfastcommon-1.0.71.tar.gz
  • libserverframe-1.2.1.tar.gz
  • fastdfs-6.11.0.tar.gz
  • fastdfs-nginx-module-1.24.tar.gz
  • nginx-1.24.0.tar.gz

csdn包下载

下载

文件名说明
docker-compose.ymlDocker Compose 配置文件,用于快速编排并启动 FastDFS 服务。
Dockerfile自定义镜像构建文件,定义 FastDFS + Nginx 的构建步骤。
entrypoint.sh容器启动脚本,负责启动 tracker、storage 服务及 Nginx。
fastdfs-6.11.0.tar.gzFastDFS 核心源码包,提供 tracker、storage、client 功能。
fastdfs-nginx-module-1.24.tar.gzFastDFS 的 Nginx 模块源码包,用于文件的 HTTP 访问。
k8s-storage.yamlKubernetes Storage 部署配置文件。
k8s-tracker.yamlKubernetes Tracker 部署配置文件。
libfastcommon-1.0.71.tar.gzFastDFS 所需的公共函数库,必须先安装。
libserverframe-1.2.1.tar.gzFastDFS 所需的服务器框架库,部分新版本依赖该库。
mod_fastdfs.confFastDFS Nginx 模块配置文件,定义 group 名称、tracker 地址及文件访问映射。
nginx-1.24.0.tar.gzNginx 源码包,用于编译并集成 FastDFS 模块。
nginx.confNginx 主配置文件,用于加载 FastDFS 模块和文件访问规则。
storage.confStorage 服务配置文件,定义存储路径、tracker 地址及端口等。
tracker.confTracker 服务配置文件,定义 tracker 的监听端口、日志路径、存储调度策略等。

安装与配置

安装基础依赖

yum install -y epel-release
yum install -y git gcc gcc-c++ make wget pcre pcre-devel zlib zlib-devel openssl openssl-devel vim && \
yum clean all

安装 libfastcommon

FastDFS 依赖的公共函数库

tar xf libfastcommon-1.0.71.tar.gz -C /usr/local/
cd /usr/local/libfastcommon-1.0.71/
./make.sh
./make.sh install

安装 libserverframe(6.09+ 必须安装)

tar xf libserverframe-1.2.1.tar.gz -C /usr/local/
cd /usr/local/libserverframe-1.2.1/
./make.sh
./make.sh install

安装 FastDFS

tar xf fastdfs-6.11.0.tar.gz -C /usr/local/
cd /usr/local/fastdfs-6.11.0/
./make.sh
./make.sh install

安装完成后,主要的配置文件位于 /etc/fdfs


安装 fastdfs-nginx-module 模块

tar xf fastdfs-nginx-module-1.24.tar.gz -d /usr/local/
cd /usr/local/fastdfs-nginx-module-1.24/
sed -i 's#local/##g' src/config

编译安装 Nginx

tar -xf /usr/local/nginx-1.24.0.tar.gz -C /usr/local/
cd /usr/local/nginx-1.24.0
./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=/usr/local/fastdfs-nginx-module-1.24/src
make
make install

配置与启动

Tracker

或者直接看下边tracker.conf

cd /etc/fdfs/
vi tracker.conf# 配置关键项
base_path = /var/fastdfs

创建目录并启动:

mkdir -p /var/fastdfs
# 启动
fdfs_trackerd /etc/fdfs/tracker.conf start
# 检查
ps aux | grep tracker
# 重启
fdfs_trackerd /etc/fdfs/tracker.conf restart
# 停止
fdfs_trackerd /etc/fdfs/tracker.conf stop
# 状态
fdfs_trackerd /etc/fdfs/tracker.conf status
# 查看版本
fdfs_trackerd /etc/fdfs/tracker.conf -V
# 帮助
fdfs_trackerd /etc/fdfs/tracker.conf -h

Storage

或者直接看下边storage.conf

cd /etc/fdfs/
vi storage.confbase_path = /var/fastdfs
group_name = group1
store_path0 = /var/fastdfs
tracker_server = 192.168.1.2:22122

创建目录并启动:

mkdir -p /var/fastdfs
# 启动
fdfs_storaged /etc/fdfs/storage.conf start
# 查看进程
ps aux | grep storage
# 重启
fdfs_storaged /etc/fdfs/storage.conf restart
# 停止
fdfs_storaged/etc/fdfs/storage.conf stop
# 状态
fdfs_storaged /etc/fdfs/storage.conf status
# 查看版本
fdfs_storaged/etc/fdfs/storage.conf -V
# 帮助
fdfs_storaged/etc/fdfs/storage.conf -h

Client 配置与测试上传

cd /etc/fdfs/
vi client.confbase_path = /var/fastdfs
tracker_server = 192.168.1.2:22122

创建目录并测试:

mkdir -p /var/fastdfs
fdfs_test /etc/fdfs/client.conf upload ./01.png

nginx 配置启动

可以直接复制下边的nginx.conf
复制 FastDFS 配置:

cp /usr/local/fastdfs-6.11.0/conf/http.conf /etc/fdfs/
cp /usr/local/fastdfs-6.11.0/conf/mime.types /etc/fdfs/
# 启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

插个图片,这是/etc/fdfs下所有文件
storage_ids.conf 这个是启动后生成的,其他配置博文都有
在这里插入图片描述


Dockerfile编写

注: 自行变更配置文件,不变更也可以

首先所有软件放到同一个目录下,再linux下进行的

文件名说明
Dockerfile用于构建 FastDFS + Nginx 镜像的核心文件,定义了基础镜像、依赖安装及环境变量等。
entrypoint.sh容器启动脚本,通常用于启动 trackerstorage 服务,并可附加执行 Nginx、日志输出等命令。
fastdfs-6.11.0.tar.gzFastDFS 的核心程序源码包,提供 tracker、storage、client 的核心功能。
libfastcommon-1.0.71.tar.gzFastDFS 运行所依赖的公共函数库,必须先安装。
libserverframe-1.2.1.tar.gzFastDFS 所需的服务器框架库,部分新版本依赖该库。
nginx-1.24.0.tar.gzNginx 源码包,用于编译并集成 FastDFS 模块。
fastdfs-nginx-module-1.24.tar.gzNginx 的 FastDFS 模块源码包,用于实现 FastDFS 文件的 Web 访问。
tracker.confTracker 服务的配置文件,用于定义 tracker 的监听端口、日志路径、存储调度策略等。
storage.confStorage 服务的配置文件,指定存储路径、Tracker 地址、端口及存储策略。
mod_fastdfs.confNginx FastDFS 模块的配置文件,定义 group 名称、tracker 地址及文件访问路径映射规则。
nginx.confNginx 的主配置文件,需在其中加载 FastDFS 模块并配置文件访问规则。

Dockerfile

FROM docker.wctmd.us.kg/centos:centos7.9.2009LABEL maintainer="XMYX-0" \version="1.0" \description="FastDFS 6.11.0 + Nginx 1.24 + fastdfs-nginx-module 1.24"WORKDIR /usr/local# 替换国内阿里云镜像源
RUN cd /etc/yum.repos.d/ && \sed -i.bak 's|^mirrorlist=|#mirrorlist=|g' CentOS-*.repo && \sed -i.bak 's|^#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g' CentOS-*.repo && \yum clean all && yum makecache# 1. 安装基础依赖
RUN yum install -y epel-release && \yum install -y git gcc gcc-c++ make wget pcre pcre-devel zlib zlib-devel openssl openssl-devel vim && \yum clean all# 2. 拷贝源码文件(提前放到 Docker 构建上下文)
COPY libfastcommon-1.0.71.tar.gz .
COPY libserverframe-1.2.1.tar.gz .
COPY fastdfs-6.11.0.tar.gz .
COPY fastdfs-nginx-module-1.24.tar.gz .
COPY nginx-1.24.0.tar.gz .# 3. 编译安装 libfastcommon
RUN tar xf libfastcommon-1.0.71.tar.gz -C /usr/local/ && \cd /usr/local/libfastcommon-1.0.71 && \./make.sh && ./make.sh install# 4. 编译安装 libserverframe
RUN tar xf libserverframe-1.2.1.tar.gz -C /usr/local/ && \cd /usr/local/libserverframe-1.2.1 && \./make.sh && ./make.sh install# 5. 编译安装 FastDFS
RUN tar xf fastdfs-6.11.0.tar.gz -C /usr/local/ && \cd /usr/local/fastdfs-6.11.0 && \./make.sh && ./make.sh install && \mkdir -p /opt/fastdfs/{tracker,storage/log,storage/file,tmp,client}# 6. 编译安装 Nginx + fastdfs-nginx-module
RUN tar xf fastdfs-nginx-module-1.24.tar.gz -C /usr/local/ && \cd /usr/local/fastdfs-nginx-module-1.24 && \sed -i 's#local/##g' src/config && \tar -xf /usr/local/nginx-1.24.0.tar.gz -C /usr/local/ && \cd /usr/local/nginx-1.24.0 && \./configure \--prefix=/usr/local/nginx \--with-http_ssl_module \--add-module=/usr/local/fastdfs-nginx-module-1.24/src && \make && make install# 7. 配置 FastDFS & Nginx (先拷贝默认配置文件,支持后期通过挂载覆盖)
RUN cp /usr/local/fastdfs-6.11.0/conf/* /etc/fdfs/ && \cp /usr/local/fastdfs-nginx-module-1.24/src/mod_fastdfs.conf /etc/fdfs/ && \cp /usr/local/fastdfs-6.11.0/conf/http.conf /etc/fdfs/ && \cp /usr/local/fastdfs-6.11.0/conf/mime.types /etc/fdfs/COPY tracker.conf /etc/fdfs/tracker.conf
COPY storage.conf /etc/fdfs/storage.conf
COPY client.conf /etc/fdfs/client.conf
COPY mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf
COPY nginx.conf /usr/local/nginx/conf/nginx.conf# 8. 暴露端口
EXPOSE 22122 23000 80# 9. 数据卷挂载
# VOLUME ["/opt/fastdfs/tracker", "/opt/fastdfs/storage"]# 10. 启动脚本
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.shCMD ["/entrypoint.sh"]# 11. 清理无用文件
RUN rm -rf /usr/local/*.tar.gz
# 在编译安装后删除源码压缩包和解压目录
#RUN rm -rf /usr/local/libfastcommon-1.0.71* \
#           /usr/local/libserverframe-1.2.1* \
#           /usr/local/fastdfs-6.11.0* \
#           /usr/local/fastdfs-nginx-module-1.24* \
#           /usr/local/nginx-1.24.0* \
#           /usr/local/*.tar.gz

nginx.conf

user root;
worker_processes  1;pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';sendfile        on;keepalive_timeout  65;client_max_body_size 100M;server {listen       8888;server_name  localhost;location / {root   html;index  index.html index.htm;}location ~/group([0-9])/M00 {ngx_fastdfs_module;}}}

entrypoint.sh

#!/bin/bash
set -e### 1. 默认环境变量设置 ###
: ${FASTDFS_BASE_PATH:=/var/fdfs}
: ${GROUP_NAME:=group1}
: ${PORT:=22122}
: ${TRACKER_SERVER:=127.0.0.1:22122}FASTDFS_MODE="tracker"  # 默认运行 tracker
LOG_DIR="${FASTDFS_BASE_PATH}/logs"
mkdir -p "${LOG_DIR}"### 2. 解析模式参数 ###
case "$1" intracker)FASTDFS_MODE="tracker";;storage)FASTDFS_MODE="storage";;monitor)sed -i "s|tracker_server=.*$|tracker_server=${TRACKER_SERVER}|g" /etc/fdfs/client.confexec fdfs_monitor /etc/fdfs/client.conf;;all)FASTDFS_MODE="all";;*)echo "Usage: $0 {tracker|storage|monitor|all}"exit 1;;
esac### 3. 配置文件动态替换 ###
if [ "$FASTDFS_MODE" = "storage" ] || [ "$FASTDFS_MODE" = "all" ]; thensed -i "s|store_path0.*$|store_path0=/var/fdfs|g" /etc/fdfs/mod_fastdfs.confsed -i "s|url_have_group_name =.*$|url_have_group_name = true|g" /etc/fdfs/mod_fastdfs.conf
fiif [ "$FASTDFS_MODE" != "all" ]; then# tracker 或 storage 模式sed -i "s|^port=.*$|port=${PORT}|g" /etc/fdfs/${FASTDFS_MODE}.confsed -i "s|tracker_server=.*$|tracker_server=${TRACKER_SERVER}|g" /etc/fdfs/storage.confsed -i "s|tracker_server=.*$|tracker_server=${TRACKER_SERVER}|g" /etc/fdfs/client.confsed -i "s|tracker_server=.*$|tracker_server=${TRACKER_SERVER}|g" /etc/fdfs/mod_fastdfs.confsed -i "s|group_name=.*$|group_name=${GROUP_NAME}|g" /etc/fdfs/storage.confsed -i "s|group_name=.*$|group_name=${GROUP_NAME}|g" /etc/fdfs/mod_fastdfs.conf
fi### 4. 启动服务并记录日志文件 ###
start_service() {local mode=$1local conf="/etc/fdfs/${mode}.conf"local log_file="${LOG_DIR}/${mode}d.log"local pid_file="${FASTDFS_BASE_PATH}/data/fdfs_${mode}d.pid"echo "Starting ${mode} service..."# ✅ 清理遗留 PID 文件(关键)[ -f "$pid_file" ] && echo "Removing old pid: $pid_file" && rm -f "$pid_file"[ -f "$log_file" ] && echo "Removing old log: $log_file" && rm -f "$log_file"fdfs_${mode}d "$conf" start
}### 5. 优雅停止处理 ###
stop_service() {echo "Stopping services..."if [ "$FASTDFS_MODE" = "all" ]; thenfdfs_storaged /etc/fdfs/storage.conf stop || truefdfs_trackerd /etc/fdfs/tracker.conf stop || trueelsefdfs_${FASTDFS_MODE}d /etc/fdfs/${FASTDFS_MODE}.conf stop || truefi/usr/local/nginx/sbin/nginx -s quit || trueexit 0
}
trap stop_service SIGTERM SIGINT### 6. 启动对应模式 ###
if [ "$FASTDFS_MODE" = "all" ]; thenstart_service "tracker"start_service "storage"/usr/local/nginx/sbin/nginxtail -F "${LOG_DIR}/trackerd.log" "${LOG_DIR}/storaged.log"
else[ "$FASTDFS_MODE" = "storage" ] && /usr/local/nginx/sbin/nginxstart_service "$FASTDFS_MODE"tail -F "${LOG_DIR}/${FASTDFS_MODE}d.log"
fi

mod_fastdfs.conf

connect_timeout=10
network_timeout=30
base_path=/tmp
load_fdfs_parameters_from_tracker=true
storage_sync_file_max_delay = 86400
use_storage_id = false
storage_ids_filename = storage_ids.conf
tracker_server=127.0.0.1:22122
storage_server_port=23000
group_name=group1
url_have_group_name = true
store_path_count=1
store_path0=/var/fdfs
log_level=info
log_filename=
response_mode=proxy
if_alias_prefix=
flv_support = true
flv_extension = flv
group_count = 0
# 这里注意mime.types是再nginx编译出来的,可以拷贝走,我懒
http.mime_types_filename=/usr/local/nginx/conf/mime.types
http.default_content_type=application/octet-stream

storage.conf

disabled=false
group_name=group1
bind_addr=
client_bind=true
port=23000
connect_timeout=30
network_timeout=60
heart_beat_interval=30
stat_report_interval=60
base_path=/var/fdfs
max_connections=256
buff_size = 256KB
accept_threads=1
work_threads=4
disk_rw_separated = true
disk_reader_threads = 1
disk_writer_threads = 1
sync_wait_msec=50
sync_interval=0
sync_start_time=00:00
sync_end_time=23:59
write_mark_file_freq=500
store_path_count=1
store_path0=/var/fdfs
subdir_count_per_path=256
tracker_server=127.0.0.1:22122
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
file_distribute_path_mode=0
file_distribute_rotate_count=100
fsync_after_written_bytes=0
sync_log_buff_interval=10
sync_binlog_buff_interval=10
sync_stat_file_interval=300
thread_stack_size=512KB
upload_priority=10
if_alias_prefix=
check_file_duplicate=0
file_signature_method=hash
key_namespace=FastDFS
keep_alive=0
use_access_log = false
rotate_access_log = false
access_log_rotate_time=00:00
rotate_error_log = false
error_log_rotate_time=00:00
rotate_access_log_size = 0
rotate_error_log_size = 0
log_file_keep_days = 0
file_sync_skip_invalid_record=false
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.domain_name=
http.server_port=8888

tracker.conf

disabled=false
bind_addr=
port=22122
connect_timeout=30
network_timeout=60
base_path=/var/fdfs
max_connections=256
accept_threads=1
work_threads=4
min_buff_size = 8KB
max_buff_size = 128KB
store_lookup=2
store_group=group2
store_server=0
store_path=0
download_server=0
reserved_storage_space = 10%
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
sync_log_buff_interval = 10
check_active_interval = 120
thread_stack_size = 64KB
storage_ip_changed_auto_adjust = true
storage_sync_file_max_delay = 86400
storage_sync_file_max_time = 300
use_trunk_file = false 
slot_min_size = 256
slot_max_size = 16MB
trunk_file_size = 64MB
trunk_create_file_advance = false
trunk_create_file_time_base = 02:00
trunk_create_file_interval = 86400
trunk_create_file_space_threshold = 20G
trunk_init_check_occupying = false
trunk_init_reload_from_binlog = false
trunk_compress_binlog_min_interval = 0
use_storage_id = false
storage_ids_filename = storage_ids.conf
id_type_in_filename = ip
store_slave_file_use_link = false
rotate_error_log = false
error_log_rotate_time=00:00
rotate_error_log_size = 0
log_file_keep_days = 0
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.server_port=8080
http.check_alive_interval=30
http.check_alive_type=tcp
http.check_alive_uri=/status.html

构建

一切准备就绪直接进行构建

docker build -t fastdfs-nginx:6.11.0-20250722 .

docker+k8s启动

注: 先启动tracker,再启动storage,下边镜像自行替换,k8s我是挂载的目录,可以自行修改挂载到pv

docker-compose.yml

version: '3.8'services:tracker:image: fastdfs-nginx:6.11.0container_name: fastdfs-trackerenvironment:FASTDFS_BASE_PATH: /var/fdfsports:- "22122:22122"volumes:- /data/tracker:/var/fdfsrestart: alwayscommand: ["/entrypoint.sh", "tracker"]storage:image: fastdfs-nginx:6.11.0container_name: fastdfs-storageenvironment:TRACKER_SERVER: tracker:22122   # 使用服务名,自动DNS解析PORT: 23000ports:- "23000:23000"- "8888:8888"volumes:- /data/storage:/var/fdfsdepends_on:- trackerrestart: alwayscommand: ["/entrypoint.sh", "storage"]

k8s-tracker.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: fastdfs-trackernamespace: test
spec:replicas: 1selector:matchLabels:app: fastdfs-trackerstrategy:rollingUpdate:maxSurge: 25%maxUnavailable: 25%type: RollingUpdatetemplate:metadata:creationTimestamp: nulllabels:app: fastdfs-trackerspec:containers:- command:- /bin/bash- /entrypoint.sh- trackerenv:- name: FASTDFS_BASE_PATHvalue: /var/fdfs- name: PORTvalue: "22122"- name: TRACKER_SERVERvalue: fastdfs-tracker:22122image: fastdfs-nginx:6.11.0imagePullPolicy: IfNotPresentname: trackerports:- containerPort: 22122hostPort: 22122protocol: TCPvolumeMounts:- mountPath: /var/fdfsname: tracker-volume#hostNetwork: truevolumes:- hostPath:path: /data/fastdfs/trackertype: ""name: tracker-volume
---
apiVersion: v1
kind: Service
metadata:name: fastdfs-trackernamespace: test
spec:ipFamilyPolicy: SingleStackports:- name: fastdfs-trackerport: 22122protocol: TCPtargetPort: 22122selector:app: fastdfs-trackersessionAffinity: Nonetype: NodePort

k8s-storage.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: fastdfs-storagenamespace: test
spec:replicas: 1selector:matchLabels:app: fastdfs-storagestrategy:rollingUpdate:maxSurge: 25%maxUnavailable: 25%type: RollingUpdatetemplate:metadata:creationTimestamp: nulllabels:app: fastdfs-storagespec:containers:- command:- /bin/bash- /entrypoint.sh- storageenv:- name: TRACKER_SERVERvalue: fastdfs-tracker:22122- name: PORTvalue: "23000"image: fastdfs-nginx:6.11.0imagePullPolicy: IfNotPresentname: storageports:- containerPort: 23000hostPort: 23000protocol: TCP- containerPort: 8888hostPort: 8888protocol: TCPvolumeMounts:- mountPath: /var/fdfsname: storage-volume#hostNetwork: truevolumes:- hostPath:path: /data/fastdfs/storagetype: ""name: storage-volume
---
apiVersion: v1
kind: Service
metadata:name: fastdfs-storagenamespace: test
spec:ipFamilyPolicy: SingleStackports:- name: fastdfs-storageport: 23000protocol: TCPtargetPort: 23000- name: fastdfs-storage-httpport: 8888protocol: TCPtargetPort: 8888selector:app: fastdfs-storagesessionAffinity: Nonetype: NodePort

测试

自带fdfs_test命令

fdfs_test /etc/fdfs/client.conf upload ./aaa.jpeg

在这里插入图片描述


python脚本测试

这里博主放置两个脚本,分别是测试fastdfs5.X 和fastdfs 6.X的,两个是不一样,图片自行配置

  • client.conf

    # 这个不分版本,记得修改地址
    connect_timeout=30
    network_timeout=60
    base_path=/tmp
    tracker_server=192.168.1.2:22122
    log_level=info
    
  • f5.py

    # fastdfs 5.X
    from fdfs_client.client import Fdfs_client, get_tracker_confdef test_fastdfs_upload():# 加载配置文件路径conf_path = './client.conf'  # 请根据实际路径调整client = Fdfs_client(conf_path)# 上传文件(根据实际文件名改)filename = './aaa.jpeg'try:result = client.upload_by_filename(filename)print("上传结果:", result)except Exception as e:print("上传出错:", e)if __name__ == '__main__':test_fastdfs_upload()
    
  • f6.py
    fastdfs-client的github地址

    pip install fastdfs-client
    
    # fastdfs 6.X
    from fastdfs_client import FastdfsClientclient = FastdfsClient('./client.conf')
    print('1')
    res = client.upload_by_filename('./aaa.jpeg')
    print('2')
    print("上传结果:", res)
    

执行结果参考

[root@sonar test]# python3 f5.py 
上传结果: {'Group name': 'group1', 'Remote file_id': 'group1/M00/0A/0F/Cv9lHmh_V8qAWtmJAACatpnOrTc65.jpeg', 'Status': 'Upload successed.', 'Local file name': './aaa.jpeg', 'Uploaded size': '38.68KB', 'Storage IP': '192.168.1.3'}
[root@sonar test]# python3 f6.py 
1
2
上传结果: {'Group name': 'group1', 'Remote file_id': 'group1/M00/0A/0F/Cv9lHmh_V86AfIy3AACatpnOrTc23.jpeg', 'Status': 'Upload successed.', 'Local file name': './aaa.jpeg', 'Uploaded size': '38.68KB', 'Storage IP': '192.168.1.2'}
[root@sonar test]# 

常见问题

  1. 访问 404
    检查 mod_fastdfs.confstore_path0 是否与 storage.conf 保持一致。

  2. Nginx 启动无 Worker
    检查 /var/log/nginx/error.log,确认 mod_fastdfs.conf 配置正确。

  3. Tracker 显示磁盘空间为 0
    确保 store_path0 目录存在且权限正确。

  4. 存储剩余10%时候fastdfs上传失败
    检查tracker.conf中的reserved_storage_space值,默认是10%可以自行更改

  5. k8s重启问题
    注意存储下边的storage/data/fdfs_storaged.pid是否被清理tracker/data/fdfs_trackerd.pid


总结与建议

  • 单机环境 适合功能验证,生产环境建议 多 Tracker + 多 Storage 集群
  • 定期清理日志,避免 base_path 空间被占满。
http://www.xdnf.cn/news/1166887.html

相关文章:

  • Linux异常与信号处理
  • 浙江大学PTA程序设计C语言基础编程练习题1-5
  • 【论文阅读 | TIV 2024 | CDC-YOLOFusion:利用跨尺度动态卷积融合实现可见光-红外目标检测】
  • 边缘计算网关赋能智慧农业:物联网边缘计算的创新应用与实践
  • 【每日算法】专题九_链表
  • python-FTP爆破脚本(phpstudy)-一点bug记录
  • C++性能优化擂台技术文章大纲
  • Unity笔记——事件中心
  • Web3介绍(Web 3.0)(一种基于区块链技术的去中心化互联网范式,旨在通过技术手段实现用户对数据的自主权、隐私保护和价值共享)
  • 算法第26天|贪心算法:用最少数量的箭引爆气球、无重叠区间、划分字母区间
  • solidity从入门到精通 第二章:Solidity初相见
  • AI 音频产品开发模板及流程(二)
  • 数据结构 堆(2)---堆的实现
  • Markdown 转 PDF API 数据接口
  • Android ViewModel 深度解析:原理、使用与最佳实践
  • Redis——Redis进阶命令集详解(下)
  • Docker Compose UI远程访问教程:结合贝锐花生壳实现内网穿透
  • Qt中QObject类的核心作用与使用
  • C++函数 vs Go函数
  • Qt基本控件使用:按钮、标签、文本框等
  • 【打怪升级 - 01】保姆级机器视觉入门指南:硬件选型 + CUDA/cuDNN/Miniconda/PyTorch 安装全流程(附版本匹配秘籍)
  • Kotlin多线程调试
  • freertos关键函数理解 uxListRemove
  • 拼多多视觉算法面试30问全景精解
  • 【AI时代速通QT】第五节:Qt Creator如何引入第三方库,以OpenCV为例
  • 《汇编语言:基于X86处理器》第9章 字符串和数组(2)
  • 库制作与原理
  • Vue 3 面试题全套题库
  • Elasticsearch安装指南
  • 【集群】MySQL的主从复制了解吗?会有延迟吗,原因是什么?