先分清:空间满还是 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%);容器与数据库数据盘与系统盘分离;上线前评估日志级别与轮转策略。