云服务器 inode 耗尽排查:磁盘没满却写不进文件
【摘要】 介绍 Linux 云服务器 inode 耗尽的识别、定位、清理与预防方法。
云服务器 inode 耗尽排查:磁盘没满却写不进文件
有时 df -h 显示还有空间,程序却报 “No space left on device”。这多半是 inode 用光了:小文件太多,每个文件都占一个 inode。
1. 确认是不是 inode 问题
df -i
看 IUse%,接近 100% 就是它。
2. 找出小文件最多的目录
sudo find / -xdev -type f 2>/dev/null | cut -d/ -f2 | sort | uniq -c | sort -nr | head
锁定一级目录后,再往下一层统计,例如:
sudo find /var -xdev -type f 2>/dev/null | cut -d/ -f3 | sort | uniq -c | sort -nr | head
3. 常见元凶
- PHP 或应用的 session 文件目录
- 邮件队列:
/var/spool/postfix - 缓存目录、临时文件
/tmp - 程序疯狂写的小日志或上传碎片
4. 安全清理
先看清楚再删,比如删除 7 天前的 session 文件:
sudo find /var/lib/php/sessions -type f -mtime +7 -delete
文件数量极大时,find ... -delete 比 rm * 更稳,不会报参数过长。
5. 防止复发
- 给缓存和 session 配置定期清理(cron 或 systemd timer)
- 修复不断产生小文件的程序
- 新建文件系统时,如果预计小文件很多,可以用
mkfs.ext4 -i调小每个 inode 对应的字节数
小结
磁盘有空间却写不进,先跑 df -i。定位到小文件最多的目录,确认无用后清理,再从源头控制小文件数量。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)