Linux 的檔案系統 inode

2021-06-02 16:02:36 字數 2151 閱讀 3752

linux 的檔案系統( inode ):

看完了上面的說明,您應該對於硬碟有一定程度的認識了!好了,那麼接下來就是要談一談 linux 的檔案系統( filesystem )囉!我們這裡以 linux 最標準的 ext2 這個檔案系統來作為說明。還記得我們在 

linux 檔案屬性與目錄配置

那個章節提到的,在 linux 系統當中,每個檔案不止有檔案的內容資料,還包括檔案的種種屬性,例如:所屬群組、所屬使用者、能否執行、檔案建立時間、檔案特殊屬性等等。由於 linux 作業系統是乙個多人多任務的環境,為了要保護每個使用者所擁有資料的隱密性,所以檔案屬性的增加是在所難免的!在標準的 ext2 檔案系統當中,我們將每個檔案的內容分為兩個部分來儲存,乙個是檔案的屬性,另乙個則是檔案的內容。 

為了應付這兩個不同的咚咚,所以 ext2 規劃出 inode 與 block 來分別儲存檔案的屬性( 放在 inode 當中 )與檔案的內容( 放置在 block area 當中 )。當我們要將乙個 partition 格式化( format )為 ext2 時,就必須要指定 inode 與 block 的大小才行,也就是說,當 partition 被格式化為 ext2 的檔案系統時,他一定會有 inode table 與 block area 這兩個區域。

block 已經在前面說過了,他是資料儲存的最小單位。那麼 inode 是什麼?!簡單的說,block 是記錄『檔案內容資料』的區域,至於 

inode 則是記錄『該檔案的相關屬性,以及檔案內容放置在哪乙個 block 之內』的資訊。 簡單的說, inode 除了記錄檔案的屬性外,同時還必須要具有指向( pointer )的功能,亦即指向檔案內容放置的區塊之中,好讓作業系統可以正確的去取得檔案的內容啊!底下幾個是 inode 記錄的資訊(當然不止這些): 

至於乙個 inode 的大小為 128 bytes 這麼大!好了,那麼我的 linux 系統到底是如何讀取乙個檔案的內容呢?底下我們分別針對目錄與檔案來說明: 

目錄:

當我們在 linux 下的 ext2 檔案系統建立乙個目錄時, ext2 會分配乙個 inode 與至少一塊 block 給該目錄。其中,inode 記錄該目錄的相關屬性,並指向分配到的那塊 block ;而 block 則是記錄在這個目錄下的相關連的檔案(或目錄)的關連性! 

檔案:

當我們在 linux 下的 ext2 建立乙個一般檔案時, ext2 會分配至少乙個 inode 與相對於該檔案大小的 block 數量給該檔案。例如:假設我的乙個 block 為 4 kbytes ,而我要建立乙個 100 kbytes 的檔案,那麼 linux 將分配乙個 inode 與 25 個 block 來儲存該檔案! 

由上面的說明當中,我們可以知道要讀取乙個樹狀目錄下的檔案時,作業系統會先讀取該檔案所在目錄的 inode ,並取得該目錄的關連區域(在 block 區域裡面),然後根據該關連資料讀取該檔案所在的 inode ,並再進一步經由檔案的 inode 來取得檔案的最後內容!舉個例子來說,假設我們要讀取 /etc/crontab 這個檔案,整個讀取的流程是如何呢?可由底下的圖三來作為說明: 

圖 讀取 /etc/crontab 的簡易流程示意。

一塊 partition 在 ext2 底下會被格式化為 inode table 與 block area 兩個區域,所以在圖三裡面,我們將 partition 以長條的方式來示意,會比較容易理解的啦!而讀取 /etc/crontab 的流程為: 

作業系統根據根目錄( / )的相關資料可取得 /etc 這個目錄所在的 inode ,並前往讀取 /etc 這個目錄的所有相關屬性;

根據 /etc 的 inode 的資料,可以取得 /etc 這個目錄底下所有檔案的關連資料是放置在哪乙個 block 當中,並前往該 block 讀取檔案的關連性內容;

由上個步驟的 block 當中,可以知道 crontab 這個檔案的 inode 所在地,並前往該 inode ;

由上個步驟的 inode 當中,可以取得 crontab 這個檔案的所有屬性,並且可前往由 inode 所指向的 block 區域,順利的取得 crontab 的檔案內容。

整個讀取的流程大致上就是這樣,不過這裡有幾點小事情要提醒一下:

Linux檔案系統和inode

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

Linux檔案系統中的inode

磁碟中最小的儲存單位是 扇區 作業系統中檔案最小的儲存單位是 塊 乙個 塊 由連續的8個 扇區 組成,乙個檔案可以由多個 塊 組成,而這些 塊 並不一定是連續的。作業系統要讀取乙個檔案時,是如何找到這些 塊 的呢?這就需要一種對映關係,方便系統通過檔名找到對應的 塊 inode就用來維持這種對映關係...

檔案系統 inode節點

檔案儲存在硬碟上,硬碟的最小儲存單位叫做 扇區 sector 每個扇區儲存512位元組 相當於0.5kb 扇區是磁碟上儲存的最小單位 作業系統讀取硬碟的時候,不會乙個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取乙個 塊 block 這種由多個扇區組成的 塊 是檔案訪問的最小單...