索引節點,其英文為 Inode,是 Index Node 的縮寫。索引節點是整個 Linux 文件系統的基礎。存儲於文件系統上的任何文件都可以用索引節點來表示。舉一個例子來說,假設有一個老圖書館裡面有一本登記簿,上面記錄著館內的書名及存放 位置,比如在哪一間的第幾排存放著哪一本書,以及書的作者是誰。在這裡,記錄著一本書的那一行就是索引節點。索引節點以同樣的方式來存儲對象,我們會在下 面學習。
在 Linux 系統中,文件系統主要分為兩部分,一部分為元數據(metadata),另一部分為數據本身。元數據,換句話說,就是“包含了與數據有關信息的數據”。索引節點就管理著文件系統中元數據的部分。
如上所述,文件系統中的任何一個文件或目錄都與一個索引節點相對應。每個索引節點都是一個數據結構,存儲著目標數據的如下信息:
Linux 文件系統從來不存儲文件創建時間,許多人都不清楚這一點。
一個典型的索引數據看起來會是像下面這樣:
# stat 01 Size:923383Blocks:1816IO Block:4096regular file Device:803h/2051dInode:12684895Links:1 Access:(0644/-rw-r--r--)Uid:(0/root)Gid:(0/root) Access:2012-09-0701:46:54.000000000-0500 Modify:2012-04-2706:22:02.000000000-0500 Change:2012-04-2706:22:02.000000000-0500索引節點的創建與正在使用的文件系統有關。一些文件系統在創建時就創建了索引節點,故其索引節點的數量有限。而一些如 JFS 和 XFS 等系統也在文件系統創建時創建索引節點,但使用動態節點分配,並按需擴大索引節點的數量,因此可以避免所有索引節點用完的情況。
當用戶試圖讀取文件或與該文件相關的信息時,他會使用文件名稱。但是,實質上這個文件名稱首先映射為存儲於目錄表中的索引點節號碼。通過該索引節點號碼又讀取到相對應的索引節點。索引節點號碼及相對應的索引節點存放於映射表(Inode table)中。