磁盘inode文件句柄数耗尽解决方案
早晨飞书告警线上服务器根的inode小于10%,而磁盘空间是够用的。这意味着根分区中的 inode(索引节点)资源即将耗尽,而不是磁盘空间(block)耗尽。这种情况通常是由于大量小文件(如日志、缓存、临时文件等)占用了过多的 inode,而不是单个或少量大文件。
1、确认inode的使用情况
2、定位占用 inode 最多的目录
find / -xdev -type f | awk -F'/' '{print $2}' | sort | uniq -c |sort -n -r
3、更精确的统计子目录
[root@1-194 ~]# find / -xdev -type f | cut -d/ -f1-3 | sort | uniq -c | sort -n 1 /.autorelabel 1 /boot/config-3.10.0-1160.83.1.el7.x86_64 1 /boot/config-3.10.0-1160.el7.x86_64 1 /boot/grub 1 /boot/initramfs-0-rescue-f5de8969ed5a461082ecdf253cb84a03.img 1 /boot/initramfs-3.10.0-1160.83.1.el7.x86_64.img ... 省略好多 ... 33 /var/spool 62 /etc/sysconfig 67 /var/cache 72 /etc/filebeat 128 /usr/libexec 157 /var/log 306 /boot/grub2 378 /usr/sbin 742 /usr/bin 1266 /etc/selinux 1299 /usr/include 4848 /var/lib 5936 /usr/lib64 11708 /usr/lib 11945 /usr/src 15448 /usr/share 16027 /usr/local 2300404 /data/applogs
最终定位到/data/applogs目录使用的inode最多。
4、 深入定位具体目录
[root@1-194 ~]# cd /data/applogs/ [root@1-194 applogs]# ls dataplatform-job xxl-job [root@1-194 applogs]# find /data/applogs/dataplatform-job -xdev -type f | awk -F'/' '{print $3}' | sort | uniq -c | sort -n 62 applogs [root@1-194 applogs]# find /data/applogs/xxl-job/ -xdev -type f | awk -F'/' '{print $3}' | sort | uniq -c | sort -n 2300490 applogs
进一步确定了是/data/applogs/xxl-job/目录导致的
5、找到具体小文件目录
这些时间目录中有超多小文件。
6、清理
清理完之后,inode使用率立马下降了。