問題

AMI から作成した EC2 インスタンスのルートパーティションが EBS のサイズよりも小さくなってしまう.

10 GiB の EBS で作成したにもかかわらず,実際は 8 GiB しか使われていない.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  749M  6.7G  10% /
tmpfs           498M     0  498M   0% /dev/shm

ただし,デバイスとしては 10 GiB として認識されている.

$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  10G  0 disk
└─xvda1 202:1    0   8G  0 part /

8 GiB は AMI の元となったインスタンスのルートパーティションのサイズであり,その値に引きずられていると思われる.

解決

growpart で RHEL EC2 のルートパーティションを自動拡張する « サーバーワークス エンジニアブログ によると, OS が Amazon Linux であれば EBS のサイズに合わせてルートパーティションをよしなに拡張してくれるらしいが,他の OS (今回は CentOS) では当該機能がプリインストールされていないことがあるため,別途追加する必要があるとのこと.

というわけで yum に epel リポジトリを追加して cloud-utils-growpart をインストールする.

sudo yum install epel-release
sudo yum install --enablerepo=epel cloud-utils-growpart

サーバーワークスの記事では /etc/cloud/cloud.cfg[cloud_init_modules] セクションに - growpart を追記するように書いてあったが,今回インストールした cloud-utils-growpart ではデフォルトで設定されていた.

よって,何も追記せずに再起動する.これでパーティションが拡張される.

sudo shutdown -r now

次に,ファイルシステム拡張のために再起動する.

sudo shutdown -r now

無事にパーティションとファイルシステムが拡張された.

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      9.8G  803M  8.5G   9% /
tmpfs           498M     0  498M   0% /dev/shm

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  10G  0 disk
└─xvda1 202:1    0  10G  0 part /