Linux磁盘爆满排查教程_inode与空间问题解决

发布时间 - 2026-01-07 00:00:00    点击率:
答案是inode耗尽或小文件堆积导致,需先用df -h和df -i区分空间满还是inode满,再用find或ncdu定位高占用目录,最后针对性清理并配置预防措施。

Linux磁盘显示“空间不足”,但df -hdu -sh *结果对不上?大概率是inode耗尽,或小文件堆积导致空间无法释放。别急着删日志,先分清是“没空间”还是“没inode”——这是排查的起点。

第一步:确认到底是空间满,还是inode满

运行两个命令对比:

  • df -h:看各挂载点的磁盘使用率(Size/Used/Avail)
  • df -i:看各挂载点的inode使用率(IUsed/IFree/IUse%)

常见异常组合:

  • df -h显示使用率95%,但df -i显示IUse%接近100% → inode耗尽,典型于海量小文件(如缓存、邮件临时文件、未清理的/tmp)
  • df -h显示已满,但du -sh /path总和远小于Used → 可能有已删除但进程仍占用的大文件(lsof可查)

第二步:快速定位高inode占用目录

进入疑似挂载点(如/var),执行:

find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -nr | head -10

这条命令统计每个二级子目录下的文件数量(按降序排前10)。例如输出:

  482312 ./log
120944 ./spool
87652 ./cache

说明/var/log下有近50万文件,极可能是日志轮转失效或应用未清理所致。

更直观方式(需安装ncdu):

ncdu -x /var

交互式查看各目录文件数与磁盘占用,支持按文件数排序(按Ctrl+d切换排序方式)。

第三步:释放inode或空间的具体操作

若inode满:

  • 清空无用小文件:find /var/log -name "*.log.*" -mtime +30 -delete(删30天前的压缩日志)
  • 检查mail spool:ls -l /var/spool/mail/,大量零字节或超龄邮件文件可批量清理
  • 临时禁用日志生成:如systemctl stop rsyslog(仅调试用,勿长期停)

若空间满但du不匹配:

  • 查被删除但仍被进程占用的文件:lsof +L1lsof | grep deleted
  • 常见场景:nginx/apache日志被logrotate重命名后,主进程仍在往旧文件句柄写;重启对应服务即可释放空间
  • 强制释放(不推荐):echo > /proc/PID/fd/FD_NUMBER(仅限明确可丢弃的日志)

第四步:预防再次发生

治标更要治本:

  • /tmp/var/log配置tmpfiles.d自动清理规则(如/etc/tmpfiles.d/local.conf中加D /var/log/myapp 0755 root root 30d
  • 监控inode使用率:Zabbix/Prometheus添加node_filesystem_files_free指标告警
  • 限制用户创建过多文件:ulimit -n或在/etc/security/limits.conf中设置hard nofile


# linux  # node  # apache  # nginx  # app  # 字节  # ai  # echo  # sort  # mail  #   # var  # delete  # prometheus  # zabbix  # 这是  # 句柄  # 不上  # 这条  # 能有  # 再用  # 仅限  # 重启  # 更要  # 急着 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  html5的keygen标签为什么废弃_替代方案说明【解答】  Laravel中的Facade(门面)到底是什么原理  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  微信小程序 HTTPS报错整理常见问题及解决方案  WEB开发之注册页面验证码倒计时代码的实现  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  无锡营销型网站制作公司,无锡网选车牌流程?  Laravel中的withCount方法怎么高效统计关联模型数量  Swift中switch语句区间和元组模式匹配  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  在线教育网站制作平台,山西立德教育官网?  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  javascript基本数据类型及类型检测常用方法小结  如何做网站制作流程,*游戏网站怎么搭建?  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  如何选择PHP开源工具快速搭建网站?  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  如何为不同团队 ID 动态生成多个独立按钮  如何在自有机房高效搭建专业网站?  如何利用DOS批处理实现定时关机操作详解  Laravel怎么为数据库表字段添加索引以优化查询  Python高阶函数应用_函数作为参数说明【指导】  ,在苏州找工作,上哪个网站比较好?  JavaScript中的标签模板是什么_它如何扩展字符串功能  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  微信公众帐号开发教程之图文消息全攻略  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  再谈Python中的字符串与字符编码(推荐)  详解Huffman编码算法之Java实现  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  Laravel如何创建自定义中间件?(Middleware代码示例)  java获取注册ip实例  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  Laravel如何使用Service Container和依赖注入?(代码示例)  装修招标网站设计制作流程,装修招标流程?  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  Laravel怎么在Controller之外的地方验证数据  Laravel如何配置Horizon来管理队列?(安装和使用)  Laravel如何实现模型的全局作用域?(Global Scope示例)  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  🚀拖拽式CMS建站能否实现高效与个性化并存?  Swift开发中switch语句值绑定模式  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧