Linux 云服务器磁盘占满排查:区分容量和 inode,使用 df、du、lsof、journalctl 与 Docker 统计定位日志、打开文件和容器数据。
先只读定位:依次运行 df -h 看容量、df -i 看 inode、du 找目录、lsof +L1 查已删除但仍占用的文件,再看 journal 和 docker system df。不要先执行递归删除或 docker system prune -a。只读检查不改数据;扩盘会收费,误删数据库和容器卷会永久丢数据。
正确顺序是先确定哪个文件系统、容量还是 inode 出问题,再定位目录和进程。不要一上来执行批量删除或清理命令。
Linux 磁盘满的判断路径

先确认容量还是 inode 耗尽
以下命令为只读检查:
df -Th
df -ih
lsblk -fdf -Th 查看文件系统容量,df -ih 查看 inode。大量小文件可能让 inode 先到 100%,此时仍有 GB 空间也无法创建新文件。
怎样定位占用最大的目录
只在目标文件系统内逐层查看,避免跨入其他挂载点:
sudo du -xhd1 /
sudo du -xhd1 /var
sudo du -xhd1 /var/log根据上一层结果继续向下,不要在大型生产盘上无边界执行全盘排序。du 统计目录树占用,df 读取文件系统整体状态,两者口径不同。
df 很满但 du 找不到大文件怎么办
进程打开日志后,即使文件路径被删除,只要文件描述符仍未关闭,空间就不会释放。可用 lsof 检查:
sudo lsof +L1发现大文件后应先确认进程与业务,再让服务正常重新打开日志或重启对应服务。不要直接操作 /proc/PID/fd 下未知文件。
systemd 日志占用怎样处理
先查看占用:
sudo journalctl --disk-usage确认保留需求后,可按大小或时间清理归档日志。例如下面的大小只是示例,必须根据审计与排障需求确定:
sudo journalctl --vacuum-size=TARGET_SIZEvacuum 主要处理归档 journal,活动文件不一定立即缩小。长期控制应通过 journald 配置和日志策略完成,而不是定期人工暴力清理。
Docker 为什么容易占满磁盘
- 容器 JSON 日志没有轮转;
- 旧镜像和构建缓存累积;
- 停止的容器、匿名卷和临时数据未清理;
- 应用把大量数据写进容器可写层;
- 数据库卷持续增长。
先查看 Docker 自身统计:
docker system df
docker ps --sizedocker system prune 等清理命令可能删除仍准备复用的镜像、缓存或网络,不能作为无脑的一键修复。卷尤其可能包含业务数据。
可以直接删除日志文件吗
不建议直接删除正在写入的日志。优先确认服务的 logrotate、journald 或容器日志驱动配置,再通过正常轮转和重新打开文件释放空间。删除前要确认审计、故障分析和合规保留要求。
临时止损和长期治理怎么区分
- 临时止损:停止异常写入、释放已确认可删除的缓存或归档日志、恢复关键服务;
- 长期治理:日志轮转、容量告警、inode 告警、Docker 日志上限、数据库保留、快照与扩容计划;
- 扩容:当正常业务数据确实增长时扩大云盘,再按分区与文件系统流程处理。
清理后怎样验证
df -Th
df -ih
sudo du -xhd1 /var
sudo journalctl --disk-usage还要检查原先失败的应用是否恢复写入、数据库是否正常、日志是否继续异常增长。空间下降一次不等于根因消失。
常见问题
为什么 df 100%,du 加起来却很小?
常见原因是已删除但仍被进程打开的文件,也可能是挂载覆盖、保留块或权限导致统计口径不同。
inode 满了扩容容量有用吗?
不一定。应先定位大量小文件的来源和保留策略;扩展文件系统是否增加 inode 取决于文件系统类型和结构。
能不能定时执行 docker system prune?
不建议在不了解资源用途时自动执行。应先配置日志轮转、镜像发布和缓存治理,再对可删除对象建立明确规则。
结果对应处理
- 容量满:从同一文件系统逐层定位,确认文件用途和保留策略。
- inode 满:找海量小文件,不能只删一个大日志。
- df 满但 du 小:处理 deleted-open 文件对应进程,正常重启服务释放句柄。
- Docker:先区分镜像、可写层、日志和 volume;volume 可能是唯一数据。
验收与回退
清理后检查容量、inode、应用写入、数据库、日志轮转和 Docker 重启。长期设置日志大小、监控和扩容计划。删除前做快照/备份;误清理或应用异常时停止继续删除,从快照或应用备份恢复。
Linux 云服务器磁盘满了怎么排查现场验收单
- 入口或命令:SSH 进入服务器,依次 df -h、df -i、du、lsof +L1、journalctl 与 docker system df
- 提交前风险:只读检查不收费;扩盘收费,误删数据库/容器卷会丢数据
- 不能继续时:inode 满、deleted-open、journal、Docker layer/volume、挂载点遗漏、日志继续增长
- 完成证据:容量和 inode 恢复安全余量,应用写入/数据库/日志轮转与重启均正常
- 退出办法:删除前快照/备份;清理失败停写,从快照/备份恢复,不继续递归删除
完成这项任务后继续检查
- 腾讯云国际 CVM 云硬盘怎么扩容?Linux、Windows 分区与文件系统处理
- 阿里云国际 ECS 云盘怎么扩容?Linux、Windows 分区与文件系统处理
- AWS EBS 怎么扩容?Linux、Windows 分区与文件系统处理
官方资料
如果需要确认云平台账户、充值、云盘扩容或服务器排障方向,可通过 Telegram 联系 @heishayun。提供命令结果前请遮挡主机名、IP、路径和业务标识。

