了解Ext 2檔案系統 第1章

2021-10-06 12:15:17 字數 2222 閱讀 9126

了解ext-2檔案系統:第1章

每個ext2分割槽中的第乙個塊都不由ext2檔案系統管理,

因為它是為分割槽引導扇區保留的。

ext2分割槽的其餘部分分為多個塊組,

每個布局都如圖2所示。

從圖中您會注意到,某些資料結構必須恰好位於乙個塊中,

而其他的則可能需要多個障礙。

檔案系統中的所有塊組具有相同的大小,並按順序儲存,

因此,核心可以簡單地從其整數索引中得出塊組在磁碟中的位置。

ext2分割槽。

| 引導塊| 塊組0 | -----| 第n組

單個ext2塊組。

| 超級街區 組描述符| 資料塊點陣圖| inode點陣圖| 索引表| 資料塊|

如您所見,超級塊和組描述符在每個塊組中重複。

這樣做是因為要保持冗餘。 如果發生任何崩潰,我們可以輕鬆地更換超級塊

和其他分割槽的組描述符。

在本文中,我們將從程式設計的角度討論超級塊。

我們將看到如何讀取超級塊。

當然,有乙個名為libext2fs的庫可以很容易地為我們提供上述所有資料結構。

但是不要忘了本文的標題,我們將了解ext2內部的內容。

在其他文件中,我還將**其他資料結構。

ext2磁碟超級塊儲存在ext2_super_block結構中,其字段在下面列出

s_inodes_count:索引節點總數

s_blocks_count:檔案系統大小(以塊為單位)

s_r_blocks_count:保留塊數

s_free_blocks_count:可用塊計數器

s_free_inodes_count:可用的inode計數器

s_first_data_block:第乙個有用塊的數量(總是1)

s_log_block_size:塊大小

s_log_frag_size:片段大小

s_blocks_per_group:每組的塊數

s_frags_per_group:每組的片段數

s_inodes_per_group:每組的索引節點數

s_mtime:上次安裝操作的時間

s_wtime:上次寫入操作的時間

s_mnt_count:掛載操作計數器

s_max_mnt_count:檢查之前的安裝運算元

s_magic:魔術簽名

s_state:狀態標誌

s_errors:檢測錯誤時的行為

s_minor_rev_level:次要修訂級別

s_lastcheck:上次檢查時間

s_checkinterval:檢查之間的時間

s_creator_os:建立檔案系統的作業系統

s_rev_level:檔案系統的修訂級別

s_def_resuid:保留塊的預設uid

s_def_resgid:保留塊的預設使用者組id

s_first_ino:第乙個非保留索引節點的數量

s_inode_size:磁碟上inode結構的大小

s_block_group_nr:此超級塊的塊組號

s_feature_compat:相容功能位圖

s_feature_incompat:不相容的功能位圖

s_feature_ro_compat:唯讀相容功能位圖

s_uuid:128位檔案系統識別符號

s_volume_name:卷名

s_last_mount:上乙個安裝點的路徑名

s_algorithm_usage_bitmap:用於壓縮

s_prealloc_blocks:要預分配的塊數

s_prealloc_dir_blocks:要為目錄預分配的塊數

s_padding1:與單詞對齊

s_reserved:空出1,024位元組

很小的結構不是嗎?

現在,我們將看到訪問超級塊的**。

#include

#include

#include

#include

#include

#include

#include

#include

#define boot_block_size 1024

int main()

如果您得到的幻數為61267。則您成功讀取了超級塊。

from:

ext2檔案系統

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

Ext2檔案系統

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

掛載EXT2檔案系統

檔案系統的安裝主要是通用mount命令來實現的,然後通過系統呼叫由使用者態進入到核心態,把某乙個分割槽下的檔案系統掛載到某乙個目錄下,當然掛載也可以能指定掛載的檔案系統。mount函式通過sys mount函式來實現,其具體函式如下 asmlinkage long sys mount char us...