记一起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!自己写轮子太浪费时间了!

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

拜!~


相关文章
|
安全 网络安全 开发工具
GitHub 访问速度慢怎么办? 9 种方案帮你提速
GitHub 访问速度慢怎么办? 9 种方案帮你提速
5478 0
GitHub 访问速度慢怎么办? 9 种方案帮你提速
|
自然语言处理 数据可视化 Java
NLP6:stanford Parser中文分词
NLP6:stanford Parser中文分词
465 0
|
11月前
|
人工智能 算法 编译器
AscendC从入门到精通系列(一)初步感知AscendC
Ascend C是CANN推出的一种编程语言,专为算子开发设计,支持C/C++标准,旨在提高开发效率与运行性能。通过Ascend C,开发者能在昇腾AI处理器上高效实现自定义算法。本文档介绍了如何使用Ascend C编写和运行一个简单的“Hello World”程序,包括核函数的编写、主程序调用及CMake配置,展示了Ascend C的基本使用流程。
|
数据挖掘 程序员 数据安全/隐私保护
解锁PDF潜力:9个Python库让你的文档处理更高效
程序员晚枫分享了Python处理PDF的9个第三方库,包括PyPDF2、pdfrw、ReportLab、pikepdf、pdfplumber、pdfminer.six、PyMuPDF、popdf和borb,各具优缺点。选择时需考虑应用场景、功能需求、库的维护状态和开源协议。例如,pdfplumber擅长内容提取,而ReportLab和PyMuPDF适用于创建和修改内容。
2236 7
|
缓存 关系型数据库 数据库
如何优化 PostgreSQL 数据库性能?
如何优化 PostgreSQL 数据库性能?
660 2
|
11月前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
180 21
|
存储 人工智能 算法
详细解读Cholesky分解
详细解读Cholesky分解
437 0
|
Java Linux 应用服务中间件
docker编译部署freeswitch-1.10.10
docker编译部署freeswitch-1.10.10
1352 0
|
缓存 前端开发 JavaScript
React.Memo和useMemo的区别?
React.Memo和useMemo的区别?
378 0
|
传感器 机器学习/深度学习 人工智能
最新Benchmark | 4Seasons:面向挑战场景的自动驾驶视觉SLAM基准
论文基于大规模4Seasons数据集,提出了一种新的视觉SLAM和长期定位基准,用于在挑战条件下的自动驾驶。4Seasons提供了季节变化和不同的天气和照明条件导致的剧烈外观变化。尽管在类似条件的小规模数据集上推进视觉SLAM方面取得了重大进展,但仍缺乏代表自动驾驶真实场景的统一基准。
最新Benchmark | 4Seasons:面向挑战场景的自动驾驶视觉SLAM基准
下一篇
oss云网关配置