服务器硬盘满了怎么办?Linux 磁盘清理实战指南

服务器告警最常见的除了带宽跑满,就是磁盘满了。硬盘一满,网站打不开、数据库写不进、SSH 都连不上。

第一步:看磁盘使用情况

df -h

看哪个分区使用率最高,一般是 //var

第二步:找大文件

找当前目录下最大的文件和目录:

du -sh * | sort -rh | head -10

找整个系统最大的目录:

cd / && du -sh * | sort -rh | head -20

第三步:清理常见占用

清理系统日志

journalctl --vacuum-size=200M

这会保留最近 200M 的日志,更早的删掉。

清理 yum/apt 缓存

CentOS:

yum clean all

Ubuntu:

sudo apt autoclean && sudo apt autoremove

清理旧内核

package-cleanup --oldkernels --count=2

清理临时文件

rm -rf /tmp/*

第四步:查是否有大日志文件

有些程序会写单文件巨大的日志:

find / -type f -size +500M -exec ls -lh {} \; 2>/dev/null

找到后确认是否可以清空:

> /var/log/largefile.log

第五步:查是否有被删除但未释放的文件

lsof | grep deleted

有些文件被 rm 了但进程还在写,磁盘空间不会释放,需要重启进程:

systemctl restart 进程名

预防建议

  1. 设置日志轮转(logrotate),按大小和时间自动切割
  2. 监控磁盘使用率,超过 80% 自动告警
  3. 数据库和网站数据放在独立分区,避免写满系统盘

按这个流程来排查,10 分钟内就能解决磁盘满的问题。