Linux檔案系統之inode dentry

2021-07-30 03:55:06 字數 1632 閱讀 8039

inode和dentry在vfs和實體的檔案系統(ext2、ext3等)中都是比較重要的概念。首先看一下虛擬檔案系統的標準定義:虛擬檔案系統(英語:virtual file system,縮寫為vfs),又稱虛擬檔案切換系統(virtual filesystem switch),是作業系統的檔案系統虛擬層,在其下是實體的檔案系統。虛擬檔案系統的主要功用,在於讓上層的軟體,能夠用單一的方式,來跟底層不同的檔案系統溝通。在作業系統與之下的各種檔案系統之間,虛擬檔案系統提供了標準的操作介面,讓作業系統能夠很快的支援新的檔案系統。

vfs在linux系統中的結構為:

在教科書上面,一般是這樣描述inode的:inode是核心檔案物件的元資料。inode中不包括檔案的資料和檔案名字資訊。inode中只包含資料塊的位置資訊,資料結構相對穩定,其中沒有資料和檔名等變長資料,可以固定其大小,進而可以實現將整個檔案系統中的inode按照一定的組織方式來集中儲存在硬碟起始的乙個,檔案系統載入時,可以方便查詢即可。

inode僅僅只是儲存了檔案物件的屬性資訊,包括:許可權、屬組、資料塊的位置、時間戳等資訊。但是並沒有包含檔名,檔案在檔案系統的目錄樹中所處的位置資訊。那麼核心又是怎麼管理檔案系統的目錄樹呢?

目錄項在核心中起到了連線不同的檔案物件inode的作用,進而起到了維護檔案系統目錄樹的作用。dentry是乙個純粹的記憶體結構,由檔案系統在提供檔案訪問的過程中在記憶體中直接建立。dentry中包含了檔名,檔案的inode號等資訊。

對於posix標準定義了檔案系統的inode。vfs介面即是符合posx標準的,實體檔案系統只要能對接上vfs,即可符合posix標準。因此,一般而言我們研究vfs檔案系統即可了解大部分檔案系統的結構。而在vfs中,定義了規範化的inode結構和dentry。

在讀取乙個檔案時,總是從根目錄開始讀取,每乙個目錄或者檔案,在vfs中,都是乙個檔案物件,每乙個檔案物件都有唯一的乙個inode與之對應。根目錄的inode號為0,在superblock裡,可以很快根據inode號索引到具體的inode,因此讀取到的第乙個inode就是根目錄的。讀取到了該目錄後,核心物件會為該檔案物件建立乙個dentry,並將其快取起來,方便下一次讀取時直接從記憶體中取。而目錄本身也是乙個檔案,目錄檔案的內容即是該目錄下的檔案的名字與inode號,目錄檔案的內容就像一張表,記錄的檔名與其inode no.之間的對映關係。根據路徑即可找到當前需要讀取的下一級檔案的名字和inode,同時繼續為該檔案建立dentry,dentry結構是一種含有指向父節點和子節點指標的雙向結構,多個這樣的雙向結構構成乙個記憶體裡面的樹狀結構,也就是檔案系統的目錄結構在記憶體中的快取了。有了這個快取,我們在訪問檔案系統時,通常都非常快捷。

有了inode和dentry,也就非常容易理解檔案的連線了。我們知道軟連線,是乙個特殊的檔案,該檔案通過內容指向目標檔案。因此軟連線有自己的inode,有自己的內容。其內容記錄的是目標檔案的inode號和自身的名字。軟連線是一種特殊的檔案。而硬鏈結則不一樣,硬鏈結是檔案的別名,硬鏈結不是乙個完整的檔案物件,硬鏈結只是將自己的名字寫在上級目錄的內容(檔名與inode no.的對映表)中。而其inode號即是目標檔案的inode。這樣硬連線與目標檔案一起共用乙個inode,使用引用計數來管理硬連線。

linux 檔案系統之 inode 和 block

inode 和 block 1 含義 index node 索引節點 用來存放檔案屬性的空間,通過inode 號碼來找到這個空間 inode號碼 家庭位址 inode空間 家房子 2 怎麼來的 格式化建立檔案系統時來的 3 特點 1。inode 是存放檔案屬性 2.我們每建立乙個檔案占用乙個inod...

Linux 的檔案系統 inode

linux 的檔案系統 inode 看完了上面的說明,您應該對於硬碟有一定程度的認識了!好了,那麼接下來就是要談一談 linux 的檔案系統 filesystem 囉!我們這裡以 linux 最標準的 ext2 這個檔案系統來作為說明。還記得我們在 linux 檔案屬性與目錄配置 那個章節提到的,在...

Linux檔案系統和inode

學到linux上的軟連線和硬鏈結,不得不了解inode,要想知道inode,不得不了解一些檔案系統,至少是linux檔案系統 檔案系統是什麼 我的理解,檔案系統類似現實中的檔案管理,條理化的儲存資料。它定義了磁碟上儲存檔案的方法和資料結構。不同的人管理檔案有不同的管理方法,那麼相對於不同的系統格式有...