EBSボリュームの容量をオンラインで増やしたときのメモ

 ツイート 0  シェア 0  Hatena 1

AWS

Amazon Linux2 に追加でアタッチされている EBS ボリュームのサイズを増やす機会があったので作業手順や参考リンクなど忘れないようにメモ。

目次

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

今回の環境

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

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

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

ボリュームサイズ変更後の Linux ファイルシステムの拡張 – 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 マネジメントコンソールからボリュームのサイズを変更します。手順は コンソールからの EBS ボリュームの変更 – Amazon Elastic Compute Cloud を参照。ボリュームサイズの変更は 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

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

さきほど実行した 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

EBSボリューム変更の注意点

いくつか制約があるので注意しましょう。EBS ボリューム変更時の制限を確認してください。

  • ボリュームサイズを小さくすることはできない
  • ボリュームサイズを変更してから 6 時間は再変更ができない
  • 前世代の EC2 インスタンスでは変更にインスタンスの停止が必要になることがある。
 ツイート 0  シェア 0  Hatena 1