linux No space left on device 由索引節點(inode)爆滿引發500問題


 

inode是什么?

理解inode,要從文件儲存說起。
文件儲存在硬盤上,硬盤的最小存儲單位叫做"扇區"(Sector)。每個扇區儲存512字節(相當於0.5KB)。

操作系統讀取硬盤的時候,不會一個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取一個"塊"(block)。
這種由多個扇區組成的"塊",是文件存取的最小單位。"塊"的大小,最常見的是4KB,即連續八個 sector組成一個 block。 文件數據都儲存在"塊"中,那么很顯然,我們還必須找到一個地方儲存文件的元信息,比如文件的創建者、文件的創建日期、文件的大小等等。
這種儲存文件元信息的區域就叫做inode,中文譯名為"索引節點"。

最近網站編輯反應上傳圖片失敗,網站頁面也經常500錯誤

常規500錯誤查找http://www.cnblogs.com/hiit/p/8568480.html找了一圈發現配置沒問題。

查看了nginx error錯誤日志發現磁盤空間滿了

用df -h命令查看了一下磁盤使用情況,發現空間還有剩余。

發現問題后來用df -i查看了一下索引節點(inode),發現已經用滿(IUsed=100%),導致系統無法創建新目錄和文件。

解決方法:刪除無用的臨時文件,釋放inode。

可以查看 /tmp 目錄下有很多臨時文件。

也可以選擇/var/spool/目錄

輸入一下命令查看/var/spool/下的文件個數

for i in /var/spool/; do echo $i; find $i |wc -l|sort -nr; done  

看到有200多萬文件

 cd /var/spool/clientmqueue/  進入這個目錄,刪掉這些沒用的文件,查看一下,60萬文件吧,文件太多,

於是就用到了這個命令:

1

ls | xargs rm -rf

2或者這個命令

find . -name "*" | xargs rm -rf   

可以分批的處理刪除文件,如下圖是刪除后的效果:inode使用21%。好了

 

就是因為垃圾文件長時間沒清理,導致清理文件花太多的時間,為了避免該類問題,最好對系統的垃圾文件進行定時清理,或者部署監視系統。

可以根據較大目錄的文件占用情況,臨時轉移部分文件到占用磁盤較小的目錄中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM