了解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...