Linux 根分区被日志吃满?一次 58G Broker 日志清理实战_2026-05-20

一、问题背景

巡检服务器磁盘空间时,发现某台服务器根分区 / 使用率偏高。

执行查看:

复制代码
df -h

输出如下:

复制代码
文件系统                           容量  已用  可用 已用% 挂载点
/dev/mapper/vg_newroot-lv_newroot   90G   70G   21G   78% /
/dev/sda1                         1014M  198M  817M   20% /boot
//10.1.1.195/DataCenter/backup      20T   15T  5.1T   75% /home

这里需要注意:/home 是单独挂载的网络存储,不占用根分区空间。

所以本次排查重点是根分区 / 本身。


二、定位根分区大目录

为了避免跨文件系统统计,需要使用 du -x 参数,只统计当前根分区。

复制代码
du -xhd1 / 2>/dev/null | sort -h

输出如下:

复制代码
32K     /tmp
25M     /opt
38M     /etc
80M     /topsec
2.9G    /usr
3.0G    /var
5.1G    /root
59G     /data
70G     /

可以看到,根分区占用的大头并不是 /var/log,而是:

复制代码
/data  59G

继续向下排查:

复制代码
du -xhd1 /data 2>/dev/null | sort -h

输出:

复制代码
837M    /data/vehicle-report
58G     /data/apache_hdfs_broker
59G     /data

继续查看:

复制代码
du -xhd1 /data/apache_hdfs_broker 2>/dev/null | sort -h

输出:

复制代码
8.0K    /data/apache_hdfs_broker/bin
12K     /data/apache_hdfs_broker/conf
620K    /data/apache_hdfs_broker/licenses
590M    /data/apache_hdfs_broker/lib
58G     /data/apache_hdfs_broker/log
58G     /data/apache_hdfs_broker

问题已经很清楚:

复制代码
/data/apache_hdfs_broker/log

日志目录占用了约 58G


三、查看日志文件详情

执行:

复制代码
ls -lh /data/apache_hdfs_broker/log

发现日志目录下存在大量历史日志,例如:

复制代码
apache_hdfs_broker.log.2025-09-06
apache_hdfs_broker.log.2025-10-01
apache_hdfs_broker.log.2026-01-01
apache_hdfs_broker.log.2026-05-19

同时发现一个异常大的输出日志:

复制代码
apache_hdfs_broker.out  32G

该文件属于 Broker 服务的标准输出日志,不是业务数据文件,可以清空内容,但不建议直接删除。


四、处理方式

1. 清空超大的 .out 文件

不要使用 rm 删除正在被进程写入的日志文件,避免文件句柄未释放导致空间不释放。

推荐使用:

复制代码
: > /data/apache_hdfs_broker/log/apache_hdfs_broker.out

或者:

复制代码
truncate -s 0 /data/apache_hdfs_broker/log/apache_hdfs_broker.out

这两种方式都是保留文件本身,只清空文件内容。


2. 删除历史归档日志

历史日志文件格式为:

复制代码
apache_hdfs_broker.log.2026-05-18
apache_hdfs_broker.log.2026-05-19

如果需要删除超过 1 天的历史日志,可以执行:

复制代码
find /data/apache_hdfs_broker/log -maxdepth 1 -type f \
  -name "apache_hdfs_broker.log.20*" \
  -mmin +1440 \
  -delete

其中:

复制代码
-mmin +1440

表示修改时间超过 1440 分钟,也就是超过 24 小时。

本次清理完成后,空间明显释放。


五、清理后验证

再次查看根分区:

复制代码
df -h /

结果:

复制代码
文件系统                           容量  已用  可用 已用% 挂载点
/dev/mapper/vg_newroot-lv_newroot   90G   13G   78G   15% /

查看 Broker 日志目录:

复制代码
du -sh /data/apache_hdfs_broker/log

结果:

复制代码
241M    /data/apache_hdfs_broker/log

清理效果非常明显:

复制代码
根分区使用率:78% -> 15%
Broker 日志目录:58G -> 241M

六、增加定时清理策略

为了避免后续再次出现根分区被日志打满的问题,增加 crontab 定时清理。

查看当前定时任务:

复制代码
crontab -l

新增如下策略:

复制代码
# 清理 /data/apache_hdfs_broker/log
0 6 * * * find /data/apache_hdfs_broker/log -maxdepth 1 -type f -name "apache_hdfs_broker.log.20*" -mmin +10080 -delete
10 6 * * * find /data/apache_hdfs_broker/log -maxdepth 1 -type f -name "apache_hdfs_broker.out" -size +3G -exec sh -c ': > "$1"' _ {} \;

说明:

第一条:

复制代码
0 6 * * * find /data/apache_hdfs_broker/log -maxdepth 1 -type f -name "apache_hdfs_broker.log.20*" -mmin +10080 -delete

表示每天 06:00 删除超过 7 天的历史归档日志。

复制代码
10080 分钟 = 7 天

第二条:

复制代码
10 6 * * * find /data/apache_hdfs_broker/log -maxdepth 1 -type f -name "apache_hdfs_broker.out" -size +3G -exec sh -c ': > "$1"' _ {} \;

表示每天 06:10 检查 apache_hdfs_broker.out 文件,如果超过 3G,则自动清空内容。

注意,这里不是删除文件,而是清空文件内容,更适合正在运行的服务日志文件。


七、总结

本次根分区空间占用高的根因是:

复制代码
/data/apache_hdfs_broker/log 目录下历史日志长期堆积,
同时 apache_hdfs_broker.out 标准输出日志异常膨胀至 32G。

处理思路如下:

复制代码
1. 使用 df -h 确认根分区使用率;
2. 使用 du -xhd1 / 定位根分区大目录;
3. 逐层定位到 /data/apache_hdfs_broker/log;
4. 清空 apache_hdfs_broker.out 大日志文件;
5. 删除历史归档日志;
6. 增加 crontab 定时清理策略;
7. 复查根分区空间恢复正常。

最终效果:

复制代码
根分区使用率从 78% 降至 15%,
日志目录从 58G 降至 241M,
问题处理完成。

这类问题的核心不是上来就删文件,而是先搞清楚:
哪个目录大、哪些文件能删、哪些文件只能清空、哪些文件绝对不能碰。

生产环境里,删得快不算本事,删得准才是真功夫。

相关推荐
En^_^Joy25 分钟前
Django开发:模板系统入门指南
数据库·django·sqlite
志栋智能1 小时前
超自动化巡检剧本(Playbook):运维经验的数字化封装
运维·自动化
风味蘑菇干1 小时前
WTomcat服务器
java·服务器
ElevenS_it1881 小时前
Nginx日志监控告警实战:access_log解析+5xx突增+慢请求+异常IP自动告警完整方案(Filebeat+Zabbix)
运维·网络·tcp/ip·nginx·zabbix
weixin_307779131 小时前
Python写入Shell文件使用Linux系统的换行符
linux·开发语言·python·自动化
无关86881 小时前
Redis Bitmaps 用户签到系统设计方案
数据库·redis·缓存
万岳科技1 小时前
教育培训小程序如何构建线上线下一体化教学体系
小程序·apache
江华森1 小时前
FastAPI 极速开发指南 — 从零到生产级 API 实战
数据库·fastapi
liulilittle2 小时前
Linux Swap 文件配置与持久化(虚拟内存)
linux·运维·服务器
未若君雅裁2 小时前
日志采集与ELK:从本地日志到集中检索分析
运维·elk·jenkins