現象:df -h顯示硬盤還有14G空間,但是touch file/mkdir directory都失敗,提示硬盤沒有空間
原因:df -ia查看下inode的使用情況,發現已經爆了,(下圖顯示使用88%,還沒有用完)
那么,inode究竟是什么?為什么它使用完,就不能創建文件和文件夾了?
解釋:文件儲存在硬盤上,硬盤的最小存儲單位叫做"扇區"(Sector)。每個扇區儲存512字節(相當於0.5KB)。
操作系統讀取硬盤的時候,不會一個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取一個"塊"(block)。這種由多個扇區組成的"塊",是文件存取的最小單位。"塊"的大小,最常見的是4KB,即連續八個 sector組成一個 block。
文件數據都儲存在"塊"中,那么很顯然,我們還必須找到一個地方儲存文件的元信息,比如文件的創建者、文件的創建日期、文件的大小等等。這種儲存文件元信息的區域就叫做inode,中文譯名為"索引節點"(index node)。
每一個文件都有對應的inode,里面包含了與該文件有關的一些信息
可以使用stat命令查看inode的信息:stat example.txt
另外,單個目錄下子目錄的數量也是有限制的
統計目錄inode占用數目:
find */ ! -type l | cut -d / -f 1 | uniq -c
find */ -exec stat -c "%n %i" {} \;|awk -F "[/ ]" '{if(! a[$1-$NF]++) l[$1]++}END{for (i in l) print i,l[i]}'
echo file{1..500000} |xargs touch 批量新建大量文件;參數過多,touch無法直接創建 echo file{1..500000} |xargs rm 批量刪除大量文件;參數過多,rm無法直接刪除
參考:
1、http://www.ruanyifeng.com/blog/2011/12/inode.html
2、https://www.jianshu.com/p/6978bddd69af
3、http://blog.51cto.com/13520924/2092364
4、https://blog.csdn.net/lidan3959/article/details/16981137