【AWS EC2】EBS容量拡張手順
はじめに
EC2インスタンスに割り当てたEBSボリュームの容量が不足した場合、AWSコンソールとOS内コマンドで拡張できます。この手順では、既存のルートボリュームの容量を拡張する例をもとに解説します。
対象者
- AWS EC2を運用中のエンジニア
- EBS ボリュームを拡張したい方
- Linuxサーバーでディスク容量不足に対応したい方
前提知識(主要コマンド)
以下は本記事内で使用する主要コマンドとその概要です。
主要コマンド
lsblk
- 概要: ブロックデバイスの構成を表示します(マウントポイント含む)
-
例:
lsblk - 主な用途: ディスクのデバイス名やサイズ、マウント状況を確認
df -h / df -Th
-
概要: 各マウントポイントのディスク使用状況を人間に読みやすい形式で表示
-
例:
df -hまたはdf -Th -
主な用途: ディスク容量の確認
-
オプション:
-
-h: human-readable。KB/MB/GB単位で出力(例: 7.4G) -
-T: 各ファイルシステムのタイプ(ext4, xfsなど)を表示
-
growpart
- 概要: 指定したデバイスのパーティションサイズを拡張する
-
例:
sudo growpart /dev/nvme0n1 1 -
主なオプション: なし(
デバイス名 パーティション番号を指定) -
備考:
cloud-guest-utilsパッケージに含まれます
resize2fs
- 概要: ext系ファイルシステムのサイズを拡張(または縮小)する
-
例:
sudo resize2fs /dev/nvme0n1p1 - 主な用途: ext4のファイルシステムサイズ拡張
-
注意点:
xfsには使えません
xfs_growfs
- 概要: XFSファイルシステムのサイズを拡張する
-
例:
sudo xfs_growfs -d / -
主なオプション:
-d(デフォルトマウントポイント全体を拡張) - 対象環境: Amazon LinuxやRHEL系で採用されることが多い
手順概要
STEP
- スペック確認
- EBSボリュームサイズの変更(AWSコンソール)
- OS側でのディスク認識とパーティション拡張
- ファイルシステムの拡張
- 確認作業
STEP1. スペック確認
- スペック確認
サーバ上で以下のコマンドを実行する。
$ lsblk
# 出力例:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 8G 0 disk
|-nvme0n1p1 259:1 0 7.9G 0 part /
|-nvme0n1p14 259:2 0 3M 0 part
|-nvme0n1p15 259:3 0 124M 0 part /boot/efi
STEP2. EBSボリュームサイズの変更(AWSコンソール)
以下の手順を実施する。
- AWSコンソール → EC2 → Elastic Block Store > ボリューム
- 対象のボリュームを選択
- 「変更」ボタンをクリック
- 「ボリュームを変更」をクリック
- 「サイズ (GiB)」を任意の値へ変更し、「変更」ボタンをクリック
- EBSボリュームサイズ変更の最終確認画面が表示されるため、問題がなければ「変更」ボタンをクリック。
- 数分待ち、「ボリュームの状態:変更中 → 使用可能」になったらOK
補足: 拡張はオンラインで即時反映されますが、以降の手順のようなOS側での認識は別途必要です。
STEP3. OS側でのディスク認識とパーティション拡張
(SSHログイン後)
OS上でサイズを認識させるため、以下のコマンドをSSH接続したEC2内で実行します。
# ファイルシステムの状態を確認
$ df -hT
# パーティションサイズの認識
$ lsblk
# パーティションの拡張(ルートボリュームの場合)
$ sudo growpart /dev/nvme0n1 1
# 出力例:
CHANGED: partition=1 start=262144 old: size=16513024 end=16775167 new: size=33292255 end=33554398
/dev/nvme0n1p1のようなデバイス名は環境によって異なるので、lsblkで確認してください。
STEP4. ファイルシステムの拡張
まずは、ファイルタイプを確認します。
$ df -hT
# 出力例:
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 462M 0 462M 0% /dev
tmpfs tmpfs 95M 460K 95M 1% /run
/dev/nvme0n1p1 ext4 7.7G 3.1G 4.2G 43% /
tmpfs tmpfs 473M 0 473M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/nvme0n1p15 vfat 124M 12M 113M 10% /boot/efi
tmpfs tmpfs 95M 0 95M 0% /run/user/1000
出力例であれば
/dev/nvme0n1p1のTypeは、ext4となります。
ext4(Debian系/Ubuntuで採用)
$ sudo resize2fs /dev/nvme0n1p1
xfs(Amazon Linuxなど)
$ sudo xfs_growfs -d /
STEP5. 確認作業
$ df -hT
# 出力例:
Filesystem Size Used Avail Use% Mounted on
udev 462M 0 462M 0% /dev
tmpfs 95M 460K 95M 1% /run
/dev/nvme0n1p1 16G 3.1G 12G 21% /
tmpfs 473M 0 473M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/nvme0n1p15 124M 12M 113M 10% /boot/efi
tmpfs 95M 0 95M 0% /run/user/1000
/にマウントされているパーティションの容量が増えていれば成功です。
出力例であれば/dev/nvme0n1p1のSizeが、16Gへ増加しています。
注意事項
- 「EBS拡張=OSでも拡張が必要」という認識が重要
- OSによって使うコマンド(
xfs_growfs,resize2fs)が異なる
参考
おわりに
ディスクの拡張は、運用中のシステムにおけるリソース不足の最も一般的な解決手法のひとつです。EBSの特性上、インスタンスを停止せずに容量拡張が可能というのは大きなメリットに感じました。私自身、ログ監視で使用率が90%を超えた際に本手順で即時対応でき、ダウンタイムゼロで乗り切ることができました。
本記事が、あなたの容量拡張の参考になれば幸いです。
株式会社ONE WEDGE
【Serverlessで世の中をもっと楽しく】
ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
Discussion