はじめに
つい先日、Amazon EBSのアップデートで 「エラスティックボリューム」の発表 がありました。
これはEC2にアタッチされたEBSに対し、「ボリュームサイズの拡張」、「パフォーマンスの調整」、**「ボリュームタイプの変更」がオンラインで行うことができます。
ということで今回、「ボリュームサイズの拡張」**を行ってみたいと思います。
事前確認
今回作業するOSは Amazon Linux 2016.09 です。
まずは状況確認しておきます。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdb 202:16 0 10G 0 disk /data
現在、 xvdb という名前でボリュームサイズが10GBのデバイスがEC2インスタンスにアタッチされています。
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 236M 60K 236M 1% /dev
tmpfs 246M 0 246M 0% /dev/shm
/dev/xvda1 7.8G 984M 6.7G 13% /
/dev/xvdb 9.8G 23M 9.2G 1% /data
また、 ファイルシステムとしても10GBのボリュームが /data 領域にマウントされているのを確認できます。
今回はこの xvdb のボリュームサイズを拡張します。
EBSサイズの拡張
[EC2] > [ボリューム] から対象となるボリュームをチェックし、[アクション]から[Modify Volume]をクリックします。
今回は 20GB へ拡張するので「Size」の10を20に変更し[Modify]をクリックします。
「ボリュームの変更をしても本当にいいですか?」と聞かれるので、[Yes]をクリックします。
すると**「in-use optimizing」**というステータスになります。変更したサイズへ拡張中です。
しばらくして**「in-use completed」**になったらEBS拡張処理の完了です。
ファイルシステムサイズの拡張
それでは先ほど拡張したボリュームサイズがちゃんと20GBに増えているか確認してみます。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdb 202:16 0 20G 0 disk /data
無事、20GBのボリュームとして認識されているのが確認できました。
ですが、今のままだとEBSデバイスのサイズが増えただけです。
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 236M 60K 236M 1% /dev
tmpfs 246M 0 246M 0% /dev/shm
/dev/xvda1 7.8G 985M 6.7G 13% /
/dev/xvdb 9.8G 23M 9.2G 1% /data
なので、まだこのままではOSから利用することはできません。
ということでOSから利用できるようにresize2fs
でファイルシステムをリサイズします。
- Amazonlinuxの場合(ファイルシステムがext4の場合)
$ sudo resize2fs /dev/xvdb
resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/xvdb is mounted on /data; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/xvdb is now 5242880 (4k) blocks long.
これでファイルシステムのリサイズ完了です。
- Amazonlinux2の場合(ファイルシステムがxfsの場合)
$ sudo xfs_growfs /dev/nvme0n1p1
meta-data=/dev/nvme0n1p1 isize=512 agcount=4, agsize=524159 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1 spinodes=0
data = bsize=4096 blocks=2096635, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 2096635 to 26213883
xfsボリュームで resize2fs
を実行すると以下のようなエラーが発生します。
$ sudo resize2fs /dev/nvme0n1p1
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block while trying to open /dev/nvme0n1p1
Couldn't find valid filesystem superblock.
確認
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 236M 60K 236M 1% /dev
tmpfs 246M 0 246M 0% /dev/shm
/dev/xvda1 7.8G 985M 6.7G 13% /
/dev/xvdb 20G 28M 19G 1% /data
ということで無事にOSから利用できるようになりました。
おわりに
これで「とりあえず多めに確保」をする必要も無くなり、「今必要なサイズ」を割り当てれば良くなりました。
また、拡張作業もオンタイムで行えるので、費用面だけでなく運用面のコスト削減にもなります。
これで「いろんな人の負担」がかなり軽くなりますね。