為什么硬盤明明還有空間,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,中文譯名為"索引節點"(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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM