分區表
一個磁盤拋開物理組成部分的話,就是一個地址序列,這個序列從0~n-1,每個地址包含512B(字節)的控件。一般我們將這些地址稱作邏輯塊地址(LBA),每塊由512B組成。分區表的作用是:告訴系統,磁盤的分區有幾個,開始位置和結束位置。磁盤分區表格式目前主要有兩種MBR分區表和GUID分區表(GPT)。
MBR
MBR即主引導記錄(Master Boot Record),位置在磁盤的第一個邏輯扇區,即LBA0的位置。一個邏輯扇區僅有512B(字節),分給MBR分區表的只有64B,由4個16B大小的分區,這也是硬盤主分區數目不能超過4個的原因,MBR分區表最大可尋址的存儲空間只有2TB(2^32 * 512)。標準MBR結構如下:
由上圖可以看出,MBR主要由三部分組成,主引導程序、硬盤分區表(DPT)、分區有效標志。主引導程序占據446字節,分區表占據64字節,由4個大小為16字節的主分區組成,還有分區有效標志占據2字節。接下來談談有關這三個部分的作用:
- 主引導程序(boot loader):主要負責從活動分區中裝載并運行引導系統程序
- 分區表(DPT,Disk Partition Table):將大表的數據分成稱為分區的許多小的子集。如果磁盤丟失了分區表,數據就無法按順序讀取和寫入,導致無法操作
- 分區有效標志(magic number):有的地方也稱為結束標志字,固定值為0xAA55或者0x55AA,取決于處理器類型,如果是小端模式處理器(如Intel系列),則該值為0xAA55,如果是大端模式處理器(如Motorola6800),則該值為0x55AA。如果該標志錯誤,系統就不能啟動
傳統的BIOS比較低級,它不能像操作系統一樣識別文件系統,所有磁盤必須要有一個固定的物理塊作為引導塊(Boot Block),這個引導塊就是MBR。也就是說MBR是用來引導內存加載并運行操作系統內核的。
GPT
GPT即全局唯一標識分區表(GUID Partition Table)是一個實體磁盤的分區表的結構布局的標準。它是可擴展接口(EFI)標準的一部分。由于MBR分區表最大可尋址的存儲空間只有2TB這個局限性。CPT就誕生了,CGPT分類64bits給邏輯塊地址,這就意味著尋址存儲空間達到8ZB。GPT支持最多128個主分區。CPT結構圖如下:
如圖可以看出:GPT分為以下幾個部分:
- 保護性MBR: 處于位置LBA0,是在CPT分區表的開頭,為了兼容性而存在的傳統的MBR。一般情況下是沒有引導代碼,僅僅有一個被標識為未知的分區,當支持GPT分區表的操作系統檢索到這個MBR后會自動忽略并跳到LBA1讀取CGT分區表。
- GPT頭:定義了硬盤的可控件和組成分區表的項的大小和數量,還記錄了這塊硬盤的GUID,記錄了分區表頭本身的位置和大小以及備份分區表頭和分區表的位置和大小。
- 分區表:用于存儲分區的信息。如(分區類型GUID,起始LBA,末尾LBA等)
- 分區:是物理磁盤的一部分,作用如同一個物理分隔單元。其基本信息存在分區表中。
- 分區表備份對分區表進行備份
- GPT頭備份對GPT頭進行備份。處于硬盤最后面
GPT是基于EFI的,因此BIOS是無法引導GPT磁盤里的操作系統的。但是為了解決這個問題,混合分區的概念就產生了。混合分區技術使得可以使用BIOS來引導CPT磁盤里的操作系統。也就讓Mac上面可以運行Windows成為了現實。這里就不多討論了。有興趣的可以自己去了解一下混合分區和Boot Camp引導。