You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EC2实例inode自动增长致设备无空间问题求助

解决AWS EC2实例inode耗尽的问题

Hey there, let's work through fixing this inode exhaustion issue you're facing on your EC2 t2.micro instance—this is a super common pitfall, so we'll get it sorted out step by step.

第一步:确认inode使用情况

先搞清楚inode到底被哪里占用了:

  • 运行 df -i 查看所有挂载卷的inode整体使用情况,找IUse%列显示100%的文件系统,这就是问题根源。
  • 要定位具体是哪个目录产生了大量小文件,用这条命令(按文件数量排序显示目录):
    find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
    
  • 如果想精确统计某个可疑目录的文件数,用:
    find /path/to/suspected/dir -type f | wc -l
    

第二步:找出耗尽inode的元凶

inode耗尽几乎都是大量小文件导致的,而非大文件。常见的“罪魁祸首”包括:

  • 未轮转的日志:/var/log/下的应用调试日志、系统日志,长期没做切割和清理。
  • 未清理的临时文件:/tmp/或应用专属缓存目录里的会话数据、临时缓存,没定期删除。
  • Docker/容器遗留文件:如果在用容器,未使用的镜像、停止的容器、孤立的卷层会快速占用inode。
  • 堆积的邮件队列:/var/spool/mail/或postfix队列里的大量未投递邮件。

比如如果发现/var/log/下有几万份小日志文件,那就是日志轮转没配置好的问题。

第三步:临时救急+长期预防

快速恢复服务

  • 删除无用临时文件:可以安全清理/tmp/下的旧文件,命令是 rm -rf /tmp/*(先确认没有关键文件再执行)。
  • 清理过期日志:用find删除7天前的日志归档:
    find /var/log -name "*.log.*" -mtime +7 -delete
    
  • 如果是Docker的问题:清理未使用的容器资源:
    docker image prune -a  # 删除未使用的镜像
    docker container prune  # 删除已停止的容器
    docker volume prune  # 删除未使用的卷
    

长期避免复发的方案

  1. 配置日志轮转:用logrotate工具自动切割、归档日志。在/etc/logrotate.d/下为你的应用创建配置文件,比如/etc/logrotate.d/your-app:

    /var/log/your-app/*.log {
        daily
        rotate 7
        compress
        missingok
        notifempty
        copytruncate
    }
    

    这个配置会每天轮转日志,保留7天的归档,压缩旧日志,并且跳过空文件。

  2. 用定时任务清理临时文件:添加每日cron任务,删除/tmp/下超过7天的文件:

    0 0 * * * find /tmp -type f -mtime +7 -delete
    

    用crontab -e编辑你的定时任务列表,把这条命令加进去。

  3. 格式化新卷时调整inode数量:如果你的应用确实需要大量小文件,可以在格式化EBS卷时指定更多inode。比如格式化/dev/xvdb时:

    mkfs.ext4 -i 16384 /dev/xvdb
    

    -i参数设置每多少字节分配一个inode,数值越小inode数量越多。注意:已格式化的卷无法修改inode数量,必须重新格式化(会清空数据,记得先备份)。

  4. 用CloudWatch监控inode使用:设置自定义CloudWatch指标跟踪inode使用率。可以写个脚本定期把df -i的数据推送到CloudWatch,然后设置告警阈值(比如使用率达80%时触发),这样能在问题爆发前及时发现。

第四步:确认附加的EBS卷已正确使用

你添加了8GB卷,但要确保它挂载到了正确的目录。如果是根文件系统(/)的inode耗尽,应该把产生大量小文件的目录(比如/var/log)迁移到新卷并挂载。用mount命令查看当前挂载情况,同时修改/etc/fstab确保卷在开机时自动挂载。


内容的提问来源于stack exchange,提问作者Shakti Sisodiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:53:17