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 工具輔助撰寫,經人工審核後發佈。