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