1. 程式人生 > >no space left on device磁碟空間不足

no space left on device磁碟空間不足

   磁碟在使用之前需要做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;