磁盘空间不足需建立“监控—预警—评估—扩容”闭环策略:按场景设差异化告警阈值(如Nginx设80%、归档盘设95%),监控df与inode,用du、find、lsof定位大户,安全清理日志与缓存,LVM或云盘扩容须按序执行对应命令,并定期检查Docker、GitLab等隐性空间占用目录。

磁盘空间不足是Linux服务器最常见的告警之一,轻则影响日志写入、服务响应,重则导致数据库崩溃、系统无法登录。关键不是等告警才处理,而是建立“监控—预警—评估—扩容”的闭环策略。
实时监控与合理预警阈值
默认的90%告警阈值并不普适:对日志频繁写入的Nginx或Java应用服务器,建议设为80%;对仅存储静态备份的归档盘,可放宽至95%。推荐用df -h结合inotifywait或logrotate联动检测大文件突增。Zabbix或Prometheus需额外采集inode使用率——即使空间充裕,inode耗尽也会导致“no space left on device”错误。
快速定位空间占用大户
执行以下命令分层排查:
-
df -h查看各挂载点使用率 -
du -sh /* 2>/dev/null | sort -hr | head -10定位根下最大目录 -
find /var/log -name "*.log" -size +100M -exec ls -lh {} \;找出超大日志文件 -
lsof +L1检查被删除但仍被进程占用的大文件(常见于未重启的旧日志)
安全清理与临时释放空间
清理前务必确认文件用途,避免误删:
- 清空Jenkins构建历史:
rm -rf /var/lib/jenkins/jobs/*/builds/[0-9]* - 轮转并压缩旧日志:
logrotate -f /etc/logrotate.d/nginx - 清空YUM缓存:
yum clean all(CentOS/RHEL)或apt clean(Ubuntu/Debian) - 慎用
rm -rf /tmp/*:确保无正在运行的服务依赖/tmp下的临时文件
扩容操作需区分场景
物理机/VM扩容后,步骤不可跳过:
- 若使用LVM:先
pvresize扩展物理卷,再lvextend -l +100%FREE,最后resize2fs(ext4)或xfs_growfs(XFS)在线扩容文件系统 - 若为云盘(如阿里云ESSD):先在控制台扩容云盘,再SSH中执行
growpart /dev/vda 1(扩展分区),再运行对应文件系统扩容命令 - 禁止直接
dd if=/dev/zero填满磁盘测试——可能触发OOM Killer杀掉关键进程
不复杂但容易忽略:定期检查/var/lib/docker/overlay2(Docker环境)和/home/git/repositories(GitLab)这类隐性空间黑洞,它们往往不在常规监控路径内。


















