天天看點

GPT分區體系

GPT,即GUID Partition Table(GUID 分區表,GPT)的簡寫形式,它是Windows Server 2003 中的一種新型磁盤架構,是一種由基于 Itanium 計算機中的可擴充固件接口 (EFI*) 使用的磁盤分區架構。這種64位的Itanium 版Windows系統采用的磁盤布局架構,與傳統的32位磁盤完全不同。

與主啟動記錄 (MBR) 分區方法相比,GPT 具有更多的優點:

u         它允許每個磁盤有多達 128 個分區(MBR磁盤最多隻能有4個主分區,或者3個主分區加一個擴充分區和無限制的邏輯驅動器)。

u         支援高達 18 千兆兆位元組(EB,exabytes)的卷大小(MBR磁盤支援的最大卷為2TB)。

u         允許将主磁盤分區表和備份磁盤分區表用于備援。

u         支援唯一的磁盤和分區 ID (GUID)。

u         性能更加穩定。

...

可以在運作帶有Service Pack 1 (SP1) 的 Windows Server 2003的磁盤管理中進行MBR與GPT磁盤的互相轉換,然後進行相應的分區操作。也可以使用 DiskPart.exe 指令行實用程式或 EFI 固件實用程式 Diskpart.efi 在基本 GPT 磁盤上建立分區。

一個轉換為GPT并建立分區後的磁盤,總體布局如圖2.37所示。

圖2.37  GPT磁盤總體布局

我們可以看到,一個GPT磁盤可以分為兩大部分:保護MBR和EFI部分。

(1)第一部分隻由0号扇區組成,在這個扇區中包含一個DOS分區表,分區表内隻有一個表項,這個表項描述了一個類型值為0xEE的分區,大小為整個磁盤(如圖2.38所示)。這個分區的存在可以使計算機認為這個磁盤是合法的,并且已被使用,進而不再試圖對其進行格式化等操作,是以該扇區又被稱為“保護MBR”。實際上,EFI根本不使用這個分區表。

圖2.38  GPT磁盤的0号扇區

(2)另一部分為EFI部分,EFI部分又可以分為4個區域:EFI資訊區(又稱為GPT頭)部分、分區表部分、GPT分區部分和備份區域。

u         EFI資訊區,也稱為GPT頭,起始于磁盤的1号扇區,通常隻占用這一個扇區。GPT磁盤建立後,由GPT頭定義分區表的位置和大小。Windows限定分區表項為128個。GPT頭還包含頭和分區表的校驗和,這樣就可以及時發現錯誤或者改變。

u         分區表區域包含分區表項。這個區域由GPT頭定義,一般占用磁盤2~33号扇區。分區表中的每個表項由起始和結束位址、類型值、名字、屬性标志和GUID值組成。分區表建立後,128位的GUID對系統來說是唯一的。

u         分區部分是最大的區域,由配置設定給分區的扇區組成。這個區域的起始和結束位址由GPT頭定義。

u         備份區域位于磁盤的尾部,包含GPT頭和分區表的備份。它占用GPT結束扇區和EFI結束扇區之間的33個扇區。其中最後一個扇區用來備份1号扇區的EFI資訊,其餘的32個扇區用來備份2~33号扇區的分區表。

1.  EFI資訊扇區資料結構

EFI資訊扇區位于磁盤的1号扇區,也稱為GPT頭。GPT磁盤建立後,由GPT頭定義分區表的位置和大小,Windows限定分區表項為128個。GPT頭還包含頭和分區表的校驗和。EFI資訊扇區的結構如表2.21所示。

表2.21  EFI資訊扇區結構

相對位元組偏移

(十六進制)

位元組數

說明

00~07

8

簽名(ASCII碼“EFI PART”

08~0B

4

版本

0C~0F

GPT頭大小位元組數

10~13

GPT頭CRC校驗和

14~17

保留

18~1F

目前GPT頭的LBA扇區号,也即為EFI區域起始扇區号

20~27

GPT頭備份LBA扇區号,也即為EFI區域結束扇區号

28~2F

GPT分區區域起始LBA

30~37

GPT分區區域結束LBA

38~47

12

磁盤GUID

48~4F

GPT分區表起始LBA

50~53

分區表項數

54~57

每分區表項占用位元組數

58~5B

分區表CRC校驗和

5C~1FF

366

通過這些結構中的描述值,我們可以确定GPT頭、分區表、GPT分區區域、分區表的備份位置等結構布局。圖2.39顯示了一個GPT頭的執行個體。

圖2.39  GPT頭

具體分析如下:

1)    0x00~0x07:8個位元組,GPT頭簽名“4546492050415254”,ASCII碼為“EFI  PART”。

2)    0x08~0x0B:4個位元組,版本号。

3)    0x0C~0x0F:4個位元組,GPT頭大小位元組數,此處的值為0x5C,即92個位元組。

4)    0x10~0x13:4個位元組,GPT頭校驗和。

5)    0x14~0x17:4個位元組,保留。

6)    0x18~0x1F:8個位元組,目前GPT頭的LBA扇區号,即EFI區域起始扇區号,通常為1。

7)    0x20~0x27: 8個位元組,GPT頭備份位置的LBA扇區号,即EFI區域結束扇區号,此處的值為224909(0x086E8D)。

8)    0x28~0x2F:8個位元組,GPT分區區域起始LBA扇區号,此處的值為34(0x22)。

9)    0x30~0x37:8個位元組,GPT分區區域結束LBA扇區号,此處的值為224876(0x036E6C)。

10)0x38~0x47:16個位元組,磁盤GUID。

11)0x48~0x4F:8個位元組,GPT分區表起始LBA扇區号,此處的值為2(0x02),通常都是起始于2号扇區。

12)0x50~0x53:4個位元組,分區表項數,限定為128(0x80)。

13)0x54~0x57:4個位元組,每分區表項占用位元組數,固定為128(0x80)。

14)0x58~0x5B:4個位元組,分區表CRC校驗和。

15)0x5C~0x1FF:420個位元組,保留。

本文轉自老骥伏枥51CTO部落格,原文連結:http://blog.51cto.com/sjhfml/129146 ,如需轉載請自行聯系原作者

繼續閱讀