先分清:空间满还是 inode 满
df -hT df -i
有的业务(大量小文件、邮件队列)会出现 容量还很多但 inode 用尽,表现同样是无法写文件。
定位大户目录
du -xhd1 / | sort -h du -xhd1 /var | sort -h du -xhd1 /var/log | sort -h
-x 避免跨挂载点把其他盘算进来。找到最大目录后再下钻一层。
经典坑:文件删了空间不释放
lsof | grep deleted | head # 针对具体进程 lsof -p PID | grep deleted
常见于日志被 rm,但 Java/Nginx 仍握着句柄。处理:重启对应服务,或 truncate 句柄指向的路径(谨慎)。
安全清理建议
- 优先清理轮转后的旧日志、临时目录、包缓存(注意业务是否依赖缓存)。
- 用
find /var/log -type f -mtime +30先 list 再删。 - journal 可用
journalctl --vacuum-size=500M控制体积。
预防
对日志目录做容量告警(例如 80%/90%);容器与数据库数据盘与系统盘分离;上线前评估日志级别与轮转策略。