磁盘没满,却写不进去:inode 用完了
df -h 显示还有一半空间,touch /tmp/x 却报 No space left on device。第一反应是分区只读或者配额,都不是。 看 df -i:
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/vda1 2621440 2621440 0 100% /
inode 用光了。空间还在,但没有空索引节点可以分配给新文件。
常见来源是小文件堆积:session 文件、缩略图缓存、某个程序按请求写一个临时文件却从不清理。用 find / -xdev -type f | cut -d/ -f2-3 | sort | uniq -c | sort -rn | head 找出哪个目录文件最多,比 du 快得多。
处理完记得回头看代码:inode 满通常是清理策略的问题,不是磁盘的问题。扩盘只能推迟下一次爆。