檔案系統實作

超級區塊(superblock)

你翻開一本書時,不會隨機從某一頁開始讀;你會先看書名頁和目錄,了解這是什麼書、怎麼編排。裝有檔案系統的磁碟也有自己的「書名頁」:在磁碟區最前面附近,有一筆小而固定的記錄,描述整個檔案系統。這筆記錄就是超級區塊(Unix 的稱呼),或稱卷宗控制區塊(一般性的名稱)。

超級區塊存放的是「整個檔案系統」層級的中繼資料——關於整個磁碟區的事實,而不是任何單一檔案的。典型內容包括:區塊大小(例如 4 KB)、區塊總數與還有多少空閒、索引節點總數與還剩多少、索引節點表與可用空間位元圖的位置、辨識「這是哪一種檔案系統」的魔術數字,以及像「上次是否乾淨卸載」這類旗標。當作業系統掛載這個磁碟區時,它幾乎做的第一件事就是把超級區塊讀進記憶體,因為之後每一個操作都需要這些數字,才能知道東西放在哪、每一塊有多大。

正因為超級區塊如此重要,一旦遺失,原本完好的檔案系統也可能變得無法讀取。為此,真實的檔案系統會把超級區塊的備份散佈在磁碟區各處,這樣損壞的主副本就能用備份修復。請注意超級區塊是「每個磁碟區一份」:一顆實體磁碟分成三個分割區,就有三個獨立的檔案系統、三個獨立的超級區塊。

對一個 ext4 磁碟區執行像 dumpe2fs 的工具,會印出它的超級區塊:區塊大小 4096、索引節點數 1310720、空閒區塊 4892013、檔案系統狀態:clean,外加各個備份超級區塊的位元組位置。核心在掛載時讀的正是這筆記錄。

超級區塊是檔案系統自己的目錄頁——最先被讀取,之後一切都信賴它。

超級區塊描述的是磁碟區,不是你的檔案;每個檔案的中繼資料在索引節點(或檔案控制區塊)裡。把兩者搞混是初學者常犯的錯。

又称
volume control blockVCB卷宗控制區塊磁碟區控制區塊