=================================================== 当发现某个分区下的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 {} \; |