技術ブログ

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

2018年7月30日

Amazon EC2

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

目次

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

今回の環境

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

  • OS は Amazon Linux2
  • ルートボリュームは 8GB
  • 追加ボリューム 8GB
  • ファイルシステムは xfs

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

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

手順どおり AWS マネジメントコンソールからボリュームのサイズを変更しますが、その前に EC2 インスタンスに SSH でログインして lsblk コマンドと df コマンドの結果を確認しておきましょう。今回変更する EBS ボリュームのデバイス名は /dev/xvdf で、/mnt/ebs1 にマウントされています。

$ 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   8G  0 disk /mnt/ebs1

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

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

$ 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  100G  0 disk /mnt/ebs1

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

$ df -hT

Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  224M     0  224M   0% /dev
tmpfs          tmpfs     241M     0  241M   0% /dev/shm
tmpfs          tmpfs     241M  300K  241M   1% /run
tmpfs          tmpfs     241M     0  241M   0% /sys/fs/cgroup
/dev/xvda1     xfs       8.0G  1.4G  6.7G  17% /
/dev/xvdf      xfs       8.0G   33M  8.0G   1% /mnt/ebs1
tmpfs          tmpfs      49M     0   49M   0% /run/user/1000

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

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

さきほど実行した lsblk コマンドの結果から、ファイルシステム /dev/xvdf はパーティションが切られていないことがわかります。ドキュメントにかかれているパーティション拡張のコマンドはスキップし、ファイルシステムのサイズ変更を行います。ファイルタイプは xls なので、以下のコマンドを実行します。

$ sudo xfs_growfs -d /mnt/ebs1

meta-data=/dev/xvdf              isize=512    agcount=4, agsize=524288 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=2097152, 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 2097152 to 26214400

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

$ df -hT

Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  224M     0  224M   0% /dev
tmpfs          tmpfs     241M     0  241M   0% /dev/shm
tmpfs          tmpfs     241M  300K  241M   1% /run
tmpfs          tmpfs     241M     0  241M   0% /sys/fs/cgroup
/dev/xvda1     xfs       8.0G  1.3G  6.8G  16% /
/dev/xvdf      xfs       100G   35M  100G   1% /mnt/ebs1
tmpfs          tmpfs      49M     0   49M   0% /run/user/1000

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

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

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

$ sudo growpart /dev/xvda 1

関連記事

-技術ブログ
-

© 2020 karakaram-blog