GPT 分區詳解

保護MBR

保護MBR包含一個DOS分區表(LBA0),只包含一個類型值爲0xEE的分區項,在小於2TB的磁盤上,大小爲整個磁盤;在更大的磁盤上,它的大小固定爲2TB。它的做用是阻止不能識別GPT分區的磁盤工具試圖對其進行格式化等操做,因此該扇區被稱爲「保護MBR」。實際上,EFI根本不使用這個分區表。api

EFI部分

EFI部分又能夠分爲4個區域:EFI信息區(GPT頭)、分區表、GPT分區、備份區域。數據結構

EFI信息區(GPT頭)
起始於磁盤的LBA1,一般也只佔用這個單一扇區。其做用是定義分區表的位置和大小。GPT頭還包含頭和分區表的校驗和,這樣就能夠及時發現錯誤。
分區表
分區表區域包含分區表項。這個區域由GPT頭定義,通常佔用磁盤LBA2~LBA33扇區。分區表中的每一個分區項由起始地址、結束地址、類型值、名字、屬性標誌、GUID值組成。分區表創建後,128位的GUID對系統來講是惟一的。
GPT分區
最大的區域,由分配給分區的扇區組成。這個區域的起始和結束地址由GPT頭定義。
備份區
備份區域位於磁盤的尾部,包含GPT頭和分區表的備份。它佔用GPT結束扇區和EFI結束扇區之間的33個扇區。其中最後一個扇區用來備份1號扇區的EFI信息,其他的32個扇區用來備份LBA2~LBA33扇區的分區表。

EFI信息區數據結構

EFI信息區位於磁盤的1號扇區(LBA1),也稱爲GPT頭。其具體結構以下表所示工具

EFI信息區結構
相對字節偏移量
(十六進制)
字節數 說明[整數皆以little endian方式表示]
00~07 8 GPT頭簽名「45 46 49 20 50 41 52 54」(ASCII碼爲「EFI PART」)
08~0B 4 版本號,目前是1.0版,其值是「00 00 01 00」
0C~0F 4 GPT頭的大小(字節數),一般爲「5C 00 00 00」(0x5C),也就是92字節。
10~13 4 GPT頭CRC校驗和(計算時把這個字段自己看作零值)
14~17 4 保留,必須爲「00 00 00 00」
18~1F 8 EFI信息區(GPT頭)的起始扇區號,一般爲「01 00 00 00 00 00 00 00」,也就是LBA1。
20~27 8 EFI信息區(GPT頭)備份位置的扇區號,也就是EFI區域結束扇區號。一般是整個磁盤最末一個扇區。
28~2F 8 GPT分區區域的起始扇區號,一般爲「22 00 00 00 00 00 00 00」(0x22),也便是LBA34。
30~37 8 GPT分區區域的結束扇區號,一般是倒數第34扇區。
38~47 16 磁盤GUID(全球惟一標識符,與UUID是同義詞)
48~4F 8 分區表起始扇區號,一般爲「02 00 00 00 00 00 00 00」(0x02),也就是LBA2。
50~53 4 分區表總項數,一般限定爲「80 00 00 00」(0x80),也就是128個。
54~57 4 每一個分區表項佔用字節數,一般限定爲「80 00 00 00」(0x80),也就是128字節。
58~5B 4 分區表CRC校驗和
5C~* * 保留,一般是全零填充

分區項

分區項結構
相對字節偏移量
(十六進制)
字節數 說明[整數皆以little endian方式表示]
00~0F 16 用GUID表示的分區類型
10~1F 16 用GUID表示的分區惟一標示符
20~27 8 該分區的起始扇區,用LBA值表示。
28~2F 8 該分區的結束扇區(包含),用LBA值表示,一般是奇數。
30~37 8 該分區的屬性標誌
38~7F 72 UTF-16LE編碼的人類可讀的分區名稱,最大32個字符。

注意,扇區尺寸不能假定爲512字節,也就是說,一個扇區內可能存放4個以上的分區項,也可能只存放一個分區項的一部分。也就是說,除了頭兩個扇區(LBA 0 和 LBA 1)以外,GPT規範僅定義了數據結構的尺寸,而不關心使用多少個扇區進行存儲。編碼

分區類型
相關操做系統 GUID[little endian] 含義
None 00000000-0000-0000-0000-000000000000 未使用
None 024DEE41-33E7-11D3-9D69-0008C781F39F MBR分區表
None C12A7328-F81F-11D2-BA4B-00A0C93EC93B EFI系統分區[EFI System partition (ESP)]
None 21686148-6449-6E6F-744E-656564454649 BIOS引導分區,其對應的ASCII字符串是"Hah!IdontNeedEFI"。
None D3BFE2DE-3DAF-11DF-BA40-E3A556D89593 Intel Fast Flash (iFFS) partition (for Intel Rapid Start technology)
Windows E3C9E316-0B5C-4DB8-817D-F92DF00215AE 微軟保留分區
Windows EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 基本數據分區
Windows DE94BBA4-06D1-4D40-A16A-BFD50179D6AC Windows恢復環境
Linux 0FC63DAF-8483-4772-8E79-3D69D8477DE4 數據分區。Linux曾經使用和Windows基本數據分區相同的GUID。
這個新的GUID是由 GPT fdisk 和 GNU Parted 開發者根據Linux傳統的"8300"分區代碼發明的。
Linux A19D880F-05FC-4D3B-A006-743F0F84911E RAID分區
Linux 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F 交換分區
Linux E6D6D379-F507-44C2-A23C-238F2A3DF928 邏輯卷管理器(LVM)分區
Linux 8DA63339-0007-60C0-C436-083AC8230908 保留

Microsoft還進一步對分區的屬性進行了細分:低位4字節表示與分區類型無關的屬性,高位4字節表示與分區類型有關的屬性。Microsoft目前使用了下列屬性:spa

分區屬性
Bit 解釋
0 系統分區(磁盤分區工具必須將此分區保持原樣,不得作任何修改)
1 EFI隱藏分區(EFI不可見分區)
2 傳統的BIOS的可引導分區標誌
60 只讀
62 隱藏
63 不自動掛載,也就是不自動分配盤符
相關文章
相關標籤/搜索