close

GUID磁碟分割表(GUID Partition Table,縮寫:GPT)是一個實體硬碟的分割結構。

它是可延伸韌體介面標準的一部分,用來替代BIOS中的主開機紀錄分割表。

因為MBR分割表不支援容量大於2.2TB(2.2 × 1012位元組)的分割,

所以也有一些BIOS系統為了支援大容量硬碟而用GPT分割表取代MBR分割表


GPT分割表支援最多9.4ZB(9.4 × 1021位元組)的硬碟和分割。

截止至2010年,常見作業系統對GPT的支援非常有限,見#作業系統支援。

GPT分割表的結構。此例中,每個邏輯塊(LBA)為512位元組,每個分割的記錄為128位元組。負數的LBA位址表示從最後的塊開始倒數,−1表示最後一個塊。



在MBR硬碟中,分割資訊直接儲存於主開機紀錄(MBR)中(主開機紀錄中還儲存著系統的引導程式)。但在GPT硬碟中,分割表的位置資訊儲存在GPT頭中。但出於相容性考慮,硬碟的第一個磁區仍然用作MBR,之後才是GPT頭

跟現代的MBR一樣,GPT也使用邏輯區塊位址(LBA)取代了早期的CHS定址方式。傳統MBR資訊儲存於LBA 0,GPT頭儲存於LBA 1,接下來才是分割表本身。64位元Windows作業系統使用16,384位元組(或32磁區)作為GPT分割表,接下來的LBA 34是硬碟上第一個分割的開始。

蘋果公司曾經警告說:[3]「不要假定所有裝置的塊大小都是512位元組。」一些現代的儲存裝置如固態硬碟可能使用1024位元組的塊,一些磁光碟(MO)可能使用2048位元組的磁區(但是磁光碟通常是不進行分割的)。一些硬碟生產商在計劃生產4096位元組一個磁區的硬碟,但截至2010年初,這種新硬碟使用韌體對作業系統偽裝成512位元組一個磁區。[4]

使用英特爾架構的蘋果機也使用GPT。

為了減少分割表損壞的風險,GPT在硬碟最後保存了一份分割表的副本。

傳統MBR (LBA 0)

在GPT分割表的最開頭,處於相容性考慮仍然儲存了一份傳統的MBR,用來防止不支援GPT的硬碟管理工具錯誤識別並破壞硬碟中的資料,這個MBR也叫做叫做保護MBR。在支援從GPT啟動的作業系統中,這裡也用於儲存第一階段的啟動代碼。在這個MBR中,只有一個標識為0xEE的分割,以此來表示這塊硬碟使用GPT分割表。不能識別GPT硬碟的作業系統通常會識別出一個未知型別的分割,並且拒絕對硬碟進行操作,除非使用者特別要求刪除著這分割。這就避免了意外刪除分割的危險。另外,能夠識別GPT分割表的作業系統會檢查保護MBR中的分割表,如果分割型別不是0xEE或者MBR分割表中有多個項,也會拒絕對硬碟進行操作。

在使用MBR/GPT混合分割表的硬碟中,這部分儲存了GPT分割表的一部分分割(通常是前四個分割),可以使不支援從GPT啟動的作業系統從這個MBR啟動,啟動後只能操作MBR分割表中的分割。如Boot Camp就是使用這種方式啟動Windows。

分割表頭 (LBA 1)

分割表頭定義了硬碟的可用空間以及組成分割表的項的大小和數量。在使用64位元Windows Server 2003的機器上,最多可以建立128個分割,即分割表中保留了128個項,其中每個都是128位元組。(EFI標準要求分割表最小要有16,384位元組,即128個分割項的大小)

分割表頭還記錄了這塊硬碟的GUID,記錄了分割表頭本身的位置和大小(位置總是在LBA 1)以及備份分割表頭和分割表的位置和大小(在硬碟的最後)。它還儲存著它本身和分割表的CRC32校驗。韌體、引導程式和作業系統在啟動時可以根據這個校驗值來判斷分割表是否出錯,如果出錯了,可以使用軟體從硬碟最後的備份GPT中恢復整個分割表,如果備份GPT也校驗錯誤,硬碟將不可使用。所以GPT硬碟的分割表不可以直接使用16進制編輯器修改。

分割表頭的格式
起始位元組 長度 內容
0 8位元組 簽名("EFI PART", 45 46 49 20 50 41 52 54)
8 4位元組 修訂(在1.0版中,值是 00 00 01 00)
12 4位元組 分割表頭的大小(單位是位元組,通常是92位元組,即 5C 00 00 00)
16 4位元組 分割表頭前3項(第0-15位元組)的CRC32校驗,如果值正在計算,則是 0
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)以及硬碟的最後一個磁區。備份分割表頭中的資訊是關於備份分割表的。

分割表項 (LBA 2–33)

GPT分割表使用簡單而直接的方式表示分割。一個分割表項的前16位元組是分割型別GUID。例如,EFI系統分割的GUID型別是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}。接下來的16位元組是該分割唯一的GUID(這個GUID指的是該分割本身,而之前的GUID指的是該分割的型別)。再接下來是分割起始和末尾的64位元LBA編號,以及分割的名字和屬性。

GPT分割表項的格式
起始位元組 長度 內容
0 16位元組 分割型別GUID
16 16位元組 分割GUID
32 8位元組 起始LBA(小端序
40 8位元組 末尾LBA
48 8位元組 屬性標籤(如:60表示「唯讀」)
56 72位元組 分割名(可以包括36個UTF-16(小端序)字元)
arrow
arrow
    全站熱搜

    pcman 發表在 痞客邦 留言(0) 人氣()