no space left on device磁盤空間不足
阿新 • • 發佈:2018-12-10
冗余 過濾 col dff 情況 node process sha 初始化
磁盤在使用之前需要做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;
no space left on device磁盤空間不足