最近很忙,公司基础架构重新设计,公司为了资源再利用。把所有的废旧机器包括台式机都需要重新整合利用,这就涉及到了诸多改造,主要设计ceph,vware,openstack几个大块的设计和组合。所以最近将更多的心血倾注在了这些内容的设计和实施上。
不过今天客户遇到了点小麻烦,让波哥帮助处理的。在这里跟大家分享一下。
一个跑五六年的生产服务器出现了inode爆满的情况。
当时忙波哥没有截图,在网上盗了个图给大家
看到没/data/web这个目录就是inode爆满,那么这个inode是什么?
理解inode,要从文件储存说起。
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。
文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。
这个655360参数值可以调整,但是需要格式化盘。所以这事就别提了。既然已经无法再见文件的元数据了。咱们就开始删,那么删什么?在哪删?这对于一个已经五六年的老项目已经没有人能说清楚了。所以需要先统计各个文件夹下面的文件个数,好给我们一个问题处理的方向。
当时客户的服务器上跑了14个tomcat,他们都是一个/data的目录下,波哥不能一个一个去找。所以随手写了个小脚本帮助分析哪个目录底下文件个数最多。
代码比较少就贴在这了。
#! /bin/bash base_pach="/data" function file_num(){ for file in `ls $base_pach` do if [ -d $base_pach"/"$file ];then echo $file cd $base_pach/$file echo $(pwd) $(ls -lR|grep "^-"|wc -l) >> $base_pach/Info.txt cd $base_pach fi done } file_num
实行之后会将分析结果写在/data/Info.txt中,里面的base_pach="/data"这个你们要替换成自己的目录哦。去最多的那个文件夹,再结合业务重点分析一下文件,或者迁到别的目录或者直接删掉。
find /data/aa/tomcat-7.0.33-mdm/logs/ -mtime +7 -type f -exec rm {} \;
类似上面的删除命令。
江湖规矩:内容对你有帮助,点赞、转发选一个!
波哥太忙了,我还得抓紧给你们录制视频去,真的好着急呀!感觉做完CI这段视频,然后还需要重写我们的kkitdeploy。这次要完全拥抱ansible!自己写轮子太浪费时间了!
江湖规矩哦!~帮波哥就等于帮你们!!
拜!~