当前位置:首页 > 文章列表 > 文章 > linux > Linux inode 用尽排查完整流程:df -i、find 定位和清理归档

Linux inode 用尽排查完整流程:df -i、find 定位和清理归档

来源:17golang原创 2026-06-16 10:17:21 0浏览 收藏

Linux 服务器上有一种问题很容易误判:df -h 看磁盘空间还有不少,但应用写文件时却报 No space left on device。如果只盯着容量,很可能会绕一圈才发现真正问题是 inode 被大量小文件耗尽。

本文按完整工作流来处理:先定边界,再确认容量和 inode,再定位小文件目录,最后把清理、归档、日志轮转和监控一起补上。目标不是只删掉一批文件,而是让同类问题下次能提前发现。

目录

目标和边界:先确认要解决什么

这类问题的目标很明确:让应用恢复写入,同时找出 inode 被谁消耗掉,避免只靠临时删除文件续命。

本文默认场景是普通 Linux 服务器上的应用目录、日志目录、缓存目录或临时文件目录。不会展开文件系统底层原理,也不会讨论重新格式化分区这种高风险操作。线上处理时,任何删除动作都应该先确认目录归属、业务影响和保留周期。

全流程总览:从写入失败到 inode 恢复

先把路线图放出来。遇到写入失败时,不要只看 df -h。容量正常并不代表还能创建文件,inode 用完同样会导致创建失败。

Linux inode 用尽排查全流程:写入失败、空间正常、inode 爆满、定位目录、清理归档

这条链路里的关键判断是:如果 df -h 显示容量还够,但 df -i 显示 IUse% 接近 100%,那就应该把排查重点转到“小文件数量”上。

阶段 1:用 df -h 和 df -i 分清容量与 inode

目标

确认当前报错到底是磁盘容量不足,还是 inode 不足。两个问题处理方式不同,不能混在一起看。

关键动作

先看容量:

df -h

再看 inode:

df -i

如果看到类似下面的结果,就说明 inode 已经被打满:

Filesystem      Inodes  IUsed  IFree IUse% Mounted on
/dev/sda1      1310720 1310720     0  100% /

检查点

检查项 正常信号 异常信号
df -h 容量未满 Use% 接近 100%
df -i IFree 还有余量 IUse% 接近 100%
应用报错 写入正常 No space left on device

阶段 2:用 find 找到小文件集中目录

目标

inode 用尽通常不是一个大文件导致的,而是大量小文件堆出来的。下一步要找出文件数量最多的目录。

关键动作

可以先从常见目录缩小范围,例如 /var、应用缓存目录、上传临时目录、日志目录:

find /var -xdev -type f | sed 's#/[^/]*$##' | sort | uniq -c | sort -nr | head -20

这条命令的思路是:列出文件,转换成所在目录,按目录统计文件数量,再取数量最多的前 20 个。结果可能类似:

245000 /var/cache/app/session
 82000 /var/log/app/request
 35000 /var/tmp/upload

检查点

定位目录后,先确认这些文件是否能清理:

  • 是不是业务仍在读取的文件。
  • 是否有明确保留周期,比如 7 天、30 天。
  • 是否需要先归档,再删除本地旧文件。
  • 是否由应用异常产生,比如失败重试不断写临时文件。

阶段 3:清理、归档和日志轮转一起落地

临时恢复可以先清理确认过的旧文件,但真正稳定的方案应该包含三件事:批量清理、日志轮转、监控告警。

Linux inode 清理工作流:小文件目录、批量清理、日志轮转、监控告警、inode 下降

目标

把 inode 使用率从危险区降下来,并让新增小文件有固定生命周期。

关键动作

清理 7 天前的缓存文件示例:

find /var/cache/app -type f -mtime +7 -print0 | xargs -0 -r rm -f

归档 30 天前的日志示例:

mkdir -p /data/archive/app-log
find /var/log/app -type f -mtime +30 -print0 | xargs -0 -r tar -rf /data/archive/app-log/old-files.tar

归档完成后,再根据业务确认是否删除本地旧文件。对于持续增长的日志目录,优先配置轮转策略,让单个目录不会无限堆文件。

检查点

清理后再次查看 inode:

df -i

如果 IUse% 从 100% 降到安全区,应用也能正常写入,说明恢复动作有效。下一步就不是继续手动删除,而是补监控和自动清理策略。

我的推荐工作流

  1. 先记录应用报错时间、目录和服务名。
  2. 运行 df -h,排除容量用尽。
  3. 运行 df -i,确认 inode 使用率。
  4. find 在对应挂载点下统计文件数量最多的目录。
  5. 确认目录归属和保留周期,先归档或清理过期文件。
  6. 再次运行 df -i 和应用写入测试。
  7. 补上日志轮转、缓存过期、inode 使用率告警。

容易踩坑的地方

  • 只看 df -h:容量正常不代表 inode 正常,写入失败时两个命令都要看。
  • 直接全盘查找:大机器上全盘扫描很慢,先按挂载点和业务目录缩小范围。
  • 不确认目录归属就删除:缓存、会话、上传临时文件的业务影响不同,删除前必须确认。
  • 只清理不治理:如果生成小文件的逻辑还在,inode 迟早会再次打满。
  • 没有告警阈值:建议对 inode 使用率设置 80%、90% 两级提醒。

速查表

阶段 命令或动作 判断信号
确认容量 df -h 容量是否打满
确认 inode df -i IUse% 是否接近 100%
定位目录 find ... | uniq -c 哪个目录文件数最多
恢复服务 清理或归档过期文件 应用能否重新写入
长期治理 轮转、过期、监控 inode 使用率持续下降

总结一下:遇到 No space left on device,不要只盯容量。先用 df -hdf -i 把问题分型,再用文件数量定位目录,最后把清理策略和监控补上。这样处理一次,后面同类问题就不会靠猜。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Go HTTP 请求一直卡住怎么办:从默认客户端到超时控制一步步排查Go HTTP 请求一直卡住怎么办:从默认客户端到超时控制一步步排查
上一篇
Go HTTP 请求一直卡住怎么办:从默认客户端到超时控制一步步排查
Linux 端口被占用排查完整流程:ss、lsof 和端口切换
下一篇
Linux 端口被占用排查完整流程:ss、lsof 和端口切换
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • UniScribe - AI 免费在线音视频转文字平台
    UniScribe
    UniScribe 是一款 AI 音视频转文字与内容整理工具,支持上传音频、视频文件或粘贴 YouTube 链接,自动生成转写文本、摘要、思维导图和关键问题,并支持多格式导出,适合会议记录、课程学习、访谈整理和内容创作复盘。
    9次使用
  • 剧云 - 免费 AI 智能中文剧本创作平台
    剧云
    剧云是专业中文剧本创作平台,安全稳定运行十余年,集成AI编剧、剧本医生审核、人物小传、剧情关系图、大纲编写、多人协作、Word导入导出、版权管控功能,数据安全防护,轻松高效创作剧本。
    154次使用
  • 万象有声 - AI 一站式有声内容创作平台
    万象有声
    万象有声,一个专为有声创作者打造的新一代智能有声内容创作平台。平台提供专业的智能拆章、智能画本编辑、AI配音、AI生成音效、后期制作、智能对轨、智能审听等有声创作全流程工具,可以帮助创作者高效、低成本创作出引人入胜的有声作品。立即体验,让有声书制作更简单!
    157次使用
  • Red Skill - 小红书推出的 AI Skill 分发平台
    Red Skill
    小红书创作服务平台为小红书创作者和机构提供视频上传、数据分析、粉丝管理、创作指导等多项运营服务,助力用户解锁更多创作者专属功能,体验高效创作!
    162次使用
  • MiMo Code - 小米大模型团队开源的新一代 AI 编程助手
    MiMo Code
    MiMo Code 是小米大模型团队开源的新一代 AI 编程助手,面向开发者提供代码理解、生成与辅助开发能力,适合作为 AI 编程工具收藏和体验。
    264次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码