← 帮助中心/故障排查

VPS 磁盘空间满了怎么清理

磁盘 100% 的后果比想象中严重:数据库拒绝写入、网站报 500、连日志都写不进去导致无从排查。本文给出一套从定位到清理的标准流程。

第一步:确认全局状况

执行 df -h 查看各分区使用率,确认是根分区满了还是某个挂载点满了。如果 inode 用尽(df -i 显示 100%)而空间还有剩余,说明是海量小文件问题,思路相同但要找的是文件数量多的目录。

第二步:定位大目录

从根目录逐层下钻:du -h --max-depth=1 / 2>/dev/null | sort -rh | head,找到最大的目录后再进入下一层重复,两三轮就能锁定元凶。

最常见的五个「胖子」

  • 日志:/var/log 下的滚动日志和应用自己写的日志最常见。用 journalctl --vacuum-size=200M 收缩系统日志,并给应用日志配置 logrotate;
  • Docker:悬空镜像和构建缓存极占空间,docker system df 查看、docker system prune 清理(注意确认不会误删在用的东西);
  • 旧备份:备份脚本只增不删,几个月就把磁盘吃满,给备份加保留策略;
  • 包管理缓存apt clean 可释放下载缓存;
  • 被删除但未释放的文件:进程还持有已删除文件的句柄时空间不会释放,lsof | grep deleted 找到进程重启即可。

清理时的两条铁律

一是先看后删:删除前确认文件用途,数据库目录、正在写入的日志不能直接 rm;二是大文件先截断后删除:正在被写入的日志用 truncate -s 0 清空比直接删更安全。清理后建议配置磁盘使用率告警(超过 80% 提醒),避免下次又是满了才发现。

本文由 SharkCloud 编辑团队借助 AI 工具辅助撰写,经人工审核后发布。