一張圖了解磁盤里的數據結構


寫在前面的話:前面兩篇對硬盤進行了介紹,《理解硬盤》《再來理解一下硬盤》,這篇就說說磁盤上的數據結構,看看磁盤是怎么利用的。

 ====正文開始=====

  有了文件系統,使我們對文件的訪問變得很容易,不用考慮文件到底存在哪里,怎么存的,不過適當了解一下底層文件存儲還是有幫助的。我們知道文件不僅僅能夠存儲在磁盤上,還可以存儲在光盤等設備上,對於存儲在硬盤上的,對於不同的硬盤內部存儲介質,如磁性盤面、閃存(SSD固態硬盤存儲介質)存儲結構也是不同的;對於同樣的存儲介質的磁盤,不同的文件系統,如NTFS、FAT、ext等,底層存儲也是有所區別的,下面僅僅對整體邏輯上的結構做一簡單介紹。

   先來看下圖,我花了一下午時間畫的,后面就要圍繞這張圖來展開的。

  不要被上面的圖嚇到,我來一點點的解釋。

  先來整體上看一下,上面圖是我電腦的磁盤,按照LBA尋址,把所有的扇區按照從左到右,依次排開,最左邊為第一塊扇區,最右邊是最后一塊扇區,所有數據信息就存儲在里面。從左到右分為了幾部分:Start Sections-->Partition1(系統保留分區)-->Partition2(C盤)--->Partition3(D盤)-->Partition4(E盤)-->Partition5(F盤),其中Partition1~3是主分區,Partion4~5是擴展分區上的兩個邏輯分區,里面綠色的部分是分區與分區之間的Partition gap,大小為1MB,最后黃色的表示Unpartitional space,沒有利用的,也是1MB。下面開始分開逐個來解釋一下。

一、Start Sections:

  這個開始扇區部分有1MB大小,其中第一個扇區,也是整個磁盤的第一個扇區,位於0柱面0磁頭1扇區,也叫做主引導扇區,一共512個字節,分為了三部分:

(1)MBR(446字節):Main Boot Record,主引導記錄

  如果直接說MBR可能不知道它從何而來,我們從開機來看看,它到底在什么時候起作用的。我們按下電腦的開機按鍵,就給主板通上了電,上面的bios程序開始運行,對電腦硬件進行檢測,然后就需要我們去選擇First boot device,我們可以從U盤啟動、從光盤啟動,當然也可以從硬盤啟動,而且很多時候默認的是從硬盤啟動。如果我們選擇了從硬盤啟動,那么bios程序就會讀取該設備的第一個扇區的數據,也就是前面512個字節,如果最后兩個字節不是以0x55AA結束,那么表示這個設備不可以用來啟動;如果是0x55AA,那么表示該設備可以用來啟動,bios程序就會有一個jump的操作,跳轉到硬盤這一個扇區的代碼,把操作交給硬盤,那么跳轉的是哪兒呢?就是我們要說的MBR,主引導記錄

  MBR中包含了整個硬盤的一些參數和一段引導程序,引導程序就會去DPT磁盤分區表里面去找到底從硬盤的哪個分區去啟動(具有激活標志的分區),找到后就把控制權交出去,不過這之前會先檢查DPT磁盤分區表是否正確。

(2)DPT(64字節):Disk Partition Table,磁盤分區表

  DPT用來記錄磁盤到底分了幾個分區以及分區的一些信息,磁盤分區有許多好處,比如不同的分區放不同的數據,又或者可以安裝多操作系統等等。DPT只有64個字節,分成了四項,分別為第一~四分區表項,圖中紅色虛線箭頭指向的。每個分區表項占16個字節,因此一個磁盤只能分為四個分區,即四個主分區。當然如果想增加更多的分區,其中一個主分區可以當成擴展分區,在擴展分區里面新建邏輯分區。

  磁盤分區表的四個分區表項內容格式一致,我們拿出一個分區表項(16字節)看看都包含了什么。

  第1個字節:如果為0x80,表示是激活分區,那么前面的MBR引導程序就把控制權給這個分區。四個分區只能有一個是激活的。0x00表示非激活的分區。

  第2-4個字節:主分區的第一個扇區的CHS地址,里面有程序代碼的。

  第5個字節:主分區的類型。例如01表示FAT32,05表示extended(如果一個分區的主分區id號為05,那么它就是一個擴展分區了,我的硬盤擴展分區的標志是0F,表示Win95Extended)等,具體可參看分區類型標志。

  第6-8個字節:主分區的最后一個扇區的CHS地址,所以我們改改分區表,也可以修改磁盤分區的大小。

  第9-12個字節:該主分區的第一個扇區的邏輯地址LBA。

  第13-16個字節:主分區的扇區總數。

  我們看到我們上圖中,四個分區表項分別對應了三個主分區和一個擴展分區。

 (3)其他幾個扇區:除了第一個扇區外,1MB空間里面的其他幾個扇區就空着了,可能沒用,也可能與后面要講的partition gap功能一致。 

二、主分區

  我的磁盤分了三個主分區,分別為系統保留、C盤、D盤,我們以C盤為例,看看主分區所占用的扇區,可以分為幾部分。

(1)引導扇區:OS Boot Record,主分區的引導記錄,有時也叫卷引導記錄(Volume boot record)含有一段操作系統的引導程序,如果該分區是激活的,可以通過它來啟動本主分區的操作系統。

(2)DATA數據區:存儲數據,不同的文件系統,如fat、ntfs還會細分。

三、Partition gap

  用Winhex查看磁盤情況,往往會看到分區和分區之間會有Partition gap,so上面的一個解釋,可以參看一下,Windows disk partion gap

四、擴展分區

   我的最后一個主分區當做擴展分區,里面有兩個邏輯分區E盤和F盤,每一個邏輯分區由幾部分組成。

(1)擴展分區表

  擴展分區的第一個邏輯分區的第一個扇區,叫做EBR,extended boot record,擴展分區記錄或者虛擬分區表,虛擬MBR,類似於整個磁盤的第一個扇區,但是它沒有引導程序,只有一個擴展分區表和0x55AA結束標志,其中擴展分區表由四部分組成。里面的第二項可以找到下一個邏輯分區的位置。

(2)引導扇區:同前。

(3)數據區:同前。

五、Unpartitional space

  只有1MB空間,我也不想知道它是干什么了。

 后記:謹以此文,獻給我壞掉的一塊硬盤。

 

(完)

  文檔信息 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM