以前、サイズの小さなAMIからブートディスク(EBS)を大きくしてEC2を起動の記事で、
EC2(CentOS6)起動時にブートディスク(EBS)のサイズをデフォルトより大きいものに指定して、
起動後resize2fsでOS的にも使える容量を拡張する方法を紹介しました。

今回は、このresize2fsに相当する作業をEC2起動時にcloud-initを利用して自動で行うようにしてみます。

○cloud-initのインストールと設定

cloud-initはyumでインストールすることができます。

# yum -y install cloud-init

設定ファイルは下記の通りです。
(resizefsのみ有効)

# cat /etc/cloud/cloud.cfg
cloud_init_modules:
- resizefs

自動起動を有効化

# chkconfig cloud-init on

上記を仕込んだEC2をAMI化してEC2の起動に利用するようにします。

○EC2起動ににEBSのサイズを変更(拡張)

下記のように、上記で作成したAMIをAWSマネジメントコンソールで拡張可能です。

サイズを変更(拡張)して右側のボタン(図には入り切らなかったです)を押すと、そのサイズが
EBSに反映されます。

○OS(CentOS6)上で確認

正しくEBS拡張時に指定したサイズ(10G)になっています。

# df -h
Filesystem Size Used Avail Use% マウント位置
/dev/xvde1 9.9G 2.3G 7.1G 25% /
none 296M 0 296M 0% /dev/shm

ログでもリサイズされていることがわかります。

# cat /var/log/cloud-init.log
...
Dec 26 22:43:32 ip-10-0-32-140 [CLOUDINIT] cloud-init[INFO]: cloud-init start running: Wed, 26 Dec 2012 13:43:32 +0000. up 30.35 seconds
Dec 26 22:43:32 ip-10-0-32-140 [CLOUDINIT] __init__.py[DEBUG]: searching for data source in ['DataSourceNoCloudNet', 'DataSourceConfigDriveNet', 'DataSourVFNet', 'DataSourceEc2']
Dec 26 22:43:32 ip-10-0-32-140 [CLOUDINIT] DataSourceEc2.py[DEBUG]: removed the following from metadata urls: ['http://instance-data:8773']
Dec 26 22:43:32 ip-10-0-32-140 [CLOUDINIT] DataSourceEc2.py[DEBUG]: Using metadata source: 'http://169.254.169.254'
Dec 26 22:43:32 ip-10-0-32-140 [CLOUDINIT] DataSourceEc2.py[DEBUG]: crawl of metadata service took 0s
Dec 26 22:43:32 ip-10-0-32-140 [CLOUDINIT] __init__.py[DEBUG]: found data source DataSourceEc2
Dec 26 22:43:32 ip-10-0-32-140 [CLOUDINIT] cloud-init[DEBUG]: found data source: DataSourceEc2
Dec 26 22:43:32 ip-10-0-32-140 [CLOUDINIT] __init__.py[DEBUG]: handling resizefs with freq=None and args=[]
Dec 26 22:43:32 ip-10-0-32-140 [CLOUDINIT] cc_resizefs.py[DEBUG]: resizing root filesystem (type=ext4, maj=202, min=65)

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら