EBSのボリュームサイズを変更する

EBSのボリュームサイズを変更する方法を整理しました。 今回はAmazon Linux 2上にマウントされたEBSボリュームのサイズを変更します。
2022.12.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

EBSとボリュームサイズ

EBSは正式名称を「Amazon Elastic Block Store」と言います。 名前の表すとおり、スケールの伸縮性が特徴の1つでスループット以外にもサイズの変更も容易です。

今回はEBSボリュームのサイズを変更する方法を整理していきます。

作業の整理

今回使用するのはAmazon Linux 2で起動したEC2インスタンスです。 すでにEBSボリュームはアタッチ済みで、XFSでファイルシステムを構築後に/dataに追加のボリュームをマウントしています。

lsblk

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

サイズは1GiBでこれを今回は10GiBまで拡張します。

手順は以下の通りです。

  1. EBSボリュームの変更
  2. XFSのファイルシステムの拡張

今回はパーティションも区切っていないので、パーティションの拡張は行いません。

Windowsについては以下の記事が参考になるかと思います。

EBSボリュームの変更

今回はマネージメントコンソールから変更します。

「アクション」より「ボリュームサイズの変更」を選択します。 今回は説明の都合上簡略化しましたが、ファイルシステムの変更に失敗した場合などを考え、予めスナップショットを作成しておくのが良いと思います。

サイズを10GiBに変更します。

変更の確認画面が出てくるので「変更」ボタンを押します。

変更リクエストが成功するとマネージメントコンソール上でもサイズが10GiBになります。

ファイルシステムの拡張

EBSボリュームのサイズ変更が成功したみたいなので、EC2側からも確認します。

変更後の確認

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

$ df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  474M     0  474M   0% /dev
tmpfs          tmpfs     483M     0  483M   0% /dev/shm
tmpfs          tmpfs     483M  356K  483M   1% /run
tmpfs          tmpfs     483M     0  483M   0% /sys/fs/cgroup
/dev/xvda1     xfs       8.0G  1.6G  6.5G  20% /
/dev/xvdf      xfs      1014M   40M  975M   4% /data

「/dev/xvdf」のサイズが10GiBに変わっていました。

ファイルシステムの拡張を行います。

今回はXFSを使用しているのでxfs_growfsを使用します。 EXT4ならresize2fsでリサイズできます。

ファイルシステムの拡張

$ sudo xfs_growfs -d /data
meta-data=/dev/xvdf              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           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 262144 to 2621440

ファイルシステムの拡張が完了したので、ファイルシステムのサイズを再確認します。

拡張後の確認

$ df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  474M     0  474M   0% /dev
tmpfs          tmpfs     483M     0  483M   0% /dev/shm
tmpfs          tmpfs     483M  356K  483M   1% /run
tmpfs          tmpfs     483M     0  483M   0% /sys/fs/cgroup
/dev/xvda1     xfs       8.0G  1.6G  6.5G  20% /
/dev/xvdf      xfs        10G  106M  9.9G   2% /data

無事に拡張成功したみたいです。

付録

拡張ができるということは、逆もできるのか気になったのでボリュームサイズを1GiBに戻そうとしたところ以下のような感じで警告がでて、ボリュームサイズを減らすことはできませんでした。

誤ってボリュームサイズを小さくするとデータの喪失などにつながるので、このほうが安全だと思います。 ボリュームサイズを小さくしたい場合は新しくEBSボリュームを作成し、EC2などでマウントしてファイルをコピーするのがよいと思います。