開発ノウハウ開発ノウハウ / インフラ運用

EC2 root EBSの容量アップ手順|AWS側のサイズ変更とOS側のresize2fs


EC2でrootディスクの使用率が100%になったときの最初の一手は、不要ファイルの削除で空けられないかを調べることです。EBSは後から縮小できず、拡張した分の月額費用も残り続けるためです。root の /dev/xvda1(ext4)が使用率100%になったインスタンスを例に、du で当たりを付けて安全に削除する手順から始め、削除で足りない場合だけEBSの拡張に進みます。拡張も、AWSコンソールでサイズを変更したうえでOS側の resize2fs まで実行して、初めて空き容量として使えるようになります。

公開2026.06.11
最終更新2026.06.11
読了 10 分 / 約5,000
この記事をシェアポスト
開発ノウハウEBS拡張は「AWS側」と「OS側」の二段階で完結する

EC2 root EBSの容量アップ
AWS と OS の二段階で進める

EC2でrootディスクが100%になり、ログの書き込みやファイル作成が軒並み失敗する、といった状態になることがあります。打ち手は「不要なファイルを消して容量を空ける」か「EBSを大きくする」かの2つです。EBSの拡張は一方向の操作で月額費用も増えるのに対し、不要ファイルの削除は追加コストなしでその場で効くため、まず削除から試します

ただし、当たりを付けずに消すと、原因調査の手掛かりまで失いかねません。また、削除で足りずEBSを拡張する場合も、AWSコンソールで操作するだけでは df の表示は変わらず、空き容量も増えません。以降は、root の /dev/xvda1(ext4)が使用率 100% になったインスタンスを例に進めます。

C
本記事の結論を先に
まず削除で空け、足りなければ「AWS側+OS側」の二段階で拡張する
  • 最初の一手は不要ファイルの削除ですdu -xh -d 1 で容量を使っている場所に当たりを付け、安全に消せるものから空けます。削除で恒久的に足りるなら、拡張は不要です。
  • AWSコンソールで EBS のサイズを変えるのは、あくまでブロックデバイス容量の変更です。OS が認識するファイルシステムは古いサイズのままです。
  • OS 側では、lsblk の TYPE を確認し、パーティション(part)なら growpart で広げてからファイルシステムを広げます(パーティションのない直マウント構成なら growpart は不要)。ext4 なら resize2fs、xfs なら xfs_growfs でコマンドが異なります。
  • AWSコンソールに表示される /dev/sda1 は、Xen 系 EC2 内では /dev/xvda1 として見えます/dev/sdf/dev/xvdf)。Nitro 系では /dev/nvme0n1 のような NVMe 名になります。
  • 別マウントの EBS では「ボリュームサイズ」と「ファイルシステムサイズ」のズレが残りやすいため、lsblkdf を見比べる習慣を持っておくと、次の事故を予防できます。
  • EBSは後から縮小できません。拡張する場合は、まず復旧に足りる分だけ控えめに広げ、恒久的なサイズは運用が落ち着いてから判断します。

01.結論:まず不要ファイルを削除し、足りなければ二段階で拡張する

ディスクが 100% になったときは、次の順序で対応します。

ディスク100%対応の全体フロー(削除ファースト)
  1. 1
    調査:du で当たりを付ける

    どのディレクトリが容量を使っているかを確認する。読み取りだけの操作なので、100% の状態でも安全に実行できる。

  2. 2
    削除:安全に消せるものを削除する

    ローテーション済みの古いログやキャッシュなどを削除する。当たりを付けずに消すと、原因調査の手掛かりを失う。

  3. 3
    AWS側の拡張:EBSのサイズを変更する

    削除で足りない場合だけ、modify-volume でEBSを拡張する。サイズは復旧に足りる分に留める。

  4. 4
    OS側の拡張:ファイルシステムを広げる

    growpart(パーティションがある場合)と resize2fs / xfs_growfs を実行して、空き容量として使えるようにする。

ステップ2の削除で恒久的に足りるなら、3以降の拡張は不要です。

3 の拡張に進んだときに混乱しやすいのが、「AWSコンソールで広げれば、そのままサーバーで使える容量も増える」という思い込みです。実際は、AWSが触れるのはブロックデバイスの容量だけで、そのデバイスの上に置かれているパーティションやファイルシステムは OS の責任範囲です。AWS側でサイズを増やしても、OS から見ると「元のサイズのファイルシステムを使い切ったまま」の状態が続きます。そのため、拡張の作業は二段階に分かれます。

段階やること誰が触る範囲か
1. AWS側のEBS拡張EBSボリュームのサイズを希望値に変更する(modify-volume)AWSコンソール/CLI(ハードウェア相当の容量変更)
2. OS側の構成確認lsblk と df -T で、パーティションテーブルの有無とファイルシステム種別を見るEC2インスタンス内(どのコマンドを実行するかを判断)
3. OS側の拡張growpart でパーティションを広げ、resize2fs(ext4)でファイルシステムを広げるEC2インスタンス内(パーティションテーブルと ext4 のメタデータを更新)

本記事の例の root は、xvda(ディスク)の配下に xvda1(パーティション)が紐づく、現行のEC2で最も一般的な構成です。AWS側で容量が増えたあと、growpartresize2fs の順で実行します。パーティションテーブルを持たず、デバイスを直接マウントしている構成(後述のデータ用 /dev/xvdf など)では、growpart は不要です。

本記事の手順で使うコマンドの役割は、次の一覧のとおりです。

コマンド意味便利なオプション
df -hTマウント中のファイルシステムごとの使用量・空き・種別を表示する(-h は読みやすい単位、-T は種別の表示)-i:inode の使用率を表示(容量は空いているのに書き込めないときは inode 枯渇を疑う)
lsblkOSが認識しているブロックデバイスの一覧を、サイズ・タイプ・マウント先つきで表示する-o NAME,SIZE,TYPE,MOUNTPOINT,SERIAL:表示列を指定(SERIAL は Nitro 系で EBS のボリュームIDを確認するのに使う)
du -xh -d 1 <パス>ディレクトリごとのディスク使用量を集計する(-x で別マウントを除外、-d 1 で1階層分だけ表示)-s:合計だけを表示(du -sh /var/log/* とすれば項目ごとの合計を並べられる)
find / -xdev -type f -size +1G1GBを超えるファイルを列挙する(-xdev で別マウントを除外)-mtime +30:30日以上更新されていないファイルに絞る(古いログの特定に便利)
lsof +L1削除済みなのにプロセスが保持したままのファイルを一覧するlsof +L1 /:パスを足すと対象のファイルシステムを絞れる
aws ec2 modify-volumeEBSボリュームのサイズやタイプを CLI から変更する(コンソールの「ボリュームを変更」と同じ操作)--volume-type gp3:拡張と同時にタイプも変更できる。進捗は aws ec2 describe-volumes-modifications で確認
growpart <デバイス> <番号>パーティションをデバイスの末尾まで広げる(例:growpart /dev/xvda 1)--dry-run:実際には変更せず、実行結果の見込みだけを表示
resize2fs <デバイス>ext4 のファイルシステムをデバイス(パーティション)のサイズまで広げるサイズ指定(resize2fs /dev/xvdf 80G):広げる先のサイズを明示できる
xfs_growfs <マウントポイント>xfs のファイルシステムを広げる(マウント中のみ実行可)-n:変更せずに現在のファイルシステム情報だけを表示
journalctl --disk-usage / --vacuum-size=500Mjournald のログ使用量の確認/指定サイズまでの削減--vacuum-time=30d:サイズではなく保持期間で削減
docker system df / pruneDocker のディスク使用量の確認/未使用イメージ・キャッシュの削除prune -a:未使用イメージをすべて削除(再取得コストがあるため対象を確認してから)

02.事象の例:rootだけ100%で、別マウントにはまだ余裕がある

ここでは、root 用とデータ用の 2 本の EBS をアタッチしたインスタンスを例にします。本記事のコマンド出力は、説明用に再構成した架空の例です。df -hT を実行すると(-T を付けるとファイルシステムの種別も一緒に確認できます)、root だけが完全に詰まり、データ用のディスクには余裕が残っている状態です。

$ df -hT
Filesystem      Type  Size  Used Avail Use% Mounted on
/dev/xvda1      ext4   97G   92G    0  100% /
/dev/xvdf       ext4   50G   20G   27G   43% /data

ここから読み取れる事実は3つです。

  • root の /dev/xvda1(ext4)は使用率 100% で、空きがありません(Size と Used の差は ext4 が確保する予約領域です)。
  • データ用の /dev/xvdf は ext4 / 50GB のうち 20GB 使用で、まだ余裕があります。
  • ファイルシステムはどちらも ext4なので、拡張する場合に実行するコマンドは resize2fs に揃えられます。

この状態では root の対処が最優先です。ログ書き込みやパッケージ更新、一時ファイルの作成まで止まり、サービス側にも影響が出るためです。一方、データ用のディスクは緊急性が低いものの、後述する「EBS とファイルシステムのサイズが揃っていない」状態になっています。

03.まずやること:du で当たりを付けて、不要ファイルを削除する

拡張を判断する前に、何が容量を使っているかを調べます。進め方は次の3つです。

  1. du で階層ごとに当たりを付ける:容量を使っているディレクトリを上から順に絞り込みます。
  2. find で巨大ファイルを列挙する:当たりを付けた階層で、1GBを超えるような単一ファイルを探します。
  3. 定番の肥大化ポイントを確認する:ログ・キャッシュ・Docker など、経験的に膨らみやすい場所を一覧で点検します。

du は読み取りだけの調査なので、使用率 100% の状態でも問題なく実行できます。-x--one-file-system)を付けると、/data のような別マウントを跨がずに root のファイルシステムだけを集計できます。

sudo du -xh -d 1 / 2>/dev/null | sort -rh | head -15
# 容量の大きい階層が見つかったら、同じ要領で1段ずつ降りていく
sudo du -xh -d 1 /var 2>/dev/null | sort -rh | head -15

当たりを付けた階層では、サイズの大きい単一ファイルも確認しておきます。

sudo find / -xdev -type f -size +1G -exec ls -lh {} + 2>/dev/null

肥大化しやすい場所はある程度決まっているので、確認方法と対処をセットで控えておくと二度目以降の調査が早くなります。対処の列にある logrotate の設定のような再発防止まで済ませれば、同じ詰まり方を繰り返さずに済みます。

肥大化しやすい場所確認方法対処
/var/log 配下のアプリ・ミドルウェアのログdu -sh /var/log/*logrotate でローテーション・圧縮・世代数を設定する
journald のログjournalctl --disk-usagejournalctl --vacuum-size=500M などで上限を絞る
Docker のイメージ・ビルドキャッシュdocker system dfdocker system prune(削除対象を確認してから実行する)
パッケージキャッシュdu -sh /var/cache/*dnf clean all / apt-get clean
アプリの一時ファイル・古いリリースdu で該当ディレクトリを確認デプロイ手順にクリーンアップを組み込む
!
削除する前の注意
当たりを付けずに /var/log や /tmp を削除しない

現在進行中のログや、何のファイルか分からない巨大ファイルを急いで削除すると、原因調査の手掛かりまで一緒に消えます。消してよいか判断が付かないときや、障害対応の最中で調査の時間が取れないときは、無理に削除せず、後述するEBSの拡張で先に復旧させてから調べます。

削除したのに df の空きが増えないときは、プロセスが削除済みファイルを保持しているケースを疑います。開いたままのファイルを rm で消しても、プロセスが手放すまで領域は解放されません。

sudo lsof +L1

該当するプロセスを再起動するか、ログを開き直させると、その分の容量が解放されます。巨大なログを消したはずなのに使用率が 100% のまま、という現象はたいていこれが原因です。

削除で十分な空きを確保でき、増加の原因も断てたのであれば、対応はここで完了です。安全に消せるものがない、データの増加が正常なもので削除では一時しのぎにしかならない、という場合は、次章以降のEBS拡張に進みます。

04.AWS の /dev/sda1 と EC2 内の /dev/xvda1 を見分ける

AWSコンソールで EBS の一覧を開くと、root ボリュームは「アタッチ済みのデバイス」として /dev/sda1(または /dev/xvda)と表示されます。一方、SSH で入った EC2 内では、同じディスクが /dev/xvda1 として / にマウントされています。AWS側とOS側で名前が一致しないため、対応関係を一度押さえておくと、コンソール画面と OS の表示を行き来しても迷いません。

AWS コンソールの表記Xen系インスタンス内の表記用途の例
/dev/sda1/dev/xvda + /dev/xvda1(環境によっては /dev/xvda1 単体)root ボリューム
/dev/sdf/dev/xvdf追加のデータディスク
/dev/sdg〜p/dev/xvdg〜p追加のデータディスク(連番で増える)

EBSを複数アタッチしている場合は、名前の思い込みで対象を選ばず、AWS側とOS側の情報を突き合わせてから作業します。突き合わせの起点は、インスタンス詳細の「ストレージ」タブです。

  1. AWS側の情報を控える:「ストレージ」タブで、各ボリュームの「デバイス名」「ボリュームID(vol-…)」「サイズ」をメモします。
  2. Xen系は名前の対応で同定する:上の表のとおり対応は機械的(/dev/sdf/dev/xvdf)なので、lsblk の表示と突き合わせます。サイズも一致しているかを併せて確認すると、取り違えを防げます。
  3. Nitro系はボリュームIDで同定する:名前の対応が成り立たないため、次の段落のとおりシリアル番号(vol-…)で突き合わせます。

Nitro 系のインスタンス(m5・c5・t3・m6i など現行世代の多く)は、上記の対応が成り立ちません。次の3点がポイントです。

  • OS 内では NVMe デバイスとして見えるため、root は /dev/nvme0n1(パーティションは /dev/nvme0n1p1)、追加のディスクは /dev/nvme1n1 といった名前になります。
  • コンソール側に /dev/sdf と書いてあっても、OS 側では /dev/nvme1n1 のような別の名前で見えます。
  • lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,SERIAL でシリアル番号(vol-… で始まる EBS のボリューム ID)を確認すると、どの EBS がどの NVMe デバイスに対応しているかを確実に特定できます。

05.実作業:AWSコンソールでEBSを拡張し、OS側で resize2fs を実行する

ここから先は、削除では空けられない場合に、EBSを拡張して解消するまでの実作業です。前提は次のとおりです。

  • 例として、root の EBS を 100GB から 150GB に拡張します。倍の容量へ一気に広げないのは、EBS が後から縮小できないためです。
  • まず復旧に足りる分だけ控えめに広げ、恒久的なサイズは運用が落ち着いてから改めて決めます
  • Xen系インスタンス(OS 内で /dev/xvda として見える)を前提にしています。Nitro系では、前章の対応でデバイス名を読み替えます。

ステップ1:AWSコンソールでEBSのサイズを変更する

コンソールでの操作は次の4手順です。

  1. EC2 コンソールから対象インスタンスを開きます。
  2. 「ストレージ」タブで root ボリュームの /dev/sda1 をクリックします。
  3. EBS のボリューム詳細から「ボリュームを変更」を選びます。
  4. サイズを希望の値(この例では 100 GiB → 150 GiB)に変更して保存します。

CLI で行うなら aws ec2 modify-volume --volume-id vol-xxxxxxxx --size 150 で同じ操作ができます。

変更後しばらくは volume statein-use - optimizing (n%) と表示されますが、サイズ自体は即座に反映されるため、OS 側の作業は optimizing の途中でも進められます。optimizing 中はパフォーマンスが揺れることがあるので、本番では負荷の谷の時間帯を選ぶのが無難です。

また、Elastic Volumes に関する AWS 公式ドキュメントによると、同じボリュームを再度変更するには、前回の変更から 6 時間以上待つ必要があります(クールダウン期間)。「少なめに広げて、足りなければすぐもう一度」という小刻みな運用はできません。

ステップ2:OS側で lsblk と df を見比べる

AWS 側の変更後に OS 内で lsblk を実行すると、次のようになります。

$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  150G  0 disk
└─xvda1 202:1    0  100G  0 part /
xvdf    202:80   0  100G  0 disk /data

ここで見るポイントは2つあります。

  • 増えたのはディスク(xvdaTYPE disk)の 150GB だけで、配下のパーティション(xvda1TYPE part)は 100GB のままです。ファイルシステムの前に、パーティションも広げる必要があります。
  • df -h で見える / のサイズも、ファイルシステムを広げるまで 97G のまま変わりません。「ディスク → パーティション → ファイルシステム」の3層のうち、AWS側の変更で増えるのは一番外側だけです。

AWS側の変更直後:3つの層のサイズ差

root の例

  • xvda
    ディスク
    150GB
  • xvda1
    パーティション
    100GB
  • df -h
    ファイルシステム
    97G
AWS側の変更で増えるのはディスクだけです。growpart でパーティションを、resize2fs でファイルシステムを広げると、3つのサイズが揃います。

ステップ3:growpart → resize2fs の順で広げる

パーティション(TYPE part)をマウントしている構成なので、先に growpart でパーティションをディスクの末尾まで広げ、続いて ext4 の resize2fs でファイルシステムを広げます。growpart の引数は /dev/xvda1 ではなく、/dev/xvda 1 のように親デバイスと番号を空白で分けます。

sudo growpart /dev/xvda 1
sudo resize2fs /dev/xvda1

デバイスがパーティションを持たず、TYPE disk のまま直接マウントされている構成なら、growpart は不要で resize2fs だけで完了します(後述の /dev/xvdf がこの形です)。

ここまで終えてからもう一度 df -h を実行すると、/dev/xvda1 のサイズが 150GB 相当(ファイルシステムのメタデータ分を引いた値)に増え、空き容量も正しく出るはずです。これでrootの拡張は完了です。

i
パーティションテーブルがある環境だけ growpart
lsblk の TYPE を見て、growpart が必要かを決める

TYPE disk のデバイスを直接マウントしている場合は resize2fs だけで進めます。TYPE part のパーティションをマウントしている場合は、先に growpart でパーティションを広げてからファイルシステムを広げます。root だから必ず growpart、追加ディスクだから不要、と決め打ちしないほうが安全です。

06.別マウントの /dev/xvdf:ボリュームを広げたのに ext4 が古いサイズのまま

rootと並んで、もう1つ確認しておきたいのがデータ用にアタッチしている /dev/xvdf です。先ほどの df -hT では「ext4 / 50GB のうち 20GB 使用」となっていましたが、lsblk で見るとデバイス側は 100GB あります。これは過去にEBSのサイズだけを拡張し、OS 側で resize2fs を実行し忘れていた、という典型的な状態です。

観点意味
EBSボリューム(AWS 側)100GBAWS 側で設定されている容量
lsblk の xvdf100GBOS が認識しているブロックデバイスの容量
df の /data50GB(ext4)ファイルシステムが管理している容量(古いままで止まっている)

この状態では、せっかく広げたボリュームの容量にファイルシステムが追いついていません。OS 側で resize2fs を実行するだけで、使える容量がボリュームのサイズまで広がります。/dev/xvdf はパーティションテーブルのない直接フォーマットなので、growpart は不要です。

sudo resize2fs /dev/xvdf

実行後に df -h /data を見ると、サイズが 100GB 側に揃います。緊急度は root より低いものの、サイズの不一致は運用の落とし穴になるため、root の復旧後に合わせて直しておきます。

07.ext4 と xfs でコマンドが違う点と、失敗しやすい落とし穴

AWS 側の操作は ext4 でも xfs でも同じですが、OS 側のファイルシステム拡張コマンドは ext4 と xfs で別物です。Ubuntu の root は ext4 が既定ですが、Amazon Linux 2 / Amazon Linux 2023 の root は xfs が既定で、ディストリビューションと世代によって混在します。事前に df -T でファイルシステムタイプを確認してから進めます。

lsblk で対象の TYPE は?
デバイス直マウント(disk)か、パーティションあり(part)か
  • disk(直マウント)
    df -T のファイルシステムタイプは?
    • ext4
      sudo resize2fs <デバイス>
      例:sudo resize2fs /dev/xvda1
    • xfs
      sudo xfs_growfs <マウントポイント>
      例:sudo xfs_growfs /(マウント中のみ実行可)
  • part(パーティションあり)
    先に sudo growpart <デバイス> <番号>
    例:sudo growpart /dev/xvda 1。その後 ext4 なら resize2fs、xfs なら xfs_growfs
OS側で実行するコマンドの選び方
観点ext4xfs
拡張コマンドsudo resize2fs /dev/xvda1(パーティションを引数)sudo xfs_growfs /(マウントポイントを引数)
対象の引数ブロックデバイスのパスマウントポイントのパス
マウント状態オンラインで拡張可(マウントしたままでOK)オンラインのみ対応(アンマウント中は拡張できない)
縮小の可否アンマウント時に縮小可(resize2fs で小さい値を渡せる)縮小は不可

つまずきやすいのは xfs の引数です。sudo xfs_growfs / のようにマウントポイントを渡す決まりで、ext4 と同じ感覚で /dev/xvda1 を渡すと「該当のマウントポイントが見つからない」というエラーで止まります。

EBS拡張でつまずきやすいチェックポイント
  • EBSを広げる前に、du で当たりを付けて安全に削除できるものがないかを確認したか
  • AWSコンソール側でサイズを変えただけで作業を終えていないか
  • root の拡張前に df -T で ext4 / xfs どちらかを確認したか
  • Xen 系か Nitro 系かを確認し、デバイスパスが /dev/xvdaN か /dev/nvme0n1pN かを把握しているか
  • lsblk で TYPE disk / TYPE part を確認し、パーティションがある場合だけ growpart を実行したか
  • ext4 では resize2fs にパーティション、xfs では xfs_growfs にマウントポイントを渡したか
  • 別マウントの EBS について lsblk と df のサイズが一致しているかを確認したか
  • logrotate の設定など、肥大化の再発防止まで行ったか
  • 拡張のサイズは、まず復旧に足りる分だけに留めているか
関連記事|SSR/エッジ側の上限とサイズ感

Amplifyのタイムアウトとサイズ制限の整理 | 413, 504の切り分け

EC2 のレイヤーから一段上にあたる、Amplify Hosting / CloudFront / Lambda などホスティング側の上限値と切り分けの順序を解説しています。

続きを読む

08.よくある質問(FAQ)

AWSコンソールでEBSを拡張したのに、df で見るとサイズが変わりません。なぜですか?

AWS側で拡張されたのはEBSボリューム(ブロックデバイス)の容量だけで、その上に乗っているOSのファイルシステムは元のサイズのままだからです。

lsblk で見るとデバイス側のサイズは増えていても、df で見るファイルシステム側は古いままになります。OS側で growpartresize2fs(ext4)か xfs_growfs(xfs)を実行するまで、空き容量としては使えません。

EC2の中で /dev/xvda1 と表示されているのに、AWSコンソールには /dev/sda1 と書かれています。別のディスクですか?

同じディスクです。AWS側はEBSのアタッチ情報を「ブロックデバイス名」として /dev/sda1(または /dev/xvda)で表示しますが、Xen系のEC2インスタンス内ではカーネルがそれを /dev/xvda1 として認識します。

同じ仕組みで /dev/sdf/dev/xvdf に対応します。Nitro系のインスタンスでは /dev/nvme0n1 のような NVMe 名になるため、対応関係はインスタンスタイプによって変わります。

ext4 と xfs では、ファイルシステムの拡張コマンドは違いますか?

ext4 と xfs では拡張コマンドが異なります。ext4sudo resize2fs /dev/xvda1 のようにブロックデバイスを引数に渡します。xfssudo xfs_growfs / のようにマウントポイントを引数に渡します。

さらに xfs はマウント中の状態でしか拡張できません(オンラインでのみ実行可)。事前に df -T でファイルシステムタイプを確認してから、実行するコマンドを選びます。

EBSを大きくしすぎてしまった場合、後から小さく戻せますか?

EBSは縮小できません。サイズを下げたいときは、新しい小さなEBSを作って中身をコピーし、付け替える運用になります。

料金はGB-月あたりで課金されるため、「念のため大きく取っておく」とそのまま月額に乗ります。最初の拡張で十分な余裕を持たせつつ、必要以上に大きく取らないのが安全です。

障害対応では、EBSをどこまで広げるべきですか?

EBSは後から縮小できないため、拡張の前にまず不要ファイルの削除で空けられないかを調べるのがおすすめです。それでも拡張が必要な場合は、その場で最終的なサイズを決めようとせず、まず復旧に足りる分だけ控えめに広げます。

ただし、同じボリュームを再度変更するには前回の変更から6時間以上の待機(クールダウン期間)が必要です。直近で確実に増える見込みの分だけは、余裕として確保しておきます。

EBSを拡張するときにインスタンスを止める必要はありますか?稼働中のサービスに影響はありませんか?

Elastic Volumes に対応しているEBS(gp2 / gp3 / io1 / io2 など現行世代)は、稼働中のインスタンスにアタッチしたままサイズ変更ができます。停止やデタッチは不要です。

OS側の growpartresize2fs / xfs_growfs もオンラインで実行できるため、サービス停止なしで反映できます。ただし、ボリュームの状態は変更後しばらく optimizing として表示され、その間はパフォーマンスがやや揺れることがあります。

09.まとめ

本記事の要点は次のとおりです。

  • まず du で容量を使っている場所に当たりを付け、安全に消せるものから削除します。削除で恒久的に足りるなら、拡張は不要です。
  • 拡張する場合は、AWS が触るのはブロックデバイス、ファイルシステムは OS の責任という分担のとおり、AWS側のサイズ変更とOS側のファイルシステム拡張の二段階で初めて完結します。
  • 本記事の例のようなパーティションあり(ext4)の構成なら growpart の後に resize2fs、パーティションのない直マウント構成なら resize2fs だけ、xfs なら xfs_growfs / で拡張を完了できます。
  • 別マウントの EBS は「ボリュームサイズ」と「ファイルシステムサイズ」が揃っているかを lsblkdf で見比べ、ズレていれば resize2fs だけで直せます。
  • 削除でも拡張でも、logrotate のような再発防止まで済ませて初めて根本解決になります。拡張のサイズは復旧に足りる分に留め、恒久的な値は運用が落ち着いてから決めます。
お問い合わせ

EC2/EBS まわりの障害対応・運用設計をご相談ください

EC2 のディスク容量不足や本番障害の切り分け、Elastic Volumes を活かしたストレージ設計、Amplify・Cloudflare Workers などホスティング側の上限まで、横断したインフラ運用支援を行っています。お気軽にお問い合わせください。

お問い合わせはこちら
この記事をシェア
澤田 翔太(Shota Sawada)
この記事を書いた人

澤田 翔太

株式会社クリプタル 代表取締役

1988年生まれ、慶應義塾大学卒。創業メンバーとして関わった株式会社セールスサポートを株式会社ネオマーケティング(東証STD 4196)に売却。株式会社クリプタルでも複数の事業立ち上げと売却を経験し、2022年9月には婚活・恋愛メディア「シッテク」「婚活会議」を株式会社ベビーカレンダー(東証GRT 7363)へ売却。現在はAI業務支援事業、TANTOU事業、グロースハック支援事業、メディア事業、SEOコンサルティング事業を手がける。