0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EC2 のディスク不足でビルド失敗。EBS を増やしても空き容量が増えなかった話【growpart / xfs_growfs】

0
Posted at

はじめに

EC2(t3.micro)の上でアプリをビルドしようとしたら、その準備の swap 作成でいきなり怒られました。

dd: error writing '/swapfile': No space left on device

「ディスクの空きがない」?立てたばかりの EC2 なのに? df を見たら、ルートディスクが 2GB しかありませんでした。

「え、2GB?そんなに小さいの…?」と固まりました😅

EBS を増やすだけでは終わらず、OS 側にもうひと手間が要る、という話を残します。

環境

  • AWS EC2(t3.micro、Amazon Linux 2023)
  • ルートディスク:EBS
  • やりたかったこと:EC2 上でアプリ(Gradle)をビルド
  • リージョン:ap-northeast-1

起きたこと

ビルド前に swap(仮想メモリ)を 2GB 作ろうとしたら失敗:

dd: error writing '/swapfile': No space left on device

df -h / で確認すると:

Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p1  2.0G  1.7G  272M  87% /

ルートディスクが 2.0G、空きは 272M。今回使った AMI のルートボリュームが小さく、ビルドツール(Gradle 本体のダウンロード+依存+JDK)には全然足りませんでした。

原因

ルートに使う EBS ボリュームのサイズが小さかった(今回は 2GB)だけでした。

そして大事なのが、EBS を大きくしても、OS 側の領域は自動では広がらないこと。AWS 側でボリュームを 20GB に増やしても、Linux 側ではパーティションやファイルシステムがまだ 2GB のままなので、df の空き容量は増えません。だから2段階が必要でした:

  1. AWS 側で EBS ボリュームを増やす(コンソール、または IaC で volume_size を増やす)
  2. OS 側で パーティションとファイルシステムを広げる

解決

まず現状を確認します。

# ディスク・パーティション・マウント先を確認
lsblk

# ファイルシステムの種類(xfs か ext4 か)とサイズを確認
df -T /

失敗して中途半端にできた swap ファイルがあれば消して空きを戻します(まだ swap として有効化できていなければ swapoff は失敗しても大丈夫です)。

sudo swapoff /swapfile 2>/dev/null || true
sudo rm -f /swapfile

EBS を 20GB に増やしてから、OS に反映します。

# ① パーティションをディスク全体まで広げる(末尾の 1 は対象パーティション番号)
sudo growpart /dev/nvme0n1 1

# ② ファイルシステムを広げる(今回の環境は xfs)
sudo xfs_growfs /

# 反映確認(20G になる)
df -h /

これで Size が 20G になり、ビルドも通りました。

※ファイルシステムが ext4 の場合は xfs_growfs ではなく sudo resize2fs /dev/nvme0n1p1 を使います。最初の df -T / で種類を、lsblk でデバイス名を確認できます。

学び

  • EBS を増やす ≠ df の空きが増える。 AWS 側でボリュームを拡張したあと、OS 側で growpart → ファイルシステム拡張(xfs なら xfs_growfs、ext4 なら resize2fs)が要る。
  • 「No space left on device」は、本当にディスクの空きが足りないサイン。まず df -h / で実際の容量を見る。
  • ビルドや依存ダウンロードは意外とディスクを食う。最初から少し余裕のあるボリュームサイズにしておくと楽。

おわりに

「立てたばかりなのにディスクの空きが無い」で一瞬パニックでしたが、EBS拡張+OS側の拡張までやって、ようやく空き容量が増えました😅 同じように No space left on device で止まった人の参考になれば嬉しいです🙌

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?