サーバアーキテクチャ

【図解】分かりやすいMBRとGPTの仕組みと違い,OSからの確認方法

MBR と GPT の概要と違い、比較

汎用コンピュータを電源 ON にするとマザーボードの SPI flash に格納された BIOS がメモリに展開され、そこを起点に OS まで起動されますが、BIOS には古くからある Legacy BIOSUEFI の 2 種類があります。

Legacy BIOS の時代においては、HDD/SSD の先頭セクタに MBR (Master Boot Record) と呼ばれる 512 Bytes の特殊な領域があり、ここに「ディスクのパーティション情報」や「ブートストラップ (一次ブートローダー)」が格納されていました。

ですが MBR では 2TiB (≒ 2.2 TB) 以上のパーティションが読み込めない等の制約があり、各種課題をクリアするために GPT (GUID Partition Table) という方式が作られました。

GPT は一般に Legacy BIOS からは読み込めません。

MBR や GPT は一般に OS インストール時に作成されます。インストール CD を UEFI で起動していれば GPT 形式でインストールされ、Legacy BIOS で起動していれば MBR 形式でインストールされます。

MBR と GPT のレイアウトの比較を以下に示します。

GPT は先頭 512 Bytes は MBR との互換性を保っています。この 512 Bytes の領域を Protective MBR と呼びます。UEFI が GPT を読み込み起動する場合は Protective MBR は無視されます。Master Boot Code のところは下位互換 (Legacy Boot) のためのブートストラップを仕込んでも構いませんが、GPT でのブート前提なら無視されるので 0 bit 列でも構いません。

UEFI が GPT を読み込むと、パーティション情報を把握します。また、UEFI は汎用的なドライバが含まれているため、USB 等のデバイスも認識します。

UEFI は各デバイス (パーティションを含む場合は各パーティションも) の中から自身の優先順位 (Disk が優先か、USB が優先か、等) に従って中身を確認し、それが ESP (EFI System Partition) と呼ばれる領域であれば、その中に含まれるブートローダーを起動します。そのブートローダーは一般には Windows Boot Manager や grub 等です。

一方、Legacy BIOS や UEFI が MBR を読み込むと、MBR に含まれる 1 次ブートローダー (ブートストラップ) が起動し、起動可能パーティションの先頭セクタに含まれる 2 次ブートローダー (Windows Boot Manager や grub) を起動します。

MBR と GPT の特徴の比較を以下に示します。MBR は 1 次ブートローダーを含むのに対し、GPT はパーティションテーブルのみを含んでいます。

MBRGPT
サイズ512 Bytes16.5 KiB ~ (1 MiB の傾向)
サポートする
パーティションサイズ
2 TiBまで8 ZiBまで
サポートする
パーティション数
4つ (拡張パーティションで追加可)制限なし
含まれる情報1次ブートローダ
(ブートストラップ),
MBRパーティションテーブル
GPTパーティションテーブル
Legacy BIOS/UEFI
に読み込まれた後
の処理
MBR 内の 1次ブートローダ起動
⇒PBR を起動しさらに
grub や Windows Boot Manager
等の2次ブートローダ起動
⇒OS起動
※Legacy BIOS は読込不可
GPT 外の ESP (EFI System
Partition: /boot/efi 等) に含ま
れる grub や Windows Boot
Manager 等のブートローダ起動
⇒OS起動
位置指定方式
(ブロックアドレス)
CHS (物理アドレス)LBA (論理アドレス)

GPT が強く求められるシーンとしては、搭載するディスクやボリュームの「パーティションサイズ」が 2 TiB (≒ 2.2 TB) 以上であることでしょう。最近のディスクの大容量化に伴い、MBR では対応できないようなケースがしばしば見られるようになりました。

MBR か GPT かの確認方法

Windowsの場合

Windows スタートボタンを右クリック⇒「ディスクの管理」を確認します。以下のように ESP (EFI システムパーティション) が見えれば、GPT であると推測できます。

正確に確認するには、diskpart コマンドを使います。コマンドプロンプトを管理者として起動し、以下のように実行します。

C:\WINDOWS\system32> diskpart

Microsoft DiskPart バージョン 10.0.22000.1

Copyright (C) Microsoft Corporation.
コンピューター: THREE-STARS

DISKPART> list disk

  ディスク      状態           サイズ   空き   ダイナ GPT
  ###                                          ミック
  ------------  -------------  -------  -------  ---  ---
  ディスク 0    オンライン      953 GB      0 B        *

GPT の列に * アスタリスクが付いていれば、GPT 形式です。

この GPT パーティションにいくつのパーティションが作られているかを確認するには、ディスクを選択し、list partition と打ちます。

DISKPART> select disk 0

ディスク 0 が選択されました。

DISKPART> list partition

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    システム               100 MB  1024 KB
  Partition 2    予約済み                16 MB   101 MB
  Partition 3    プライマリ              952 GB   117 MB
  Partition 4    回復                 904 MB   952 GB

DISKPART>

上記では「ディスクの管理」で見た通り、Partition 1 として 100 MB の ESP 領域が確認できます。Partition 2 は Windows インストール時に勝手に作られる予約領域です。Partition 3 が Windows がインストールされている C ドライブになります。Partition 4 はリストア時に利用できる回復パーティションです。

Linux の場合

RedHat 系であれば df -hT コマンドで /boot/efi が確認できればこれが ESP 領域になりますので、GPT が使われていると推測できます。

[root@localhost ~]# df -hT
ファイルシス        タイプ   サイズ  使用  残り 使用% マウント位置
devtmpfs            devtmpfs   1.9G     0  1.9G    0% /dev
tmpfs               tmpfs      1.9G     0  1.9G    0% /dev/shm
tmpfs               tmpfs      1.9G  8.5M  1.9G    1% /run
tmpfs               tmpfs      1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/rl-root xfs         40G  2.2G   38G    6% /
/dev/sda2           xfs       1014M  188M  827M   19% /boot
/dev/sda1         vfat     599M  5.8M 594M    1% /boot/efi
/dev/mapper/rl-home xfs         20G  170M   20G    1% /home
tmpfs               tmpfs      373M     0  373M    0% /run/user/0
[root@localhost ~]#

GPT であることを確認するには fdisk -l コマンドを使います。

[root@localhost ~]# fdisk -l
ディスク /dev/sda: 64 GiB, 68719476736 バイト, 134217728 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: 2179CE5A-6A58-4EB8-9671-2055879298CF

デバイス   開始位置  終了位置    セクタ サイズ タイプ
/dev/sda1      2048   1230847   1228800   600M EFI システム
/dev/sda2   1230848   3327999   2097152     1G Linux ファイルシステム
/dev/sda3   3328000 134215679 130887680  62.4G Linux LVM

コメント

タイトルとURLをコピーしました