df -h 显示还有空间,但创建文件报 No space left on device。

原因:inode 用完。大量小文件把 inode 耗尽。

查:df -i

这次是 session 文件,几十万个,从来没清理。

解决:

  1. 清理过期 session
  2. 配 session 的 gc 参数
  3. 或者改用 Redis 存 session

预防:监控 inode 使用率,不只看磁盘空间。

小文件多的场景(日志分片、临时文件、缓存)都要注意这条。

主楼