超級塊,文件系統的心臟。
如果說inode塊是Unix操作系統中文件的核心,那么超級塊就是文件系統的心臟。啟動Unix操作系統后,發現某個文件系統無法使用,很有 可能就是超級塊出現了問題。為什么這個超級塊有這么大的作用呢?主要是因為在超級塊中保存了全局文件信息,如硬盤已用空間、數據塊可用空間、inode結 點信息等等。做一個形象的比喻,這個超級塊就好像是企業的資產負債表,一個文件系統中有哪些資源都記錄在這個表中。
當操作系統啟動后,系統內核會把超級塊中的內容復制到內存中,並周期性的利用內存里的最新內容去更新硬盤上的超級塊中的內容。由於這個更新存在 一個時間差,為此內存中的超級塊信息與硬盤中的超級塊信息往往只有在開機與關機的某個特定時刻是同步的;而在其他時間都是不同步的。假設當操作系統意外當 機或者因為斷電而造成的意外事故時,內存中的超級塊信息沒有及時保存到硬盤中,此時文件系統的完整性就會受到破壞。輕者導致剛建立的丟失,重則的話會導致 文件系統癱瘓。遇到這種情況時,系統工程師往往需要利用系統提供的sync命令在系統出現故障的那一刻把內存里的內容復制到磁盤上。這個過程往往操作系統 會自動完成,這也正是因為為什么Unix操作系統要比Windows操作系統穩定的一個重要原因。當操作系統重新啟動的過程中,系統內核會對兩者進行比 較,根據他們之間的差異,給文件系統打上干凈或者臟的標簽。這個信息也是存儲在文件系統的超級塊中。
可見超級塊如果發生損壞的話,對於文件系統的破壞性非常的大。輕者的話導致某個文件系統無法掛載,重則的話導致整個操作系統崩潰。在Unix操 作系統中,除了可以利用sync命令來保證硬盤上的內容決不會比內存里的內容更新之外,還提供了一個很有利的措施來保證其的安全性。其實,這個技術很早就 有,只是一開始並沒有用在超級塊的管理中。這個技術就是跟磁盤陣列類似。操作系統會將多個超級塊內容保存到硬盤中的不同區域。當其中一個超級塊出現問題 時,操作系統會自動采用另外一個超級塊。等到系統運行正常后,系統內容就會把可用的超級塊去替換那個故障的超級塊。為此除非所有的超級塊都損壞了,否則的 話,只要有一個超級塊是可用的,那么文件系統與操作系統就可以正常掛載與啟動。這種安全機制在很大程度上提高了超級塊的安全性,系統了Unix操作系統的 穩定性。現在大部分的Unix操作系統(包括Linux操作系統)已經實現了類似的安全機制。