はじめに
以前、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です。)
「ボリュームの変更」でサイズを変更します。(今回は40へ変更)
「ボリュームの変更リクエストが完了しました」と出るので「閉じる」をクリックします。
しばらくするとサイズが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% /
無事に拡張されました。
おわりに
これで急なボリューム拡張が必要になってもサーバを停止する必要がないのでとても便利ですね。