VPS磁盘显示100%,却用du找不到对应大文件,先不要盲目删除日志、数据库或容器目录。df观察文件系统整体已用空间,du统计当前目录树可见文件;已删除但仍被进程打开的文件、挂载边界、文件系统保留空间和inode耗尽,都可能让两者看起来矛盾。
先确认是容量满,还是inode满
df -h
df -i
| 结果 | 含义 | 下一步 |
|---|---|---|
| Use%接近100% | 文件系统数据块接近耗尽 | 定位目录、已删文件、保留空间和挂载 |
| IUse%接近100% | 小文件数量耗尽inode | 定位缓存、会话、邮件、构建产物等小文件密集目录 |
| 两者都正常 | 故障可能不在当前挂载点 | 核对应用使用的卷、容器卷与实际路径 |
磁盘容量和inode是两种不同资源。还有可用GB却无法创建文件,常见原因就是inode耗尽;反过来,inode充足也不能解决数据块已满。
第一步:确定哪个文件系统真的满了
不要直接从根目录无边界扫描。先用df -h找到已满的挂载点,再在该文件系统内统计一级目录:
sudo du -x -h --max-depth=1 /目标挂载点 2>/dev/null
-x用于限制在同一文件系统内,避免把其他磁盘、网络存储或容器挂载混入结果。逐级缩小到异常目录后,再检查日志、备份、上传文件、包缓存、数据库、容器层和临时文件。
不要把du输出直接按名称猜测后删除。数据库数据目录、容器存储和系统日志都有各自的清理方式,绕过应用直接删除可能造成数据损坏。
第二步:检查已删未释放文件
Linux进程可以继续持有已经从目录中删除的文件。目录项消失后,du不再统计它,但只要进程仍打开该文件,文件系统空间就不会释放。可以只读检查:
sudo lsof +L1
重点看文件大小、进程名、PID和挂载点。常见情形是日志文件被删除后,Web服务、数据库或其他守护进程仍向旧文件描述符写入。
处理时不要直接杀死不明进程。先确认进程角色、服务影响和可用维护窗口;对支持日志重新打开的服务使用其正式轮转或重载方式,必要时安排受控重启。完成后再次运行df -h,确认空间是否释放,并检查服务是否恢复正常。
第三步:df和du是不是看了不同的边界
以下情况也会产生差异:
- 目录下后来挂载了另一文件系统,原目录中的旧文件被挂载点遮住;
- 容器使用独立层、命名空间、卷或日志驱动;
- 快照、文件系统元数据或写时复制占用没有表现为普通文件;
- 命令统计时文件仍在快速增长或删除;
du没有权限读取部分目录,错误又被忽略;- 文件系统为管理员或紧急操作保留了部分数据块。
先查看挂载关系和文件系统类型,再决定使用何种工具。不要为了让两个数字“看起来一样”而改文件系统保留比例;该空间可能用于防止根分区完全失控,修改前要理解文件系统和恢复需求。
第四步:日志、容器和数据库分别查
系统日志
journalctl --disk-usage
先查看日志总占用和轮转配置。清理前确认需要保留的审计周期,并使用日志系统支持的保留策略;直接删除正在使用的日志可能再次造成已删未释放文件。
容器存储
查看镜像、容器、卷和构建缓存各自占用,并核对业务是否仍引用。所谓“未使用”要由当前编排和恢复需求确认,不能在生产机上直接执行大范围自动清理。
数据库
数据库空间应从库表、日志、临时文件、归档和备份策略定位。不要在文件系统层直接删除数据文件或事务日志。先做一致性备份、确认保留规则,再通过数据库支持的方式处理。
一般的日志、Docker与数据库安全清理顺序,可继续参考VPS磁盘空间满后的分类定位方法。本文重点解决的是df与du不一致的隐藏占用。
第五步:inode满时怎么找小文件来源
inode耗尽通常不是一个大文件,而是大量小文件。先在已满挂载点内按目录统计文件数量,逐级缩小到缓存、会话、邮件队列、解压目录、构建产物或异常任务。
定位过程中避免跨越其他挂载点,也不要在业务高峰启动无边界的全盘find扫描。大量目录遍历本身会消耗I/O。找到来源后,应修复生成策略、过期机制和轮转,而不是只清一次等它再次占满。
磁盘已满时的安全处置顺序
- 暂停会继续大量写入的非关键任务,避免故障扩大;
- 保存
df、inode、挂载和服务状态等初始证据; - 优先清理明确可再生成且不被业务使用的临时数据;
- 对日志、容器和数据库使用各自支持的清理方法;
- 处理已删未释放文件时,安排服务重载或受控重启;
- 释放少量空间后先确认系统、SSH和关键服务稳定;
- 再做完整清理、扩容或数据迁移,并设置告警。
如果系统已经无法写日志、登录或启动服务,应优先通过云控制台、救援环境或服务商支持恢复最小管理能力。不要在缺少备份时尝试文件系统修复或批量删除。
扩容完成为什么系统里还是原容量
云平台扩大虚拟磁盘,只是增加了块设备容量。操作系统可能仍需要扩展分区、LVM逻辑卷和文件系统。具体步骤取决于分区表、LVM、文件系统类型和根分区结构,不能把某一套命令通用于所有VPS。
扩容前应创建可恢复备份或快照,记录分区与挂载信息,并确认平台文档。快照与异地备份的恢复边界可参考VPS快照、文件备份和异地恢复的区别。
故障恢复后补上三类告警
- 容量阈值:监控已用百分比和可用空间趋势;
- inode阈值:监控文件数量增长,尤其是缓存与会话目录;
- 增长来源:监控日志、容器、数据库、备份和上传目录的日增长。
告警要留出排查时间,不应等到100%才通知。还要验证日志轮转、备份保留和临时文件清理是否真正执行,而不是只写了配置。
VPS磁盘100%而du找不到大文件时,正确顺序是先区分容量与inode,再锁定挂载点,检查已删未释放文件、挂载边界和专用存储,最后才决定清理或扩容。保留初始证据、一次只处理一个来源,比盲目删除更容易恢复,也能防止同类故障重复发生。






