EC2 Ubuntu インスタンスのデフォルトの MBR パーティションスキームを GPT に変換して、EBS ボリュームの MBR パーティションの 2 TiB の制限を回避する方法を教えてください。

所要時間4分
0

私の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスは Ubuntu 16.04、18.04、または 20.04 を実行しています。MBR パーティションには 2 TiB の制限があります。この制限を回避するために、Amazon Elastic Block Store (Amazon EBS) ボリュームのパーティションスキームを 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 レコードを更新しなければならない場合があります。
  • インスタンスのシャットダウン動作が [終了] に設定されている場合、停止するとインスタンスは終了します。この問題を回避するには、インスタンスのシャットダウン動作を変更してください

**注:**解決手順を開始する前に、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.    / dev/sdf のルートパーティションを表示するには、lsblk コマンドを使用します。/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.    パーティションテーブルを MBR から GPT に変換するには、gdisk ツールを使用します。

: 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 パーティションを作成するには、プロンプトで次のコマンドを入力します。デフォルトのセクター番号 2047 を使用するには、[最後のセクター] プロンプトでEnterを入力します。

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 に再作成するには、プロンプトで次のコマンドを入力します。[最初のセクター][最後のセクター]、および [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.    デバイス /dev/xvdf1 のファイルシステムが正しいことを確認するには、fsck ツールを使用します。fsck ツールの詳細については、Ubuntu ウェブサイトの「fsck」を参照してください。

: e2fsck コマンドに -y スイッチを追加すると、すべての質問に [はい] とみなされます。

# 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.    ファイルシステムのサイズを変更して 3 TiB に拡張するには、resize コマンドを実行します。

**注:**ファイルシステムのサイズ変更には 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.    Grub をデバイス /dev/xvdf1 にインストールし、次のコマンドを使用して設定します。

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.    元のインスタンスのルートボリュームに 3 TiB の容量があることを確認するには、lsblk コマンドを実行します。

関連情報

EBS ボリュームのサイズと構成の制約

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