debian系統(tǒng),只有一個(gè)分區(qū),web服務(wù)器,最近發(fā)現(xiàn)inode使用率真100%,刪了一些文件,但過一會(huì)又升到100%,如何解決?或者有什么方法查看到底是哪些文件在增加,占用inode?謝謝!
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda2 17793024 17791412 1612 100% /
udev 1021529 553 1020976 1% /dev故障現(xiàn)象
分區(qū)無法寫入文件。
故障分析
執(zhí)行df -h命令發(fā)現(xiàn)空間占用不到70%,執(zhí)行df -hi,發(fā)現(xiàn)某分區(qū)IUse%值為100%,說明inode已經(jīng)用完,應(yīng)該是某些目錄下存在大量的小文件導(dǎo)致。
解決方法
大量小文件分布有兩種可能,一是只有一個(gè)或少量目錄下存在大量小文件,這種情況我們可以使用如下命令來找出這個(gè)異常目錄:
find / -type d -size +10M
此命令作用是找出大小大于10M的目錄(目錄大小越大,表示目錄下的文件越多)。
第二種可能是,大量的小文件分布在大量的目錄下,這時(shí)候上面的命令可能找不出異常的目錄,需要以下命令:
cd /
find */ ! -type l | cut -d / -f 1 | uniq -c
此命令作用是找出目錄下文件總數(shù),可能需要執(zhí)行多次,直到找出具體的目錄。比如上面的命令找出了/data目錄下存在大量的小文件,但/data/目錄還有很多目錄,這時(shí)候我們還需要繼續(xù)執(zhí)行:
cd /data
find */ ! -type l | cut -d / -f 1 | uniq -c
直到找出具體的目錄。
故障總結(jié)
對(duì)inode占用進(jìn)行監(jiān)控,并且收到inode告警時(shí)應(yīng)及時(shí)使用以上方法來定位問題,并反饋給相應(yīng)人員從根源解決。
一、發(fā)現(xiàn)問題:
在一臺(tái)配置較低的Linux服務(wù)器(內(nèi)存、硬盤比較小)的/data分區(qū)內(nèi)創(chuàng)建文件時(shí),系統(tǒng)提示磁盤空間不足,用df -h命令查看了一下磁盤使用情況,發(fā)現(xiàn)/data分區(qū)只使用了66%,還有12G的剩余空間,按理說不會(huì)出現(xiàn)這種問題。
二、分析問題:
后來用df -i查看了一下/data分區(qū)的索引節(jié)點(diǎn)(inode),發(fā)現(xiàn)已經(jīng)用滿(IUsed=100%),導(dǎo)致系統(tǒng)無法創(chuàng)建新目錄和文件。
inode譯成中文就是索引節(jié)點(diǎn),每個(gè)存儲(chǔ)設(shè)備(例如硬盤)或存儲(chǔ)設(shè)備的分區(qū)被格式化為文件系統(tǒng)后,應(yīng)該有兩部份,一部份是inode,另一部份是Block,Block是用來存儲(chǔ)數(shù)據(jù)用的。而inode呢,就是用來存儲(chǔ)這些數(shù)據(jù)的信息,這些信息包括文件大小、屬主、歸屬的用戶組、讀寫權(quán)限等。inode為每個(gè)文件進(jìn)行信息索引,所以就有了inode的數(shù)值。操作系統(tǒng)根據(jù)指令,能通過inode值最快的找到相對(duì)應(yīng)的文件。
而這臺(tái)服務(wù)器的Block雖然還有剩余,但inode已經(jīng)用滿,因此在創(chuàng)建新目錄或文件時(shí),系統(tǒng)提示磁盤空間不足。
三、查找原因:
/data/cache目錄中存在數(shù)量非常多的小字節(jié)緩存文件,占用的Block不多,但是占用了大量的inode。
四、解決方案:
1、刪除/data/cache目錄中的部分文件,釋放出/data分區(qū)的一部分inode。
2、用軟連接將空閑分區(qū)/opt中的newcache目錄連接到/data/cache,使用/opt分區(qū)的inode來緩解/data分區(qū)inode不足的問題:
ln -s /opt/newcache /data/cache
3、更換服務(wù)器,用高配置的服務(wù)器替換低配置的服務(wù)器。很多時(shí)候用錢去解決問題比用技術(shù)更有效,堆在我辦公桌上5臺(tái)全新的 DELL PowerEdge 1950 服務(wù)器即將運(yùn)往IDC機(jī)房。
有個(gè)tmp目錄,用ls命令,直接卡死,一下子就明白文件不少 ,然后敲進(jìn) rm -rf命令又卡住了,關(guān)機(jī)睡覺,今天早上來看,inode使用率降到50%了 ^_^
linux里每個(gè)文件都有些元信息像創(chuàng)建時(shí)間,文件大小,文件名啊之類的,這些元信息就存在inode了。這樣如果小文件過多的話,可能磁盤沒滿但inode空間已分配完,這時(shí)磁盤就跟滿了一樣無法寫入