今天有客户反馈到他的服务器无法打开,感觉应该是磁盘占满导致的,但是看看物理空间好像还有空间存储的,但是检查df -i 看到已经占满,这个就是所谓的inode节点的,主要是用于记录文件的类型、大小、权限、所有者、文件连接的数目、创建时间与更新时间信息。
那我们如何去解决呢?
1. 查找根目录下每个文件夹使用的inode数量
for i in /*; do echo $i; find $i |wc -l|sort -nr; done
或者命令
du –inodes –max-depth=1 /
2. 发现/usr/占用最大,/usr下inode节点使用了4457827,继续使用命令查询/usr文件下哪个占用最大,依次排查,最终发现目录/usr/lib/fontconfig/cache 下inode 最多;
for i in /usr/lib/fontconfig/*; do echo $i; find $i |wc -l|sort -nr; done
或者命令
du –inodes –max-depth=1 /usr/lib/fontconfig/
3. 在最大的磁盘内,建立一个备份文件夹,并将cache缓存文件打包并备份;
mkdir /data/backup/ ##建立备份文件夹
cd /data/backup
nohup tar -zcvf cache.tar.gz /usr/lib/fontconfig/cache & ##将缓存文件打包备份,以防删除错误无法恢复
tail -f nohup.out ##检查窗口,没有滚动条了,即备份压缩完毕
4. 执行如下操作删除时间过长的即可;
cd /usr/lib/fontconfig/cache
find . -type f -mtime +100 -name “*.cache-7” -exec rm -rf {} \; ##因为这里等待的时间太长了,建议加nohup参数
-mtime +100 –设置时间为100天前;
-type f –设置查找的类型为文件;
-name *.cache-7 –设置文件名以.cache-7结尾(根据自己磁盘文件的后缀更改);
-exec rm -f –查找完毕后执行删除操作。