1. 程式人生 > >對常用mbr分割槽和gpt分割槽的總結及使用(二)

對常用mbr分割槽和gpt分割槽的總結及使用(二)

GPT分割槽的簡介

一個小疑惑

mbr格式的分割槽表支援的最大分割槽為2 TB 。樓主曾經認為每個分割槽支援最大容量為2TB,如果把一塊8TB硬碟分為4個區每個區分2TB,不是還可以使用MBR分割槽表嗎?迷惑了一段時間才發現原來每個分割槽資訊表中包含“首扇區相對扇區號”這個資訊,同樣也是由四個位元組組成,最大表示2T,這也就意味著,如果一個分割槽的大小達到2TB,則之後的分割槽的首扇區就會記錄不了,所以mbr分割槽表型別支援硬碟的最大容量為2TB。

GPT分割槽

全域性唯一標識分割槽表(GUID Partition Table,縮寫:GPT)是一個實體磁碟的分割槽表的結構佈局的標準。它是可擴充套件韌體介面(EFI)標準(被Intel用於替代個人計算機的BIOS)的一部分,被用於替代BIOS系統中的一32bits來儲存邏輯塊地址和大小資訊的主引導記錄(MBR)分割槽表,GPT分配64bits給邏輯塊地址。
跟現代的MBR一樣,GPT使用邏輯區塊地址(LBA)取代了早期的CHS定址方式。傳統MBR資訊儲存於LBA 0,GPT頭儲存於LBA 1,接下來才是分割槽表本身。64位Windows作業系統使用16,384位元組(或32塊,一般裝置的塊大小是512位元組)作為GPT分割槽表,接下來的LBA 34是硬碟上第一個分割槽的開始。 注: LBA(Logical Block Address )邏輯區塊地址,從0開始編號。 CHS(cylinders-heads-sectors,磁柱-磁頭-扇區)定址模式,區塊必須以硬碟上某個磁柱、磁頭、扇區的硬體位置所合成的地址來指定

LBA 0

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

LBA 1

分割槽表頭(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")
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)以及硬碟的最後一個扇區。備份分割槽表頭中的資訊是關於備份分割槽表的。

LBA 2–33

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(小端格式)字元)

總結:

gpt分割槽用64位塊定址方式區別於mbr的32位定址方式,用34(LBA0-33)塊來儲存分割槽資訊,mbr使用一個扇區來儲存,一般塊大小和扇區大小都是512位元組。

對於幾個資料的解釋:

gpt分割槽理論可以處理磁碟大小:2的64次方(64位地址的定址範圍,定址單位為塊)*512位元組(塊大小)

windows中最多可以建立分割槽數量:32(儲存分割槽表項的塊LBA2-33)*512位元組(塊大小)/128位元組(分割槽表項的大小)=128

windows下分割槽的大小:256GB,有檔案系統決定,理論大小前面已給出

科技的進步就是在現有的基礎下未雨綢繆,mbr分割槽可能已經滿足絕大多數人的需求,隨著時代的發展,大資料時代的到來,mbr分割槽明顯制約了硬碟的發展,gpt分割槽無疑會成為人們更好的選擇。在我看來,技術的進步就是不斷的發燒,追求極限,制定出更好的標準來服務人類的發展。