海外主机 发表于 半小时前

Linux服务器磁盘还有很多空间,为什么还是无法创建文件?



这个问题在服务器上其实很容易遇到。
例如:
磁盘明明还有 50GB,网站却提示
No space left on device

很多人第一反应是磁盘满了。
其实还有一种情况:inode 用完了。
① 先看磁盘空间
df -h
如果看到:
/dev/sda1   100G   50G   50G   50% /
说明磁盘还有一半空间。
② 再看 inode
df -i
如果出现:
Filesystem   InodesIUsed   IFree IUse%/dev/sda1      6553600 6553600   0100%
这就说明:
磁盘空间没满,但 inode 已经100%用完。
这时候即使还有几十GB,也可能无法创建新文件。
③ 到底是什么东西把 inode 用光了?
最常见的是:
???? 大量日志小文件
???? 网站缓存文件
???? PHP Session
???? 邮件队列
???? Docker产生的大量小文件
???? 程序异常生成临时文件
可以先找哪个目录文件最多:
for i in /*; do echo -n "$i "; find "$i" -xdev -type f 2>/dev/null | wc -l; done
找到异常目录后,再继续往下排查。
④ 注意:不要直接 rm -rf
找到大量文件以后,不要看到文件多就直接全部删除。
尤其是:
/var/lib/etc/usr/var/log
里面很多文件都可能正在被系统或程序使用。
最后总结
服务器出现:
“磁盘还有空间,却无法写入文件”
不要只执行:
df -h
还应该检查:
df -i
空间满,看容量;文件数量太多,看 inode。
这类问题在网站服务器、Docker服务器、日志服务器上都比较常见。
???? 做服务器运维时,很多故障并不是“配置不够”,而是某个系统资源已经到上限。
页: [1]
查看完整版本: Linux服务器磁盘还有很多空间,为什么还是无法创建文件?