スキップしてコンテンツを表示

EC2 Ubuntu インスタンスのデフォルトの MBR パーティションスキームを GPT に変換する方法を教えてください。

所要時間4分
0

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 パーティションを手動で設定する必要があります。

解決策

重要: インスタンスを停止して起動する前に、次のアクションを実行してください。

注: インスタンスを停止または起動する際、インスタンスのパブリック IP アドレスは変更されます。外部トラフィックをインスタンスにルーティングするには、パブリック IP アドレスではなく Elastic IP アドレスを使用することをおすすめします。Amazon Route 53 を使用している場合は、パブリック IP アドレスが変更された際、Route 53 の DNS レコードを更新する必要が生じる場合があります。

Ubuntu インスタンスのデフォルトの MBR パーティションスキームを GPT に変換するには、次の手順を実行します。

  1. Amazon EC2 コンソールを開きます。

  2. Ubuntu を実行している Amazon マシンイメージ (AMI) からインスタンスを起動します。

  3. 同じアベイラビリティゾーン内の、3 TiB のルートボリュームを持つ 同じ Ubuntu AMI から 2 番目のインスタンスを起動します。

  4. 2 番目のインスタンスを停止します。

  5. ルートボリューム /dev/xvda または /dev/sda1 を 2 番目のインスタンスからデタッチします。次に、ルートボリュームを最初のインスタンスに /dev/sdf としてアタッチします。

  6. SSH を使用して最初のインスタンスに接続します

  7. /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 のような形式です。

  8. パーティションテーブルを 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!
  9. 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 パーティションの作成時に問題が発生する可能性があります。

  10. 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'
  1. ルートパーティションを削除するには、プロンプトで次の値を入力します。
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'
  1. 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.
  1. 新しいボリューム情報を確認するには、次の 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
  1. /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
  1. ファイルシステムのサイズを 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.
  1. **/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`
  1. ボリューム /dev/xvdf を実行中のインスタンスから デタッチします。
  2. /dev/xvdf ボリュームを /dev/xvda または /dev/sda1 として最初のインスタンスに再度アタッチします。
  3. SSH を使用して最初のインスタンスに接続してから、インスタンスを起動します。
  4. 元のインスタンスのルートボリュームに 3 TiB の容量があることを確認するには、lsblk コマンドを実行します。
sudo lsblk

関連情報

Amazon EBS ボリュームの制約

AWS公式更新しました 8ヶ月前
コメントはありません

関連するコンテンツ