加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專(zhuān)業(yè)用戶(hù)
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 文件系統(tǒng)整體結(jié)構(gòu)
    • MBR
    •  
    • MBR
    •  
    • 隱藏扇區(qū)
    •  
    • 保留扇區(qū)
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

圖解 FAT 文件系統(tǒng)之基礎(chǔ)知識(shí)(一)

2020/12/15
333
閱讀需 8 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

FAT 文件系統(tǒng)是什么,當(dāng)你格式化 U 盤(pán)之后 U 盤(pán)發(fā)生了什么,為什么刪除的文件還可以再恢復(fù)?買(mǎi)的 U 盤(pán)明明寫(xiě)著 16 G,實(shí)際卻只有 15 G,這里隱藏了什么事實(shí)?這些問(wèn)題,將由魚(yú)鷹一一為你解答(佛系更新,喜歡的話(huà)就關(guān)注魚(yú)鷹吧)。

FAT 文件系統(tǒng)隨著發(fā)展,經(jīng)歷了多個(gè)版本,從 FAT12 到 FAT16 再到 FAT32,exFAT,每一個(gè)版本的迭代都是容量的巨大提升……你以為魚(yú)鷹會(huì)像書(shū)本一樣長(zhǎng)篇大論歷史?那你錯(cuò)了,關(guān)于這些歷史感興趣的話(huà)可以自行查閱資料,魚(yú)鷹就不多談了。本篇主要介紹 FAT 文件系統(tǒng)的通用知識(shí)點(diǎn)。

文件系統(tǒng)整體結(jié)構(gòu)

我們看看當(dāng)你的 U 盤(pán)(16 G,魚(yú)鷹親自試驗(yàn)并圖解)格式化為 FAT32 格式后,U 盤(pán)發(fā)生了什么:

這里將 U 盤(pán)分成了三個(gè)分區(qū),類(lèi)似你將電腦的硬盤(pán)分成 C 盤(pán)、D 盤(pán)、E 盤(pán),這里的新加卷、分區(qū) 2、分區(qū) 3 就是目前 U 盤(pán)上建立的三個(gè)分區(qū),但事實(shí)上,我們一般不會(huì)將 U 盤(pán)分成三個(gè)分區(qū),一個(gè)就夠用了,只是魚(yú)鷹想告訴你,這在 U 盤(pán)也可以做到。

MBR

在 FAT 文件系統(tǒng)中, 0 扇區(qū)必定是 MBR,這個(gè)扇區(qū)包含了磁盤(pán)(U 盤(pán))很多信息,比如整個(gè) U 盤(pán)的大?。ㄈ萘浚?,即扇區(qū)總數(shù),各個(gè)分區(qū)的起始扇區(qū)、分區(qū)大小,引導(dǎo)代碼等。

前面 446 個(gè)字節(jié)和主引導(dǎo)代碼有關(guān),因?yàn)樵?a class="article-link" target="_blank" href="/tag/%E5%8D%95%E7%89%87%E6%9C%BA/">單片機(jī)系統(tǒng)中一般不會(huì)使用這種引導(dǎo)方式引導(dǎo)操作系統(tǒng),所以按下不表。我們主要關(guān)注后面的分區(qū)信息和一些標(biāo)志:

分區(qū)表項(xiàng)具體含義可看該圖:

這里有一個(gè)標(biāo)志,即扇區(qū)最后的兩個(gè)字節(jié),一般是 55 AA(0xAA55),如果說(shuō)你的扇區(qū)里面沒(méi)有這個(gè)標(biāo)志,那么系統(tǒng)就不認(rèn)為這是一個(gè) FAT 文件系統(tǒng),更不用說(shuō)進(jìn)行接下來(lái)的其他驗(yàn)證操作了。我們從上圖可以看到,一個(gè) MBR 可以記錄四個(gè)分區(qū)信息,但是你會(huì)發(fā)現(xiàn)你的 U 盤(pán)可以分成超過(guò)四個(gè)分區(qū),那么這又是怎么回事?原因在于,可以使用邏輯分區(qū)。即可設(shè)置三個(gè)主分區(qū),另一個(gè)分區(qū)設(shè)置為邏輯分區(qū),這個(gè)邏輯分區(qū)里面可以分成很多很多分區(qū),這就是它為什么能創(chuàng)建超過(guò)四個(gè)分區(qū)的原因。當(dāng)然,我們目前也沒(méi)必要深入了解邏輯分區(qū)是怎么一回事,先把基本分區(qū)搞定再說(shuō)。

?

MBR

說(shuō)完 MBR,我們?cè)僬f(shuō)一個(gè)和 MBR 很像的一個(gè)扇區(qū),DBR。

從上圖我們可以看到,每一個(gè)分區(qū)的第一個(gè)扇區(qū)必定是 DBR,這是做什么用的?我們知道 MBR 記錄的分區(qū)信息十分有限,只有分區(qū)的開(kāi)始扇區(qū)、分區(qū)的大小、分區(qū)類(lèi)型、引導(dǎo)標(biāo)志(表示該分區(qū)是否可被引導(dǎo),通俗的話(huà)說(shuō),就是這個(gè)分區(qū)是否存在操作系統(tǒng))等有限信息,我們不知道這個(gè)分區(qū)叫什么名字,文件系統(tǒng)的版本號(hào)是多少等。所以我們需要一個(gè)扇區(qū)保存這些信息。這就是 DBR 的作用。如果說(shuō) MBR 保存的是整個(gè)磁盤(pán)的基本信息,那么 DBR 保存的就是當(dāng)前分區(qū)的基本信息。

我們可以看到 DBR 的扇區(qū)結(jié)尾也是一樣的結(jié)束標(biāo)志,所以它們是比較相似的,在有些資料中,如果不區(qū)分它們的話(huà),很容易讓人迷惑。

?

隱藏扇區(qū)

細(xì)看這張圖,你會(huì)發(fā)現(xiàn)其中存在隱藏扇區(qū)。隱藏扇區(qū)指的是扇區(qū) 0 到 DBR 扇區(qū)之間的空間。換句話(huà)說(shuō),從整個(gè)磁盤(pán)開(kāi)始到分區(qū)部分的扇區(qū)稱(chēng)之為隱藏扇區(qū)(每一個(gè)分區(qū)都有自己的隱藏扇區(qū)),因?yàn)檫@些扇區(qū)對(duì)于分區(qū)而言是不可見(jiàn)的,也不可以被分區(qū)內(nèi)的文件系統(tǒng)所管理。這部分扇區(qū)數(shù)保存在 DBR 中。當(dāng)然,除了這部分扇區(qū)不被當(dāng)前分區(qū)管理外,其他分區(qū)也不可以被當(dāng)前分區(qū)管理,也可說(shuō)其他分區(qū)也對(duì)當(dāng)前分區(qū)隱藏了,但不被 DBR 所記錄。從這個(gè)角度說(shuō),每一個(gè)分區(qū)都是一個(gè)獨(dú)立的文件系統(tǒng),比如一個(gè) U 盤(pán)可以同時(shí)創(chuàng)建一個(gè) FAT32 文件系統(tǒng)分區(qū),同時(shí)還可以創(chuàng)建一個(gè) FAT16 文件系統(tǒng)分區(qū),他們之間并不會(huì)相互影響。同時(shí),格式化某個(gè)分區(qū)不會(huì)影響其他分區(qū)的正常使用,比如 C 盤(pán)格式化或重裝系統(tǒng)并不會(huì)影響 D 盤(pán)的數(shù)據(jù),這就是為什么說(shuō)要分區(qū)的原因了,否則一個(gè)硬盤(pán)只分一個(gè)區(qū),想重裝系統(tǒng)的話(huà),很多數(shù)據(jù)都會(huì)丟失,包括桌面文件。這就是為什么最好把數(shù)據(jù)放在除 C 盤(pán)外的區(qū)域了,當(dāng)然為了方便,你也可以使用快捷方式,將文件指向其他盤(pán),而將快捷方式放桌面。

?

保留扇區(qū)

在每個(gè)分區(qū)之內(nèi),我們可以看到有部分扇區(qū)被文件系統(tǒng)認(rèn)為是保留扇區(qū),而這些所謂的保留扇區(qū)才是實(shí)現(xiàn) FAT 文件系統(tǒng)的關(guān)鍵。

(這里為了圖解清晰,并沒(méi)有按照比例圖解,實(shí)際上,數(shù)據(jù)區(qū)比保留區(qū)空間大的多)這里有 DBR、FSINFO、FAT,還有為了安全考慮,存有他們的備份信息(如果文件系統(tǒng)損壞,可以嘗試使用備份恢復(fù)他們)。但我們還可以從上面知道,除了這些,還有一部分是真正的保留扇區(qū),即上面的空白部分,這些保留扇區(qū)大小不是固定的,但確實(shí)占用了空間,而你卻無(wú)法使用它們。文章開(kāi)頭,有個(gè)疑問(wèn),為什么明明買(mǎi)的是 16 G U 盤(pán),格式化后,系統(tǒng)卻提示我們只有 15 G,這少了 1 G 空間去哪了?最大頭,我相信大家都知道了,就是 1024 和 1000 進(jìn)制的區(qū)別了,商家說(shuō)的 16 G 是按照 1000 為單位的,而系統(tǒng)按照 1024 計(jì)算,當(dāng)然不一致了。還有就是一般 MBR 之后會(huì)有一些保留分區(qū)存在(如果磁盤(pán)空間有限,可以不需要)。另外就是文件系統(tǒng)本身占用的空間了(即上面的保留扇區(qū)),如果有多個(gè)分區(qū),那么顯示的只有當(dāng)前分區(qū)的大小,其他分區(qū)大小是無(wú)法查看的。而如果是單個(gè)分區(qū),那么顯示的大小只是數(shù)據(jù)區(qū)大小而已,保留區(qū)并不在顯示空間內(nèi),你也不能直接通過(guò)文件的方式操作它。

?

還有就是數(shù)據(jù)區(qū)的空間使用簇來(lái)進(jìn)行管理的,不滿(mǎn)一簇大小的扇區(qū)空間,將直接丟棄不被文件系統(tǒng)所使用,這也會(huì)損失一點(diǎn)空間。而有些分區(qū)為了效率,會(huì)將分區(qū)進(jìn)行對(duì)齊處理,未對(duì)齊部分也不能使用。種種原因,導(dǎo)致顯示的空間比實(shí)際要小,不過(guò)對(duì)于大容量的存儲(chǔ)介質(zhì)來(lái)說(shuō),這點(diǎn)損失根本不算什么,而且在后面你會(huì)發(fā)現(xiàn),為了高效管理空間,還有其他損失。

本篇筆記本打算介紹分區(qū)的簇、FAT 等相關(guān)知識(shí)的,但目前文章太長(zhǎng)了,只能下期再見(jiàn)了。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

六年開(kāi)發(fā)經(jīng)驗(yàn),豐富的KEIL調(diào)試經(jīng)驗(yàn),STM32使用經(jīng)驗(yàn),C語(yǔ)言運(yùn)用經(jīng)驗(yàn)。