记一起inode爆满事件及分析脚本

简介: 记一起inode爆满事件及分析脚本

640.gif


最近很忙,公司基础架构重新设计,公司为了资源再利用。把所有的废旧机器包括台式机都需要重新整合利用,这就涉及到了诸多改造,主要设计ceph,vware,openstack几个大块的设计和组合。所以最近将更多的心血倾注在了这些内容的设计和实施上。


不过今天客户遇到了点小麻烦,让波哥帮助处理的。在这里跟大家分享一下。


一个跑五六年的生产服务器出现了inode爆满的情况。

当时忙波哥没有截图,在网上盗了个图给大家


640.jpg

看到没/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!自己写轮子太浪费时间了!

哦!~帮波哥就等于帮你们

拜!~


相关文章
|
2月前
|
缓存 关系型数据库 MySQL
服务器磁盘爆满?别慌,教你轻松清理!
服务器磁盘空间告急?别慌!本文将教你如何快速识别并清理占用大量磁盘空间的文件和目录,优化日志文件,释放磁盘空间,恢复系统正常运行。适合服务器管理员和网站运营者。
173 0
 服务器磁盘爆满?别慌,教你轻松清理!
重复文件清除工具,硬盘内存拯救者。。。
重复文件清除工具,硬盘内存拯救者。。。
|
消息中间件 关系型数据库 Shell
记录贴:sentry磁盘占用过大如何清理?
记录贴:sentry磁盘占用过大如何清理?
1239 0
|
存储
磁盘满的本质分析——磁盘空间满与inode节点满
磁盘满的本质分析——磁盘空间满与inode节点满
233 1
磁盘满的本质分析——磁盘空间满与inode节点满
|
Linux
11.3 Linux扫描文件系统并建立磁盘配额记录文件(quotacheck命令)
其实,磁盘配额(Quota)就是通过分析整个文件系统中每个用户和群组拥有的文件总数和总容量,再将这些数据记录在文件系统中的最顶层目录中,然后在此记录文件中使用各个用户和群组的配额限制值去规范磁盘使用量的。因此,建立 Quota 的记录文件是非常有必要的。
306 0
11.3 Linux扫描文件系统并建立磁盘配额记录文件(quotacheck命令)