一張圖瞭解磁盤裏的數據結構

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

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

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

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

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

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

1、Start Sections:htm

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

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

  若是直接說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功能一致。 

2、主分區

  個人磁盤分了三個主分區,分別爲系統保留、C盤、D盤,咱們以C盤爲例,看看主分區所佔用的扇區,能夠分爲幾部分。

(1)引導扇區:OS Boot Record,主分區的引導記錄,有時也叫卷引導記錄(Volume boot record)含有一段操做系統的引導程序,若是該分區是激活的,能夠經過它來啓動本主分區的操做系統。

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

3、Partition gap

  用Winhex查看磁盤狀況,每每會看到分區和分區之間會有Partition gap,so上面的一個解釋,能夠參看一下,Windows disk partion gap

4、擴展分區

   個人最後一個主分區當作擴展分區,裏面有兩個邏輯分區E盤和F盤,每個邏輯分區由幾部分組成。

(1)擴展分區表

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

(2)引導扇區:同前。

(3)數據區:同前。

5、Unpartitional space

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

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

 

(完)

  文檔信息 

相關文章
相關標籤/搜索