標籤:windows windows分區表 gpt分區表
前一篇 Windows磁碟MBR結構詳解 中我們介紹了Basic Disk中的Master Boot Record結構。GPT Disk作為Windows 2003以後引入的分區結構。使用了GUID分區表結構,它與MBR相比好處是支援更大和更多的分區,提高容錯。本文介紹了GUID分區表的結構和各個欄位的含義。
GPT Disk 的Protective MBR:
GPT Disk的結構中,第一個LBA位置(LBA 0)存放的是Protective MBR,隨後LBA1的位置才是GPT的GUID分區表頭。Protective MBR的作用是為了相容性考慮,阻止一些遺留的MBR磁碟工具破壞GUID分區表。這種在LBA 0的位置存放Protective MBR的結構是基於Extensible Firmware Interface(EFI)規格。Protective MBR和MBR擁有同樣的結構,同時還包括一條包含值為0xEE的System ID的分區記錄(如所示),這個值標註了該分區為GPT分區,如果包含該分區的磁碟被移動到Windows 2000中或者被一些遺留的磁碟工具訪問,則該分區會被標註晨GPT Protective分區,不能被刪除。
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M02/90/6F/wKioL1jwer-CWPCdAACdwOH4PvA060.jpg-wh_500x0-wm_3-wmp_4-s_2952044552.jpg" title="Protective MBR" alt="wKioL1jwer-CWPCdAACdwOH4PvA060.jpg-wh_50" />
Globally Unique Identifier Partition Table(GUID)結構:
如所示,組成GPT Disk的GUID記錄有以下幾種:
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M00/90/6E/wKioL1jweYPCAoeeAACokmIK0Po530.jpg-wh_500x0-wm_3-wmp_4-s_500130103.jpg" title="GPT" alt="wKioL1jweYPCAoeeAACokmIK0Po530.jpg-wh_50" />
GUID Partition Table Header: GPT Header定義了分區記錄所用到的Logical Block Address的地區。同時還定義了分區在磁碟上的位置、它自身的GUID、以及一組CRC32的校正值。Primary GPT Header位於磁碟的LBA1位置,緊跟著Protective MBR。Backup GPT Header位於磁碟最後一個磁軌之上。是GPT Header中包含幾個欄位:
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/90/6F/wKioL1jwfKPRwvbcAAB9Z71ttig789.jpg-wh_500x0-wm_3-wmp_4-s_3795729481.jpg" title="GUID Partition Table Header" alt="wKioL1jwfKPRwvbcAAB9Z71ttig789.jpg-wh_50" />
首位0x00是為長度8個位元組的簽名檔,這個值必須為固定值,用來定義EFI的相容性。
0x08開始有四組長度為4個位元組的欄位,Revision標註EFI規格的版本資訊、Header Size記錄了整個GPT Head的大小,也為固定值、CRC32的校正資訊、Reserved預留位。
隨後0x18開始是5個長度為8個位元組的欄位和一個長度為16位元組欄位,Primary LBA記錄了Primary GPT Head的位置、Backup LBA記錄Backup GPT Header的位置、First Usable LBA記錄了第一個分區的起始位置,例如64位的Windows Server 2003,它的起始位置是34、Last Usable LBA記錄的分區結束的位置。Disk GUID長度為16個位元組,用來標識分區表頭和磁碟、 Partition Entry LBA記錄GUID分區記錄的位置,固定為LBA2。
從0x50開始為3個長度為4位元組的記錄,Number of Partition Entries記錄最大的磁碟分割數,例如64位的Windows Server是128個、Size of Partition Entry記錄了每個GUID分區記錄大小,它的值為128位元組、Partition Entry Array CRC32記錄一組分區記錄的校正值。
最後從0x5C位置開始長度為420位元組的預留空間,值都為0。
GUID Partition Entry Array:類似MBR中的分區表,GUID partition entry array中包含了磁碟上每個分區的記錄。比如64位的Windows Server 2003建立了一個Array值為16384位元組,則第一個可用的資料大於等於LBA34. GUID Partition Entry Array也在分區最後存在一個副本,位置是在最後一個可用的LBA之後,GUID Partition table header之前。
GUID Partition Entry: GUID Partition Entry長度為128個位元組,用來定義單個分區結構。每個GUID Partition entry從Partition Type記錄開始。長度為16個位元組的Partition Type GUID,類似MBR磁碟分割表中的System ID,它定義了分區中包含的資料和分區的作用。中是一個典型的GPT Disk的GUID Partition entry array記錄,這個圖中顯示了三種分區記錄
第一部分{45464920-5041-5254-0000-01005C000000}為EFI System分區、中間部分{16E3C9E3–5C0B–B84D–817D–F92DF00215AE}為Microsoft Reserved分區,最下面的一個{A2A0D0EB–E5B9–3344–87C0–68B6B72699C7}是Windows Basic Disk中的一個主要磁碟分割。
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/90/70/wKioL1jwfvfgjy_oAAC_R0kGxyk828.jpg-wh_500x0-wm_3-wmp_4-s_2891264861.jpg" title="EFI System分區" alt="wKioL1jwfvfgjy_oAAC_R0kGxyk828.jpg-wh_50" />
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/90/70/wKioL1jwfxLDbMtgAAEYRZwhpEs419.jpg-wh_500x0-wm_3-wmp_4-s_3929997921.jpg" title="Reserved and master.jpg" alt="wKioL1jwfxLDbMtgAAEYRZwhpEs419.jpg-wh_50" />
在每個部分的中間位置主要記錄了一些欄位。Partition Type GUID之後的0x10位置開始,是一個長度為16位元組的Unique Partition GUID記錄用來標識每條記錄的唯一性。0x20開始為3個長度為8個位元組的欄位,Starting LBA和Ending LBA分別記錄了分區的起始和結束的位置、Attribute Bit描述了分區是如何使用的,例如是否為隱藏和唯讀等等、最後0x38開始的72個位元組欄位用來Unicode的分區的名字,名字最長為36個字元。
本文出自 “劉洪亮的部落格” 部落格,請務必保留此出處http://liuhongliang.blog.51cto.com/2895201/1916036
Windows GPT磁碟GUID結構詳解