Linux中的Ext2檔案系統

2021-08-14 03:33:29 字數 1680 閱讀 5416

之所以要寫ext2檔案系統,是因為最近一直在看hadoop,發現hdfs和ext2檔案系統非常類似,加上以前已經了解ext2檔案系統,所以,打算先把ext2的思想梳理一遍。

在linux作業系統中,一切皆檔案。linux檔案最重要的特性:檔案許可權,檔案屬性和檔案資料。其中檔案許可權如rwx,檔案屬性如檔案的大小檔案所有者等,檔案資料是指檔案中存放的資料資訊。

在ext2檔案系統中,它們不是存放在一起的,而是分開存放,檔案許可權和屬性存放在inode中,檔案資料存放在data block中,另外ext2檔案系統中還有乙個super block用於存放檔案系統的整體資訊。

ext2檔案系統一開始就把inode,data block,以及super block規劃好了,除非格式化,否則不在變動。每乙個inode和data block都有乙個唯一編號與之對應。

super block用於記錄整個檔案系統的基本情況,主要記錄一下內容:

block 和inode的總量

已經使用了多少block和inode

檔案系統中還剩餘多少block和inode

block和inode的大小

通常情況下,super block的大小為128bytes。

inode用於記錄檔案的屬性,乙個檔案占用乙個inode,同時在inode中記錄存放檔案資料的data block號碼。inode中存放如下資訊:

1. 檔案的許可權rwx

2. 檔案所有者與所在組

3. 檔案的大小

4. 最近修改時間

5. 存放檔案資料的data block編號

乙個inode的大小固定為128bytes,在讀取檔案的時候通常情況下就是會首先找到檔案對應的inode,然後通過inode進行一系列操作。

檔案資料的實際存放位置,乙個檔案至少占用乙個data block(乙個data block中最多也只能存放乙個檔案),如果檔案太大的話,可能會占用多個data block,乙個data block的大小通常為4kb。

因此在劃分data block時,其大小非常關鍵,如果data block過小,可能有利用小檔案的存放,但是對與大檔案而言,將會占用更多的data block,inode中需要劃分更多區域去記錄data block,導致檔案系統讀寫效率降低;如果data block過大,可能有利用大檔案的存放,但是對於小檔案而言,由於乙個data block中最多存放乙個檔案,這樣可能會造成空間浪費問題。

假設檔案對應的inode是inode3,從圖中可以看出,檔案資料的實際存放位置為data block1,3,8,inode負責記錄這些data block的編號,這種資料訪問的方式被稱為索引式檔案系統。

讀取檔案流程:

1獲取檔案inode的位置,讀取inode中的資料,獲取檔案許可權,檢查該使用者是否有r許可權,如果有進行一下步驟,如果沒有,流程結束,檔案內容不予顯示;

2 通過inode中記錄的data block的編號,一次讀取對應data block上的資料,完成了對檔案的讀取。

目錄也是檔案,因此,因此其存放方式與檔案的存放方式一樣,不停的是,目錄的data block中存放的是子目錄/檔案的inode所對應的位置。

實際上,每次讀取檔案,每次都是從/根目錄進行的,以此查詢,最終找到目標檔案的inode,然後找到檔案資料的存放位置,讀取,獲取資料。

ext2檔案系統

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

Ext2檔案系統

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

Linux中的EXT2檔案系統

分割槽是為了方便作業系統在一塊硬碟上進行資料訪問,即去 讀取資料。分割槽的要點是記錄每乙個分割槽的起始和結束柱面。這個資料存在mbr的分割槽表中。mbr只能存四個分割槽的記憶,可以是四個主分割槽或三個主分割槽乙個擴充套件分割槽。3p 1e或4p 對分割槽進行格式化是為了在分割槽上建立檔案系統。乙個分...