RHEL6 AMIでブート領域を拡張する
背景
RHEL6系のAMIからEC2を起動する際にブート用EBSのサイズを大きくしても、OSからは認識されない。(Amazon Linuxは起動時に自動的にサイズを合わせてくれる)
考察
パーティションがGPTになっている。かつ、起動時に対応してくれるようなスクリプトがAMIに仕込まれていない。
対処方法(サマリ)
- 該当インスタンスのBoot EBSを100GBに指定して起動
- 該当インスタンス( A)をstopして /dev/sda1 にアタッチされているEBSをデタッチ
- 作業用インスタンス(B)を別途起動し、上記EBSを/dev/sdb にアタッチ
- 作業用インスタンス(B)にて作業 ( パーティションサイズ変更※ & ファイルシステムサイズ拡張※)
- 上記EBSを作業用インスタンス(B)からデタッチし、該当インスタンス(A)の /dev/sda1にアタッチ
- 該当インスタンス(A)をstartする
対処方法(詳細)
肝はこちらに書いてあるが、gdiskを使った。
作業用インスタンス(B)にて
まずはgdiskをインストール
$ sudo yum -y install gdisk
gdiskを使用して、まずはパーティション情報を表示させる。赤字はメモっとく。
$ sudo gdisk /dev/svdb
Command (? for help): p
Disk /dev/xvdb: 209715200 sectors, 100.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): C0E76C1A-B601-48A7-A1E0-CC49DEFF6CB4
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 20971486
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 2048 20971486 10.0 GiB EF00 Linux
パーティションを削除する
Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): Y
新しいパーティションを作成する
Command (? for help): n
Partition number (1-128, default 1): 1
First sector (34-209715166, default = 2048) or {+-}size{KMGTP}: 2048
Last sector (2048-209715166, default = 209715166) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): EF00
Changed type of partition to 'EFI System'
Expert モードに入って、ディスクGUIDを元に戻す(最初に表示した時のやつ)
Command (? for help): x
Expert command (? for help): g
Enter the disk's unique GUID ('R' to randomize): C0E76C1A-B601-48A7-A1E0-CC49DEFF6CB4
The new disk GUID is C0E76C1A-B601-48A7-A1E0-CC49DEFF6CB4
変更をディスクに書き込む
Expert 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/xvdb.
The operation has completed successfully.
念の為、ファイスシステムのチェック。
$ sudo e2fsck -f /dev/xvdb1
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 10G 0 disk
└─xvda1 202:1 0 6G 0 part /
xvdb 202:16 0 100G 0 disk
└─xvdb1 202:17 0 100G 0 part
lsblkの結果を見る限り、これだけだと、パーティションは拡張したがファイルシステムは拡張していないので、拡張しておく。
$ sudo resize2fs /dev/xvdb1
この、ファイルシステム拡張についてだけが、こっち↓に書いてあって、ハマるポイント。
うまくいったら、元のインスタンスの/dev/sda1 にアタッチする。