Linux 服务器磁盘空间清理实操

定位 Linux 服务器磁盘占满的常见原因并逐步清理,涵盖日志文件、包缓存、旧内核、Docker 镜像与大文件查找,同时给出预防磁盘再次写满的长期做法。

先找到是谁占的空间

磁盘告警时不要急着删文件。先用 df -h 确认是哪个分区写满,再用 du -xh –max-depth=1 逐层定位到具体目录。注意有些文件已被删除但仍被进程持有,空间不会释放,这类情况用 lsof +L1 能查出来,处理方式是重启对应进程而不是删除文件。

日志文件

日志是最常见的元凶。Nginx access.log、PHP 错误日志、系统日志在流量大或程序报错频繁时会快速增长。清理方式:先 truncate -s 0 文件名 把文件清空(不会删除 inode,正在写入的进程不受影响),再考虑配置 logrotate 限制单文件大小与保留份数。切忌直接 rm 正在被写入的日志——进程仍持有句柄,空间不会释放。

包管理器缓存

CentOS 用 dnf clean all 或 yum clean all 清理 rpm 缓存;Ubuntu 用 apt clean 清理 /var/cache/apt/archives。这些缓存只是安装包的副本,删除不影响已安装软件,需要时会重新下载。通常能回收几百 MB 到数 GB。

旧内核与孤儿依赖

系统多次升级会留下多个旧内核,占用可观空间。确认当前正在使用的内核版本后,清理列表中更旧的版本(保留至少一个可用回退)。同时用包管理器的 autoremove/clean_requirements_on_remove 清理不再被任何软件依赖的包。清理前务必确认不是业务依赖,误删库文件会导致服务无法启动。

Docker 相关

若服务器跑了 Docker,悬空镜像、停止的容器、未使用的卷与构建缓存会持续堆积。用系统自带的清理命令配合 prune 处理,注意不要加会删除数据卷的参数,除非你确认卷内容可丢弃。清理后用 df 复查,Docker 场景下往往一次能回收几十 GB。

大文件与写入监控

  • 用 find / -type f -size +500M 定位异常大文件
  • 检查是否有程序把临时文件写在系统盘而非数据盘
  • 确认备份文件是否重复保存在本机
  • 数据库 dump、上传目录、缓存目录要单独评估

预防再写满

清理是一次性的,预防才是长期的。配置 logrotate 统一管理日志、设置磁盘使用率告警(如 80% 通知)、把 /var/log 与数据目录分开挂载、定期跑一次磁盘占用报表。做到这几件事,磁盘写满通常会变成提前三天知道的可处理事件,而不是服务突然宕机的事故。

Previous Article

fail2ban 防 SSH 暴力破解实战

Next Article

MySQL 慢查询与索引排查优化

Write a Comment

Leave a Comment

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