RHEL7.X系列及周邊發行版中,關於MBR與GPT的選擇一些思考與建議

2021-01-08 GeekDevOps

一.引言

存儲的選型、規劃與管理等工作一直以來都是日常系統運維工作中的重點。MBR與GPT兩種類型的分區表的選擇與使用則是在磁碟管理中需要根據應用場景來注或考慮的要點。結合筆者多年的運維工作經驗,引發了對這些問題的一些思考,藉此文進行一些分享。

二.相關知識點

2.1 MBR

主引導記錄(Master Boot Record,縮寫:MBR),又叫做主引導扇區,是計算機開機後訪問硬碟時所必須要讀取的首個扇區,它在硬碟上的三維地址為(柱面,磁頭,扇區)=(0,0,1)。在深入討論主引導扇區內部結構的時候,有時也將其開頭的446位元組內容特指為"主引導記錄"(MBR),其後是4個16位元組的"磁碟分區表"(DPT),以及2位元組的結束標誌(55AA)。因此,在使用"主引導記錄"(MBR)這個術語的時候,需要根據具體情況判斷其到底是指整個主引導扇區,還是主引導扇區的前446位元組。

主引導扇區記錄著硬碟本身的相關信息以及硬碟各個分區的大小及位置信息,是數據信息的重要入口。如果它受到破壞,硬碟上的基本數據結構信息將會丟失,需要用繁瑣的方式試探性的重建數據結構信息後才可能重新訪問原先的數據。主引導扇區內的信息可以通過任何一種基於某種作業系統的分區工具軟體寫入,但和某種作業系統沒有特定的關係,即只要創建了有效的主引導記錄就可以引導任意一種作業系統(作業系統是創建在高級格式化的硬碟分區之上,是和一定的文件系統相聯繫的)。

對於硬碟而言,一個扇區可能的字節數為128×2n(n=0,1,2,3)。大多情況下,取n=2,即一個扇區(sector)的大小為512位元組。

2.2 GPT

全局唯一標識分區表(GUID Partition Table,縮寫:GPT)是一個實體硬碟的分區表的結構布局的標準。它是可擴展固件接口(EFI)標準(被Intel用於替代個人計算機的BIOS)的一部分,被用於替代BIOS系統中的一32bits來存儲邏輯塊地址和大小信息的主引導記錄(MBR)分區表。對於那些扇區為512位元組的磁碟,MBR分區表不支持容量大於2.2TB(2.2×1012位元組)的分區,然而,一些硬碟製造商(諸如希捷和威騰電子)注意到這個局限性,並且將他們的容量較大的磁碟升級到4KB的扇區,這意味著MBR的有效容量上限提升到16 TiB。 這個看似"正確的"解決方案,在臨時地降低人們對改進磁碟分配表的需求的同時,也給市場帶來關於在有較大的塊(block)的設備上從BIOS啟動時,如何最佳的劃分磁碟分區的困惑。GPT分配64bits給邏輯塊地址,因而使得最大分區大小在264-1個扇區成為可能。對於每個扇區大小為512位元組的磁碟,那意味著可以有9.4ZB(9.4×1021位元組)或8 ZiB個512位元組(9,444,732,965,739,290,426,880位元組或18,446,744,073,709,551,615(264-1)個扇區×512(29)字節每扇區)。

2.3 MBR與GPT的關係

與支持最大卷為2TB(Terabytes)並且每個磁碟最多有4個主分區(或3個主分區,1個擴展分區和無限制的邏輯驅動器)的MBR磁碟分區的類型相比,GPT磁碟分區樣式支持最大為128個分區,一個分區最大18EB(Exabytes),只受到作業系統限制(由於分區表本身需要佔用一定空間,最初規劃硬碟分區時,留給分區表的空間決定了最多可以有多少個分區,IA-64版Windows限制最多有128個分區,這也是EFI標準規定的分區表的最小尺寸)。與MBR分區的磁碟不同,至關重要的平臺操作數據位於分區,而不是位於非分區或隱藏扇區。另外,GPT分區磁碟有備份分區表來提高分區數據結構的完整性。在UEFI系統上,通常是通過ESP分區中的EFI應用程式文件啟動GPT硬碟上的作業系統,而不是活動主分區上的引導程序。

在RHEL7系列及周邊發行版中,MBR類型的分區表是系統預設配置,如需使用GPT類型的分區表,還需要進行特殊配置(下文會進行介紹)。

三.實驗過程

3.1 在CentOS7.5中以GPT類型安裝作業系統

默認情況下,CentOS7系列是以MBR類型的分區表來安裝作業系統的,如果不通過特殊設置,那麼在GUI安裝界面無法選擇GPT分區表類型的。在安裝作業系統選擇的引導界面,講光標移到第一行,按下Tab鍵,插入一個空格,輸入inst gpt,按下回車鍵,繼續引導,即可將作業系統安裝到分區表類型為GPT的分區下。具體如下圖:

GPT

其他安裝、操作過程,大同小異。

3.2 查看、磁碟或分區的常用工具

[root@gpt ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

fd0 2:0 1 4K 0 disk

sda 8:0 0 10G 0 disk

├─sda1 8:1 0 1M 0 part

├─sda2 8:2 0 1G 0 part /boot

└─sda3 8:3 0 9G 0 part

├─centos_gpt-root 253:0 0 8G 0 lvm /

└─centos_gpt-swap 253:1 0 1G 0 lvm [SWAP]

sr0 11:0 1 1024M 0 rom

[root@gpt ~]# fdisk -l /dev/sda

WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

磁碟 /dev/sda:10.7 GB, 10737418240 字節,20971520 個扇區

Units = 扇區 of 1 * 512 = 512 bytes

扇區大小(邏輯/物理):512 字節 / 4096 字節

I/O 大小(最小/最佳):4096 字節 / 4096 字節

磁碟標籤類型:gpt

Disk identifier: 3B24C802-3FC5-4D42-9D76-F9D7250B310B

# Start End Size Type Name

1 2048 4095 1M BIOS boot

2 4096 2101247 1G Microsoft basic

3 2101248 20969471 9G Linux LVM

[root@gpt ~]# parted /dev/sda print

Model: Msft Virtual Disk (scsi)

Disk /dev/sda: 10.7GB

Sector size (logical/physical): 512B/4096B

Partition Table: gpt

Disk Flags: pmbr_boot

Number Start End Size File system Name 標誌

1 1049kB 2097kB 1049kB bios_grub

2 2097kB 1076MB 1074MB xfs

3 1076MB 10.7GB 9661MB lvm

[root@gpt ~]# cfdisk /dev/sda

cfdisk (util-linux 2.23.2)

磁碟驅動器:/dev/sda

大小:10737418240 字節,10.7 GB

磁頭數:255 每磁軌扇區數:63 柱面數:1305

名稱 標誌 分區類型 文件系統 [標籤] 大小 (MB)

---

sda1 啟動,不可用 主分區 GPT 10737.42 *

以上內容主要展示了lsblk、fdisk、parted、cfdisk等四款工具。lsblk主要用於查看磁碟及分區情況,fdisk為較為常用的分區工具,支持2TB以下容量的磁碟的分區操作,如果超過2TB以上容量的磁碟,則需要使用parted來進行分區,cfdisk則是一款比較容易上手的分區工具。這些工具在之前的文章中有介紹,可以查閱之前文章。

3.3 MBR類型的分區表使用心得

[root@mbr ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

fd0 2:0 1 4K 0 disk

sda 8:0 0 10G 0 disk

├─sda1 8:1 0 1G 0 part /boot

└─sda2 8:2 0 9G 0 part

├─centos-root 253:0 0 8G 0 lvm /

└─centos-swap 253:1 0 1G 0 lvm [SWAP]

sdb 8:16 0 1G 0 disk

sdc 8:32 0 1G 0 disk

sdd 8:48 0 1G 0 disk

sde 8:64 0 1G 0 disk

sr0 11:0 1 1024M 0 rom

[root@gpt ~]# fdisk -l /dev/sdb

WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

設備 Boot Start End Blocks Id System

/dev/sdb1 2048 501759 249856 83 Linux

/dev/sdb2 501760 706559 102400 83 Linux

/dev/sdb3 706560 911359 102400 83 Linux

/dev/sdb4 911360 1105919 97280 83 Linux

命令(輸入 m 獲取幫助):n

If you want to create more than four partitions, you must replace a

primary partition with an extended partition first.

命令(輸入 m 獲取幫助):w

The partition table has been altered!

Calling ioctl() to re-read partition table.

正在同步磁碟。

[root@mbr ~]# partprobe

[root@mbr ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

fd0 2:0 1 4K 0 disk

sda 8:0 0 10G 0 disk

├─sda1 8:1 0 1G 0 part /boot

└─sda2 8:2 0 9G 0 part

├─centos-root 253:0 0 8G 0 lvm /

└─centos-swap 253:1 0 1G 0 lvm [SWAP]

sdb 8:16 0 1G 0 disk

├─sdb1 8:17 0 244M 0 part

├─sdb2 8:18 0 100M 0 part

├─sdb3 8:19 0 100M 0 part

└─sdb4 8:20 0 95M 0 part

sdc 8:32 0 1G 0 disk

sdd 8:48 0 1G 0 disk

sde 8:64 0 1G 0 disk

sr0 11:0 1 1024M 0 rom

從上面的實驗,我們可以看出,MBR類型的分區表在使用過程中會造成h 儲空間的浪費。也就是說,一塊磁碟,創建了4個主分區,如果4個主分區的空間使用總和小於磁碟實際可用空間,那麼就無法再繼續進行分區操作,因此是無法充分利用這些磁碟空間的。

刪除這些分區後,從該磁碟第4個分區開始,系統默認使用擴展分區,通過擴展分區新建分區,存儲空間浪費的情況同樣存在。

[root@mbr ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

fd0 2:0 1 4K 0 disk

sda 8:0 0 10G 0 disk

├─sda1 8:1 0 1G 0 part /boot

└─sda2 8:2 0 9G 0 part

├─centos-root 253:0 0 8G 0 lvm /

└─centos-swap 253:1 0 1G 0 lvm [SWAP]

sdb 8:16 0 1G 0 disk

├─sdb1 8:17 0 100M 0 part

├─sdb2 8:18 0 100M 0 part

├─sdb3 8:19 0 100M 0 part

├─sdb4 8:20 0 1K 0 part

├─sdb5 8:21 0 10M 0 part

├─sdb6 8:22 0 10M 0 part

└─sdb7 8:23 0 77M 0 part

sdc 8:32 0 1G 0 disk

sdd 8:48 0 1G 0 disk

sde 8:64 0 1G 0 disk

sr0 11:0 1 1024M 0 rom

下面依然使用fdisk對磁碟sdb進行分區,但是把磁碟的分區表類型改成了GPT,部分結果如下:

[root@gpt ~]# fdisk -l /dev/sdb

命令(輸入 m 獲取幫助):g

Building a new GPT disklabel (GUID: 757B3774-B7F0-4650-80B1-EAA13E59C602)

將顯示/記錄單位更改為盲區。

命令(輸入 m 獲取幫助):n

分區號 (1-128,默認 1):

第一個扇區 (2048-2097118,默認 2048):

Last sector, +sectors or +size{K,M,G,T,P} (2048-2097118,默認 2097118):+100M

已創建分區 1

命令(輸入 m 獲取幫助):p

磁碟 /dev/sdb:1073 MB, 1073741824 字節,2097152 個扇區

Units = 扇區 of 1 * 512 = 512 bytes

扇區大小(邏輯/物理):512 字節 / 4096 字節

I/O 大小(最小/最佳):4096 字節 / 4096 字節

磁碟標籤類型:gpt

Disk identifier: 757B3774-B7F0-4650-80B1-EAA13E59C602

# Start End Size Type Name

1 2048 206847 100M Linux filesyste

[root@mbr ~]# partprobe

[root@mbr ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

fd0 2:0 1 4K 0 disk

sda 8:0 0 10G 0 disk

├─sda1 8:1 0 1G 0 part /boot

└─sda2 8:2 0 9G 0 part

├─centos-root 253:0 0 8G 0 lvm /

└─centos-swap 253:1 0 1G 0 lvm [SWAP]

sdb 8:16 0 1G 0 disk

├─sdb1 8:17 0 100M 0 part

├─sdb2 8:18 0 100M 0 part

├─sdb3 8:19 0 100M 0 part

├─sdb4 8:20 0 100M 0 part

├─sdb5 8:21 0 100M 0 part

├─sdb6 8:22 0 100M 0 part

└─sdb7 8:23 0 423M 0 part

sdc 8:32 0 1G 0 disk

sdd 8:48 0 1G 0 disk

sde 8:64 0 1G 0 disk

sr0 11:0 1 1024M 0 rom

從操作過程中,我們可用看到,分區號1-128,與前文所述一致。磁碟分區之後可用空間與實際空間差距不大,存儲空間浪費較小。

四.總結

4.1 在RHEL7.X系列及周邊發行版中,在磁碟空間小於2TB的系統安裝過程中採用的默認的分區類型是MBR,如需使用GPT還需特殊設置。

4.2 對於存儲空間大於2TB的存儲設備,儘量在使用GPT類型的分區表,避免造成存儲空間的浪費。

4.3 在存儲設備的使用之前,要明確用途,對數據的總量有一個總體性的把握。

4.4 在基於VMware、KVM等技術架構的雲計算平臺中,磁碟空間的擴展儘量以獨立磁碟設備的形式進行擴展,儘量減少在原磁碟上進行空間擴展這一類操作。因為在前文已經提及,默認情況下RHEL7.X的磁碟分區類型為MBR。也就是說,在原磁碟上進行空間擴展的話,每次都新建主分區,那麼最多只能擴展4次,即使後期以擴展分區進行擴展,規劃不慎,也是會造成存儲空間的浪費。這一點筆者在過去兩三年的運維生涯中深有感悟。

4.5 針對不同規格的存儲設備,分區工具的選擇也是有要求的,這一點需要特別注意。

本文同步更新於本人同名GitHub及CSDN,敬請關注。

相關焦點

  • mbr無損轉gpt圖文詳解
    電腦硬碟如何執行mbr無損轉gpt格式,MBR、GPT是硬碟系統的主引導記錄表。那麼對於新手用戶來說要怎麼給硬碟mbr無損轉gpt格式呢?接下來,小編就給大家詳細介紹一下mbr無損轉gpt的操作方法。mbr無損轉gpt圖文詳解:準備工具分區助手操作流程1,打開分區助手,選擇硬碟然後點擊左上方的「硬碟」按鈕。
  • 硬碟分區那點事兒(MBR和GPT)
    如果你安裝了Windows,其啟動信息就放在這一段代碼中——如果MBR的信息損壞或誤刪就不能正常啟動Windows,這時候你就需要找一個引導修復軟體工具來修復它就可以了。Linux系統中MBR通常會是GRUB加載器。
  • WIN系統格式的差異-MBR、GPT
    如果你安裝了Windows,其啟動信息就放在這一段代碼中——如果MBR的信息損壞或誤刪就不能正常啟動Windows,這時候你就需要找一個引導修復軟體工具來修復它就可以了。Linux系統中MBR通常會是GRUB加載器。MBR。當一臺電腦啟動時,它會先啟動主板自帶的BIOS系統,bios加載MBR,MBR再啟動Windows,這就是mbr的啟動過程。
  • 硬碟GPT分區格式和MBR分區格式詳解
    因為兼容問題,gpt其實在引導的最開始部分也有一段mbr引導,也叫做「保護引導」,為了防止設備不支持uefi。mbr最多支持2T,gpt格式最大支持18EB的大容量。1EB=1024PB,1PB=1024 TB,所以,gpt理論上是無限制的。MBR的意思是「主引導記錄」,GPT意思為GUID分區表,即「全局唯一標識磁碟分區表」。
  • MBR和GPT分區最大支持多大容量?硬碟分區mbr和gpt格式區別
    和gpt分區最大支持多大容量?下面裝機之家分享一下硬碟分區mbr和gpt格式區別。mbr和gpt分區最大支持多大容量?硬碟分區mbr和gpt格式區別MBR格式分區方案1、主分區數量不能超過4個;2、分區大小無法超過2TB容量;3、支持安裝所有的Windows作業系統;GPT格式分區方案
  • 硬碟GPT分區格式會取代MBR分區格式嗎?
    因為兼容問題,gpt其實在引導的最開始部分也有一段mbr引導,也叫做「保護引導」,為了防止設備不支持uefi。mbr最多支持2T,gpt格式最大支持18EB的大容量。1EB=1024PB,1PB=1024 TB,所以,gpt理論上是無限制的。MBR的意思是「主引導記錄」,GPT意思為GUID分區表,即「全局唯一標識磁碟分區表」。
  • 紅帽RHEL7.9 正式發布,rhel7.x的最後一個版本
    可以說RHEL 7是有史以來最重要的企業Linux版本,但是所有美好的事物都必須結束。現在,隨著RHEL 7.9的發布,RHEL 7.x故事的結尾已迫在眉睫。 距上次版本發布過去僅僅過去6個月,紅帽終於完成了7.x最後一個版本7.9。後續應該主推8.0版本。
  • 開啟UEFI與MBR轉GPT
    ③在這裡,我們不輸入任何密鑰,選擇「我沒有產品密鑰」(win10零售版產品有此選項,7/8/8.1零售版windows無跳過選項,可通過修改或添加ISO文件sources文件夾中EI.CFG達到跳過輸入安裝密鑰部分
  • 用Win10自帶的MBR2GPT無損轉換GPT磁碟分區形式
    在Windows10更新到Build 1703創意者更新版之後,微軟引入了新的MBR2GPT磁碟分區轉換工具,可以把傳統的MBR磁碟分區無損轉換為GPT磁碟分區,不要太給力了有木有!下面MS酋長就來分享一下如何使用MBR2GPT把MBR磁碟無損轉換為GPT磁碟。
  • MBR與GTP分區的區別,哪種更適合自己
    最開始是為了更好的兼容性,後來因為其更大的支持內存(mbr分區最多支持2T的磁碟),更多的兼容而被廣泛使用,特別是蘋果的MAC系統全部使用gpt分區。gtp不在有分區的概念,所有CDEF盤都在一段信息中存儲。可以簡單的理解為更先進但是使用不夠廣泛的技術。
  • 紅帽RHEL7.9正式發布(7.x最後一個版本)
    距上次版本發布過去僅僅過去6個月,紅帽終於完成了7.x最後一個版本7.9。後續應該主推8.0版本。2014年,Red Hat Enterprise Linux(以下皆稱為RHEL)7.0發布了。紅帽7.0的發布成為有史以來最具影響力的商業Linux發行版之一。
  • 安裝系統分區時MBR與GPT的區別及互相轉換的方法
    它用來替代BIOS中的主引導記錄分區表(MBR)。5、能在所有基於 x64 平臺上用作存儲卷,包括運行 Windows XP Professional x64 Edition 的平臺。從 Windows Server 2003 SP1 開始,GPT 磁碟也可用作基於 x86 的Windows 平臺上的存儲卷。
  • 一鍵實現硬碟MBR轉GPT,數據無損、無需重裝系統
    利用WIN10自帶的mbr2gpt程序命令(如果你的WIN10不是2017年以前的版本,那麼應該在系統裡就內置了mbr2gpt程序),編寫一個「一鍵無損MBR轉GPT的BAT」。新建TXT文檔,輸入以上內容,disk後為目標硬碟號。第一項Validate:是驗證是否可以轉換。第二項Convert:是轉換。
  • Windows 10如何將MBR磁碟轉換為GPT
    檢查磁碟分區類型 1.使用 Windows + X 快捷鍵盤再按 K 鍵打開「磁碟管理」 2.右擊 Windows 10 安裝分區再選擇「屬性」 3.在「硬體」選項卡中點擊「屬性」——點擊「卷」選項卡之後點擊「寫入」 如果磁碟分區形式顯示為主引導記錄(MBR)則需要轉換。
  • Elementary OS - 號稱最漂亮的 Linux 發行版
    Elementary OS 是一個開源、尊重隱私的 Linux 發行版,它跟 Pearl OS 一樣,也基於 Ubuntu,有趣的是也以美觀著稱,關於 Pearl OS 請查看我之前發的文章。ubuntu bionic,現在,我們看下正面照:Elementary OS - 桌面沒錯,這就是 Elementary OS 正面照,有很 MAC 神韻,簡潔而又不失大氣,說起簡潔,我們有必要看下Elementary OS 的應用啟動器,它會刷新你的三觀:Elementary OS - 應用啟動器沒錯,就這麼點應用,屈指可數,在眾多 Linux 發行版裡
  • UEFI+GPT磁碟windows 7系統激活工具v0.9——墨澀網
    一款win7激活工具GPT磁碟windows7激活工具,這是一款非mbr引導的分區永久激活工具,這款軟體軟體可以專門在UEFI+GPT磁碟上成功激活32位和64位的win7系統
  • gpt分區無法安裝win10的原因是什麼
    解決方法有兩種:進入BIOS設置UEFI啟動;將gpt分區改為MBR分區  一、如果你的電腦是新購買的,建議還是進入BIOS設置UEFI啟動,畢竟UEFI是一種更快捷快速的電腦啟動配置  1、重啟電腦,然後不停的點擊BIOS啟動熱鍵,不同的電腦品牌啟動熱鍵不一,大部分按F2,ESC,del鍵,一般在開機界面品牌logo的界面下也可以看到
  • oeasy教您玩轉linux010102查看發行版
    uname -a 從中,咱們知道有ubuntu,他好像是一種發行版.發行版(distro)的英文原文是distribution,是內核和應用程式的集合.一個典型的Linux發行版包括:Linux內核,一些GNU程序庫和工具,命令行shell,也會包含圖形界面.都有哪些發行版呢?
  • 如何查看硬碟使用GPT還是MBR,並進行轉換?
    為了查看你的硬碟用的是哪種分區方案,你有兩個選擇:你可以用Windows自帶的有圖形界面的」磁碟管理「工具,或者使用命令行。◇選擇一:利用「磁碟管理」工具按下「Win+R」打開運行菜單,在輸入框中輸入「diskmgmt.msc」,然後按下「Enter」,就會打開磁碟管理工具了。
  • 如何在Linux發行版中安裝並啟用Hyper-V集成服務
    LIS的安裝與啟用對Linux發行版有著多項要求。2. 某些Linux發行版自身已經安裝有LIS。對於這些發行版,大家只需要啟用即可在Hyper-V中發揮其全部功能特性。在已經安裝了LIS驅動程序與服務的Linux發行版中啟用集成服務請大家通過以下步驟在已經安裝有LIS驅動程序與服務的Linux發行版中將其啟用。