EBSボリュームの容量をEC2インスタンスを停止せずに増やす

2018年7月30日

Amazon EC2

Amazon Linux2 に追加でアタッチされている EBS ボリュームのサイズを増やす方法を紹介します。

目次

  1. 今回の環境
  2. EBS ボリュームのサイズを変更
  3. ファイルシステムのサイズ変更
  4. ルートボリュームのサイズ変更は?

今回の環境

今回は追加でアタッチされている EBS ボリュームのサイズを 100 GB から 120 GB に変更する例を紹介します。

  • t3 インスタンス
  • Amazon Linux2
  • NVMe EBS ボリューム
  • ルートボリュームは 8GB
  • 追加ボリューム 100GB

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

EBS ボリュームへの変更のリクエスト - Amazon Elastic Compute Cloud に従って作業を進めます。

手順どおり AWS マネジメントコンソールからボリュームのサイズを変更しますが、その前に EC2 インスタンスに SSH でログインして df コマンドと lsblk コマンドの結果を確認しておきましょう。

df コマンド。変更対象の /dev/nvme1n1 のサイズが 100GB であることを確認します。

df -hT
devtmpfs       devtmpfs  970M     0  970M   0% /dev
tmpfs          tmpfs     978M     0  978M   0% /dev/shm
tmpfs          tmpfs     978M  468K  977M   1% /run
tmpfs          tmpfs     978M     0  978M   0% /sys/fs/cgroup
/dev/nvme0n1p1 xfs       8.0G  1.6G  6.5G  20% /
/dev/nvme1n1   xfs       100G  4.2G   96G   5% /mnt/ebs1
tmpfs          tmpfs     196M     0  196M   0% /run/user/0
tmpfs          tmpfs     196M     0  196M   0% /run/user/1000

lsblk コマンド。こちらも nvme1n1 のサイズが 100GB です。

lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme1n1       259:0    0  100G  0 disk /mnt/ebs1
nvme0n1       259:1    0    8G  0 disk
|-nvme0n1p1   259:2    0    8G  0 part /
`-nvme0n1p128 259:3    0    1M  0 part

確認できたら AWS マネジメントコンソールからボリュームのサイズを 120GB に変更します。手順は EBS ボリュームへの変更のリクエスト - Amazon Elastic Compute Cloud を参照。ボリュームサイズの変更は 5 秒くらいで終わりましたが、その後 3 分くらい、状態が in-use - optimizing になっていました。その間もデータの読み書きは可能でした。

変更できたら、再度 lsblk コマンドを実行してみます。nvme1n1 のサイズが 120GB になっているのが確認できます。

lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme1n1       259:0    0  120G  0 disk /mnt/ebs1
nvme0n1       259:1    0    8G  0 disk
|-nvme0n1p1   259:2    0    8G  0 part /
`-nvme0n1p128 259:3    0    1M  0 part

df -hT コマンドでファイルシステムディスク領域の使用状況を確認します。こちらはまだ 120GB になっていません。

df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  970M     0  970M   0% /dev
tmpfs          tmpfs     978M     0  978M   0% /dev/shm
tmpfs          tmpfs     978M  412K  977M   1% /run
tmpfs          tmpfs     978M     0  978M   0% /sys/fs/cgroup
/dev/nvme0n1p1 xfs       8.0G  1.6G  6.5G  20% /
/dev/nvme1n1   xfs       100G  4.2G   96G   5% /mnt/ebs1
tmpfs          tmpfs     196M     0  196M   0% /run/user/1000

ファイルシステムのサイズ変更

ボリュームサイズ変更後の Linux ファイルシステムの拡張 例: NVMe EBS ボリュームのファイルシステムを拡張する - Amazon Elastic Compute Cloud を参考に進めます。

さきほど実行した lsblk コマンドの結果から、/dev/nvme1n1 はパーティションが切られていないことがわかります。ファイルタイプは xfs なので、以下のコマンドを実行します。

sudo xfs_growfs -d /mnt/ebs1
meta-data=/dev/nvme1n1           isize=512    agcount=4, agsize=6553600 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1 spinodes=0
data     =                       bsize=4096   blocks=26214400, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=12800, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 26214400 to 31457280

コマンド実行後、df コマンドでサイズを確認します。

df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  970M     0  970M   0% /dev
tmpfs          tmpfs     978M     0  978M   0% /dev/shm
tmpfs          tmpfs     978M  412K  977M   1% /run
tmpfs          tmpfs     978M     0  978M   0% /sys/fs/cgroup
/dev/nvme0n1p1 xfs       8.0G  1.6G  6.5G  20% /
/dev/nvme1n1   xfs       120G  4.2G  116G   4% /mnt/ebs1
tmpfs          tmpfs     196M     0  196M   0% /run/user/1000

ファイルシステム /dev/nvme1n1 のサイズが 120GB になっていることが確認できます。以上で作業は完了です。

ルートボリュームのサイズ変更は?

ルートボリュームのサイズ変更も同じ要領で実施できます。ルートボリュームはパーミッションが切られているので、ファイルシステムのサイズ変更の前にパーミッションの拡張が必要です。

sudo growpart /dev/nvme0n1 1

-技術ブログ
-