複製鏈接
請複製以下鏈接發送給好友

全局唯一標識分區表

鎖定
全局唯一標識分區表GUID Partition Table,縮寫:GPT)是一個實體磁盤的分區表的結構佈局的標準。它是可擴展固件接口(EFI)標準(被Intel用於替代個人計算機的BIOS)的一部分,被用於替代BIOS系統中的一32bits來存儲邏輯塊地址和大小信息的主引導記錄(MBR)分區表。
GPT分配64bits給邏輯塊地址,因而使得最大分區大小在2-1個扇區成為了可能。對於每個扇區大小為512字節的磁盤,那意味着可以有9.4ZB(9.4 x 10字節)或8ZiB-512字節。 [1] 

全局唯一標識分區表介紹

全局唯一標識分區表的出現是為了替代舊式的MBR。對於那些扇區為512字節的磁盤,MBR分區表不支持容量大於2.2TB(2.2 × 10字節)的分區 [1]  ,然而,一些硬盤製造商(諸如希捷和西部數據)注意到了這個侷限性,並且將他們的容量較大的磁盤升級到了4KB的扇區,這意味着MBR的有效容量上限提升到了8.8TB。這個看似“正確的”解決方案,在臨時地降低了人們對GPT的需求的同時,也給市場帶來了,關於在有較大的塊(block)的設備上從BIOS啓動時,如何最佳的劃分磁盤分區的困惑。
蘋果公司曾經警告説:“不要假定所有設備的塊大小都是512字節。”一些現代的存儲設備如固態硬盤可能使用1024字節的塊,一些磁光盤(MO)可能使用2048字節的扇區(但是磁光盤通常是不進行分區的)。一些硬盤生產商在計劃生產4096字節一個扇區的硬盤,但截至2010年初,這種新硬盤使用固件對操作系統偽裝成512字節一個扇區。
GPT作為MBR的繼任者,正是為了解決MBR所帶來的諸多限制。

全局唯一標識分區表特點

在MBR硬盤中,分區信息直接存儲於主引導記錄(MBR)中(主引導記錄中還存儲着系統的引導程序)。但在GPT硬盤中,分區表的位置信息儲存在GPT頭中。但出於兼容性考慮,硬盤的第一個扇區仍然用作MBR,之後才是GPT頭。
跟現代的MBR一樣,GPT也使用邏輯區塊地址(LBA)取代了早期的CHS尋址方式。傳統MBR信息存儲於LBA 0,GPT頭存儲於LBA 1,接下來才是分區表本身。64位Windows操作系統使用16,384字節(或32扇區)作為GPT分區表,接下來的LBA 34是硬盤上第一個分區的開始。
為了減少分區表損壞的風險,GPT在硬盤最後保存了一份分區表的副本。
總的來説,GPT都將修復 MBR 的許多限制:
  • GPT只使用LBA,因此,CHS問題就不復存在。
  • 磁盤指針的大小為64位,假設512字節扇區,這意味着GPT可以處理的磁盤大小最高達512 x 2^64字節(8zebibytes,即86億TiB)。
  • GPT數據結構在磁盤上存儲兩次:開始和結束各一次。在因事故或壞扇區導致損壞的情況下,這種重複提高了成功恢復的幾率。
  • 循環冗餘檢驗值針對關鍵數據結構而計算,提高了數據崩潰的檢測幾率。
  • GPT將所有分區存儲在單個分區表中(帶有備份),因此擴展分區或邏輯分區沒有存在的必要。GPT默認支持128個分區,當然您也可以更改分區表的大小,如果您的分區軟件支持這種更改的話。
  • 雖然MBR提供1字節分區類型代碼,但GPT使用一個16字節的全局唯一標識符(GUID)值來標識分區類型。這使分區類型更不容易衝突。
  • GPT支持存儲人類可讀的分區名稱。您可以使用這個字段來命名您的Linux /home、/usr、/var和其他分區,以便它們在分區軟件中更容易識別。
[1] 

全局唯一標識分區表結構

全局唯一標識分區表LBA 0

在GPT分區表的最開頭,出於兼容性考慮仍然存儲了一份傳統的MBR(LBA 0),這個MBR也叫做保護性MBR(Protective MBR)。
保護性MBR保護GPT磁盤不受以前發佈的MBR磁盤工具(比如FDISK或WindowsNT磁盤管理器)的危害。這些工具不能感知GPT,也無法正確地訪問GPT磁盤。不能識別GPT的舊軟件在訪問GPT磁盤時只解釋保護性MBR。這些工具通過解釋保護性MBR,將GPT磁盤看成一個封裝的(可能無法識別)分區,而不是錯誤地當成一個未分區的磁盤,並且拒絕對硬盤進行操作,除非用户特別要求刪除這個分區。這就避免了意外刪除分區的危險。例如,當在32位的Windows XP系統中掛載GPT磁盤時,會將其識別為“GPT 保護分區(GPT Protective Partition)”,並且用户無法對這個分區進行任何操作(除非使用命令行工具) [2]  ,這是因為32位的Windows XP並不支持GPT,它僅僅只是知道掛載的是一個GPT磁盤而已。
在支持從GPT啓動的操作系統中,這裏也用於存儲第一階段的啓動代碼。在這個MBR中,只有一個標識為0xEE的分區,以此來表示這塊硬盤使用GPT分區表。
另外,能夠識別GPT分區表的操作系統會檢查保護MBR中的分區表,如果分區類型不是0xEE或者MBR分區表中有多個項,也會拒絕對硬盤進行操作。
在使用MBR/GPT混合分區表的硬盤中,這部分存儲了GPT分區表的一部分分區(通常是前四個分區),可以使不支持從GPT啓動的操作系統從這個MBR啓動,啓動後只能操作MBR分區表中的分區。如Boot Camp就是使用這種方式啓動Windows。 [3] 

全局唯一標識分區表LBA 1

分區表頭(LBA 1)定義了硬盤的可用空間以及組成分區表的項的大小和數量。在使用64位Windows Server 2003的機器上,最多可以創建128個分區,即分區表中保留了128個項,其中每個都是128字節。(EFI標準要求分區表最小要有16,384字節,即128個分區項的大小)
分區表頭還記錄了這塊硬盤的GUID,記錄了分區表頭本身的位置和大小(位置總是在LBA 1)以及備份分區表頭和分區表的位置和大小(在硬盤的最後)。它還儲存着它本身和分區表的CRC32校驗。固件、引導程序和操作系統在啓動時可以根據這個校驗值來判斷分區表是否出錯,如果出錯了,可以使用軟件從硬盤最後的備份GPT中恢復整個分區表,如果備份GPT也校驗錯誤,硬盤將不可使用。所以GPT硬盤的分區表不可以直接使用16進制編輯器修改。 [3] 
分區表頭的格式
起始字節
長度
內容
0
8字節
簽名("EFI PART")
8
4字節
修訂
12
4字節
分區表頭的大小
16
4字節
分區表頭(第0-91字節)的CRC32校驗,在計算時,把這個字段作為0處理,需要計算出分區串行的CRC32校驗後再計算本字段
20
4字節
保留,必須是 0
24
8字節
當前LBA(這個分區表頭的位置)
32
8字節
備份LBA(另一個分區表頭的位置)
40
8字節
第一個可用於分區的LBA(主分區表的最後一個LBA + 1)
48
8字節
最後一個可用於分區的LBA(備份分區表的第一個LBA − 1)
56
16字節
硬盤GUID(在類UNIX系統中也叫UUID
72
8字節
分區表項的起始LBA(在主分區表中是2)
80
4字節
分區表項的數量
84
4字節
一個分區表項的大小(通常是128)
88
4字節
分區串行的CRC32校驗
92
*
保留,剩餘的字節必須是0(對於512字節LBA的硬盤即是420個字節)
主分區表和備份分區表的頭分別位於硬盤的第二個扇區(LBA 1)以及硬盤的最後一個扇區。備份分區表頭中的信息是關於備份分區表的。 [3] 

全局唯一標識分區表LBA 2–33

LBA 2–33的位置存放的是分區表項。GPT分區表使用簡單而直接的方式表示分區。一個分區表項的前16字節是分區類型GUID。例如,EFI系統分區的GUID類型是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}。接下來的16字節是該分區唯一的GUID(這個GUID指的是該分區本身,而之前的GUID指的是該分區的類型)。再接下來是分區起始和末尾的64位LBA編號,以及分區的名字和屬性。 [3] 
GPT分區表項的格式
起始字節
長度
內容
0
16字節
分區類型GUID
16
16字節
分區GUID
32
8字節
起始LBA(小端格式)
40
8字節
末尾LBA
48
8字節
屬性標籤(如:60表示"只讀")
56
72字節
分區名(可以包括36個UTF-16(小端格式)字符)

全局唯一標識分區表操作系統支持

全局唯一標識分區表Windows

能在所有基於x64平台上用作存儲卷,包括運行Windows XP Professional x64 Edition的平台。從Windows Server 2003 SP1開始,GPT磁盤也可用作基於x86的Windows平台上的存儲卷。
可用作基於x64的Windows 7、Windows Vista和Windows Server 2008版本上的引導卷。從Windows Server 2003 SP1開始,GPT磁盤也可用作基於Itanium的系統上的引導卷。
儘管GPT規範對分區數量幾乎沒有限制。但是,Windows實現限制的分區數量為128個。GPT中的分區項的保留空間大小會限制分區數量。對於Windows Server 2003 SP1、Windows XP x64版本及更新的版本,支持的最大原始分區為18EB。(Windows文件系統目前的限制為每個256TB)。
32位Windows GPT支持狀況一覽
操作系統版本
發行日期
平台
讀寫支持
啓動支持
備註
Windows XP
2001-10-25
-
Windows Server 2003
2003-04-24
IA-32
-
Windows Server 2003 SP1
2005-03-30
IA-32
混合硬盤1中優先使用MBR
Windows Vista
2006-07-22
IA-32
混合硬盤中優先使用MBR
Windows Server 2008
2008-02-27
IA-32
混合硬盤中優先使用MBR
Windows 7
2009-10-22
IA-32
混合硬盤中優先使用MBR
Windows 8
2012-08-01
IA-32
混合硬盤中優先使用MBR
64位Windows GPT支持狀況一覽
操作系統版本
發行日期
平台
讀寫支持
啓動支持
備註
Windows XP Professional x64 Edition
Windows Server 2003
2005-04-25
混合硬盤中優先使用MBR
Windows Server 2003
2005-04-25
混合硬盤中優先使用MBR
Windows Vista
2006-07-22
x64
需要UEFI
混合硬盤中優先使用MBR
Windows Server 2008
2008-02-27
x64
需要UEFI
混合硬盤中優先使用MBR
Windows Server 2008
2008-02-27
IA-64
混合硬盤中優先使用MBR
Windows 7
Windows Server 2008 R2
2009-10-22
x64
需要UEFI
混合硬盤中優先使用MBR.
Windows Server 2008 R2
2009-10-22
IA-64
混合硬盤中優先使用MBR
Windows 8
Windows Server 2012
2012-08-01
x64
需要UEFI
混合硬盤中優先使用MBR.
注1:此處混合硬盤指MBR/GPT混合硬盤。

全局唯一標識分區表Mac OS X

Mac OS X 10.4或者更高的版本都支持掛載GPT磁盤。 [4] 
使用英特爾架構的蘋果機也使用GPT。 [4] 

全局唯一標識分區表Linux

Linux內核必須提供GPT支持,以便對磁盤分區上的數據提供訪問。幸運的是,長久以來,Linux一直包含這種支持。 [1] 

全局唯一標識分區表分區類型GUID

操作系統
分區類型
GUID
EFI文件系統(標準) [5] 
C12A7328-F81F-11D2-BA4B-00A0C93EC93B
微軟保留分區
E3C9E316-0B5C-4DB8-817D-F92DF00215AE
基本數據分區
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
邏輯軟盤管理工具元數據分區
5808C8AA-7E8F-42E0-85D2-E1E90434CFB3
邏輯軟盤管理工具數據分區
AF9B60A0-1431-4F62-BC68-3311714A69AD
HFS+分區
48465300-0000-11AA-AA11-00306543ECAC
UFS
55465300-0000-11AA-AA11-00306543ECAC
啓動分區
426F6F74-0000-11AA-AA11-00306543ECAC
RAID分區
52414944-0000-11AA-AA11-00306543ECAC
RAID分區(Offline)
52414944-5F4F-11AA-AA11-00306543ECAC
標籤
4C616265-6C00-11AA-AA11-00306543ECAC
ChromeOS [5] 
Linux數據(標準)
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
ChromeOS內核
FE3A2A5D-4F32-41A7-B725-ACCC3285A309
ChromeOS根文件系統
3CB8E202-3B7E-47DD-8A3C-7FF2A13CFCEC
ChromeOS固件
CAB6E88E-ABF3-4102-A07A-D4BB9BE3C1D3
ChromeOS將來使用
2E0A753D-9E48-43B0-8337-B15192CB1B5E
HP-UX
數據分區
75894C1E-3AEB-11D3-B7C1-7B03A0000000
服務分區
E2A1E728-32E3-11D6-A682-7B03A0000000
Linux [4] 
數據分區
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
RAID分區
A19D880F-05FC-4D3B-A006-743F0F84911E
交換分區
0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
邏輯卷管理員(LVM)分區
E6D6D379-F507-44C2-A23C-238F2A3DF928
保留
8DA63339-0007-60C0-C436-083AC8230908
FreeBSD
啓動分區
83BD6B9D-7F41-11DC-BE0B-001560B84F0F
數據分區
516E7CB4-6ECF-11D6-8FF8-00022D09712B
交換分區
516E7CB5-6ECF-11D6-8FF8-00022D09712B
UFS分區
516E7CB6-6ECF-11D6-8FF8-00022D09712B
Vinum volume manager分區
516E7CB8-6ECF-11D6-8FF8-00022D09712B
ZFS分區
516E7CBA-6ECF-11D6-8FF8-00022D09712B
注:以上表中GUID為小端格式。
參考資料