温馨提示×

为何linux磁盘占满日志

小樊
35
2026-09-14 18:25:36
栏目: 智能运维

Linux 磁盘被“占满”是线上非常常见的问题,通常不是因为“日志本身必须存在”,而是日志无限增长 + 缺乏轮转/清理机制导致的。下面从「为什么会被日志占满」和「常见位置/原因」两个角度说明。


一、为什么 Linux 磁盘会被日志占满?

1. 日志没有轮转(log rotate 缺失或失效)

  • 应用直接写 app.log,从不切分
  • logrotate 配置错误或未执行
  • 容器环境常忽略日志轮转

结果:

一个文件几天涨到几十 GB


2. 标准输出 / 标准错误被无限记录

常见于:

  • Docker / Kubernetes
  • systemd 服务

例如:

  • Docker 默认把容器 stdout 写到 json-file
  • 不限制大小 → 磁盘爆满

3. 应用异常狂打日志

  • 死循环
  • 频繁异常 / 堆栈
  • Debug 日志在生产环境开启

表现:

  • 每秒几 MB 日志
  • 磁盘瞬间满

4. 日志删了但空间不释放

这是“经典坑”:

rm /var/log/big.log

但:

  • 文件仍被进程占用
  • df 显示满,du 显示正常

解决:

lsof | grep deleted

5. 系统日志本身失控

常见系统日志:

  • /var/log/messages
  • /var/log/syslog
  • /var/log/journal/(systemd journal)

例如:

  • journal 没限制大小
  • 内核大量报错

二、常见“占满磁盘”的日志位置

位置 说明
/var/log 系统 & 应用日志
/var/log/journal systemd 日志
/var/lib/docker 容器日志
/opt/app/logs 自研服务
容器内 stdout Docker / K8s

三、快速自查命令

df -h
du -sh /var/log/*
lsof | grep deleted
journalctl --disk-usage

四、如何避免“日志占满磁盘”

  • 启用 logrotate
  • 日志级别生产用 INFO/WARN
  • Docker 限制日志大小
  • journal 限制磁盘占用
  • 监控磁盘使用率(告警)

如果你愿意,可以告诉我:

  • 物理机 / 虚拟机 / 容器
  • 用的是 CentOS / Ubuntu / Docker / K8s
  • 磁盘满时的具体路径

我可以给你针对性的排查和解决方案

0