磁盘满排障
区分容量与 inode 耗尽,定位同文件系统目录占用和删除后仍打开的文件。
适用范围与前提
Linux 文件系统空间排查;不是自动清理工具。
- 把 /srv/app 替换为出现写入失败的实际路径,先确认所属挂载点。
- 目录扫描可能造成磁盘负载,应避开高峰;lsof 未安装时请管理员评估,不自动安装。
- 不要默认删除日志、数据库文件、容器卷或备份。
命令仅供手动复制到获授权的环境执行。站点不会连接服务器;涉及网络的诊断可能产生请求或登录审计记录。
1. 区分字节空间与 inode
df -h /srv/app
df -i /srv/app预期现象:Use% 高表示容量不足;IUse% 高表示 inode 不足。确认输出的挂载点不是另一个盘。
- 容量不足 → 在同一文件系统内定位大目录
- inode 不足 → 定位大量小文件
- 两者正常:检查配额、只读挂载和具体写入路径 → 升级求助前收集
2. 在同一文件系统内定位大目录
sudo du -x -h --max-depth=1 /srv/app预期现象:-x 不跨文件系统;逐级缩小目录范围。du 可能因权限、稀疏文件、快照等与 df 不一致。
- 找到大目录或异常增长文件 → 修复建议(需人工确认)
- df 很满而 du 明显较小 → 检查已删除但进程仍持有的文件
3. 定位大量小文件
sudo du --inodes -x --max-depth=1 /srv/app预期现象:GNU du 支持时可比较目录 inode 占用;若版本不支持,请管理员安排限范围文件数量检查,避免全盘扫描。
- 找到高 inode 占用目录 → 修复建议(需人工确认)
- 工具不支持或无法定位 → 升级求助前收集
4. 检查已删除但进程仍持有的文件
sudo lsof +L1预期现象:核对设备、文件大小和持有 PID;已删除文件的空间可能要在进程关闭句柄后才释放。
- 找到相关大文件及持有服务 → 修复建议(需人工确认)
- 没有对应记录:进一步检查快照、保留空间和配额 → 升级求助前收集
修复建议(需人工确认)
- 优先与业务确认容量规划、日志轮转和保留策略;扩容、迁移或清理需备份及人工确认。
- 删除后仍打开的文件由服务负责人安排关闭句柄或维护重启,评估中断风险;不要直接截断进程文件描述符。
- inode 耗尽时先确认临时/缓存文件生命周期,不能根据目录名批量删除。
验证恢复
- 复查目标文件系统的 df -h 与 df -i,观察空间是否稳定。
- 由业务负责人验证写入恢复,并确认没有持续异常增长。
升级求助前收集
- 挂载点、文件系统类型、df/du 对比、inode 情况、脱敏持有进程信息及增长趋势。