🧱

【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

  1. スペック確認
  2. EBSボリュームサイズの変更(AWSコンソール)
  3. OS側でのディスク認識とパーティション拡張
  4. ファイルシステムの拡張
  5. 確認作業

STEP1. スペック確認

  1. スペック確認
    サーバ上で以下のコマンドを実行する。
$ 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コンソール)

以下の手順を実施する。

  1. AWSコンソール → EC2 → Elastic Block Store > ボリューム
  2. 対象のボリュームを選択
  3. 「変更」ボタンをクリック
  4. 「ボリュームを変更」をクリック
  5. 「サイズ (GiB)」を任意の値へ変更し、「変更」ボタンをクリック
  6. EBSボリュームサイズ変更の最終確認画面が表示されるため、問題がなければ「変更」ボタンをクリック。
  7. 数分待ち、「ボリュームの状態:変更中 → 使用可能」になったら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/nvme0n1p1Type は、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/nvme0n1p1Size が、16Gへ増加しています。


注意事項

  • 「EBS拡張=OSでも拡張が必要」という認識が重要
  • OSによって使うコマンド(xfs_growfs, resize2fs)が異なる

参考

https://docs.aws.amazon.com/ja_jp/ebs/latest/userguide/requesting-ebs-volume-modifications.html
https://docs.aws.amazon.com/ja_jp/ebs/latest/userguide/recognize-expanded-volume-linux.html


おわりに

ディスクの拡張は、運用中のシステムにおけるリソース不足の最も一般的な解決手法のひとつです。EBSの特性上、インスタンスを停止せずに容量拡張が可能というのは大きなメリットに感じました。私自身、ログ監視で使用率が90%を超えた際に本手順で即時対応でき、ダウンタイムゼロで乗り切ることができました。

本記事が、あなたの容量拡張の参考になれば幸いです。


株式会社ONE WEDGE

【Serverlessで世の中をもっと楽しく】
ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
https://onewedge.co.jp/

GitHubで編集を提案

Discussion