Linux中的EXT2檔案系統

2021-09-08 16:07:52 字數 2362 閱讀 1111

分割槽是為了方便作業系統在一塊硬碟上進行資料訪問,即去**讀取資料。

分割槽的要點是記錄每乙個分割槽的起始和結束柱面。這個資料存在mbr的分割槽表中。mbr只能存四個分割槽的記憶,可以是四個主分割槽或三個主分割槽乙個擴充套件分割槽。(3p+1e或4p)

對分割槽進行格式化是為了在分割槽上建立檔案系統。乙個分割槽通常只能格式化為乙個檔案系統,但是磁碟陣列等技術可以將乙個分割槽格式化為多個檔案系統。

劃分好分割槽後,接著就要將分割槽格式化為作業系統能識別的檔案系統了。比如針對linux就要格式化成它能識別的如ext2檔案系統,格式化成windows的檔案系統就不行。

理論上說,乙個分割槽只能就是乙個檔案系統。不能將分割槽格式化為ext3的同時也格式化成fat32。

硬碟的最小儲存單位是扇區,但是磁頭乙個扇區乙個扇區的讀取效率太低,因此有了邏輯塊的概念,它的大小是扇區的2^n倍。這樣磁頭就可以一次讀一塊。但是塊的大小規劃並不是越大越好,比如塊大小規劃為4kb,假設乙個檔案只要0.1kb,根據ext2檔案系統的規定,乙個塊最多只能容納乙個檔案,所以剩餘的3.9kb就浪費了。因此在規劃塊的大小時,要考慮兩個問題:

linux 系統中每個檔案包括內容資料和檔案屬性兩部分,這兩部分分開來儲存,檔案內容存在塊中,檔案屬性存在inode中。當分割槽被初始化為ext2檔案系統時,它一定會有inode表和塊區域這兩個區域。inode記錄檔案的屬性,以及檔案內容放在哪個塊中。這些屬性包括:

乙個inode的大小為128個位元組。

linux系統是如何讀取乙個檔案的?下面分別針對目錄和檔案來說明:

ext2檔案系統建立乙個目錄時,會給該目錄分配乙個indoe和至少乙個塊。inode記錄該目錄的相關屬性,並指向分配到的那個塊。這個塊記錄了這個目錄下的相關檔案或目錄的關聯性。

建立普通檔案時,會給該檔案分配乙個inode與相對於該檔案大小的塊數量。如乙個塊大小為4kb,建立乙個100kb的檔案,linux將分配乙個inode和25個塊來儲存該檔案。

注意inode本省不記錄檔名,而是記錄檔案的相關屬性,檔名是記錄在目錄所屬的塊區域中的。

因此要讀取乙個檔案的內容時,linux會從 / 開始,一直獲取到該檔案的上層目錄所在的inode,再由該目錄的塊區域中的檔名對應的inode號來找到對應的檔案,最後根據inode中的指標找到最終的檔案內容。

如上圖,讀取/etc/crontab的流程為:

1.根據/根目錄的塊中找到/etc對應的inode號

2.根據/etc 目錄的塊中的inode資料,查詢到crontab的inode號

3.根據查到的inode號來獲取該檔案的屬性,並且前往該inode所指的塊,順利獲取crontab 的檔案內容。

1.塊和inode在一開始初始化時就已經固定好了。

2.分割槽的規劃不是越大越好,因為硬碟上的資料進進出出,整個分割槽上的檔案無法連續寫在一起,而是填入式的,將資料填入沒有使用的塊中。如果檔案寫入的塊太分散,就會有檔案碎片產生,比如乙個檔案分別記錄在分割槽的最前面和最後面的塊時,會造成機械手臂移動幅度過大,資料讀取效率就很低。所以要針對主機的具體用途去規劃 。

3.在建立每個ext2檔案系統時,會按照分割槽大小,確定若干個塊組(block group),每個塊組如上圖又包括:

組描述:記錄這個塊從何處開始記錄;

塊點陣圖:通過block bitmap來記錄每個block的狀態,如是否被使用,這樣作業系統可以很快去找到空的block分配給新檔案;

inode點陣圖:與block bitmap類似,記錄每個inode的狀態,如是否已經被使用,這樣作業系統可以很快去找到空的inode分配給新檔案;

inode table: 多個inode的資訊;

data blocks: 每個塊組的資料存放區。

當新建乙個檔案或目錄時:

1.根據inode點陣圖/塊點陣圖的資訊,找到尚未使用的inod與塊,將檔案的屬性和資料分別寫入inode與塊。

2.將剛剛使用的inode與塊的號碼告知超級塊、inode點陣圖、塊點陣圖等,讓這些元資料更新。

如果突然斷電,那麼檔案系統會發生錯誤,比如資料只記錄到上述的操作1,操作2尚未進行,就會發生元資料和資料存放區不一致的情況。如果強制進行一致性檢查,需要檢查整個分割槽,很費時。因此引入日誌系統進行檔案操作的記錄,可以簡化一致性檢查的步驟:ext3/ext4 檔案系統引入了日誌功能,可以利用日誌來修復檔案系統。

參考:鳥哥的linux私房菜

ext2檔案系統

ext2磁碟結構 ext2分割槽和ext2分組的分布圖 下圖是借用其他部落格的 塊組中的每個塊包含的資訊 超級快 1個塊 描述該分割槽中的整個檔案系統的資訊,包括有多少個快組,每個快組有多少個塊,多少個索引節點等。組描述符塊 n塊 塊點陣圖 1塊 索引節點位圖 1塊 索引節點 n塊 資料塊 n塊 塊...

Ext2檔案系統

ext2檔案系統的總體布局,如下圖。1檔案系統的最小儲存單元是塊 block 塊的大小一般為512bytes,或者是它的整數倍,塊的大小是在格式化是所確定的。不能修改除非重新格式化。上圖中顯示了檔案系統的總體布局,由乙個boot block和對個block group組成,每個block group...

Linux中的Ext2檔案系統

之所以要寫ext2檔案系統,是因為最近一直在看hadoop,發現hdfs和ext2檔案系統非常類似,加上以前已經了解ext2檔案系統,所以,打算先把ext2的思想梳理一遍。在linux作業系統中,一切皆檔案。linux檔案最重要的特性 檔案許可權,檔案屬性和檔案資料。其中檔案許可權如rwx,檔案屬性...