Linux磁盘空间排查与优化实战指南

发布时间:2026/7/17 17:52:00

Linux磁盘空间排查与优化实战指南 1. 问题现象与排查思路当Linux服务器突然出现no space left on device报错时90%的运维人员第一反应都是执行df -h查看磁盘使用率。上周我们生产环境就遇到一个典型案例/var分区突然爆满导致所有服务日志无法写入。通过以下排查流程最终发现是某个容器应用产生了大量未压缩的日志文件。重要提示排查磁盘空间问题时务必先确认具体是哪个分区满载。直接删除文件可能导致误删系统关键数据。2. 核心排查工具详解2.1 df命令实战技巧基础用法df -hT输出示例Filesystem Type Size Used Avail Use% Mounted on /dev/nvme0n1p2 ext4 50G 48G 1.2G 98% /关键参数解析-h人类可读格式显示自动转换GB/MB单位-T显示文件系统类型ext4/xfs等-i查看inode使用情况小文件过多时可能inode先耗尽2.2 du命令高阶用法定位大目录的三种姿势# 标准版耗时较长但准确 du -sh /* 2/dev/null # 加速版仅统计一级目录 du -h --max-depth1 / 2/dev/null | sort -h # 终极版实时监控变化 watch -n 5 du -h --max-depth1 /var | sort -h3. 五大常见问题场景与解决方案3.1 日志文件暴增典型特征/var/log目录体积异常存在单个超大的*.log文件处理方案# 清空日志文件比rm更安全 truncate -s 0 /var/log/somelarge.log # 配置日志轮转 vim /etc/logrotate.d/yourapp3.2 僵尸文件处理当du和df统计结果差异较大时可能是已删除文件仍被进程占用# 查找被删除但未释放的文件 lsof | grep deleted # 释放空间重启相关进程或系统 systemctl restart service-name3.3 Docker存储泄漏容器环境常见问题# 查看docker磁盘使用 docker system df # 清理无用数据 docker system prune -a4. 自动化监控方案4.1 磁盘预警脚本#!/bin/bash THRESHOLD90 CURRENT$(df / --outputpcent | tail -1 | tr -d %) if [ $CURRENT -gt $THRESHOLD ]; then echo 警报根分区使用率 ${CURRENT}% du -h --max-depth1 / | sort -h fi4.2 日志分析工具链推荐组合ncdu交互式磁盘分析器dust更直观的目录树展示glances实时系统监控5. 高级技巧与避坑指南5.1 快速释放空间三板斧清理包缓存apt clean || yum clean all删除旧内核dpkg --list | grep linux-image | awk {print $2} | sort -V | head -n -2 | xargs sudo apt purge -y查找并删除core dump文件find / -name core.* -exec rm {} \;5.2 文件系统特殊状况处理当遇到df显示已用空间与du统计不符时# 检查是否有隐藏的挂载点 mount | grep -v proc # 强制文件系统同步 sync6. 长效治理建议日志管理规范所有应用必须配置日志轮转生产环境日志级别设置为WARN以上存储架构设计关键分区独立挂载如/var、/home使用LVM实现动态扩容监控体系Prometheus监控磁盘使用率设置85%的预警阈值实际案例某电商平台通过优化日志采集策略将每日日志量从120GB降至15GB具体方案包括将DEBUG日志改为本地临时存储接入ELK时只采集ERROR级别日志对请求日志进行采样收集

相关新闻