公司博客 // 2026-06-25 · BY IDCBOT

服务器磁盘满了怎么办?Linux磁盘清理与空间排查完整教程

网站突然报错、数据库无法写入、上传失败——一查,磁盘满了。磁盘爆满是服务器最常见也最容易解决的故障之一。本文教你快速定位空间被谁吃了,并安全清理释放。

第一步:确认磁盘使用情况

df -h        # 查看各分区使用率,找到爆满的分区(Use% 接近100%)

重点看根分区(/)或数据分区。确认哪个分区满了,再去里面找元凶。

第二步:定位是谁占用了空间

du -h --max-depth=1 / | sort -rh | head -10   # 找出根目录下最大的目录
# 逐层深入,比如发现/var大,再看它里面
du -h --max-depth=1 /var | sort -rh | head -10

用这个方法层层下钻,很快就能找到那个吃掉几十G的目录或文件。常见的空间黑洞:日志、缓存、备份、Docker、数据库。

第三步:按类型安全清理

1. 日志文件(最常见):失控的日志能吃掉几十G。

journalctl --vacuum-size=200M    # 清理systemd日志,只留200M
# 清理nginx等应用的大日志(先确认不需要)
> /var/log/nginx/access.log      # 清空但保留文件

治本:配置日志轮转(logrotate),限制日志大小和保留天数,防止再次失控。

2. 包管理缓存:

apt clean          # Debian/Ubuntu 清理apt缓存
dnf clean all      # RHEL系

3. Docker空间(容器用户重灾区):

docker system df       # 先看Docker占用了多少
docker system prune -a # 清理无用镜像、停止的容器、悬空卷

4. 旧备份文件:检查备份目录,删除过期备份(自动化备份脚本应带自动删除旧文件逻辑)。

第四步:一个诡异现象——删了文件空间没释放

你删了大文件,df 却显示空间没变?这是Linux新手最困惑的坑:如果某个进程还打开着这个文件,删除后空间不会真正释放,直到该进程关闭。常见于删了正在写入的大日志。解决:

lsof | grep deleted    # 找出被删除但仍被占用的文件及进程
# 重启或reload对应服务即可真正释放空间(如nginx用 nginx -s reopen)

第五步:治本——预防再次爆满

  • 配置logrotate管理所有日志的大小与保留期;
  • 备份脚本加自动清理旧文件逻辑(find /backup -mtime +7 -delete);
  • Docker用户定期 prune;
  • 装磁盘监控告警:用量到80%就提醒,别等满了才发现(详见博客监控教程)。

什么时候该扩容而非清理?

如果清理后很快又满,说明是业务数据真实增长(数据库变大、用户上传增多),这时该扩容而不是反复清理。机器云支持磁盘升级方案,数据密集型业务(数据库、网盘、媒体站)建议一开始就配足够的NVMe空间,或选可配大容量磁盘的独立服务器。

磁盘满了别慌:df找分区 → du找目录 → 按类型清理 → 配置监控防复发。四步走,几分钟解决,并从此不再被同一个问题绊倒。

// LEAVE A COMMENT

Your email address will not be published. Required fields are marked *