-
全局唯一標識分區表
鎖定
全局唯一標識分區表(GUID Partition Table,縮寫:GPT)是一個實體磁盤的分區表的結構佈局的標準。它是可擴展固件接口(EFI)標準(被Intel用於替代個人計算機的BIOS)的一部分,被用於替代BIOS系統中的一32bits來存儲邏輯塊地址和大小信息的主引導記錄(MBR)分區表。
全局唯一標識分區表介紹
全局唯一標識分區表的出現是為了替代舊式的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和其他分區,以便它們在分區軟件中更容易識別。
全局唯一標識分區表結構
全局唯一標識分區表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字節 | |
72 | 8字節 | 分區表項的起始LBA(在主分區表中是2) |
80 | 4字節 | 分區表項的數量 |
84 | 4字節 | 一個分區表項的大小(通常是128) |
88 | 4字節 | 分區串行的CRC32校驗 |
92 | * | 保留,剩餘的字節必須是0(對於512字節LBA的硬盤即是420個字節) |
全局唯一標識分區表LBA 2–33
LBA 2–33的位置存放的是分區表項。GPT分區表使用簡單而直接的方式表示分區。一個分區表項的前16字節是分區類型GUID。例如,EFI系統分區的GUID類型是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}。接下來的16字節是該分區唯一的GUID(這個GUID指的是該分區本身,而之前的GUID指的是該分區的類型)。再接下來是分區起始和末尾的64位LBA編號,以及分區的名字和屬性。
[3]
起始字節 | 長度 | 內容 |
---|---|---|
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)。
操作系統版本 | 發行日期 | 平台 | 讀寫支持 | 啓動支持 | 備註 |
---|---|---|---|---|---|
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 |
操作系統版本 | 發行日期 | 平台 | 讀寫支持 | 啓動支持 | 備註 |
---|---|---|---|---|---|
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
全局唯一標識分區表Linux
全局唯一標識分區表分區類型GUID
操作系統 | 分區類型 | GUID |
---|---|---|
無 | 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 | |
Mac OS X
[4]
| 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 | |
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 | |
數據分區 | 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為小端格式。
- 參考資料
-
- 1. Make the most of large drives with GPT and Linux .IBM developerWorks[引用日期2014-03-30]
- 2. Troubleshooting GPT Protective Partition Issues .Seagate[引用日期2014-03-30]
- 3. NTFS information: Hard Disk Drive Basics .NTFS.com[引用日期2014-03-30]
- 4. Technical Note TN2166: Secrets of the GPT .Apple Developer[引用日期2014-03-30]
- 5. Disk Format .The Chromium Projects[引用日期2014-03-30]