EBS ボリュームで MBR パーティションの 2 TiB 制限をバイパスするために、EC2 Ubuntu インスタンスのデフォルトの MBR パーティションスキームを GPT に変換する方法を教えてください。
最終更新日: 2020 年 6 月 3 日
Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで Ubuntu 16.04、18.04、または 20.04 が実行されています。Amazon Elastic Block Store (Amazon EBS) ボリュームのデフォルトの MBR パーティションスキームを GPT パーティションスキームに変換して、MBR パーティションの 2 TiB 制限をバイパスする方法を教えてください。
解決方法
警告: インスタンスを停止して起動する前に、必ず以下の点を頭に入れておいてください。
- インスタンスがインスタンスストアでバックアップされているか、データを含むインスタンスストアボリュームがある場合、インスタンスが停止するとデータが失われます。詳細については、インスタンスのルートデバイスタイプの判別を参照してください。
- インスタンスが Amazon EC2 Auto Scaling グループの一部である場合、インスタンスを停止するとインスタンスが終了することがあります。Amazon EMR、AWS CloudFormation、または AWS Elastic Beanstalk を使用してインスタンスを起動した場合、インスタンスは AWS Auto Scaling グループの一部である可能性があります。このシナリオでインスタンスが削除されるかどうかは、Auto Scaling グループのインスタンススケールイン保護の設定によって異なります。インスタンスが Auto Scaling グループの一部である場合は、解決手順を開始する前に、一時的に Auto Scaling グループからインスタンスを削除してください。
- インスタンスを停止および再開すると、インスタンスのパブリック IP アドレスが変更されます。インスタンスに外部トラフィックをルーティングする際は、パブリック IP アドレスではなく Elastic IP アドレスを使用することをお勧めします。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)
8. gdisk ツールを使用して、パーティションテーブルを MBR から GPT に変換します。
# 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 TB に再作成します。最初のセクター、最後のセクター、および 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 man ウェブサイトの fsck を参照してください。
# 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 TB に拡張します。
注意: ファイルシステムのサイズ変更には 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 のスペースがあることを確認します。