前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >记一起inode爆满事件及分析脚本

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

作者头像
IT运维技术圈
发布2022-06-26 13:35:07
发布2022-06-26 13:35:07
30700
代码可运行
举报
文章被收录于专栏:IT运维技术圈IT运维技术圈
运行总次数:0
代码可运行

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

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

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

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

看到没/data/web这个目录就是inode爆满,那么这个inode是什么?

理解inode,要从文件储存说起。

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。

操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。

这个655360参数值可以调整,但是需要格式化盘。所以这事就别提了。既然已经无法再见文件的元数据了。咱们就开始删,那么删什么?在哪删?这对于一个已经五六年的老项目已经没有人能说清楚了。所以需要先统计各个文件夹下面的文件个数,好给我们一个问题处理的方向。

当时客户的服务器上跑了14个tomcat,他们都是一个/data的目录下,波哥不能一个一个去找。所以随手写了个小脚本帮助分析哪个目录底下文件个数最多。

代码比较少就贴在这了。

代码语言:javascript
代码运行次数:0
复制
#! /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"这个你们要替换成自己的目录哦。去最多的那个文件夹,再结合业务重点分析一下文件,或者迁到别的目录或者直接删掉。

代码语言:javascript
代码运行次数:0
复制
find /data/aa/tomcat-7.0.33-mdm/logs/ -mtime +7 -type f -exec rm {} \;

类似上面的删除命令。

波哥太忙了,我还得抓紧给你们录制视频去,真的好着急呀!感觉做完CI这段视频,然后还需要重写我们的kkitdeploy。这次要完全拥抱ansible!自己写轮子太浪费时间了!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT运维技术圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档