===================================================
当发现某个分区下的inode使用率过大时,需要找到该分区下的某些目录里有哪些文件可以清理。
查找某个目录下一个月或两个月之前的文件,然后删除
# find . -type f -mtime +30 |wc -l
# find . -type f -mtime +60 |wc -l
# find . -type f -mtime +30 -exec rm -f {} \;
# find . -type f -mtime +60 -exec rm -f {} \;
释放inode缓存
# sync
# echo 3 > /proc/sys/vm/drop_caches
再次检查下磁盘inode使用情况
# df -i
===================================================
1)删除无用的临时文件,释放inode。比如 /tmp 下有很多临时文件
# ls -lt /tmp | wc -l
# find /tmp -type f -exec rm {} \;
如果使用 rm *,有可能因为文件数量太多而出现Argument list too long错误
------------------------------------------------------------------------------------------
是在linux下,试图传太多参数给一个系统命令( ls *; cp *; rm *; cat *; etc..)时,就会出现 Argument list too long错误。
解决方法:使用 find - exec 遍历,然后执行删除便可。
# find /tmp -type f -exec rm {} \;
------------------------------------------------------------------------------------------
2)除了的临时文件外,0字节的文件也会占用inode,应该也释放。
# find /home -type f -size 0 -exec rm {} \;
3)inode爆满,也可能是某些目录下存在大量的小文件导致。
大量小文件分布有两种可能:
a)一是只有一个或少量目录下存在大量小文件,这种情况可以使用如下命令来找出这个异常目录:
# find / -type d -size +10M
即找出大小大于10M的目录(目录大小越大,表示目录下的文件越多)。
b)大量的小文件分布在大量的目录下,这时候上面的命令可能找不出异常的目录,需要以下命令:
# cd /
# find */ ! -type l | cut -d / -f 1 | uniq -c
此命令作用是找出目录下文件总数,可能需要执行多次,直到找出具体的目录。比如上面的命令找出了 /data 目录下存在大量的小文件,
但 /data/ 目录还有很多目录,这时候我们还需要继续执行:
# cd /data
# find */ ! -type l | cut -d / -f 1 | uniq -c
直到找出具体的目录。
如果可以直接删除节点满的文件夹:
# find . -type f -exec rm {} \;
还可以按照文件的inode节点删除文件
# find . -inum 342137 -exec rm -i {} \;
|