磁盘占满通常只有一两个明显的原因。请自上而下逐步排查,先查看再删除;除非清楚某个目录归哪个服务所有,否则不要手动删除 /var/lib 下的文件。
运行 df -h。查看 Use% 列和 Mounted on 列:已满的文件系统可能是 /,也可能是单独挂载的 /var、/home 或 /data,清理错了对象不会有任何效果。
同时运行 df -i。文件系统可能还有可用空间,却没有可用的 inode,这种情况通常是数以百万计的小文件堆积造成的(会话文件、邮件队列、缓存文件)。如果 IUse% 接近 100%,要找的就是大量小文件,而不是少数大文件。
运行 sudo du -xh --max-depth=1 / | sort -h,并查看最后几行。-x 选项只在同一个文件系统内统计,因此已挂载的磁盘和虚拟文件系统不会干扰结果。在最大的目录内重复此操作,例如 sudo du -xh --max-depth=1 /var | sort -h。
如果已安装 ncdu(在 Debian 和 Ubuntu 上使用 sudo apt install ncdu),可以用 sudo ncdu -x / 以交互方式浏览同样的数据。
如果 du 显示的用量远小于 df,可能是某个进程仍然打开着一个已删除的文件,通常是体积很大的日志。sudo lsof +L1 会列出链接数为零的已打开文件。该进程关闭文件后,空间才会释放,这通常意味着需要重启占用该文件的服务。请在空闲时段操作,不要在请求高峰期进行。
日志:查看 /var/log,并用 journalctl --disk-usage 检查日志。如果占用很大,请参阅我们关于限制 journald 大小的指南。
软件包:sudo apt clean 会删除已下载的软件包文件;sudo apt autoremove 会列出不再需要的软件包和旧内核,并在你确认之前显示将要删除的内容。请保留当前运行的内核和上一个版本。
Docker:docker system df 会显示镜像、容器、卷和构建缓存。docker system prune 会删除已停止的容器、未使用的网络和悬空镜像;除非添加 --volumes,否则不会删除卷,因此请在回答前仔细阅读提示。
Snap:snap list --all 会显示已禁用的 snap 旧版本,可以用 snap remove NAME --revision=NUMBER 逐个删除。
再次运行 df -h,并检查因磁盘已满而停止的服务是否已恢复运行(systemctl --failed)。遇到磁盘已满的数据库,在你信任它之前,可能需要重启或检查。
然后设置限制,避免问题再次发生:日志轮转、journald 限制,以及在磁盘使用率达到 90% 之前发出告警。
最后更新: 2026-10-03
已轮转并压缩的日志(例如 syslog.1 或 .gz 文件)在不再需要时通常可以删除。不要删除正在运行的服务的当前日志文件;请谨慎地将其截断,或交给 logrotate 处理,并先确认该服务的要求。
通常是因为已删除的文件仍被某个正在运行的进程打开着(参见 lsof +L1),或者这两个数字来自不同的文件系统。请使用 du -x,并针对同一挂载点与 df 进行比较。
只有在运行 docker system df 并查看哪些内容未被使用之后才可以。它可能会删除你仍打算启动的镜像。卷默认会保留,但请确保重要数据已有备份。
先使用内置工具,以及删除之前需要检查的内容。
在做任何更改之前,建议按以下顺序检查。
在做任何更改之前,先按顺序查看这份简短的检查清单。
读取 ID,理解其含义,并在厂商官方页面中搜索。
每款清理工具的设计目标,以及适合哪些人。
哪些可以安全删除,哪些需要再看一眼。
它会删除什么、您会失去什么,以及何时使用。
它为何看起来这么大,以及安全缩减的方法。
它包含什么、删除后会失去什么,以及受支持的删除方法。
了解这个缓存是什么,以及如何使用 Windows 工具清理它。
网络、芯片组、存储、显卡等驱动的合理安装顺序。
通过命令行添加单个驱动程序或整个文件夹。
先查看,再备份,最后删除——使用 Android 自带工具。
了解重复照片出现的原因,以及如何在不丢失好照片的前提下清除它们。
Rain Cleaner:清理前先查看,提供免费版和 14 天 Pro 试用。
哈希校验、Defender 扫描和 SmartScreen 操作步骤。
如何私下报告安全问题。
我们现在、接下来和之后要做的事项。
查看大小,一次性清理,并设置永久限制。
删除任何内容之前,先用四种内置方法看看是什么占用了空间。
所有磁盘清理问题集中解答,并附有安全的检查顺序。
按安全的顺序分为九步,可打印。
备份、还原点、先预览,以及哪些文件绝不能手动删除。
它们是什么、如何安全地缩小,以及哪些不要动。