掘金 后端 ( ) • 2024-05-07 18:06

描述

周一上班收到用户反馈系统异常,紧急排查日志发现报错:FdfsServerException:错误:28,错误信息:没有足够的存储空间

解决

根据异常信息判断是文件服务器可用内存不够了,首先登录文件服务器,使用df -h命令查看一下内存占用情况。

在这里插入图片描述

然后使用fdfs_monitor /etc/fdfs/storage.conf 命令查看Fast DFS的内存使用情况,查看storage.conf 配置文件的store_path0属性,确认文件服务器使用的是根目录。先紧急修改tracker.conf配置文件的reserved_storage_space属性,保留空间大小默认值为 20% ,先调低为10% ,重启FastDFS服务,保证线上服务正常运行。

扩容

通过 df -h命令发现/data节点还有九百多G内存空闲, 咨询服务器管理人员确认该节点是否有其它用途,如果没有则可以将其作为空闲内存扩容到FastDFS服务器,否则就要去申请再挂载一个节点内存。好在得到的回复是这个节点并没有其它用途,那么将其作为空闲节点扩容到FastDFS服务器。

由于是单机部署,考虑使用基于group模式的文件存储扩容。

创建目录

mkdir /data/fdfs

修改 tracker.conf文件

# 默认值为 0 , 改为2代表负载均衡,优先使用内存大的 path
store_path = 2

修改 storage.conf

# path(disk or mount point) count, default value is 1
store_path_count=2

# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
store_path0=/home/admin/fastdfs-5.11/storage
store_path1=/data/fdfs

修改mod_fastdfs.conf 文件, 如果不存在则新建

[group]
group_name=qroupl
storage_server_port=23000
store_path_count=2
store_path0=/home/admin/fastdfs-5.1l/storage
store_pathl=/data/fdfs

重启FastDFS服务

fdfs_trackerd /etc/fdfs/tracker.conf restart
fdfs_storaged /etc/fdfs/storage.conf restart

使用fdfs_monitor /etc/fdfs/storage.conf 命令查看FastDFS内存使用情况,空闲内存已经添加进去了。

在这里插入图片描述

使用/usr/bin/fdfs_upload_file /etc/fdfs/client.conf ‘待上传文件’ 命令上传文件,根据返回路径在新增加的/data/fdfs存储目录中找到上传的文件, 至此扩容成功。

上传文件返回路径解释, 以group1/M00/00/00/L2rGaWYvcWaAIYQtAAON672Q_AQ102.pdf 为例: group1 : 分组 M00: M00代表使用的是store_path0, M01代表使用的是store_path1 00/00: 存储目录下的 data/00/00 目录 L2rGaWYvcWaAIYQtAAON672Q_AQ102.pdf:实际存储在文件系统中的文件名