很明显,如果仅仅是磁盘空间满了,也就不值得写一篇博客了。
了解过Linux的同学应该听说过inode吧,本次记录就是inode满了所致。发现nginx无法重启后,第一时间执行指令查看磁盘空间剩余情况。
df -h
发现空间充足,恩,那必定是出在inode数上了,一时间想不起如何定位inode数多的文件夹了,浪费了些时间翻资料。
知乎上找到个指令:
for i in /var/spool/*; do echo $i; find $i |wc -l; done
执行后定位发现/var/spool/clientmqueue下占用了三十多万inode,果断删了解决问题。
查询问题的时候,还询问过ChatGPT:“如何定位inode数量多的文件夹”,问题解决的时候回去看,发现它也给出了答案:
要定位inode数量多的文件夹,可以使用以下命令:
find /path/to/directory -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
解释一下这个命令的每个部分:
find /path/to/directory:搜索目标文件夹以及其中的子文件夹。
-xdev:限制搜索仅在当前文件系统内进行,并排除挂载点和其他文件系统。
-type f:仅返回文件,而不是目录或符号链接。
cut -d "/" -f 2:从完整的文件路径中提取第二个字段(即文件所在的顶级目录)。
sort:按字母顺序排序。
uniq -c:计算每个唯一值的出现次数。
sort -n:按数字顺序排序,使最常见的顶级目录出现在列表顶部。执行此命令后,您将获得一个按照顶级目录计算文件计数的列表。例如,它可能会显示某个文件夹 /var/log 中有大量的小文件,导致 inode 使用率过高。
一旦您确定了占用 inode 最多的文件夹,就可以通过删除、归档或移动文件来释放 inode。另外,还可以考虑使用 inode 更高的文件系统(如 XFS),以便更好地处理大量小文件。
微调了下从根目录遍历,指令如下:
find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
想来日后也许会用到。
参考资料
Linux中inode使用率满了解决办法( inode节点满处理方法)
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。