kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

AWS ebs ボリューム拡張

AWSのサーバーを使っていてサーバーのボリュームを拡張するのが大変だと思っていたんですが、先日やってみたら簡単だったので書いてみます。

aws.amazon.com

スナップショットの作成

バックアップを一応取っておきます。

コンソールから変更

EC2のメニューからEBSのボリュームから対象を選択し、ボリュームサイズの変更を押します。

ボリュームサイズを指定して変更ボタンをクリック。

サイズとしてはこれで変更されました。

ただこのままだとLinux側でボリュームのサイズの認識が以前のままになるため、Linuxファイルシステムの拡張を行います。

docs.aws.amazon.com

現在のボリュームを確認

df -h

インスタンスにアタッチされている NVMe ブロックデバイスに関する情報を表示

# lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme1n1       259:0    0  30G  0 disk /data
nvme0n1       259:1    0  16G  0 disk
└─nvme0n1p1   259:2    0   8G  0 part /
└─nvme0n1p128 259:3    0   1M  0 part

growpart コマンドを使用してパーティションを拡張します

sudo growpart /dev/nvme0n1 1

各ボリュームでファイルシステムを拡張

sudo yum install xfsprogs
sudo xfs_growfs -d /
sudo xfs_growfs -d /data
sudo resize2fs /dev/nvme0n1p1
sudo resize2fs /dev/nvme1n1

再度状態を確認し、表示が変更したサイズになっていれば完了です。

df -h

自分で作業した際にはresize2fコマンドを実行してエラーが発生しましたが、再起動してdf -hをしてみるとボリュームが拡張されていました。

昔作業した時は容量が大きすぎたのか、サーバーが止まるなど発生していた記憶があって、稼働中のサービスで対応するのが大変だった記憶があります。

サイズが大きい場合には注意が必要かもしれないです。

まとめ

かなり昔にやってた時はものすごい大変なイメージでしたが、昔からこれくらいの作業量だったのか覚えてないですね。容量を増やす際には新しいボリュームを作って、インスタンスに複数紐付けをして同期させた後に新しいほうにシンボリックリンクをかえたりした記憶がありますが、ボリュームを増やすだけならこんなに簡単だったんですね。

共有のボリュームを作りたい場合はEFSがいいと思いますが、最初はEc2で適当に作りたいですよね。

ボリューム拡張は結構簡単です。