Linux系統的Ext2檔案系統

2022-07-13 00:21:28 字數 3944 閱讀 7569

下面我們正是你介紹ext2檔案系統

ext2檔案系統使用以inode為基礎的檔案系統。

檔案系統一開始將inode與block規劃好了,除非重新格式化,否則inode與block固定後就不再變動,但是當inode與block數量過多時,就不易於管理。因此ext2在格式化的時候基本上是區分為多個塊組(block group),每個塊組都有獨立的/inode/block/superblock系統。ext2格式化後如圖

在整體的規劃中,檔案系統最前面有乙個啟動扇區(boot sector),這個啟動扇區可以安裝引導裝載程式。因此可以將不同的引導裝在程式安裝到個別的檔案系統最前端,而不用覆蓋整塊硬碟唯一的mbr(主引導分割槽)。具體每個內瓤說明如下:

1、data block (資料塊):用來放置檔案內容。在ext2檔案系統中所支援的block大小有1kb,2kb及4kb三種,在格式化block大小的時候就固定了,且每個block都有編號,以方便inode記錄。

但是,由於block大小的區別,會導致檔案系統能夠支援的最大磁碟容量與最大單一檔案容量並不相同,block大小而長生的ext2檔案系統限制如下

block大小

1kb2kb

4kb最大單一檔案限制

16gb

256gb

2tb最大檔案系統容量

2tb8tb

16tb

限制:1)、原則上,block大小與數量在格式化完就不能再改變

2)、每個block內最多隻能夠放置乙個檔案的資料

3)、承上,如果檔案大於block的大小,則乙個檔案會占用多個block數量

4)、承上,如果檔案小於block,則該block的剩餘空間就不能再被使用(磁碟空間會浪費)

2、inodetable(inode**):inode的內容主要記錄檔案的屬性以及該檔案實際資料是放置在哪幾號block內,基本上,inode記錄的檔案資料至少有下面這些:

1)、該檔案的訪問模式

2)、該檔案的所有者與組

3)、該檔案的大小

4)、該檔案建立或狀態改變的時間

5)、最近一次的讀取時間

6)、最近修改的時間

7)、定義檔案特性的標誌

8)、該檔案真正內容的指向

9)、每個inode大小均固定在128bytes

10)、每個檔案都僅會占用乙個inode而已

11)、承上,因此檔案系統能夠建立的檔案數量與inode的數量有關

12)、系統讀取檔案時需要先找到inode,並分析inode所記錄的許可權與使用者是否符合,若符合才能開始實際讀取block的內容

inode/block與檔案大小的關係:

inode要記錄的資料非常多,但只有128bytes,而inode記錄乙個block號碼要花掉4bytes,假設乙個檔案有400mb且每個block為4kb,那麼至少要10萬條block號碼的記錄,inode哪有這麼多可記錄

的資訊?為此我們系統很聰明將inode記錄block號碼的區域定義為12個直接,乙個間接,乙個雙間接與乙個三間接記錄區。

圖中最左邊為inode本身(128bytes),裡面有12個直接指向block號碼的對照,這12個記錄可以直接取到block號碼,也就是直接定址。至於所謂的間接就是再拿乙個block來當作記錄block號碼的記錄區,如果檔案過大時,就會使用間接的block來記錄編號,也就是間接定址。同理,如果檔案持續長大,就會利用雙間接。

這樣inode能夠指定多少個block呢?以較小的1kb的block來說明。可以指定的情形如下:

1)、12個直接指向:12*1k=12k,由於是直接指向,所以總共可以記錄12條記錄

2)、間接:256*1k

每條block號碼的記錄會花去4bytes,因此1k的大小能記錄256條記錄

3)、雙間接:256*256*1k=256^2k

4)、三間接:256*256*256*1k=256^3k

總額:將直接、間接、雙間接、三間接加總,得到12+256+256^2+ 256^3=16gb,此時我們知道當檔案系統將block格式化為為1k大小時,能夠容納的最大檔案為16gb,比較一下檔案系統線指標的結果可發現是一致的。但這個方法不能用在2k及4k的block大小的計算中。因為大於2k的block將會收到檔案系統本身的限制

3、superblock(超級塊)

1)、block與inode的總量

2)、未使用與已使用的inode/block數量

3)、block與inode的大小

4)、檔案系統的掛載時間、最近一次寫入資料的時間、最近一次檢驗磁碟的時間等檔案系統的相關資訊

5)、乙個validbit數值,若此檔案系統已被掛載,則valid bit為0,若未被掛載,則valid bit為1

superblock是非常重要的,因為我們這個檔案系統的基本資訊都寫在這裡。此外,每個block group都有可能含有superblock。但是我們也說乙個檔案系統應該僅有乙個superblock。事實上除了第乙個blockgroup內會含有superblock之外,後續的block group 不一定含有superblock,若含有superblock則也是作為第乙個superblock的備份而已。

4、file system description(檔案系統描述說明):這個區段可以描述每個block group的開始與結束的block號碼,以及說明每個區段分別介於哪乙個block號碼之間

5、block bitmap(塊對照表):如果你想要新增檔案時總會用到block。那你要使用哪個block來記錄呢?當然是選擇」空的block「來記錄新檔案的資料。那你怎麼知道哪個block是空的?這就得通過

block bitmap 的輔助,從block bitmap 當中可以知道哪些block是空的,因此我們的系統就能很快速找到可使用的空間來處理檔案。同樣,如果刪除某些檔案時,那麼哪些檔案原本占用的block號碼就得釋放出來,此時在block bitmap當中相對應到該block號碼的標誌就得修改成為」未使用中「。這就是blockmap的功能。

6、inode bitmap(inode對照表):這個與block bitmap功能類似,只是block bitmap記錄的是使用與未使用的block號碼,inode bitmap記錄使用與未使用的inode號碼。

檢視檔案系統

剛才談到的各部分資料都與block號碼有關,每個區段與superblock的資訊都可以使用dumpe2fd這個命令來查詢,利用dumpe2fs可以查詢到非常多的資訊。

目錄與檔案在ext2檔案系統當中是如何記錄資料的呢?基本上可以這麼說

1、目錄:當我們在linux的ext2檔案系統新建乙個目錄時,ext2會分配乙個inode與至少一塊block給該目錄。其中inode記錄該目錄的相關許可權與屬性,並可記錄分配的那塊block號碼。而block則是記錄在這個目錄下的檔名與該檔名占用的inode號碼資料。也就是說目錄所占用的block內瓤在記錄如下的資訊:

1)、如果想實際檢視root目錄下的檔案所占用的inode號碼時,可以如下操作:

2、檔案:當我們在linux下的ext2新建乙個一般檔案時,ext2會分配乙個inode與相對於該檔案大小的block數量給該檔案

3、目錄樹讀取:因為檔名是記錄在目錄的block當中,因此當我們要讀取某個檔案時,就務必會經過目錄的inode與block,然後才能找到那個待讀取檔案的inode號碼,最終才會取到正確的檔案的block的內容。由於目錄樹是從根目錄開始讀取,因此系統通過掛載的資訊可以找到掛載點的inode號碼,此時就能得到根目錄的inode內容,並依據該inode讀取根目錄的block內的檔名資料,再一層一層向下讀到正確的檔名。

當乙個檔案系統規劃的很大時,由於磁碟上面的資料經常變動,所以,整個檔案系統上面的檔案通常無法連續寫在一起,即block號碼不hi連續,而是填入式的將資料填入沒有被使用的block中,如果寫入的block很鬆散,那麼就會有檔案資料離散的問題發生。    

linux的EXT 2檔案系統

為了更好的描述linux系統 這裡以ext2檔案系統為例 我畫了乙個圖,如下 上圖是整個檔案儲存磁碟的分布情況,將分割槽分成很多大小相同的塊,乙個塊的大小格式化時確定的,ext2檔案系統乙個塊是4k,乙個磁碟扇區是512位元組,所以乙個塊大小佔8個扇區。而在上圖啟動塊的大小是確定的,佔1k位元組,是...

ext2檔案系統

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

Ext2檔案系統

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