Fat文件系統(tǒng)原理介紹

一、硬盤的物理結(jié)構(gòu):

硬盤存儲數(shù)據(jù)是根據(jù)電、磁轉(zhuǎn)換原理實(shí)現(xiàn)的。硬盤由一個(gè)或幾個(gè)表面鍍有磁性物質(zhì)的金屬或玻璃等物質(zhì)盤片以及盤片兩面所安裝的磁頭和相應(yīng)的控制電路組成(圖1),其中盤片和磁頭密封在無塵的金屬殼中。
硬盤工作時(shí),盤片以設(shè)計(jì)轉(zhuǎn)速高速旋轉(zhuǎn),設(shè)置在盤片表面的磁頭則在電路控制下徑向移動到指定位置然后將數(shù)據(jù)存儲或讀取出來。當(dāng)系統(tǒng)向硬盤寫入數(shù)據(jù)時(shí),磁頭中“寫數(shù)據(jù)”電流產(chǎn)生磁場使盤片表面磁性物質(zhì)狀態(tài)發(fā)生改變,并在寫電流磁場消失后仍能保持,這樣數(shù)據(jù)就存儲下來了;當(dāng)系統(tǒng)從硬盤中讀數(shù)據(jù)時(shí),磁頭經(jīng)過盤片指定區(qū)域,盤片表面磁場使磁頭產(chǎn)生感應(yīng)電流或線圈阻抗產(chǎn)生變化,經(jīng)相關(guān)電路處理后還原成數(shù)據(jù)。因此只要能將盤片表面處理得更平滑、磁頭設(shè)計(jì)得更精密以及盡量提高盤片旋轉(zhuǎn)速度,就能造出容量更大、讀寫數(shù)據(jù)速度更快的硬盤。這是因?yàn)楸P片表面處理越平、轉(zhuǎn)速越快就能越使磁頭離盤片表面越近,提高讀、寫靈敏度和速度;磁頭設(shè)計(jì)越小越精密就能使磁頭在盤片上占用空間越小,使磁頭在一張盤片上建立更多的磁道以存儲更多的數(shù)據(jù)。
二、硬盤的邏輯結(jié)構(gòu)。
硬盤由很多盤片(platter)組成,每個(gè)盤片的每個(gè)面都有一個(gè)讀寫磁頭。如果有N個(gè)盤片。就有2N個(gè)面,對應(yīng)2N個(gè)磁頭(Heads),從0、1、2開始編號。每個(gè)盤片被劃分成若干個(gè)同心圓磁道(邏輯上的,是不可見的。)每個(gè)盤片的劃分規(guī)則通常是一樣的。這樣每個(gè)盤片的半徑均為固定值R的同心圓再邏輯上形成了一個(gè)以電機(jī)主軸為軸的柱面(Cylinders),從外至里編號為0、1、2……每個(gè)盤片上的每個(gè)磁道又被劃分為幾十個(gè)扇區(qū)(Sector),通常的容量是512byte,并按照一定規(guī)則編號為1、2、3……形成Cylinders×Heads×Sector個(gè)扇區(qū)。這三個(gè)參數(shù)即是硬盤的物理參數(shù)。我們下面的很多實(shí)踐需要深刻理解這三個(gè)參數(shù)的意義。
三、磁盤引導(dǎo)原理。
3.1 MBR(master boot record)扇區(qū):
計(jì)算機(jī)在按下power鍵以后,開始執(zhí)行主板bios程序。
進(jìn)行完一系列檢測和配置以后。開始按bios中設(shè)定的系統(tǒng)引導(dǎo)順序引導(dǎo)系統(tǒng)。假定現(xiàn)在是硬盤。Bios執(zhí)行完自己的程序后如何把執(zhí)行權(quán)交給硬盤呢。交給硬盤后又執(zhí)行存儲在哪里的程序呢。其實(shí),稱為mbr的一段代碼起著舉足輕重的作用。MBR(master boot record),即主引導(dǎo)記錄,有時(shí)也稱主引導(dǎo)扇區(qū)。位于整個(gè)硬盤的0柱面0磁頭1扇區(qū)(可以看作是硬盤的第一個(gè)扇區(qū)),bios在執(zhí)行自己固有的程序以后就會jump到mbr中的第一條指令。將系統(tǒng)的控制權(quán)交由mbr來執(zhí)行。在總共512byte的主引導(dǎo)記錄中,MBR的引導(dǎo)程序占了其中的前446個(gè)字節(jié)(偏移0H~偏移1BDH),隨后的64個(gè)字節(jié)(偏移1BEH~偏移1FDH)為DPT(Disk PartitionTable,硬盤分區(qū)表),最后的兩個(gè)字節(jié)“55 AA”(偏移1FEH~偏移1FFH)是分區(qū)有效結(jié)束標(biāo)志。
MBR不隨操作系統(tǒng)的不同而不同,意即不同的操作系統(tǒng)可能會存在相同的MBR,即使不同,MBR也不會夾帶操作系統(tǒng)的性質(zhì)。具有公共引導(dǎo)的特性。
我們來分析一段mbr。下面是用WinHex查看的一塊希捷120GB硬盤的mbr。

你的硬盤的MBR引導(dǎo)代碼可能并非這樣。不過即使不同,所執(zhí)行的功能大體是一樣的。這是wowocock關(guān)于磁盤mbr的反編譯,已加了詳細(xì)的注釋,感興趣可以細(xì)細(xì)研究一下。
我們看DPT部分。操作系統(tǒng)為了便于用戶對磁盤的管理。加入了磁盤分區(qū)的概念。即將一塊磁盤邏輯劃分為幾塊。磁盤分區(qū)數(shù)目的多少只受限于C~Z的英文字母的數(shù)目,在上圖DPT共64個(gè)字節(jié)中如何表示多個(gè)分區(qū)的屬性呢? Microsoft通過鏈接的方法解決了這個(gè)問題。在DPT共64個(gè)字節(jié)中,以16個(gè)字節(jié)為分區(qū)表項(xiàng)單位描述一個(gè)分區(qū)的屬性。也就是說,第一個(gè)分區(qū)表項(xiàng)描述一個(gè)分區(qū)的屬性,一般為基本分區(qū)。第二個(gè)分區(qū)表項(xiàng)描述除基本分區(qū)外的其余空間,一般而言,就是我們所說的擴(kuò)展分區(qū)。這部分的大體說明見表1。
表1 圖2分區(qū)表第一字段字節(jié)位移字段長度值字段名和定義0x01BEBYTE0x80引導(dǎo)指示符(Boot Indicator)指明該分區(qū)是否是活動分區(qū)。0x01BFBYTE0x01開始磁頭(Starting Head)0x01C06位0x01開始扇區(qū)(Starting Sector)只用了0~5位。后面的兩位(第6位和第7位)被開始柱面字段所使用0x01C110位0x00開始柱面(Starting Cylinder)除了開始扇區(qū)字段的最后兩位外,還使用了1位來組成該柱面值。開始柱面是一個(gè)10位數(shù),最大值為10230x01C2BYTE0x07系統(tǒng)ID(System ID)定義了分區(qū)的類型,詳細(xì)定義,請參閱圖40x01C3BYTE0xFE結(jié)束磁頭(Ending Head)0x01C46位0xFF結(jié)束扇區(qū)(Ending Sector)只使用了0~5位。最后兩位(第6、7位)被結(jié)束柱面字段所使用0x01C510位0x7B結(jié)束柱面(Ending Cylinder)除了結(jié)束扇區(qū)字段最后的兩位外,還使用了1位,以組成該柱面值。結(jié)束柱面是一個(gè)10位的數(shù),最大值為10230x01C6DWord0x0000003F相對扇區(qū)數(shù)(Relative Sectors) 從該磁盤的開始到該分區(qū)的開始的位移量,以扇區(qū)來計(jì)算0x01CADWord0x00DAA83D總扇區(qū)數(shù)(Total Sectors)該分區(qū)中的扇區(qū)總數(shù)注:上表中的超過1字節(jié)的數(shù)據(jù)都以實(shí)際數(shù)據(jù)顯示,就是按高位到地位的方式顯示。存儲時(shí)是按低位到高位存儲的。兩者表現(xiàn)不同,請仔細(xì)看清楚。以后出現(xiàn)的表,圖均同。也可以在WinHex中看到這些參數(shù)的意義:

說明: 每個(gè)分區(qū)表項(xiàng)占用16個(gè)字節(jié),假定偏移地址從0開始。如圖3的分表項(xiàng)3。分區(qū)表項(xiàng)4同分區(qū)表項(xiàng)3。
1、0H偏移為活動分區(qū)是否標(biāo)志,只能選00H和80H。80H為活動,00H為非活動。其余值對microsoft而言為非法值。
2、重新說明一下(這個(gè)非常重要):大于1個(gè)字節(jié)的數(shù)被以低字節(jié)在前的存儲格式格式(little endian format) 或稱反字節(jié)順序保存下來。低字節(jié)在前的格式是一種保存數(shù)的方法,這樣,最低位的字節(jié)最先出現(xiàn)在十六進(jìn)制數(shù)符號中。例如,相對扇區(qū)數(shù)字段的值0x3F000000的低字節(jié)在前表示為0x0000003F。這個(gè)低字節(jié)在前的格式數(shù)的十進(jìn)制數(shù)為63。
3、系統(tǒng)在分區(qū)時(shí),各分區(qū)都不允許跨柱面,即均以柱面為單位,這就是通常所說的分區(qū)粒度。有時(shí)候我們分區(qū)是輸入分區(qū)的大小為7000M,分出來卻是6997M,就是這個(gè)原因。 偏移2H和偏移6H的扇區(qū)和柱面參數(shù)中,扇區(qū)占6位(bit),柱面占10位(bit),以偏移6H為例,其低6位用作扇區(qū)數(shù)的二進(jìn)制表示。其高兩位做柱面數(shù)10位中的高兩位,偏移7H組成的8位做柱面數(shù)10位中的低8位。由此可知,實(shí)際上用這種方式表示的分區(qū)容量是有限的,柱面和磁頭從0開始編號,扇區(qū)從1開始編號,所以最多只能表示1024個(gè)柱面×63個(gè)扇區(qū)×256個(gè)磁頭×512byte=8455716864byte。即通常的8.4GB(實(shí)際上應(yīng)該是7.8GB左右)限制。實(shí)際上磁頭數(shù)通常只用到255個(gè)(由匯編語言的尋址寄存器決定),即使把這3個(gè)字節(jié)按線性尋址,依然力不從心。 在后來的操作系統(tǒng)中,超過8.4GB的分區(qū)其實(shí)已經(jīng)不通過C/H/S的方式尋址了。而是通過偏移CH~偏移FH共4個(gè)字節(jié)32位線性扇區(qū)地址來表示分區(qū)所占用的扇區(qū)總數(shù)??芍ㄟ^4個(gè)字節(jié)可以表示2^32個(gè)扇區(qū),即2TB=2048GB,目前對于大多數(shù)計(jì)算機(jī)而言,這已經(jīng)是個(gè)天文數(shù)字了。在未超過8.4GB的分區(qū)上,C/H/S的表示方法和線性扇區(qū)的表示方法所表示的分區(qū)大小是一致的。也就是說,兩種表示方法是協(xié)調(diào)的。即使不協(xié)調(diào),也以線性尋址為準(zhǔn)。(可能在某些系統(tǒng)中會提示出錯(cuò))。超過8.4GB的分區(qū)結(jié)束C/H/S一般填充為FEH FFH FFH。即C/H/S所能表示的最大值。有時(shí)候也會用柱面對1024的模來填充。不過這幾個(gè)字節(jié)是什么其實(shí)都無關(guān)緊要了。
雖然現(xiàn)在的系統(tǒng)均采用線性尋址的方式來處理分區(qū)的大小。但不可跨柱面的原則依然沒變。本分區(qū)的扇區(qū)總數(shù)加上與前一分區(qū)之間的保留扇區(qū)數(shù)目依然必須是柱面容量的整數(shù)倍。(保留扇區(qū)中的第一個(gè)扇區(qū)就是存放分區(qū)表的MBR或虛擬MBR的扇區(qū),分區(qū)的扇區(qū)總數(shù)在線性表示方式上是不計(jì)入保留扇區(qū)的。如果是第一個(gè)分區(qū),保留扇區(qū)是本分區(qū)前的所有扇區(qū)。
附:分區(qū)表類型標(biāo)志如圖4

3.2 擴(kuò)展分區(qū):
擴(kuò)展分區(qū)中的每個(gè)邏輯驅(qū)動器都存在一個(gè)類似于MBR的擴(kuò)展引導(dǎo)記錄( Extended Boot Record, EBR),也有人稱之為虛擬mbr或擴(kuò)展mbr,意思是一樣的。擴(kuò)展引導(dǎo)記錄包括一個(gè)擴(kuò)展分區(qū)表和該扇區(qū)的標(biāo)簽。擴(kuò)展引導(dǎo)記錄將記錄只包含擴(kuò)展分區(qū)中每個(gè)邏輯驅(qū)動器的第一個(gè)柱面的第一面的信息。一個(gè)邏輯驅(qū)動器中的引導(dǎo)扇區(qū)一般位于相對扇區(qū)32或63。但是,如果磁盤上沒有擴(kuò)展分區(qū),那么就不會有擴(kuò)展引導(dǎo)記錄和邏輯驅(qū)動器。第一個(gè)邏輯驅(qū)動器的擴(kuò)展分區(qū)表中的第一項(xiàng)指向它自身的引導(dǎo)扇區(qū)。第二項(xiàng)指向下一個(gè)邏輯驅(qū)動器的EBR。如果不存在進(jìn)一步的邏輯驅(qū)動器,第二項(xiàng)就不會使用,而且被記錄成一系列零。如果有附加的邏輯驅(qū)動器,那么第二個(gè)邏輯驅(qū)動器的擴(kuò)展分區(qū)表的第一項(xiàng)會指向它本身的引導(dǎo)扇區(qū)。第二個(gè)邏輯驅(qū)動器的擴(kuò)展分區(qū)表的第二項(xiàng)指向下一個(gè)邏輯驅(qū)動器的EBR。擴(kuò)展分區(qū)表的第三項(xiàng)和第四項(xiàng)永遠(yuǎn)都不會被使用。
通過一幅4分區(qū)的磁盤結(jié)構(gòu)圖可以看到磁盤的大致組織形式。如圖5:

關(guān)于擴(kuò)展分區(qū),如圖6所示,擴(kuò)展分區(qū)中邏輯驅(qū)動器的擴(kuò)展引導(dǎo)記錄是一個(gè)連接表。該圖顯示了一個(gè)擴(kuò)展分區(qū)上的三個(gè)邏輯驅(qū)動器,說明了前面的邏輯驅(qū)動器和最后一個(gè)邏輯驅(qū)動器之間在擴(kuò)展分區(qū)表中的差異。
除了擴(kuò)展分區(qū)上最后一個(gè)邏輯驅(qū)動器外,表2中所描述的擴(kuò)展分區(qū)表的格式在每個(gè)邏輯驅(qū)動器中都是重復(fù)的:第一個(gè)項(xiàng)標(biāo)識了邏輯驅(qū)動器本身的引導(dǎo)扇區(qū),第二個(gè)項(xiàng)標(biāo)識了下一個(gè)邏輯驅(qū)動器的EBR。最后一個(gè)邏輯驅(qū)動器的擴(kuò)展分區(qū)表只會列出它本身的分區(qū)項(xiàng)。最后一個(gè)擴(kuò)展分區(qū)表的第二個(gè)項(xiàng)到第四個(gè)項(xiàng)被使用。
表2 擴(kuò)展分區(qū)表項(xiàng)的內(nèi)容擴(kuò)展分區(qū)表項(xiàng)分區(qū)表項(xiàng)的內(nèi)容第一個(gè)項(xiàng)包括數(shù)據(jù)的開始地址在內(nèi)的與擴(kuò)展分區(qū)中當(dāng)前邏輯驅(qū)動器有關(guān)的信息第二個(gè)項(xiàng)有關(guān)擴(kuò)展分區(qū)中的下一個(gè)邏輯驅(qū)動器的信息,包括包含下一個(gè)邏輯驅(qū)動器的DBR的扇區(qū)的地址。如果不存在進(jìn)一步的邏輯驅(qū)動器的話,該字段不會被使用。第三個(gè)項(xiàng)未用第四個(gè)項(xiàng)未用擴(kuò)展分區(qū)表項(xiàng)中的相對扇區(qū)數(shù)字段所顯示的是從擴(kuò)展分區(qū)開始到邏輯驅(qū)動器中第一個(gè)扇區(qū)的位移的字節(jié)數(shù)。總扇區(qū)數(shù)字段中的數(shù)是指組成該邏輯驅(qū)動器的扇區(qū)數(shù)目??偵葏^(qū)數(shù)字段的值等于從擴(kuò)展分區(qū)表項(xiàng)所定義的引導(dǎo)扇區(qū)到邏輯驅(qū)動器末尾的扇區(qū)數(shù)。有時(shí)候在磁盤的末尾會有剩余空間,剩余空間是什么呢?我們前面說到,分區(qū)是以1柱面的容量為分區(qū)粒度的,那么如果磁盤總空間不是整數(shù)個(gè)柱面的話,不夠一個(gè)柱面的剩下的空間就是剩余空間了,這部分空間并不參與分區(qū),所以一般無法利用。照道理說,磁盤的物理模式?jīng)Q定了磁盤的總?cè)萘烤蛻?yīng)該是整數(shù)個(gè)柱面的容量,為什么會有不夠一個(gè)柱面的空間呢。在我的理解看來,本來現(xiàn)在的磁盤為了更大的利用空間,一般在物理上并不是按照外圍的扇區(qū)大于里圈的扇區(qū)這種管理方式,只是為了與操作系統(tǒng)兼容而抽象出來CHS??赡芷鋵?shí)際空間容量不一定正好為整數(shù)個(gè)柱面的容量。
相關(guān)文章
固態(tài)硬盤該選UEFI還是Legacy? 一文講透UEFI和Legacy的區(qū)別
今天我就帶著大家深入了解一下Legacy與UEFI兩種格式的區(qū)別,以及如何查詢自己的電腦硬盤格式,下面我們分開一一講解2025-04-23讓移動硬盤的傳輸速度突破6000MB/s! 雷孜小金剛SSD Pro5全面測評
性能“怪獸”來了!雷孜小金剛移動固態(tài)Rugged SSD Pro5正式登場,亮眼藍(lán)色全包圍保護(hù)外殼、軍工級防護(hù)搭配雷電5接口,標(biāo)稱6700MB/s讀取速度以及5300MB/s寫入速度,這硬核配2025-03-25固態(tài)移動硬盤怎么選? 2025年移動固態(tài)硬盤選購?fù)扑]
固態(tài)移動硬盤已經(jīng)成為了許多人的必備品,不僅方便攜帶,還能大大提升存儲效率,那么,面對市場上琳瑯滿目的固態(tài)移動硬盤,我們到底該怎么選呢?今天就來跟大家分享一些選購2025-03-25Lexar 雷克沙NM1090 SSD測評!12000MB/s讀速的PCIe 5.0炫彩重鎧戰(zhàn)士
近期我們就體驗(yàn)了Lexar雷克沙推出的PCIe5.0固態(tài)硬盤NM1090,它初次亮相于2023年科隆游戲展,這款固態(tài)硬盤值得購買嗎?詳細(xì)請看下文介紹2025-03-19滿血性能不超過62度! Lexar 雷克沙NM1090 PRO 2TB固態(tài)硬盤測評
雷克沙(Lexar)攜旗下全產(chǎn)品矩陣及技術(shù)解決方案亮相,其中帶來了新一代旗艦級PCIe 5.0 SSD:NM1090 PRO,這款固態(tài)硬盤性能如何?詳細(xì)請看下文介紹2025-03-19華南金牌NAS升級版上市:N150處理器+萬兆三網(wǎng)口
華南金牌昨日推出了一款“NAS 升級版”,暫未上架京東,淘寶店顯示 8GB 內(nèi)存版本 2399 元,雙 4T 硬盤版本 3699 元,四 4T 版本 4899 元,詳細(xì)配置如下2025-03-14重新定義入門級SSD! 佰維M350 PCIe4.0 2TB固態(tài)硬盤測評
最近一陣子,固態(tài)硬盤的價(jià)格算是比較穩(wěn)定了,而現(xiàn)在的很多應(yīng)用場景,對硬盤的需求也與日俱增,比如DeepSeek本地部署,3A游戲大作,以及像我經(jīng)常錄高清游戲?qū)崨r視頻并后期剪2025-03-14據(jù)說是U盤性能天花板? 移速極夜NT10雙接口固態(tài)U盤測評
于有性能+容量雙重要求的用戶來說,固態(tài)U盤已經(jīng)成為更合適的選擇,特別是目前我在用的這款移速的雙接口NT10固態(tài)U盤,不僅做工精致小巧,配合我的主力PC電腦上的USB 3.2 Gen2025-03-04鎧俠極至光速VD10 PCIe5.0固態(tài)硬盤測評:10000MB/s極速狂飆
2025年開年,鎧俠率先推出了一款性價(jià)比超高的PCIe5.0固態(tài)硬盤——極至光速VD10,1TB到手價(jià)僅799元,下面就讓我們一起體驗(yàn)一下這款讀取速度高達(dá)10000MB/s固態(tài)硬盤的實(shí)際魅力2025-03-03希捷睿翼桌面硬盤深度測評: 海量空間數(shù)據(jù)任你存
如果你正在尋找一款性價(jià)比高的桌面硬盤,希捷的產(chǎn)品或許可以納入你的考慮范圍,接下來,我將為大家介紹幾款在市場上表現(xiàn)不錯(cuò)的希捷型號,希望能為你的選擇提供一些幫助2025-03-01