1. inodes介紹
Linux系統(tǒng)下文件數(shù)據(jù)儲存在“塊”中,文件的元信息,例如文件的創(chuàng)建者、文件的創(chuàng)建日期、文件的大小等。這種儲存文件元信息的區(qū)域就叫做inode,中文譯名為“索引節(jié)點”。
inode也占用硬盤空間,硬盤格式化的時候,操作系統(tǒng)自動將硬盤分成兩個區(qū)域。一個是數(shù)據(jù)區(qū),存放文件數(shù)據(jù);另一個是inode區(qū)(inode table),存放inode所包含的信息。
每個inode節(jié)點的大小,一般是128字節(jié)或256字節(jié)。inode節(jié)點的總數(shù),在格式化時就給定,一般是每1KB或每2KB就設(shè)置一個inode。假定在一塊1GB的硬盤中,每個inode節(jié)點的大小為128字節(jié),每1KB就設(shè)置一個inode,那么inode table的大小就會達(dá)到128MB,占整塊硬盤的12.8%。
2. inodes資源耗盡
inodes使用完與存儲空間使用完相似,都是創(chuàng)建不了文件或無法正常執(zhí)行一些命令。inodes使用完,存儲空間可能還有,這種情況一般是生成了大量的小文件,把inode table占滿。
一般情況下存儲空間使用完,inodes往往才使用百分之幾,所以容易忽視對inodes使用情況的監(jiān)控。
借用網(wǎng)圖來說明inodes用盡,而磁盤空間還未用完的情況:查看磁盤空間使用情況,使用df命令
查看inodess使用情況,使用df -i命令:
上述兩個命令可以使用-h參數(shù),命令為df -h和df -hi。從圖中看見磁盤空間使用71%,但是inodes使用100%。
3. inodes耗盡解決
inodes的大小在磁盤格式化分區(qū)時確定,跟分區(qū)的大小相關(guān),分區(qū)越大,inodes越大,反之亦然。
linux操作系統(tǒng)根目錄一般分區(qū)比較小,如果有定時性的小文件產(chǎn)生而又未及時清理,則很容易造成inodes占滿。
inodes占滿解決步驟:
(1)查看文件最多的目錄
for i in /*; do echo $i; find $i | wc -l; done
如果確定目錄范圍,把/*寫的具體點
最終發(fā)現(xiàn)是/var/spool/postfix/maildrop目錄下小文件過多,原因如下:由于linux在執(zhí)行cron時,會將cron執(zhí)行腳本中的output和warning信息,都會以郵件的形式發(fā)送給cron所有者。由于客戶環(huán)境中的sendmail和postfix沒有正常運行,郵件發(fā)送不成功,導(dǎo)致全部小文件都堆積在maildrop目錄下,另由于缺乏自動清理的機(jī)制,故此目錄下堆積了大量的文件。
經(jīng)過排查root用戶下發(fā)現(xiàn)有個每分鐘進(jìn)行一次時鐘同步的定時任務(wù),該定時任務(wù)每分鐘產(chǎn)生一個小文件。
(2) 刪除大量文件
ls | xargs -n 1000 rm -rf 需要使用xargs命令,不然會刪除失敗。
4. 總結(jié)
(1)設(shè)置方面在crontab -e 第一行增加MAILTO=“” ,就沒有文件產(chǎn)生啦
(2)重定向?qū)Χ〞r任務(wù)設(shè)置定向輸出文件,不需要日志輸出的定時任務(wù)可以將日志重定向到/dev/null,如下:
*/10 * * * * /tmp/test.sh 》/dev/null 2》&1
(3) 定時清理文件
find 目錄 -type f -mtime +30 | xargs -n 1000 rm -f**
(4) 監(jiān)控inodes的使用
備注:應(yīng)注意crontab的寫法和產(chǎn)生的文件的定時清理
責(zé)編AJX
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7067瀏覽量
89115 -
Linux
+關(guān)注
關(guān)注
87文章
11312瀏覽量
209711 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6838瀏覽量
123385
發(fā)布評論請先 登錄
相關(guān)推薦
評論