AWS Linux にアタッチされている EBS rootボリュームサイズをオンラインで拡張する。

AWSEC2

Written by Kohei Yamada Posted on 2017/09/05



はじめに

以前、Amazon LinuxにアタッチされているEBSのボリュームサイズを拡張する。を行いました。
ですが、実はこれだとrootボリュームの場合はうまくいきません。(Amazon Linux の場合だと再起動する必要があると思います。)
なので、今回はrootボリュームをオンライン(再起動しない)で拡張したいと思います。


事前確認

まずは現在のボリュームを確認しておきます。

$ lsblk 
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  20G  0 disk 
└─xvda1 202:1    0  20G  0 part /
$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
devtmpfs         991M   56K  991M    1% /dev
tmpfs           1002M     0 1002M    0% /dev/shm
/dev/xvda1        20G  4.1G   16G   21% /


ボリューム拡張

AWSマネジメントコンソールへログインします。

[EC2] > [インスタンス] から対象のインスタンスを選択し、[説明]タブに記載されているルートデバイスへ移動します。(初めからルートデバイスのボリュームがどれかわかっていたらそのままボリュームを選択してもOKです。)
スクリーンショット 2017-08-25 23.06.19.png

「アクション」 > 「ボリュームの変更」をクリックします。
スクリーンショット 2017-08-25 23.15.33.png

「ボリュームの変更」でサイズを変更します。(今回は40へ変更)
スクリーンショット 2017-08-25 23.15.56.png

確認で「はい」をクリック
スクリーンショット 2017-08-25 23.16.12.png

「ボリュームの変更リクエストが完了しました」と出るので「閉じる」をクリックします。
スクリーンショット 2017-08-25 23.16.19.png

しばらくするとサイズが20GiBから40GiBへ変わります。

サーバへ入って確認するとボリュームサイズが拡張されているのがわかります。

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

ですがまだファイルシステムからは見えているのは 20G のままです。

$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
devtmpfs         991M   56K  991M    1% /dev
tmpfs           1002M     0 1002M    0% /dev/shm
/dev/xvda1        20G  4.1G   16G   21% /

growpart と resize2fs で拡張します。

$ sudo growpart /dev/xvda 1
CHANGED: disk=/dev/xvda partition=1: start=4096 old: size=41938910,end=41943006 new: size=83881950,end=83886046
$ sudo resize2fs /dev/xvda1
resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/xvda1 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/xvda1 is now 10485243 (4k) blocks long.
$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
devtmpfs         991M   56K  991M    1% /dev
tmpfs           1002M     0 1002M    0% /dev/shm
/dev/xvda1        40G  4.1G   36G   11% /

無事に拡張されました。


おわりに

これで急なボリューム拡張が必要になってもサーバを停止する必要がないのでとても便利ですね。