描述
周一上班收到用户反馈系统异常,紧急排查日志发现报错: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:实际存储在文件系统中的文件名