1、前言
本文的資料來源是 Linux 內核中 ext3 文件系統的源代碼。為了便於讀者查閱源代碼,本文中一些關鍵的技術詞匯都使用了內核源代碼中所使用的英語單詞,而沒有使用相應的中文翻譯。(這種方法是否恰當,還請讀者朋友們指教。)
2、粗略的描述
對於 ext2 文件系統來說,硬盤分區首先被劃分為一個個的 block,一個 ext2 文件系統上的每個 block 都是一樣大小的,但是對於不同的 ext2 文件系統,block 的大小可以有區別。典型的 block 大小是 1024 bytes 或者 4096 bytes。這個大小在創建 ext2 文件系統的時候被決定,它可以由系統管理員指定,也可以由文件系統的創建程序根據硬盤分區的大小,自動選擇一個較合理的值。這些 blocks 被聚在一起分成幾個大的 block group。每個 block group 中有多少個 block 是固定的。
每個 block group 都相對應一個 group descriptor,這些 group descriptor 被聚在一起放在硬盤分區的開頭部分,跟在 super block 的後面。所謂 super block,我們下面還要講到。在這個 descriptor 當中有幾個重要的 block 指針。我們這裡所說的 block 指針,就是指硬盤分區上的 block 號數,比如,指針的值為 0,我們就說它是指向硬盤分區上的 block 0;指針的值為 1023,我們就說它是指向硬盤分區上的 block 1023。我們注意到,一個硬盤分區上的 block 計數是從 0 開始的,並且這個計數對於這個硬盤分區來說是全局性質的。