您好,登錄后才能下訂單哦!
前一篇 Windows磁盤MBR結(jié)構(gòu)詳解 中我們介紹了Basic Disk中的Master Boot Record結(jié)構(gòu)。GPT Disk作為Windows 2003以后引入的分區(qū)結(jié)構(gòu)。使用了GUID分區(qū)表結(jié)構(gòu),它與MBR相比好處是支持更大和更多的分區(qū),提高容錯(cuò)。本文介紹了GUID分區(qū)表的結(jié)構(gòu)和各個(gè)字段的含義。
GPT Disk 的Protective MBR:
GPT Disk的結(jié)構(gòu)中,第一個(gè)LBA位置(LBA 0)存放的是Protective MBR,隨后LBA1的位置才是GPT的GUID分區(qū)表頭。Protective MBR的作用是為了兼容性考慮,阻止一些遺留的MBR磁盤工具破壞GUID分區(qū)表。這種在LBA 0的位置存放Protective MBR的結(jié)構(gòu)是基于Extensible Firmware Interface(EFI)規(guī)格。Protective MBR和MBR擁有同樣的結(jié)構(gòu),同時(shí)還包括一條包含值為0xEE的System ID的分區(qū)記錄(如下圖所示),這個(gè)值標(biāo)注了該分區(qū)為GPT分區(qū),如果包含該分區(qū)的磁盤被移動到Windows 2000中或者被一些遺留的磁盤工具訪問,則該分區(qū)會被標(biāo)注晨GPT Protective分區(qū),不能被刪除。
Globally Unique Identifier Partition Table(GUID)結(jié)構(gòu):
如下圖所示,組成GPT Disk的GUID記錄有以下幾種:
GUID Partition Table Header: GPT Header定義了分區(qū)記錄所用到的Logical Block Address的區(qū)域。同時(shí)還定義了分區(qū)在磁盤上的位置、它自身的GUID、以及一組CRC32的校驗(yàn)值。Primary GPT Header位于磁盤的LBA1位置,緊跟著Protective MBR。Backup GPT Header位于磁盤最后一個(gè)磁道之上。下圖是GPT Header中包含幾個(gè)字段:
首位0x00是為長度8個(gè)字節(jié)的簽名檔,這個(gè)值必須為固定值,用來定義EFI的兼容性。
0x08開始有四組長度為4個(gè)字節(jié)的字段,Revision標(biāo)注EFI規(guī)格的版本信息、Header Size記錄了整個(gè)GPT Head的大小,也為固定值、CRC32的校驗(yàn)信息、Reserved預(yù)留位。
隨后0x18開始是5個(gè)長度為8個(gè)字節(jié)的字段和一個(gè)長度為16字節(jié)字段,Primary LBA記錄了Primary GPT Head的位置、Backup LBA記錄Backup GPT Header的位置、First Usable LBA記錄了第一個(gè)分區(qū)的起始位置,例如64位的Windows Server 2003,它的起始位置是34、Last Usable LBA記錄的分區(qū)結(jié)束的位置。Disk GUID長度為16個(gè)字節(jié),用來標(biāo)識分區(qū)表頭和磁盤、 Partition Entry LBA記錄GUID分區(qū)記錄的位置,固定為LBA2。
從0x50開始為3個(gè)長度為4字節(jié)的記錄,Number of Partition Entries記錄最大的磁盤分區(qū)數(shù),例如64位的Windows Server是128個(gè)、Size of Partition Entry記錄了每個(gè)GUID分區(qū)記錄大小,它的值為128字節(jié)、Partition Entry Array CRC32記錄一組分區(qū)記錄的校驗(yàn)值。
最后從0x5C位置開始長度為420字節(jié)的預(yù)留空間,值都為0。
GUID Partition Entry Array:類似MBR中的分區(qū)表,GUID partition entry array中包含了磁盤上每個(gè)分區(qū)的記錄。比如64位的Windows Server 2003創(chuàng)建了一個(gè)Array值為16384字節(jié),則第一個(gè)可用的數(shù)據(jù)大于等于LBA34. GUID Partition Entry Array也在分區(qū)最后存在一個(gè)副本,位置是在最后一個(gè)可用的LBA之后,GUID Partition table header之前。
GUID Partition Entry: GUID Partition Entry長度為128個(gè)字節(jié),用來定義單個(gè)分區(qū)結(jié)構(gòu)。每個(gè)GUID Partition entry從Partition Type記錄開始。長度為16個(gè)字節(jié)的Partition Type GUID,類似MBR磁盤分區(qū)表中的System ID,它定義了分區(qū)中包含的數(shù)據(jù)和分區(qū)的作用。下圖中是一個(gè)典型的GPT Disk的GUID Partition entry array記錄,這個(gè)圖中顯示了三種分區(qū)記錄
第一部分{45464920-5041-5254-0000-01005C000000}為EFI System分區(qū)、中間部分{16E3C9E3–5C0B–B84D–817D–F92DF00215AE}為Microsoft Reserved分區(qū),最下面的一個(gè){A2A0D0EB–E5B9–3344–87C0–68B6B72699C7}是Windows Basic Disk中的一個(gè)主分區(qū)。
在每個(gè)部分的中間位置主要記錄了一些字段。Partition Type GUID之后的0x10位置開始,是一個(gè)長度為16字節(jié)的Unique Partition GUID記錄用來標(biāo)識每條記錄的唯一性。0x20開始為3個(gè)長度為8個(gè)字節(jié)的字段,Starting LBA和Ending LBA分別記錄了分區(qū)的起始和結(jié)束的位置、Attribute Bit描述了分區(qū)是如何使用的,例如是否為隱藏和只讀等等、最后0x38開始的72個(gè)字節(jié)字段用來Unicode的分區(qū)的名字,名字最長為36個(gè)字符。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。