1. 程式人生 > >EXT2檔案系統簡介

EXT2檔案系統簡介

一、EXT2檔案系統檔案組織形式

EXT2檔案系統是Linux系統中廣泛使用的檔案系統,該檔案系統是一種索引式檔案系統,它將分割槽分為inode和block,它會給每個檔案分配一個inode,inode中儲存檔案的一些屬性資訊,block中儲存檔案真正的內容,一個block的大小有1k、4k等大小,一個block中只能儲存一個檔案,比如現在有一個檔案佔據了一個block的1B大小,那麼這個block剩餘的大小也無法分配給其他檔案使用。大體儲存結構如下圖所示:

      

  因為一個分割槽可能很大,可能會分成很多很多個block,為了便於管理,系統將這些block分成多個block組,每個block組中儲存當前組的資訊和當前block組的block,如下圖:

        

  每個分割槽都有如下幾個專案:

  引導扇區:每個分割槽前的引導扇區
  super block:超級塊,它記錄的是整個檔案系統的資訊,檔案系統的型別,inode數量,block數量等,每個分割槽的super block是相同的
  檔案系統描述:描述每個block group 的開始與結束的block號碼。
  塊對應表(block bitmap):用bit位記錄了每一個block目前的狀態,如果有資料就置為1,沒有資料置為0。如果需要分配block,那麼就找目前狀態為0的。
  inode 對應表(inode bitmap):和塊對應表相似,記錄的是inode的分配和未分配的號碼。
  inode table:詳細記錄了每一個inode的資訊。
  data block:詳細記錄檔案資料的地方,每一個block都有block號碼。

二、inode table內容

  inode table中記錄了一個inode中的詳細內容,因為inode中記錄了除檔名以外的所有檔案屬性。但是一個inode節點所佔的磁碟空間ue不能太大,那麼它到底是怎樣儲存的呢?請看下圖:
圖中DB代表資料、IPB代表中間節點(數字代表級數)   這張圖描述了一個inode節點中儲存的資訊。在最上邊的其他資訊裡儲存了檔案除了檔名和檔案具體存放的block號以外的其他資訊。其餘的資訊由15個指標指向inode或者相應的二級節點。

  其中0-11這十二個指標是直接指向存放資料的block塊中,12是一個一級索引,直接指向的是一個block,其中存放的是指向檔案block塊的指標。13是一個二級索引,13指向一個一級索引,其中的一級索引又指向某幹個直接索引。14是一個三級索引,與二級索引類似。

  採用三級索引機制就可以利用有限的inode節點索引到更大的檔案,比如一個block的大小是4k,一個指標的大小是4B,那麼採用三級索引機制的一個inode節點最大可以索引到的檔案大小是:1024 × 1024 × 1024 × 4096位元組(約4TB)

三、硬連結和軟連結的區別

硬連結和軟連結在其他地方可能不太好說明,在有了inode和block的知識之後理解起來硬連結和軟連結就簡單的多了。Linux下的檔名和檔案資訊是分開儲存的,在系統內部是通過inode號唯一標識一個檔案的。硬連結其實就是給這個inode(這個檔案)再起一個檔名。硬連結通過檔名刪除其中的一個檔案另外的檔案不受影響。軟連結是另外的一個檔案,這個檔案中的資訊是一個指向路徑和檔名稱的特殊檔案。軟連結刪除指向的檔案則連結檔案失效(檢視軟連結本身的內容用readlink命令)。