磁盘分区MBR和GPT格式详解(Linux)
一、磁盤(pán)結(jié)構(gòu)
機(jī)械硬盤(pán)主要由磁盤(pán)盤(pán)片、磁頭、主軸與傳動(dòng)軸等組成,數(shù)據(jù)存放在具有磁性物質(zhì)的磁盤(pán)盤(pán)片中。
實(shí)際運(yùn)行時(shí),主軸馬達(dá)讓碟片轉(zhuǎn)動(dòng),然后磁頭臂讓磁頭在碟片上面進(jìn)行讀寫(xiě)操作。
讀取數(shù)據(jù)時(shí)以磁頭轉(zhuǎn)圈的方式進(jìn)行,在磁片同心圓中切出一個(gè)一個(gè)的小區(qū)塊,這些小區(qū)塊就是磁盤(pán)的最小物理存儲(chǔ)單位,成為扇區(qū)(sector),同一個(gè)同心圓的扇區(qū)組合成的圓就是磁道(track)。由于磁盤(pán)里可能會(huì)有多個(gè)碟片,因此在所有碟片上面的同一個(gè)磁道可以組成 柱面(cylinder)。
外圈的圓比較大,為了合理利用這些空間,磁盤(pán)外圈圓會(huì)比內(nèi)圈有更多的扇區(qū)。所以,當(dāng)?shù)D(zhuǎn)一圈時(shí),外圈的扇區(qū)數(shù)量比較多,因此如果數(shù)據(jù)寫(xiě)入在外圈,轉(zhuǎn)一圈能夠讀寫(xiě)的數(shù)據(jù)量比內(nèi)圈多。因此數(shù)據(jù)的讀寫(xiě)會(huì)由外圈開(kāi)始向內(nèi)寫(xiě),這是默認(rèn)的方式。
原本硬盤(pán)的扇區(qū)都是設(shè)計(jì)成512B的大小,但隨著硬盤(pán)容量的增大,為了減少數(shù)據(jù)量的拆解,目前絕大多數(shù)的高容量硬盤(pán)使用了4K大小的扇區(qū)設(shè)計(jì)。
為什么要分區(qū)?
- 1.數(shù)據(jù)的安全性
每個(gè)分區(qū)的數(shù)據(jù)是分開(kāi)存儲(chǔ)的,當(dāng)要對(duì)某個(gè)分區(qū)的數(shù)據(jù)進(jìn)行整理時(shí),不會(huì)影響到其它分區(qū)。例如對(duì)安裝有Windows系統(tǒng)的C盤(pán)進(jìn)行重裝時(shí),對(duì)其它分區(qū)如D盤(pán)、E盤(pán)中的數(shù)據(jù)不會(huì)產(chǎn)生影響。 - 2.系統(tǒng)的性能
某個(gè)分區(qū)處在特定范圍的柱面范圍內(nèi),當(dāng)要在該分區(qū)內(nèi)讀取數(shù)據(jù)時(shí),只需要在其柱面范圍內(nèi)檢索,由于數(shù)據(jù)較為集中,所以讀取速度和性能較高。
主要的分區(qū)格式有早期的MBR格式和新的GPT格式。
二、分區(qū)格式
1、MBR
(1)簡(jiǎn)介
MBR分區(qū)格式中柱面是文件系統(tǒng)的最小單位,也就是分區(qū)的最小單位。
第一個(gè)扇區(qū)(舊式磁盤(pán)中為512字節(jié))中存放著啟動(dòng)引導(dǎo)程序和分區(qū)表:
- 主引導(dǎo)記錄(Master Boot Record, MBR):可以安裝啟動(dòng)引導(dǎo)程序的地方,有446字節(jié);
- 分區(qū)表(partition table):記錄整塊硬盤(pán)分區(qū)的狀態(tài),有64字節(jié)。
分區(qū)表64字節(jié)最多僅能有四組記錄區(qū),每個(gè)記錄區(qū)16字節(jié)。
如圖中有4個(gè)主分區(qū)。
總結(jié):
- 所謂的分區(qū)就是針對(duì)64字節(jié)的分區(qū)表進(jìn)行設(shè)置而已。
- 磁盤(pán)默認(rèn)的分區(qū)表僅能寫(xiě)入四組分區(qū)信息,每組記錄區(qū)記錄了該區(qū)段的起始與結(jié)束的柱面號(hào)碼。
- 這四個(gè)分區(qū)的記錄被稱為主要(Primary)分區(qū)或擴(kuò)展(Extended)分區(qū)。
- 當(dāng)系統(tǒng)要寫(xiě)入磁盤(pán)時(shí),一定會(huì)參考磁盤(pán)分區(qū)表,才能針對(duì)某個(gè)分區(qū)進(jìn)行數(shù)據(jù)的處理。
(2)擴(kuò)展分區(qū)和邏輯分區(qū):
擴(kuò)展分區(qū)的目的是使用額外的扇區(qū)來(lái)記錄分區(qū)的信息,擴(kuò)展分區(qū)本身并不能被拿來(lái)格式化。
擴(kuò)展分區(qū)可以繼續(xù)劃分出邏輯分區(qū)(logical partition)。
/dev/sda[1-4] 都是留給主分區(qū)或擴(kuò)展分區(qū)用的,所以邏輯分區(qū)的設(shè)備文件名就從 sda5 開(kāi)始。
圖中分區(qū)在Linux下的文件名是:
P1:/dev/sda1
P2:/dev/sda2
L1:/dev/sda5
L2:/dev/sda6
L3:/dev/sda7
L4:/dev/sda8
L5:/dev/sda9
總結(jié):
- 主分區(qū)和擴(kuò)展分區(qū)最多可以有4個(gè)(硬盤(pán)限制)。
- 擴(kuò)展分區(qū)最多只能有1個(gè)(操作系統(tǒng)限制)。
- 邏輯分區(qū)是由擴(kuò)展分區(qū)持續(xù)劃分出來(lái)的分區(qū)。
- 能夠被格式化后作為數(shù)據(jù)存取的分區(qū)是主分區(qū)和邏輯分區(qū),擴(kuò)展分區(qū)無(wú)法格式化。
- 邏輯分區(qū)的數(shù)量依操作系統(tǒng)而不同,在Linux中SATA硬盤(pán)已經(jīng)可以突破63個(gè)以上的分區(qū)限制。
- 一般建議將擴(kuò)展分區(qū)的柱面號(hào)碼分配到最后的柱面內(nèi)。
MBR模式簡(jiǎn)略圖:
MBR分區(qū)表結(jié)構(gòu):
| 00H | 1 | 分區(qū)狀態(tài):00–>非活動(dòng)分區(qū);80–>活動(dòng)分區(qū);其它數(shù)值沒(méi)有意義 |
| 01H | 1 | 分區(qū)起始磁頭號(hào)(HEAD),用到全部8位 |
| 02H | 2 | 分區(qū)起始扇區(qū)號(hào)(SECTOR),占據(jù)02H的位0-5;該分區(qū)的起始磁柱號(hào)(CYLINDER),占據(jù)02H的位6-7和03H的全部8位 |
| 04H | 1 | 文件系統(tǒng)標(biāo)志位 |
| 05H | 1 | 分區(qū)結(jié)束磁頭號(hào)(HEAD),用到全部8位 |
| 06H | 2 | 分區(qū)結(jié)束扇區(qū)號(hào)(SECTOR),占據(jù)06H的位0-5;該分區(qū)的結(jié)束磁柱號(hào)(CYLINDER),占據(jù)06H的位6-7和07H的全部8位 |
| 08H | 4 | 分區(qū)起始相對(duì)扇區(qū)號(hào) |
| 0CH | 4 | 分區(qū)總的扇區(qū)數(shù) |
(3)MBR分區(qū)大小限制的問(wèn)題:
分區(qū)表組最后4個(gè)字節(jié)表示分區(qū)中的扇區(qū)數(shù)量,有4*8=32位,最大值為 20+21+ … +231 = 232-1 個(gè)扇區(qū),每個(gè)扇區(qū)大小為512字節(jié),所以能表示的最大容量為 :
(232?1)?512=2199023255040bytes=2048GB=2TB(2^{32}-1) * 512= 2199023255040 \, bytes = 2048 \, GB = 2 \, TB (232?1)?512=2199023255040bytes=2048GB=2TB注意這里是用1:1024換算的,硬盤(pán)制造商使用1:1000換算,所以就會(huì)得出2.2TB的結(jié)果。
2TB是對(duì)單一分區(qū)容量的限制,如果第一個(gè)分區(qū)就占了2TB,那么其第二個(gè)分區(qū)的扇區(qū)物理地址就無(wú)法表示了,所以2TB也是對(duì)整個(gè)硬盤(pán)最大容量的限制。
詳細(xì)說(shuō)明見(jiàn)Wiki頁(yè)面:https://zh.wikipedia.org/wiki/Master_boot_record
MBR的弊端:
- 操作系統(tǒng)無(wú)法使用2.2TB以上的磁盤(pán)容量。
- MBR僅有一個(gè)區(qū)塊,被破壞后經(jīng)常無(wú)法或很難恢復(fù)。
- MBR內(nèi)的存放啟動(dòng)引導(dǎo)程序的區(qū)塊僅446字節(jié),無(wú)法存儲(chǔ)較多的程序代碼。
2、GPT
(1)簡(jiǎn)介
如今扇區(qū)大小不僅有512字節(jié)的,還有4K大小的。為了兼容所有的磁盤(pán),使用邏輯區(qū)塊地址(Logical Block Address,LBA)來(lái)處理扇區(qū)。GPT將硬盤(pán)所有區(qū)塊以LBA(默認(rèn)512字節(jié))來(lái)規(guī)劃,第一個(gè)LBA稱為L(zhǎng)BA0。
與MBR僅使用第一個(gè)512字節(jié)來(lái)記錄不同,GPT使用了34個(gè)LBA來(lái)記錄分區(qū)信息。相比于MBR中只有一個(gè)區(qū)塊記錄分區(qū)信息,GPT除了前面34個(gè)LBA記錄以外,整個(gè)磁盤(pán)的最后34個(gè)LBA也拿來(lái)做備份。
(2)LBA
-
LBA0(MBR兼容模塊)
出于兼容性考慮存儲(chǔ)了一份傳統(tǒng)MBR,用來(lái)防止不支持GPT的硬盤(pán)管理工具錯(cuò)誤識(shí)別并破壞硬盤(pán)中的數(shù)據(jù),這個(gè)MBR也叫做保護(hù)MBR。
分為兩個(gè)部分,第一個(gè)是前面446字節(jié),用來(lái)存儲(chǔ)第一階段的啟動(dòng)引導(dǎo)程序。而在原本的分區(qū)表的記錄區(qū)內(nèi),這個(gè)兼容模式僅放入了一個(gè)特殊字符來(lái)表示此磁盤(pán)為GPT格式之意。
在使用 MBR/GPT 混合分區(qū)表的硬盤(pán)中,這部分存儲(chǔ)了GPT分區(qū)表的一部分分區(qū)(通常是前四個(gè)分區(qū)),可以使不支持從GPT啟動(dòng)的操作系統(tǒng)從這個(gè)MBR啟動(dòng),啟動(dòng)后只能操作MBR分區(qū)表中的分區(qū)。 -
LBA1(GPT表頭記錄)
記錄了分區(qū)表本身的位置和大小,也記錄了備份用的GPT分區(qū)(最后34個(gè)LBA區(qū)塊)放置的位置。同時(shí)放置了分區(qū)表的校驗(yàn)碼(CRC32),操作系統(tǒng)可以根據(jù)這個(gè)校驗(yàn)碼來(lái)判斷GPT是否正確。若有錯(cuò)誤可以通過(guò)這個(gè)記錄區(qū)來(lái)獲取備份的GPT(磁盤(pán)最后面的備份區(qū)塊)來(lái)恢復(fù)正常。 -
LBA[2-33](實(shí)際記錄分區(qū)信息處)
從LBA2區(qū)塊開(kāi)始,每個(gè)LBA都可以記錄4組分區(qū)記錄,所以在默認(rèn)情況下,總共有4*32=128組分區(qū)記錄。每組記錄用到128字節(jié)的空間。
| 0 | 16字節(jié) | 分區(qū)類型GUID |
| 16 | 16字節(jié) | 分區(qū)GUID |
| 32 | 8字節(jié) | 起始LBA(小端序) |
| 40 | 8字節(jié) | 末尾LBA |
| 48 | 8字節(jié) | 屬性標(biāo)簽(如:60表示“只讀”) |
| 56 | 72字節(jié) | 分區(qū)名(可以包括36個(gè)UTF-16(小端序)字符) |
(16+16+8+8+8+72=128)
(3)GPT分區(qū)大小限制:
GPT 在每組記錄中分別提供了 8字節(jié) = 64位 來(lái)記載開(kāi)始/結(jié)束的扇區(qū)號(hào)碼。因此,理論上對(duì)于單一分區(qū)槽來(lái)說(shuō), 它的最大容量限制為 264 * 512bytes = 263 Kbytes = 233TB = 8 ZB 。但是受操作系統(tǒng)限制,一般一個(gè)分區(qū)最大限制為 18EB。
GPT 分區(qū)沒(méi)有所謂的主、擴(kuò)展、邏輯分區(qū)的概念,每個(gè)都可以視為是主分區(qū),每一個(gè)分區(qū)都可以格式化。
GPT 分區(qū)默認(rèn)可以提供多達(dá)128 組紀(jì)錄,而在Linux 本身的內(nèi)核設(shè)備記錄中,針對(duì)單一磁盤(pán)來(lái)說(shuō),雖然過(guò)去最多只能到達(dá)15 個(gè)分區(qū),不過(guò)由于Linux 內(nèi)核通過(guò)udev 等方式的處理,現(xiàn)在Linux 也已經(jīng)沒(méi)有這個(gè)限制了。
參考鏈接:1.https://en.wikipedia.org/wiki/GUID_Partition_Table
2.https://docs.microsoft.com/en-us/troubleshoot/windows-server/backup-and-storage/guid-partitioning-table-disk-faq
總結(jié)
以上是生活随笔為你收集整理的磁盘分区MBR和GPT格式详解(Linux)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 基于C语言的双人贪吃蛇游戏程序设计
- 下一篇: sony手机刷linux,索尼Z3 Z3