inode節點

inode(index node):索引節點

作用:用於存貯文件和目錄基本信息

理解inode,要從文件儲存說起。
文件儲存在硬盤上,硬盤的最小存儲單位叫做"扇區"(Sector)。每個扇區儲存512字節(相當於0.5KB)。

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


inode存貯方法:inode table索引節點表,存儲若干文件的元數據

inode number每個文件都有一個唯一的編號,唯一界限在同一個分區

inode table 表中:數據字段記錄文件的數據內容,記錄文件的子目錄和子目錄節點號

inode節點大小:

inode也會消耗硬盤空間,所以硬盤格式化的時候,操作系統自動將硬盤分成兩個區域。一個是數據區,存放文件數據;另一個是inode區(inode table),存放inode所包含的信息。
每個inode節點的大小,一般是128字節或256字節。inode節點的總數,在格式化時就給定,一般是每1KB或每2KB就設置一個inode。假定在一塊1GB的硬盤中,每個inode節點的大小爲128字節,每1KB就設置一個inode,那麼inode table的大小就會達到128MB,佔整塊硬盤的12.8%。
 由於每個文件都必須有一個inode,因此有可能發生inode已經用光,但是硬盤還未存滿的情況。這時,就無法在硬盤上創建新文件。

操作系統如何讀取文件:

文件名只是便於人查找文件,實際上操作系統內部不使用文件名,而真正使用的是inode的節點,通過文件名,在inode節點表中找到文件相應的節點,在通過節點找到文件的元數據,最後根據元數據來找到文件實際存儲的數據。


inode節點包括文件的元信息包括:

  * 文件的字節數
  * 文件擁有者的User ID
  * 文件的Group ID
  * 文件的讀、寫、執行權限
  * 文件的時間戳,共有三個:ctime指inode上一次變動的時間,mtime指文件內容上一次變動的時間,atime指文件上一次打開的時間。
  * 鏈接數,即有多少文件名指向這個inode

  * 文件數據block的位置


查看inode信息方法:

stat 文件

wKiom1ebSYeyxW03AAA3tOZEAuA942.png

查看每個硬盤分區的inode總數和已經使用的數量,可以使用df命令。沒增加一個文件inode used就會增加1,inodes 是總共可以創建多少個文件

wKioL1ebSmOAKw4PAAA4mOPOosg249.png


查看每個文件的節點號ls -i ,ll=ls -l

wKiom1ebSv2QxRuwAAEEzlgSltw985.jpg


inode 節點表如何存貯數據

指向數據塊的指針類型:直接指針數量1-12個 

                                      一個數據塊最多4k,所以直接指針最多能指向的數據只有48K,大於48K的數據要使用間接指針

                                       間接直接:將指針限制向一個指針塊(1024個塊)共計能存1024*4k=4M 大於48k  小於4M用

此指針

                                       三重間接指針:從間接指針以此退最多存4G文件


inode節點實際應用

在一臺配置較低的Linux服務器(內存、硬盤比較小)的/data分區內創建文件時,系統提示磁盤空間不足,用df -h命令查看了一下磁盤使用情況,發現/data分區只使用了66%,還有12G的剩餘空間,按理說不會出現這種問題。 後來用df -i查看了一下/data分區的索引節點(inode),發現已經用滿(IUsed=100%),導致系統無法創建新目錄和文件。 


     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章