AWSのサーバーを使っていてサーバーのボリュームを拡張するのが大変だと思っていたんですが、先日やってみたら簡単だったので書いてみます。
スナップショットの作成
バックアップを一応取っておきます。
コンソールから変更
EC2のメニューからEBSのボリュームから対象を選択し、ボリュームサイズの変更を押します。
ボリュームサイズを指定して変更ボタンをクリック。
サイズとしてはこれで変更されました。
ただこのままだとLinux側でボリュームのサイズの認識が以前のままになるため、Linuxファイルシステムの拡張を行います。
現在のボリュームを確認
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で適当に作りたいですよね。
ボリューム拡張は結構簡単です。