記一起inode爆滿事件及分析腳本

最近很忙,公司基礎架構重新設計,公司爲了資源再利用。把所有的廢舊機器包括臺式機都需要重新整合利用,這就涉及到了諸多改造,主要設計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!自己寫輪子太浪費時間了!

江湖規矩哦!~幫波哥就等於幫你們!!

拜!~
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章