RHEL7.Xシリーズおよび周辺Linuxリリースでは、MBRとGPTの選択について考え、アドバイス


一.引用する
ストレージの選択、計画、管理などの作業は、日常的なシステムのメンテナンス作業の重点となっています.MBRとGPTの2種類のパーティションテーブルの選択と使用は、ディスク管理においてアプリケーションシーンに基づいて注意または考慮する必要があるポイントです.筆者の長年の運営と維持の仕事の経験を結びつけて、これらの問題に対するいくつかの思考を引き起こして、この文によっていくつか分かち合います.
二.関連知識点
2.1 MBR
マスタブートレコード(Master Boot Record、略称:MBR)は、マスタブートセクタとも呼ばれ、コンピュータの電源を入れた後にハードディスクにアクセスする際に読み取らなければならない最初のセクタであり、ハードディスク上の3次元アドレス(柱面、磁気ヘッド、セクタ)=(0,0,1)である.マスターブートセクタの内部構造を深く議論する際には、その先頭の446バイトの内容を、特に「マスターブートレコード」(MBR)とし、その次に4つの16バイトの「ディスクパーティションテーブル」(DPT)、および2バイトの終了フラグ(55 AA)とすることもある.したがって、「マスターブートレコード」(MBR)という用語を使用する場合、マスターブートセクタ全体を指すのか、マスターブートセクタの最初の446バイトを指すのかを具体的に判断する必要がある.
メインブートセクタは、ハードディスク自体に関する情報およびハードディスクの各パーティションのサイズおよび位置情報を記録し、データ情報の重要なエントリである.破壊されると、ハードディスク(HDD)の基本的なデータ構造情報が失われ、データ構造情報の再構築を煩雑な方法で試みる必要があります.プライマリ・ブート・セクタ内の情報は、いずれかのオペレーティング・システム・ベースのパーティション・ツール・ソフトウェアによって書き込むことができますが、特定のオペレーティング・システムとは特定の関係はありません.すなわち、有効なプライマリ・ブート・レコードを作成すれば、いずれかのオペレーティング・システムをブートすることができます(オペレーティング・システムは、高度にフォーマットされたハード・ディスク・パーティションの上に作成され、一定のファイル・システムに関連付けられています).
ハードディスク(HDD)では、1セクタのバイト数は128です.×2n(n=0,1,2,3).多くの場合、n=2、すなわち、1セクタのサイズは512バイトである.
2.2 GPT
グローバルユニーク識別パーティションテーブル(GUID Partition Table、略称:GPT)は、ソリッドハードディスク(HDD)のパーティションテーブルの構造レイアウトの標準です.これは、拡張可能なファームウェアインターフェース(EFI)規格(パーソナルコンピュータの代わりにIntelによって使用されるBIOS)の一部であり、論理ブロックアドレスおよびサイズ情報を格納するためにBIOSシステムの32 bitsの代わりに使用されるプライマリブートレコード(MBR)パーティションテーブルである.セクタが512バイトのディスクの場合、MBRパーティションテーブルは2.2 TBより大きい容量をサポートしません(2.2×1012バイト)のパーティション化であるが、一部のハードディスクメーカー(例えば、ヒッシェやウエスタン・データ)はこの限界に気づき、容量の大きいディスクを4 KBのセクタにアップグレードし、MBRの有効容量の上限を16 TiBに引き上げることを意味する.この「正しい」ソリューションは、ディスク割り当てテーブルの改善に対する人々のニーズを一時的に低減するとともに、大きなブロックを持つデバイス上でBIOSから起動する際に、ディスクパーティションをどのように最適に区分するかについて市場に困惑をもたらす.GPTは64 bitsを論理ブロックアドレスに割り当てるので、最大パーティションサイズ264〜1セクタが可能となる.各セクタサイズ512バイトのディスクの場合、9.4 ZB(9.4)×1021バイト)または8 ZiB個512バイト(9444732965739290426880バイトまたは18446744073709551615(264-1)セクタ×512(29)バイト/セクタ).
2.3 MBRとGPTの関係
最大ボリュームが2 TB(Terabytes)で、各ディスクに最大4つのプライマリパーティション(または3つのプライマリパーティション、1つの拡張パーティション、および無制限の論理ドライブ)をサポートするMBRディスクパーティションのタイプと比較して、GPTディスクパーティションスタイルは最大128個のパーティション、1つのパーティション最大18 EB(Exabytes)をサポートします.オペレーティングシステムの制限のみを受ける(パーティションテーブル自体が一定のスペースを必要とするため、最初にハードディスクパーティションを計画した場合、パーティションテーブルに残されたスペースは最大で何個のパーティションがあるかを決定し、IA-64版Windowsの制限は最大で128個のパーティションがあり、これもEFI規格で規定されているパーティションテーブルの最小サイズである).MBRパーティションのディスクとは異なり、重要なプラットフォーム操作データは、非パーティションまたは非表示セクタではなくパーティションにあります.また、GPTパーティションディスクには、パーティションデータ構造の整合性を向上させるためのバックアップパーティションテーブルがあります.UEFIシステムでは、通常、アクティブなプライマリパーティション上のブートではなく、ESPパーティション内のEFIアプリケーションファイルを介してGPTハードディスク上のオペレーティングシステムが起動される.
RHEL 7シリーズおよび周辺リリースでは、MBRタイプのパーティションテーブルはシステムのデフォルト構成であり、GPTタイプのパーティションテーブルを使用する必要がある場合は、特殊な構成も必要である(後述).
三.じっけんプロセス
3.1 CentOS 7.5でGPTタイプでオペレーティングシステムをインストールする
デフォルトでは、CentOS 7シリーズはMBRタイプのパーティションテーブルでオペレーティングシステムをインストールしていますが、特別な設定をしないと、GUIインストールインタフェースでGPTパーティションテーブルタイプを選択できません.インストールオペレーティングシステムが選択したガイドインタフェースで、カーソルを第1行に移動し、Tabキーを押し、スペースを挿入し、inst 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の4つのツールを主に示した.lsblkは主にディスクとパーティションの状況を表示するために使用され、fdiskは比較的よく使われるパーティションツールであり、2 TB以下の容量のディスクのパーティション操作をサポートし、2 TB以上の容量のディスクを超えると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貯蔵空間の浪費をもたらすことが分かった.すなわち、1つのディスクで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 RHEL 7.Xシリーズおよび周辺リリースでは、ディスク容量が2 TB未満のシステムのインストール中に採用されるデフォルトのパーティションタイプはMBRであり、GPTを使用する場合は特殊な設定が必要である.
4.2記憶領域が2 TBより大きい記憶装置については、GPTタイプのパーティションテーブルをできるだけ使用し、記憶領域の浪費を避ける.
4.3記憶装置の使用前に、用途を明確にし、データの総量に対して全体的な把握を行う.
4.4 VMware、KVMなどの技術アーキテクチャに基づくクラウドコンピューティングプラットフォームにおいて、ディスク空間の拡張はできるだけ独立したディスク設備の形式で拡張し、元のディスク上での空間拡張という操作をできるだけ減らす.前述したように、デフォルトではRHEL 7.XのディスクパーティションタイプはMBRです.つまり、元のディスク上でスペース拡張を行うと、毎回メインパーティションを新規作成すると、最大4回しか拡張できず、後期に拡張パーティションで拡張しても計画が不注意でストレージスペースの無駄になります.この点は筆者が過去2、3年間の運営と維持の生涯の中で深く悟った.
4.5異なる規格のストレージデバイスに対して、パーティション化ツールの選択も要求される点に特に注意する必要がある.