AWS EC2にアタッチしているEBSボリュームのサイズを拡張する
目次
はじめに
「AWSコンソール上でEBSボリュームのサイズを変更する操作自体は難しくないけれど、その後にOS側で何をすればいいのか分からない」——そう感じたことはないでしょうか。EBSボリュームのサイズ拡張は、コンソールでの操作とEC2シェル側での作業がセットになっており、片方だけでは反映されません。
本記事では、EC2上のUbuntuを再起動させることなくEBSボリュームのサイズを拡張する手順を、コンソール操作からパーティション・ファイルシステムの拡張までまとめて解説します。
本記事は以下のAWS公式ドキュメントの内容をベースにしています。正確な手順は必ず公式ドキュメントもあわせてご確認ください。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html
EC2のEBSボリュームを拡張する4つの手順
EBSボリュームのサイズ拡張は、バックアップの取得→AWSコンソールでのボリューム拡張→パーティションの拡張→ファイルシステムの拡張、という4つの手順で進めます。
1. EC2のバックアップを取得する
課題:ボリューム拡張の手順を誤ると、データを失うリスクがある。
解決策:作業前に必ずEC2のバックアップ(スナップショット)を取得しておく。
バックアップを取っておけば、手順に誤りがあった場合でもリカバリーができます。EBSのスナップショットだけでも構いませんが、EC2ごとバックアップする場合は以下の記事を参考にしてください。
2. AWSコンソールからEBSボリュームを拡張する
課題:AWSコンソール上でボリュームサイズを変更する操作自体は難しくないが、どの画面を操作すればいいのか分かりにくい。
解決策:EC2のストレージページでボリュームIDを確認し、EBSのボリュームページから「ボリュームの変更」でサイズを変更する。
まず、拡張したいEBSボリュームIDを、EC2にアタッチしているストレージのページから確認します。

次に、EBSのボリュームページに移動し、該当のボリュームを探します。

該当のボリュームが見つかったら、アクションメニューから「ボリュームの変更」を選択します。

開いたメニューの中にある「サイズ」の値を変更したいサイズにし、右下の変更ボタンをクリックします。サイズは増やすことはできますが、減らすことはできない点に注意してください。

変更内容を確認するダイアログが表示されるので、「はい」をクリックするとAWS内で変更作業が開始されます。

サイズの拡張が完了するまで待ちます。ステータスはEBSボリュームの「状態」欄で確認でき、緑色の “in-use" になれば完了です。これでAWSコンソール上での作業は完了です。

3. EC2シェルからパーティションを拡張する
課題:AWSコンソールでボリュームサイズを変更しても、OS側のパーティションサイズは自動的には変わらない。
解決策:“growpart" コマンドでパーティションを拡張する。利用しているEBSがnvmeタイプかどうかでコマンドが異なる点に注意する。
以下が、AWSコンソールでEBSボリュームのサイズを変更する前の状態です。ファイルシステムのサイズ(/dev/root)が7.7G、EBSボリュームのサイズが8Gとなっています。

以下が、AWSコンソールでEBSボリュームのサイズを変更した後の状態です。"df -hT" の結果は変わっていませんが、"lsblk" で見える結果が変化していることが分かります。

“lsblk" の結果から、ボリュームは拡張されているものの、パーティションはまだ拡張されていないことが分かります。xvdaがボリューム、xvda1がパーティション名です。
拡張すべきパーティションは /dev/xvda1 なので、以下のコマンドでパーティションを拡張します。利用している環境のEBSがnvmeタイプかどうかでコマンドが異なるため、必ず確認してください。
sudo growpart /dev/xvda 1
コマンドを実行すると、"df -hT" の結果は変わりませんが、"lsblk" の結果からパーティションのサイズが拡張されていることが確認できます。

4. EC2シェルからファイルシステムを拡張する
課題:パーティションを拡張しても、ファイルシステムのサイズはまだ反映されていない。
解決策:ファイルシステムの種類に応じたコマンド(ext4なら"resize2fs")でファイルシステムを拡張する。
最初にファイルシステムの種類を確認します。"df -hT" の結果から、rootボリュームが “ext4" であることが分かります。こちらも利用している環境によって実行するコマンドが変わるため、必ず確認してください。
ext4のファイルシステムの場合は、以下のコマンドを実行します。
sudo resize2fs /dev/xvda1
コマンドを実行すると、"df -hT" の結果でもファイルシステムのサイズが拡張されていることが確認できます。

まとめ:EBSボリュームの拡張は「コンソール+OS側」のセット作業
本記事で紹介した手順をまとめます。
- 作業前には必ずEC2のバックアップ(スナップショット)を取得する
- AWSコンソールの「ボリュームの変更」でEBSボリュームのサイズを増やす(縮小は不可)
- “growpart" コマンドでパーティションを拡張する(nvmeタイプかどうかでコマンドが異なる)
- “resize2fs"(ext4の場合)などファイルシステムに応じたコマンドで拡張する
環境によって実行するコマンドが少しずつ異なるため迷いやすい部分ですが、流れを押さえておけばEC2を再起動せずにディスク容量を拡張できます。実施前には必ずバックアップを取得しておきましょう。






ディスカッション
コメント一覧
まだ、コメントがありません