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
- client.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 单机环境搭建,适合本地开发与功能验证,生产环境建议使用集群部署。
环境与软件准备
注:
目前博主用过两个系统部署,都成功起来了
- 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包下载
下载
安装与配置
安装基础依赖
yum install -y epel-releaseyum 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/srcmakemake 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/fastdfsgroup_name = group1store_path0 = /var/fastdfstracker_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/fastdfstracker_server = 192.168.1.2:22122
创建目录并测试:
mkdir -p /var/fastdfsfdfs_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/# 记得修改 mod_fastdfs.conf里的tracker_server等配置,可以参考下边cp /data/bag/fastdfs/fastdfs-nginx-module-1.24/src/mod_fastdfs.conf /etc/fdfs
# 启动/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
插个图片,这是/etc/fdfs下所有文件
storage_ids.conf 这个是启动后生成的,其他配置博文都有
Dockerfile编写
注:
自行变更配置文件,不变更也可以
首先所有软件放到同一个目录下,再linux下进行的
tracker
或 storage
服务,并可附加执行 Nginx、日志输出等命令。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. 编译安装 libfastcommonRUN tar xf libfastcommon-1.0.71.tar.gz -C /usr/local/ && \\ cd /usr/local/libfastcommon-1.0.71 && \\ ./make.sh && ./make.sh install# 4. 编译安装 libserverframeRUN tar xf libserverframe-1.2.1.tar.gz -C /usr/local/ && \\ cd /usr/local/libserverframe-1.2.1 && \\ ./make.sh && ./make.sh install# 5. 编译安装 FastDFSRUN 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-moduleRUN 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.confCOPY storage.conf /etc/fdfs/storage.confCOPY client.conf /etc/fdfs/client.confCOPY mod_fastdfs.conf /etc/fdfs/mod_fastdfs.confCOPY 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.shRUN 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/bashset -e### 1. 默认环境变量设置 ###: ${FASTDFS_BASE_PATH:=/var/fdfs}: ${GROUP_NAME:=group1}: ${PORT:=22122}: ${TRACKER_SERVER:=127.0.0.1:22122}FASTDFS_MODE=\"tracker\" # 默认运行 trackerLOG_DIR=\"${FASTDFS_BASE_PATH}/logs\"mkdir -p \"${LOG_DIR}\"### 2. 解析模式参数 ###case \"$1\" in tracker) FASTDFS_MODE=\"tracker\" ;; storage) FASTDFS_MODE=\"storage\" ;; monitor) sed -i \"s|tracker_server=.*$|tracker_server=${TRACKER_SERVER}|g\" /etc/fdfs/client.conf exec 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\" ]; then sed -i \"s|store_path0.*$|store_path0=/var/fdfs|g\" /etc/fdfs/mod_fastdfs.conf sed -i \"s|url_have_group_name =.*$|url_have_group_name = true|g\" /etc/fdfs/mod_fastdfs.conffiif [ \"$FASTDFS_MODE\" != \"all\" ]; then # tracker 或 storage 模式 sed -i \"s|^port=.*$|port=${PORT}|g\" /etc/fdfs/${FASTDFS_MODE}.conf sed -i \"s|tracker_server=.*$|tracker_server=${TRACKER_SERVER}|g\" /etc/fdfs/storage.conf sed -i \"s|tracker_server=.*$|tracker_server=${TRACKER_SERVER}|g\" /etc/fdfs/client.conf sed -i \"s|tracker_server=.*$|tracker_server=${TRACKER_SERVER}|g\" /etc/fdfs/mod_fastdfs.conf sed -i \"s|group_name=.*$|group_name=${GROUP_NAME}|g\" /etc/fdfs/storage.conf sed -i \"s|group_name=.*$|group_name=${GROUP_NAME}|g\" /etc/fdfs/mod_fastdfs.conffi### 4. 启动服务并记录日志文件 ###start_service() { local mode=$1 local 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\" ]; then fdfs_storaged /etc/fdfs/storage.conf stop || true fdfs_trackerd /etc/fdfs/tracker.conf stop || true else fdfs_${FASTDFS_MODE}d /etc/fdfs/${FASTDFS_MODE}.conf stop || true fi /usr/local/nginx/sbin/nginx -s quit || true exit 0}trap stop_service SIGTERM SIGINT### 6. 启动对应模式 ###if [ \"$FASTDFS_MODE\" = \"all\" ]; then start_service \"tracker\" start_service \"storage\" /usr/local/nginx/sbin/nginx tail -F \"${LOG_DIR}/trackerd.log\" \"${LOG_DIR}/storaged.log\"else [ \"$FASTDFS_MODE\" = \"storage\" ] && /usr/local/nginx/sbin/nginx start_service \"$FASTDFS_MODE\" tail -F \"${LOG_DIR}/${FASTDFS_MODE}d.log\"fi
mod_fastdfs.conf
connect_timeout=10network_timeout=30base_path=/tmpload_fdfs_parameters_from_tracker=truestorage_sync_file_max_delay = 86400use_storage_id = falsestorage_ids_filename = storage_ids.conftracker_server=127.0.0.1:22122storage_server_port=23000group_name=group1url_have_group_name = truestore_path_count=1store_path0=/var/fdfslog_level=infolog_filename=response_mode=proxyif_alias_prefix=flv_support = trueflv_extension = flvgroup_count = 0# 这里注意mime.types是再nginx编译出来的,可以拷贝走,我懒http.mime_types_filename=/usr/local/nginx/conf/mime.typeshttp.default_content_type=application/octet-stream
storage.conf
disabled=falsegroup_name=group1bind_addr=client_bind=trueport=23000connect_timeout=30network_timeout=60heart_beat_interval=30stat_report_interval=60base_path=/var/fdfsmax_connections=256buff_size = 256KBaccept_threads=1work_threads=4disk_rw_separated = truedisk_reader_threads = 1disk_writer_threads = 1sync_wait_msec=50sync_interval=0sync_start_time=00:00sync_end_time=23:59write_mark_file_freq=500store_path_count=1store_path0=/var/fdfssubdir_count_per_path=256tracker_server=127.0.0.1:22122log_level=inforun_by_group=run_by_user=allow_hosts=*file_distribute_path_mode=0file_distribute_rotate_count=100fsync_after_written_bytes=0sync_log_buff_interval=10sync_binlog_buff_interval=10sync_stat_file_interval=300thread_stack_size=512KBupload_priority=10if_alias_prefix=check_file_duplicate=0file_signature_method=hashkey_namespace=FastDFSkeep_alive=0use_access_log = falserotate_access_log = falseaccess_log_rotate_time=00:00rotate_error_log = falseerror_log_rotate_time=00:00rotate_access_log_size = 0rotate_error_log_size = 0log_file_keep_days = 0file_sync_skip_invalid_record=falseuse_connection_pool = falseconnection_pool_max_idle_time = 3600http.domain_name=http.server_port=8888
tracker.conf
disabled=falsebind_addr=port=22122connect_timeout=30network_timeout=60base_path=/var/fdfsmax_connections=256accept_threads=1work_threads=4min_buff_size = 8KBmax_buff_size = 128KBstore_lookup=2store_group=group2store_server=0store_path=0download_server=0reserved_storage_space = 10%log_level=inforun_by_group=run_by_user=allow_hosts=*sync_log_buff_interval = 10check_active_interval = 120thread_stack_size = 64KBstorage_ip_changed_auto_adjust = truestorage_sync_file_max_delay = 86400storage_sync_file_max_time = 300use_trunk_file = false slot_min_size = 256slot_max_size = 16MBtrunk_file_size = 64MBtrunk_create_file_advance = falsetrunk_create_file_time_base = 02:00trunk_create_file_interval = 86400trunk_create_file_space_threshold = 20Gtrunk_init_check_occupying = falsetrunk_init_reload_from_binlog = falsetrunk_compress_binlog_min_interval = 0use_storage_id = falsestorage_ids_filename = storage_ids.confid_type_in_filename = ipstore_slave_file_use_link = falserotate_error_log = falseerror_log_rotate_time=00:00rotate_error_log_size = 0log_file_keep_days = 0use_connection_pool = falseconnection_pool_max_idle_time = 3600http.server_port=8080http.check_alive_interval=30http.check_alive_type=tcphttp.check_alive_uri=/status.html
client.conf
connect_timeout = 5network_timeout = 60base_path = /var/fastdfstracker_server = 127.0.0.1:22122log_level = infoconnect_first_by = trackeruse_connection_pool = falseconnection_pool_max_idle_time = 3600load_fdfs_parameters_from_tracker = falseuse_storage_id = falsestorage_ids_filename = storage_ids.confhttp.tracker_server_port = 80
构建
一切准备就绪直接进行构建
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.0 container_name: fastdfs-tracker environment: FASTDFS_BASE_PATH: /var/fdfs ports: - \"22122:22122\" volumes: - /data/tracker:/var/fdfs restart: always command: [\"/entrypoint.sh\", \"tracker\"] storage: image: fastdfs-nginx:6.11.0 container_name: fastdfs-storage environment: TRACKER_SERVER: tracker:22122 # 使用服务名,自动DNS解析 PORT: 23000 ports: - \"23000:23000\" - \"8888:8888\" volumes: - /data/storage:/var/fdfs depends_on: - tracker restart: always command: [\"/entrypoint.sh\", \"storage\"]
k8s-tracker.yaml
apiVersion: apps/v1kind: Deploymentmetadata: name: fastdfs-tracker namespace: testspec: replicas: 1 selector: matchLabels: app: fastdfs-tracker strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: creationTimestamp: null labels: app: fastdfs-tracker spec: containers: - command: - /bin/bash - /entrypoint.sh - tracker env: - name: FASTDFS_BASE_PATH value: /var/fdfs - name: PORT value: \"22122\" - name: TRACKER_SERVER value: fastdfs-tracker:22122 image: fastdfs-nginx:6.11.0 imagePullPolicy: IfNotPresent name: tracker ports: - containerPort: 22122 hostPort: 22122 protocol: TCP volumeMounts: - mountPath: /var/fdfs name: tracker-volume #hostNetwork: true volumes: - hostPath: path: /data/fastdfs/tracker type: \"\" name: tracker-volume---apiVersion: v1kind: Servicemetadata: name: fastdfs-tracker namespace: testspec: ipFamilyPolicy: SingleStack ports: - name: fastdfs-tracker port: 22122 protocol: TCP targetPort: 22122 selector: app: fastdfs-tracker sessionAffinity: None type: NodePort
k8s-storage.yaml
apiVersion: apps/v1kind: Deploymentmetadata: name: fastdfs-storage namespace: testspec: replicas: 1 selector: matchLabels: app: fastdfs-storage strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: creationTimestamp: null labels: app: fastdfs-storage spec: containers: - command: - /bin/bash - /entrypoint.sh - storage env: - name: TRACKER_SERVER value: fastdfs-tracker:22122 - name: PORT value: \"23000\" image: fastdfs-nginx:6.11.0 imagePullPolicy: IfNotPresent name: storage ports: - containerPort: 23000 hostPort: 23000 protocol: TCP - containerPort: 8888 hostPort: 8888 protocol: TCP volumeMounts: - mountPath: /var/fdfs name: storage-volume #hostNetwork: true volumes: - hostPath: path: /data/fastdfs/storage type: \"\" name: storage-volume---apiVersion: v1kind: Servicemetadata: name: fastdfs-storage namespace: testspec: ipFamilyPolicy: SingleStack ports: - name: fastdfs-storage port: 23000 protocol: TCP targetPort: 23000 - name: fastdfs-storage-http port: 8888 protocol: TCP targetPort: 8888 selector: app: fastdfs-storage sessionAffinity: None type: NodePort
测试
自带fdfs_test命令
fdfs_test /etc/fdfs/client.conf upload ./aaa.jpeg
python脚本测试
这里博主放置两个脚本,分别是测试fastdfs5.X 和fastdfs 6.X的,两个是不一样,图片自行配置
-
client.conf
# 这个不分版本,记得修改地址connect_timeout=30network_timeout=60base_path=/tmptracker_server=192.168.1.2:22122log_level=info
-
f5.py
# fastdfs 5.Xfrom 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.Xfrom 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 12上传结果: {\'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]#
常见问题
-
访问 404
检查mod_fastdfs.conf
中store_path0
是否与storage.conf
保持一致。 -
Nginx 启动无 Worker
检查/var/log/nginx/error.log
,确认mod_fastdfs.conf
配置正确。 -
Tracker 显示磁盘空间为 0
确保store_path0
目录存在且权限正确。 -
存储剩余10%时候fastdfs上传失败
检查tracker.conf
中的reserved_storage_space
值,默认是10%可以自行更改 -
k8s重启问题
注意存储下边的storage/data/fdfs_storaged.pid
是否被清理tracker/data/fdfs_trackerd.pid
总结与建议
- 单机环境 适合功能验证,生产环境建议 多 Tracker + 多 Storage 集群。
- 定期清理日志,避免
base_path
空间被占满。