Linux环境下 no space left on device

1、问题描述

fastDFS上传文件之后返回的不是文件的路径,而是一个null。

于是对fastDFS进行重启,发现storage.d一直无法重启,进入/fdfs/storage/logs/目录查看报错日志,发现报no space left on device。于是随便找一个目录输入

touch text.txt

也是报no space left on device。基本可以确定是磁盘空间不足,

输入

df -h

发现磁盘空间是还够用,于是检查是否inode节点不够

df -i

inode节点用完了,因为是fastDFS文件服务器,怀疑图片小文件过多,于是删除/fdfs/storage/data目录下的文件。再次执行df -i 。发现inode节点仍然占用了93%.

2、查找问题目录

既然知道是inode节点用完了,那么就要可以搜索具体是哪里的小文件太多造成inode节点用完了。

可以通过遍历根目录下所有的目录,查看这些目录下的所有的文件,并计算文件的数量

for i in /*; do echo $i; find $i | wc -l; done

shell代码注释

#遍历/目录下所有的目录
for i in /*;
do
  #打印当前目录
  echo $i; 
  #列出当前目录下所有的文件与子目录,并计算数量
  find $i | wc -l;
done

如果这一步执行的比较慢,也可以一个目录一个目录的执行,不用循环执行。

最后定位到 

/var/spool/postfix/maildrop

目录下有大量的文件,但是这个文件目录仅有65M。

对此目录下的大量小文件进行删除

cd /var/spool/postfix/maildrop/
ls | xargs rm -rf

3、参考文章

https://www.lastupdate.net/1617.html

https://www.todocker.cn/1265.html

https://blog.csdn.net/qq_41571056/article/details/106517424

原文地址:https://www.cnblogs.com/cplinux/p/15735611.html