no space left on device磁碟空間不足
阿新 • • 發佈:2018-12-09
磁碟在使用之前需要做RAID冗餘陣列、分割槽、格式化、掛載; 格式化的目的:1、建立檔案系統;2、初始化inode和block(即inode和block的數量是一定的);每一個非空檔案都要佔用一個inode和至少一個block,那麼無論是inode滿了還是block滿了,磁碟就存放不了東西了,就會提示no space left on device; 那麼如何解決這個問題? 1、df -h 檢視磁碟(block)使用情況,如果滿了,那麼刪除不需要的大檔案; 2、df -i 檢視inode使用情況,如果inode滿了,查詢目錄本身大於1M空間的;(思考為什麼要找目錄本身大於1M的?提示:目錄的本身也就是目錄的實際內容,即目錄的block中放的是什麼?----檔名,檔名越多目錄本身的block就越大,就代表目錄裡面小檔案越多,那麼用什麼查詢目錄本身大於1M的?find) 具體排查過程:首先我建立兩個空目錄; 1、block滿了的情況:這裡我實際建立一個大檔案進行演示; ![](http://i2.51cto.com/images/blog/201812/09/d6ff0be25346510e46f80bdff80c0de0.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) ![](http://i2.51cto.com/images/blog/201812/09/bbf9d5ea10d43be017610aaae62cfae3.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 假設這個時候,磁碟bloock滿了,具體查詢的過程如下,先過濾出根下佔用空間最大的目錄,然後過濾出改目錄下最大的,一級一級過濾直到找到大檔案為止;![](http://i2.51cto.com/images/blog/201812/09/862e1e4587bbf57d377d848800b65962.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 找到大檔案之後確認是否要刪除; 2、inode滿了查詢:上面已經說了,要查詢目錄本身(不包含下面檔案大小)大小大於1M的,用find的查詢,-size 查詢的就是目錄本身的實際大小(不包含下面檔案);找到之後,目錄沒用可以刪除目錄;目錄有用可以配合ls |xargs rm -f ,如果還是刪除不掉,再縮小範圍,find -name |xargs rm -f;