i-node 表儲存在哪裡?
我真的不明白包含 i 節點的表的位置。我的老師說每個物理磁碟都有一個 i-nodes 表,然後是文件的數據。但是,在 Internet 上,我發現每個目錄都有自己的索引節點表和與其中文件關聯的名稱。
這兩個不同的表(概念)還是其中一個是錯誤的?
謝謝你。
我的老師說每個物理磁碟都有一個 i-nodes 表,然後是文件的數據。
這大體上是正確的。更準確地說,每個文件系統上都有一個 inode 表,每個分區上都有一個單獨的文件系統。(事情可能會變得更複雜,但我們不需要在這裡討論這些複雜性。)
文件系統的 inode 表將inode 編號映射到文件元數據。它通常是大量固定大小的結構。例如,該數組的元素編號 1234 是 inode 編號 1234。inode 包含諸如文件的權限、其修改時間、文件類型等資訊,以及文件內容所在位置的指示。
但是,在 Internet 上,我發現每個目錄都有自己的索引節點表和與其中文件關聯的名稱。
這是一個將文件名映射到inode 編號的表。也就是說,目錄是一個條目列表(或一些更複雜的資料結構),列表的每個元素都包含一個文件名和一個 inode 號。為了查找文件的元數據和內容,系統從目錄中讀取 inode 編號,然後讀取 inode 表中的指定條目。為了找到一個給定路徑的文件,系統從根 inode 開始,發現它是一個目錄,找到第一個元素的目錄條目,讀取它的 inode,等等。
請注意,這是文件系統的典型設計,但不是唯一可能的設計。大多數面向 Unix 的文件系統都遵循這種設計,但也存在其他設計。
一種誤解是 inode 不是物理磁碟的屬性,而是某些文件系統的屬性。例如,FAT32 沒有 inode。層次結構的簡單總結如下:
物理磁碟包含許多扇區。這些是磁碟上儲存數據的物理位置。
物理驅動器一般分為分區。這些是磁碟上(邏輯上)連續物理數據儲存區域的邏輯分隔。
這些分區可以進一步劃分為邏輯卷(與 LVM 一樣),但這不是強制性的。如果實施,這些邏輯卷主要作為分區工作,但允許更輕鬆地實施操作,例如(例如)添加更多容量。
分區(或邏輯卷)可以包含文件系統(例如 ext3fs、VFAT、hpfs)。每個文件系統都以自己的方式組織自己,以跟踪其組織結構等。許多通常部署在 Linux 主機上的文件系統(例如 ext?fs)為此目的使用 inode 或使用等效機制(例如 reiserfs)。