很多站长会遇到这样一个现象:服务器磁盘空间一天天变小,明明网站文件体积并不大,也没有上传大量资源,磁盘使用率却不断飙升,严重时直接磁盘占满,网站抛出500错误、数据库无法写入,站点直接宕机。
磁盘爆满不只是删除文件这么简单,如果找不准源头,清理完没过几天磁盘又被占满。本文讲解Linux服务器磁盘暴涨的排查思路,定位日志、缓存、临时文件等垃圾来源,安全清理冗余文件,同时配置规则防止磁盘反复爆满。
一、快速定位磁盘占用高的目录
登录SSH终端,先用基础命令快速定位磁盘占用大户。
bash
df -h
该命令查看整体磁盘分区使用率,可以直观看到哪个分区已经接近占满。
进入根目录,查找占用空间最大的文件夹:
bash
du -sh /*
执行之后会列出各个一级目录占用大小,重点关注 /var 、 /tmp 、 /home 、 /usr 这几个目录,绝大多数磁盘垃圾都集中在这里。
再针对占用高的目录继续向下排查,例如 /var 目录:
bash
du -sh /var/*
层层缩小范围,就能精准找到占用磁盘的目录。
二、磁盘暴涨的几大元凶
- 系统与服务日志文件疯狂膨胀
日志是磁盘暴涨最常见的原因。Nginx访问日志、错误日志、MySQL日志、系统syslog,长期不轮转切割,日志文件可以膨胀到几十GB。
尤其是网站遭受爬虫、扫描器、CC探测攻击的时候,大量访问请求会疯狂写入访问日志,短时间日志体积暴增。很多站长从未做日志切割,日志文件越滚越大。
- /tmp临时目录堆积垃圾
程序运行产生的临时文件、解压缓存、PHP会话临时文件、上传残留文件全部会存放在 /tmp 。程序异常崩溃的时候,大量临时文件不会自动删除,日积月累堆积大量垃圾。
- 数据库产生大量冗余文件
MySQL慢查询日志、二进制binlog日志,如果没有关闭或者设置过期时间,会持续生成日志文件。数据库备份重复存放,旧备份文件没有定时删除,也会吃掉大量磁盘。
- 面板缓存、解压残留、旧备份文件
宝塔、1Panel等管理面板,会产生软件缓存、网站备份、打包备份。很多人重复生成备份,旧备份从来不删;解压源码包之后压缩包遗留,日积月累占用大量存储空间。
- 文件删除未释放空间
一个很容易忽略的情况:直接rm删除正在被程序占用的日志文件,磁盘空间不会立刻释放。进程还持有文件句柄,即使删除文件,磁盘空间依旧被占用,需要重启对应服务才能释放。
三、安全清理磁盘垃圾实操
注意:不要盲目直接删除系统目录未知文件,避免误删系统关键文件导致服务器崩溃。优先清理日志、临时文件、备份文件。
1. 清理/tmp临时目录
/tmp目录下全部是临时文件,可以安全清理旧文件:
bash
rm -rf /tmp/*
2. 清理Nginx过期日志
不要直接rm正在写入的日志文件。正确做法清空日志内容:
bash
/var/log/nginx/access.log
/var/log/nginx/error.log
3. 清理无用数据库备份
找到存放备份的目录,删除时间久远、不再需要的旧备份包,保留最近1‑3份备份即可。
4. 查找大文件命令,快速找出GB级别的大文件
bash
find / -type f -size +1G 2>/dev/null
这条命令会扫描全盘,找出大于1G的文件,确认是无用日志、旧压缩包后再进行删除。
四、根治方案:避免磁盘反复爆满
清理只是临时解决,如果不做限制,过段时间磁盘又会被占满,需要配置日志轮转。
1.开启logrotate日志切割
Linux自带logrotate工具,用来自动切割、压缩、过期删除Nginx、系统日志。自动分割日志,旧日志压缩归档,保留指定份数,自动删除过期日志,防止单一日志无限膨胀。
简单Nginx日志轮转配置示例:
plaintext
/var/log/nginx/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 nginx adm
}
含义:按天切割,保留7份日志,自动压缩,空日志不处理。
2.关闭不需要的数据库日志
MySQL如果不需要主从同步,可以关闭binlog;慢查询日志按需开启,业务不需要就关闭,减少磁盘输出。
3.备份自动过期策略
使用面板或者脚本做网站备份的时候,增加自动删除旧备份逻辑,不要无限保存备份文件,只保留最近几份。
4.磁盘监控告警
配置磁盘使用率监控,磁盘使用率超过85%触发告警,提前处理,不要等到磁盘100%占满网站宕机才处理。
五、排错小提示
清理磁盘之后空间没释放,大概率是文件被进程占用。
执行命令查看被删除但是还占用空间的文件:
bash
lsof |grep deleted
找到对应服务,重启服务即可释放磁盘空间。
总结
服务器磁盘暴涨,不要上来就一通乱删文件。遵循「查看磁盘占用 → 定位大文件 → 安全清理垃圾 → 配置自动轮转防止复现」这套流程。日志文件是头号磁盘杀手,做好日志切割轮转,定期清理临时文件与过期备份,就可以避免绝大多数磁盘爆满导致的网站故障。





