返回列表 发布新帖
查看: 20|回复: 0

Linux服务器被占满 inode 导致无法写入文件

发表于 3 天前 | 查看全部 |阅读模式

这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!

您需要 登录 才可以下载或查看,没有账号?立即注册

×
网站突然上传不了图片了,提示“磁盘写入失败”,但看磁盘明明还有空间。就是无法上传,这种情况多半是 inode 用光了。
这个问题不常见,但一旦出现就很难排查,今天整理一下我的排查过程和解决方法,供大家参考。

什么是 inode?
简单说,每个文件都要占一个 inode,哪怕文件只有 0 字节也一样。
如果服务器里生成了大量小文件,比如日志碎片、缓存、临时文件,即使硬盘还有空间,也可能因为 inode 数量用尽而无法再创建新文件。

如何判断是否 inode 占满?
先看磁盘空间:
  1. df -h
复制代码
再看 inode 使用情况:
  1. df -i
复制代码
如果看到某个分区 `Use%` 达到 100%,说明 inode 用完了。

查找占 inode 最多的目录
这个命令非常有用:
  1. for i in /*; do echo $i; find $i | wc -l; done
复制代码
它会逐个统计目录下的文件数量,帮助你定位是哪个路径产生了大量小文件。

如何处理?
找到对应目录后:
1. 清理不必要的小文件:
  1. rm -rf /tmp/*
复制代码
2. 使用 logrotate 或定期清理缓存。
3. 如果是网站某插件或程序疯狂写缓存,建议先禁用它,再分析原因。

预防建议:
对站点缓存、日志目录做定期清理任务(cron job);
容器类服务建议挂载数据盘,避免 `/var` 爆炸;
生产环境分区时可考虑为某些目录单独分区,比如 `/var`。

这个问题虽然比较偏门,但真遇到的时候挺难发现的。如果你也碰到过“磁盘有空间却写不了文件”的情况,强烈建议 `df -i` 一下看看 inode。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2025 Suike Tech All Rights Reserved. 随客交流社区 (备案号:津ICP备19010126号) |Processed in 0.105109 second(s), 7 queries , Gzip On, MemCached On.
关灯 在本版发帖返回顶部
快速回复 返回顶部 返回列表