EBS ボリューム上の MBR パーティションの 2 TiB の制限を回避するために、EC2 Ubuntu インスタンスのデフォルトの MBR パーティションスキームを GPT に変換するにはどうすればよいですか?
Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで Ubuntu 16.04、18.04、または 20.04 が実行されています。MBR パーティションには 2 TiB の制限があります。Amazon Elastic Block Store (Amazon EBS) ボリュームのデフォルトの MBR パーティションスキームを GPT パーティションスキームに変換して、制限をバイパスしたいと考えています。
解決方法
警告: インスタンスを停止して起動する前に、次の点を考慮してください。
- インスタンスがインスタンスストアを利用している場合、またはデータを含むインスタンスストアボリュームがインスタンスにある場合、インスタンスを停止するとデータが失われます。詳細については、「インスタンスのルートデバイスタイプの判別」を参照してください。
- インスタンスが Amazon EC2 Auto Scaling グループの一部である場合、インスタンスを停止するとインスタンスが終了することがあります。Amazon EMR、AWS CloudFormation、または AWS Elastic Beanstalk を使用してインスタンスを起動した場合、インスタンスは AWS Auto Scaling グループの一部である可能性があります。この場合、インスタンスの終了は Auto Scaling グループのインスタンススケールイン保護設定によって異なります。インスタンスが Auto Scaling グループの一部である場合は、解決のためのステップを開始する前に、Auto Scaling グループからインスタンスを一時的に削除します。
- インスタンスを停止および再開すると、インスタンスのパブリック IP アドレスが変更されます。インスタンスに外部トラフィックをルーティングするときは、パブリック IP アドレスではなく Elastic IP アドレスを使用することがベストプラクティスです。Amazon Route 53 を使用している場合は、パブリック IP が変更されたときに Route 53 DNS レコードを更新する必要がある場合があります。
- インスタンスのシャットダウン動作が [Terminate] (終了) に設定されている場合、インスタンスは停止時に終了します。この問題を回避するには、インスタンスのシャットダウン動作を変更します。
注: 解決のためのステップを開始する前に、EBS ボリュームのバックアップを作成するのがベストプラクティスです。
1. Amazon EC2 コンソールを開きます。
2. Ubuntu を実行している Amazon マシンイメージ (AMI) からインスタンスを起動します。
3. 最初のインスタンスと同じアベイラビリティーゾーンで、3 TiB のルートボリュームを持つ同じ Ubuntu AMI から 2 番目のインスタンスを起動します。
4. 3 TiB のルートボリュームを持つインスタンスを停止します。
5. 停止したインスタンスから ルートボリューム (/dev/xvda または /dev/sda1) をデタッチします。その後、ステップ 2 で作成したインスタンスに /dev/sdf としてアタッチします。
6. SSH を使用して、(ステップ 2 で作成した) 実行中のインスタンスに接続します。
7. lsblk コマンドを使用して、/dev/sdf のルートパーティションを表示します。次の例に示すように、/dev/sdf のルートパーティションのサイズは 2 TiB のみです。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT (snip) xvdf 202:80 0 3T 0 disk └─xvdf1 202:81 0 2T 0 part (snip)
注: Nitro インスタンスタイプでは、ブロックデバイス名は次の例のようになります: /dev/nvme1n1。
8. gdisk ツールを使用して、パーティションテーブルを MBR から GPT に変換します。
注: gdisk に間違ったコマンドを入力した場合は、q を使用して変更を保存せずに gdisk を終了するか、または Ctrl+C を押してください。
# sudo gdisk /dev/xvdf GPT fdisk (gdisk) version 1.0.1 Partition table scan: MBR: MBR only BSD: not present APM: not present GPT: not present *************************************************************** Found invalid GPT and valid MBR; converting MBR to GPT format in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by typing 'q' if you don't want to convert your MBR partitions to GPT format!
9. プロンプトで次のコマンドを入力して、エキスパートモードを開始し、セクターアラインメント値を設定します。
注: セクターアラインメント値はデフォルトの 8 から 1 に変更してください。8 バイトのアラインメントを使用する場合、GPT パーティションの作成時に問題が発生することがあります。
Command (? for help): x Expert command (? for help): l Enter the sector alignment value (1-65536, default = 2048): 1 Expert command (? for help): m
10. プロンプトで次のコマンドを入力して GPT パーティションを作成します。最後のセクターのプロンプトで「enter」と入力して、デフォルトのセクター番号 2047 を使用します。
Command (? for help): n Partition number (2-128, default 2): 128 First sector (34-6291455966, default = 4294967296) or {+-}size{KMGTP}: 34 Last sector (34-2047, default = 2047) or {+-}size{KMGTP}: Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): ef02 Changed type of partition to 'BIOS boot partition'
注意: 前の例では、ef02 は BIOS ブートパーティション番号です。
11. プロンプトで次のコマンドを入力して、ルートパーティションを削除します。
Command (? for help): d Partition number (1-128): 1
12. プロンプトで次のコマンドを入力して、ルートパーティションが 3 TiB になるように再作成します。[First sector] (最初のセクター)、[Last sector] (最後のセクター)、および [Hex code or GUID] (16 進コードまたは GUID) プロンプトで、enter と入力してデフォルト設定を使用します。
Command (? for help): n Partition number (1-128, default 1): 1 First sector (2048-6291455966, default = 2048) or {+-}size{KMGTP}: Last sector (2048-6291455966, default = 6291455966) or {+-}size{KMGTP}: Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem'
13. プロンプトで次のコマンドを入力して、GPT パーティションテーブルを保存します。
Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): y OK; writing new GUID partition table (GPT) to /dev/xvdf. The operation has completed successfully.
lsblk コマンドを実行して、新しいボリューム情報を表示します。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvdf 202:80 0 3T 0 disk └─xvdf1 202:81 0 3T 0 part
14. fsck ツールを使用して、デバイス /dev/xvdf1 のファイルシステムが正しいことを確認します。fsck ツールの詳細については、Ubuntu ウェブサイトの「fsck」を参照してください。
注: e2fsck コマンドに -y スイッチを追加すると、すべての質問に対する回答が [yes] (はい) であると仮定されます。
# sudo e2fsck -f /dev/xvdf1 e2fsck 1.42.13 (17-May-2015) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information cloudimg-rootfs: 57524/262144000 files (0.0% non-contiguous), 16648272/536870655 blocks
15. resize コマンドを実行して、ファイルシステムのサイズを 3 TiB に拡張します。
注: ファイルシステムのサイズ変更には 10~20 秒かかる場合があります。
# sudo resize2fs /dev/xvdf1 resize2fs 1.42.13 (17-May-2015) Resizing the filesystem on /dev/xvdf1 to 786431739 (4k) blocks. The filesystem on /dev/xvdf1 is now 786431739 (4k) blocks long.
16. デバイス /dev/xvdf1 に Grub をインストールし、次のコマンドを使用して設定します。
Ubuntu 16.04 または 18.04:
sudo mount /dev/xvdf1 /mnt sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys sudo mount --bind /dev /mnt/dev sudo chroot /mnt /bin/bash grub-install /dev/xvdf grub-mkdevicemap update-grub exit sudo umount -l /mnt/dev sudo umount -l /mnt/sys sudo umount -l /mnt/proc sudo umount -l /mnt
Ubuntu 20.04:
sudo mount /dev/xvdf1 /mnt sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys sudo mount --bind /dev /mnt/dev sudo chroot /mnt /bin/bash grub-install /dev/xvdf grub-mkdevicemap echo "GRUB_DISABLE_OS_PROBER=true" > /etc/default/grub echo "GRUB_FORCE_PARTUUID=" > /etc/default/grub.d/40-force-partuuid.cfg update-grub exit sudo umount -l /mnt/dev sudo umount -l /mnt/sys sudo umount -l /mnt/proc sudo umount -l /mnt
17. 実行中のインスタンスからボリューム /dev/xvdf を接続解除します。
18. ボリューム /dev/xvdf を /dev/xvda または /dev/sda1 として元のインスタンスにアタッチします。
19. SSH を使用して元のインスタンスを起動します。
20. lsblk コマンドを実行して、元のインスタンスのルートボリュームに 3 TiB のスペースがあることを確認します。
関連情報

関連するコンテンツ
- 質問済み 5年前lg...
- 質問済み 4年前lg...
- 質問済み 5年前lg...
- 質問済み 2年前lg...
- 質問済み 5年前lg...
- AWS公式更新しました 6ヶ月前
- AWS公式更新しました 10ヶ月前