索引節點

索引節點

索引節點是指在許多類Unix文件系統中的一種數據結構。每個索引節點保存了文件系統中的一個文件系統對象的元信息數據,但不包括數據內容或者文件名。

創建介紹


首先需要明白的是,在Unix操作系統中的任何資源都被當作文件來管理。如目錄、光碟機、終端設備等等,都被當作是一種文件。從這方面來說,Unix操作系統中的所有的目錄、硬體設備跟普通文件一樣,具有共同的屬性。而這些屬性的話,就是保存在inode塊中。
Inode塊中保存了一個文件系統中的全部Inode節點。也就是說,當系統創建了一個文件(或者添加了一個新設備)時,系統就會從這個塊中給 這個文件分配一個Inode結點。在這個結點中存儲了這個文件的大部分屬性,如創建、修改時間等等。但是需要注意的是,有兩個屬性不包含在這個inode 結點中,分別為文件名與結點號。這主要是因為inode節點按順序排列,所以系統內核就可以採用簡單的演演算法,就可以得出inode節點號。

使用方式


Linux文件系統使用索引節點來記錄文件信息,作用類似於Windows下的文件分配表。一個文件系統維護了一個索引節點的數組,每個文件或目錄都與索引節點數組中的唯一一個元素對應。
linux文件系統將文件索引節點號和文件名同時保存在目錄中。
所以,目錄只是將文件的名稱和它的索引節點號結合在一起的一張表,目錄中每一對文件名稱和索引節點號稱為一個連接。對於一個文件來說有唯一的索引節點號與之對應,對於一個索引節點號,卻可以有多個文件名與之對應。因此,在磁碟上的同一個文件可以通過不同的路徑去訪問它。
系統管理員使用的很多程序往往用inode號碼來替代文件名來訪問文件系統。例如磁碟完整性檢查程序fsck或pfiles。因此,inode號碼與文件全路徑名的互查是需要的。可以用find帶參數選項-inum,ls帶參數選項(-i做到。
文件系統可能會用盡inode。這導致文件系統還有空閑的存儲空間,但已經沒有空閑的inode可供使用了。例如,一個電子郵件伺服器可能會被大量的小文件用盡所有inode,但是卻沒有填滿文件存儲空間。
現代的文件系統如JFS和XFS能夠動態地增加inode,因此不會用盡inode。