EC2 Ubuntu インスタンスのデフォルトの MBR パーティションスキームを GPT に変換する方法を教えてください。
16.04、18.04、または 20.04 Ubuntu の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを使用しており、MBR パーティションの最大クォータは 2 テビバイト (TiB) です。クォータを回避するために、Amazon Elastic Block Store (Amazon EBS) ボリュームで GPT パーティションスキームへの変換を行いたいです。
簡単な説明
Ubuntu バージョン 22.04 以降では、デフォルトで GPT パーティションを使用します。ただし、Ubuntu バージョン 16.04、18.04、20.04 では GPT パーティションを手動で設定する必要があります。
解決策
重要: インスタンスを停止して起動する前に、次のアクションを実行してください。
- EBS ボリュームのバックアップを作成します。
注: インスタンスの基盤がインスタンスストアであるか、データを含むインスタンスストアボリュームがある場合、インスタンスの停止時に Amazon EC2 はデータを削除します。 - 解決手順の実行時に、Amazon EC2 Auto Scaling グループからインスタンスを一時的に除外します。
注: EC2 Auto Scaling グループ内のインスタンスを停止する場合、インスタンスがスケールイン保護設定に基づいて削除される場合があります。Amazon EMR、AWS CloudFormation、または AWS Elastic Beanstalk を使用して起動するインスタンスが、Auto Scaling グループに属している可能性があります。 - インスタンスのシャットダウン動作を Stop に設定し、インスタンスの停止時にインスタンスが削除されないようにします。
注: インスタンスを停止または起動する際、インスタンスのパブリック IP アドレスは変更されます。外部トラフィックをインスタンスにルーティングするには、パブリック IP アドレスではなく Elastic IP アドレスを使用することをおすすめします。Amazon Route 53 を使用している場合は、パブリック IP アドレスが変更された際、Route 53 の DNS レコードを更新する必要が生じる場合があります。
Ubuntu インスタンスのデフォルトの MBR パーティションスキームを GPT に変換するには、次の手順を実行します。
-
Amazon EC2 コンソールを開きます。
-
Ubuntu を実行している Amazon マシンイメージ (AMI) からインスタンスを起動します。
-
同じアベイラビリティゾーン内の、3 TiB のルートボリュームを持つ 同じ Ubuntu AMI から 2 番目のインスタンスを起動します。
-
2 番目のインスタンスを停止します。
-
ルートボリューム /dev/xvda または /dev/sda1 を 2 番目のインスタンスからデタッチします。次に、ルートボリュームを最初のインスタンスに /dev/sdf としてアタッチします。
-
/dev/sdf のルートパーティションを確認するには、次の lsblk コマンドを実行します。
sudo 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)注: 上記の例では、/dev/sdf のルートパーティションは 2 テラバイト (TB) です。Nitro インスタンスタイプでは、ブロックデバイス名は /dev/nvme1n1 のような形式です。
-
パーティションテーブルを MBR から GPT に変換するには、gdisk ツールを使用して次のコマンドを実行します。
sudo gdisk /dev/xvdf注: gdisk で間違ったコマンドを入力した場合は、q または Ctrl-C キーを押して gdisk を終了します。変更は保存しないでください。
出力例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! -
Expert モードに移行し、セクタのアライメント値を設定するには、プロンプトで次の値を入力します。
Command (? for help): x Expert command (? for help): l Enter the sector alignment value (1-65536, default = 2048): 1 Expert command (? for help): m注: 各プロンプトの後に Enter キーを押します。上記の構成では、セクタのアライメント値をデフォルトの 8 から 1 に変更しています。8 バイト (B) のアライメントを使用する場合、GPT パーティションの作成時に問題が発生する可能性があります。
-
GPT パーティションを作成するには、プロンプトで次の値を入力します。
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}: Hex code or GUID (L to show codes, Enter = 8300): ef02
注: 各プロンプトの後に Enter キーを押します。[最後のセクタ] プロンプトで Enter キーを押すと、Current type is 'Linux filesystem' という、現在のタイプを示す出力が表示されます。上記の例では、ef02 が BIOS のブートパーティション番号です。
出力例
Changed type of partition to 'BIOS boot partition'
- ルートパーティションを削除するには、プロンプトで次の値を入力します。
Command (? for help): d Partition number (1-128): 1
注: 各プロンプトの後に Enter キーを押します。 ルートパーティションを 3-TiB にして再作成するには、プロンプトで次の値を入力します。
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}: Hex code or GUID (L to show codes, Enter = 8300):
注: 各プロンプトの後に Enter キーを押します。[最後のセクタ] プロンプトで Enter キーを押すと、Current type is 'Linux filesystem' という、現在のタイプを示す出力が表示されます。[最初のセクタ]、[最後のセクタ]、[16 進コード または GUID] プロンプトで Enter キーを押すと、デフォルト設定を使用します。
出力例
Changed type of partition to 'Linux filesystem'
- GPT パーティションテーブルを保存するには、プロンプトで次の値を入力します。
Command (? for help): w Do you want to proceed? (Y/N): y
重要: このアクションを実行すると、既存のパーティションが上書きされます。
出力例
OK; writing new GUID partition table (GPT) to /dev/xvdf. The operation has completed successfully.
- 新しいボリューム情報を確認するには、次の lsblk コマンドを実行します。
sudo lsblk
出力例
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvdf 202:80 0 3T 0 disk └─xvdf1 202:81 0 3T 0 part
- /dev/xvdf1 デバイスのファイルシステムが正しいかどうかを確認するには、fsck ツールを使用して次のコマンドを実行します。
sudo e2fsck -f /dev/xvdf1
注: すべての質問に yes と答える場合は、e2fsck コマンドに -y スイッチを追加します。fsck ツールの詳細については、Ubuntu のウェブサイトで fsck.8.gz を参照してください。
出力例
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
- ファイルシステムのサイズを 3 TiB に変更するには、次の resize コマンドを実行します。
sudo resize2fs /dev/xvdf1
注: ファイルシステムのサイズ変更には 10~20 秒かかる場合があります。
出力例
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.
- **/dev/xvdf1 ** デバイスに Grub をインストールし、次のコマンドを実行して Ubuntu のバージョンに応じた 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-l /mnt/dev sudo umount -l /mnt/sys sudo umount -l /mnt/proc sudo umount -l /mnt`
- ボリューム /dev/xvdf を実行中のインスタンスから デタッチします。
- /dev/xvdf ボリュームを /dev/xvda または /dev/sda1 として最初のインスタンスに再度アタッチします。
- SSH を使用して最初のインスタンスに接続してから、インスタンスを起動します。
- 元のインスタンスのルートボリュームに 3 TiB の容量があることを確認するには、lsblk コマンドを実行します。
sudo lsblk
