inode耗盡導(dǎo)致應(yīng)用故障
1.錯誤現(xiàn)象
客戶的一臺Oracle數(shù)據(jù)庫服務(wù)器,在關(guān)機(jī)重啟后,Oracle監(jiān)聽無法啟動,提示如下錯誤。
從輸出信息判斷,應(yīng)該是磁盤空間耗盡導(dǎo)致Oracle監(jiān)聽無法啟動,因?yàn)镺racle在啟動監(jiān)聽時需要創(chuàng)建監(jiān)聽日志文件,而上面三個TNS錯誤產(chǎn)生的原因都是由一行錯誤導(dǎo)致的,于是首先檢查系統(tǒng)磁盤空間,如下圖。
從磁盤輸出信息可知,所有分區(qū)磁盤空間都還有不少剩余,而oracle監(jiān)聽寫日志的路徑在/var分區(qū)下,雖然/var分區(qū)僅剩下3.2GB可用磁盤空間,但是這對于寫一個監(jiān)聽日志文件來說足夠了,為什么還提示空間不足呢?
2.解決思路
既然錯誤提示與磁盤空間有關(guān),那深入研究下關(guān)于磁盤空間的問題,在Linux系統(tǒng)中對磁盤空間的占用分為三個部分:是物理磁盤空間,第二個是inode節(jié)點(diǎn)所占用的磁盤空間,第三個是Linux用來存放信號量的空間,而平時接觸較多的是物理磁盤空間,對第二個和第三個空間的問題接觸較少。既然不是物理磁盤空間的問題,接著檢查是否是inode節(jié)點(diǎn)耗盡的問題,通過執(zhí)行“df-i”查看系統(tǒng)可用的inode節(jié)點(diǎn),如下圖。
由輸出可知,果然是inode節(jié)點(diǎn)耗盡導(dǎo)致無法寫日志文件。由于inode全部被用完了,雖然還有可用磁盤空間,但是文件系統(tǒng)已經(jīng)無法再記錄這些空余空間了,因此也不能再創(chuàng)建新文件或文件夾了。由于涉及了inode知識,接下來簡單介紹下Linux中inode的概念。
在Linux系統(tǒng)中,文件由數(shù)據(jù)塊和元數(shù)據(jù)組成,數(shù)據(jù)塊是多個連續(xù)性的扇區(qū),是文件存取的最小單位。“塊”的大小,最常見的是4KB,即連續(xù)八個 sector組成一個block。而元數(shù)據(jù)用來記錄文件的創(chuàng)建者、文件的創(chuàng)建日期、文件的大小等,這種存儲文件元數(shù)據(jù)信息的區(qū)域叫做inode,或者稱為“索引節(jié)點(diǎn)”。
由于inode也是用來存儲文件相關(guān)屬性信息的,因?yàn)閕node也會消耗硬盤空間,在磁盤格式化的時候,操作系統(tǒng)會自動將硬盤分成兩個區(qū)域。一個是數(shù)據(jù)區(qū),存放文件數(shù)據(jù);另一個是inode區(qū),存放inode所包含的信息。
每個inode節(jié)點(diǎn)的大小,一般是128字節(jié)或256字節(jié)。inode節(jié)點(diǎn)的總數(shù)在格式化文件系統(tǒng)的時候,已經(jīng)確定,可以通過如下命令查看某個磁盤分區(qū)inode的總數(shù):
[root@localhost~]# dumpe2fs -h/dev/sda3|grep ‘inode count’
dumpe2fs 1.39(29-May-2006)
inode count: 5244736
另外,每個inode都有一個號碼,操作系統(tǒng)inode號碼來區(qū)分不同的文件。通過“is -i”命令,可以查看文件名對應(yīng)的inode號,例如:
[root@localhost~]# ls -i install.log
325762 install.log
如果要查看這個文件更詳細(xì)的inode信息,可以通過stat命令實(shí)現(xiàn),如下圖
3.解決問題
知道了產(chǎn)生這個故障時inode導(dǎo)致的后,接下來要查看/var目錄下為何耗盡了indoe,通過檢查發(fā)現(xiàn)/var/spool/clientmqueue/這個目錄里面的文件僅500多萬個,至于產(chǎn)生的原因,分析后確定應(yīng)該是系統(tǒng)的crontab導(dǎo)致的,因?yàn)橄到y(tǒng)開了多個crontaba任務(wù),而如果crontaba任務(wù)沒有重定向,默認(rèn)會在這個目錄下創(chuàng)建一個文件,日積月累,此目錄下的小文件會越來越多。解決的方法很簡單,刪除這些沒用的文件即可。刪除命令如下:
[root@localhost ~]#find/var/spool/clientmqueue/-name"*"-exec rm -rf{}\;
刪除日志文件后,再次啟動Oracle監(jiān)聽,可以順利實(shí)現(xiàn)啟動,查看新的監(jiān)聽日志文件已經(jīng)生成,至此,問題得到圓滿解決。
當(dāng)前文章:inode耗盡導(dǎo)致應(yīng)用故障
當(dāng)前鏈接:http://aaarwkj.com/news1/105001.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、服務(wù)器托管、建站公司、網(wǎng)站營銷、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)