1. 程式人生 > >為什麼硬碟明明還有空間,linux卻說硬碟空間不足?inode;mkdir: 無法建立目錄"shen1": 裝置上沒有空間

為什麼硬碟明明還有空間,linux卻說硬碟空間不足?inode;mkdir: 無法建立目錄"shen1": 裝置上沒有空間

現象:df -h顯示硬碟還有14G空間,但是touch file/mkdir directory都失敗,提示硬碟沒有空間

  

  原因:df -ia檢視下inode的使用情況,發現已經爆了,(下圖顯示使用88%,還沒有用完)

  

  那麼,inode究竟是什麼?為什麼它使用完,就不能建立檔案和檔案夾了?

  解釋:檔案儲存在硬碟上,硬碟的最小儲存單位叫做"扇區"(Sector)。每個扇區儲存512位元組(相當於0.5KB)。

作業系統讀取硬碟的時候,不會一個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取一個"塊"(block)。這種由多個扇區組成的"塊",是檔案存取的最小單位。"塊"的大小,最常見的是4KB,即連續八個 sector組成一個 block。

  檔案資料都儲存在"塊"中,那麼很顯然,我們還必須找到一個地方儲存檔案的元資訊,比如檔案的建立者、檔案的建立日期、檔案的大小等等。這種儲存檔案元資訊的區域就叫做inode,中文譯名為"索引節點"。

  每一個檔案都有對應的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]}'

參考:

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